var _a2;
(function polyfill() {
  const relList = document.createElement("link").relList;
  if (relList && relList.supports && relList.supports("modulepreload")) {
    return;
  }
  for (const link4 of document.querySelectorAll('link[rel="modulepreload"]')) {
    processPreload(link4);
  }
  new MutationObserver((mutations) => {
    for (const mutation of mutations) {
      if (mutation.type !== "childList") {
        continue;
      }
      for (const node of mutation.addedNodes) {
        if (node.tagName === "LINK" && node.rel === "modulepreload")
          processPreload(node);
      }
    }
  }).observe(document, { childList: true, subtree: true });
  function getFetchOpts(link4) {
    const fetchOpts = {};
    if (link4.integrity)
      fetchOpts.integrity = link4.integrity;
    if (link4.referrerPolicy)
      fetchOpts.referrerPolicy = link4.referrerPolicy;
    if (link4.crossOrigin === "use-credentials")
      fetchOpts.credentials = "include";
    else if (link4.crossOrigin === "anonymous")
      fetchOpts.credentials = "omit";
    else
      fetchOpts.credentials = "same-origin";
    return fetchOpts;
  }
  function processPreload(link4) {
    if (link4.ep)
      return;
    link4.ep = true;
    const fetchOpts = getFetchOpts(link4);
    fetch(link4.href, fetchOpts);
  }
})();
function makeMap(str, expectsLowerCase) {
  const map2 = /* @__PURE__ */ Object.create(null);
  const list3 = str.split(",");
  for (let i = 0; i < list3.length; i++) {
    map2[list3[i]] = true;
  }
  return expectsLowerCase ? (val) => !!map2[val.toLowerCase()] : (val) => !!map2[val];
}
function normalizeStyle(value) {
  if (isArray$2(value)) {
    const res = {};
    for (let i = 0; i < value.length; i++) {
      const item = value[i];
      const normalized = isString$4(item) ? parseStringStyle(item) : normalizeStyle(item);
      if (normalized) {
        for (const key in normalized) {
          res[key] = normalized[key];
        }
      }
    }
    return res;
  } else if (isString$4(value)) {
    return value;
  } else if (isObject$6(value)) {
    return value;
  }
}
const listDelimiterRE = /;(?![^(]*\))/g;
const propertyDelimiterRE = /:([^]+)/;
const styleCommentRE = /\/\*.*?\*\//gs;
function parseStringStyle(cssText) {
  const ret = {};
  cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => {
    if (item) {
      const tmp = item.split(propertyDelimiterRE);
      tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
    }
  });
  return ret;
}
function normalizeClass(value) {
  let res = "";
  if (isString$4(value)) {
    res = value;
  } else if (isArray$2(value)) {
    for (let i = 0; i < value.length; i++) {
      const normalized = normalizeClass(value[i]);
      if (normalized) {
        res += normalized + " ";
      }
    }
  } else if (isObject$6(value)) {
    for (const name2 in value) {
      if (value[name2]) {
        res += name2 + " ";
      }
    }
  }
  return res.trim();
}
function normalizeProps(props) {
  if (!props)
    return null;
  let { class: klass, style } = props;
  if (klass && !isString$4(klass)) {
    props.class = normalizeClass(klass);
  }
  if (style) {
    props.style = normalizeStyle(style);
  }
  return props;
}
const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);
function includeBooleanAttr(value) {
  return !!value || value === "";
}
function looseCompareArrays(a2, b2) {
  if (a2.length !== b2.length)
    return false;
  let equal = true;
  for (let i = 0; equal && i < a2.length; i++) {
    equal = looseEqual(a2[i], b2[i]);
  }
  return equal;
}
function looseEqual(a2, b2) {
  if (a2 === b2)
    return true;
  let aValidType = isDate$1(a2);
  let bValidType = isDate$1(b2);
  if (aValidType || bValidType) {
    return aValidType && bValidType ? a2.getTime() === b2.getTime() : false;
  }
  aValidType = isSymbol(a2);
  bValidType = isSymbol(b2);
  if (aValidType || bValidType) {
    return a2 === b2;
  }
  aValidType = isArray$2(a2);
  bValidType = isArray$2(b2);
  if (aValidType || bValidType) {
    return aValidType && bValidType ? looseCompareArrays(a2, b2) : false;
  }
  aValidType = isObject$6(a2);
  bValidType = isObject$6(b2);
  if (aValidType || bValidType) {
    if (!aValidType || !bValidType) {
      return false;
    }
    const aKeysCount = Object.keys(a2).length;
    const bKeysCount = Object.keys(b2).length;
    if (aKeysCount !== bKeysCount) {
      return false;
    }
    for (const key in a2) {
      const aHasKey = a2.hasOwnProperty(key);
      const bHasKey = b2.hasOwnProperty(key);
      if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a2[key], b2[key])) {
        return false;
      }
    }
  }
  return String(a2) === String(b2);
}
function looseIndexOf(arr, val) {
  return arr.findIndex((item) => looseEqual(item, val));
}
const toDisplayString$1 = (val) => {
  return isString$4(val) ? val : val == null ? "" : isArray$2(val) || isObject$6(val) && (val.toString === objectToString$2 || !isFunction$4(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);
};
const replacer = (_key, val) => {
  if (val && val.__v_isRef) {
    return replacer(_key, val.value);
  } else if (isMap(val)) {
    return {
      [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => {
        entries[`${key} =>`] = val2;
        return entries;
      }, {})
    };
  } else if (isSet(val)) {
    return {
      [`Set(${val.size})`]: [...val.values()]
    };
  } else if (isObject$6(val) && !isArray$2(val) && !isPlainObject$4(val)) {
    return String(val);
  }
  return val;
};
const EMPTY_OBJ = {};
const EMPTY_ARR = [];
const NOOP = () => {
};
const NO = () => false;
const onRE = /^on[^a-z]/;
const isOn = (key) => onRE.test(key);
const isModelListener = (key) => key.startsWith("onUpdate:");
const extend = Object.assign;
const remove = (arr, el2) => {
  const i = arr.indexOf(el2);
  if (i > -1) {
    arr.splice(i, 1);
  }
};
const hasOwnProperty$5 = Object.prototype.hasOwnProperty;
const hasOwn$1 = (val, key) => hasOwnProperty$5.call(val, key);
const isArray$2 = Array.isArray;
const isMap = (val) => toTypeString$1(val) === "[object Map]";
const isSet = (val) => toTypeString$1(val) === "[object Set]";
const isDate$1 = (val) => toTypeString$1(val) === "[object Date]";
const isFunction$4 = (val) => typeof val === "function";
const isString$4 = (val) => typeof val === "string";
const isSymbol = (val) => typeof val === "symbol";
const isObject$6 = (val) => val !== null && typeof val === "object";
const isPromise = (val) => {
  return isObject$6(val) && isFunction$4(val.then) && isFunction$4(val.catch);
};
const objectToString$2 = Object.prototype.toString;
const toTypeString$1 = (value) => objectToString$2.call(value);
const toRawType = (value) => {
  return toTypeString$1(value).slice(8, -1);
};
const isPlainObject$4 = (val) => toTypeString$1(val) === "[object Object]";
const isIntegerKey = (key) => isString$4(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key;
const isReservedProp = /* @__PURE__ */ makeMap(
  // the leading comma is intentional so empty string "" is also included
  ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"
);
const cacheStringFunction = (fn2) => {
  const cache2 = /* @__PURE__ */ Object.create(null);
  return (str) => {
    const hit = cache2[str];
    return hit || (cache2[str] = fn2(str));
  };
};
const camelizeRE = /-(\w)/g;
const camelize = cacheStringFunction((str) => {
  return str.replace(camelizeRE, (_2, c2) => c2 ? c2.toUpperCase() : "");
});
const hyphenateRE = /\B([A-Z])/g;
const hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, "-$1").toLowerCase());
const capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));
const toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);
const hasChanged = (value, oldValue) => !Object.is(value, oldValue);
const invokeArrayFns = (fns, arg) => {
  for (let i = 0; i < fns.length; i++) {
    fns[i](arg);
  }
};
const def = (obj, key, value) => {
  Object.defineProperty(obj, key, {
    configurable: true,
    enumerable: false,
    value
  });
};
const looseToNumber = (val) => {
  const n = parseFloat(val);
  return isNaN(n) ? val : n;
};
const toNumber = (val) => {
  const n = isString$4(val) ? Number(val) : NaN;
  return isNaN(n) ? val : n;
};
let _globalThis$3;
const getGlobalThis$1 = () => {
  return _globalThis$3 || (_globalThis$3 = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {});
};
let activeEffectScope;
class EffectScope {
  constructor(detached = false) {
    this.detached = detached;
    this._active = true;
    this.effects = [];
    this.cleanups = [];
    this.parent = activeEffectScope;
    if (!detached && activeEffectScope) {
      this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;
    }
  }
  get active() {
    return this._active;
  }
  run(fn2) {
    if (this._active) {
      const currentEffectScope = activeEffectScope;
      try {
        activeEffectScope = this;
        return fn2();
      } finally {
        activeEffectScope = currentEffectScope;
      }
    }
  }
  /**
   * This should only be called on non-detached scopes
   * @internal
   */
  on() {
    activeEffectScope = this;
  }
  /**
   * This should only be called on non-detached scopes
   * @internal
   */
  off() {
    activeEffectScope = this.parent;
  }
  stop(fromParent) {
    if (this._active) {
      let i, l2;
      for (i = 0, l2 = this.effects.length; i < l2; i++) {
        this.effects[i].stop();
      }
      for (i = 0, l2 = this.cleanups.length; i < l2; i++) {
        this.cleanups[i]();
      }
      if (this.scopes) {
        for (i = 0, l2 = this.scopes.length; i < l2; i++) {
          this.scopes[i].stop(true);
        }
      }
      if (!this.detached && this.parent && !fromParent) {
        const last = this.parent.scopes.pop();
        if (last && last !== this) {
          this.parent.scopes[this.index] = last;
          last.index = this.index;
        }
      }
      this.parent = void 0;
      this._active = false;
    }
  }
}
function effectScope(detached) {
  return new EffectScope(detached);
}
function recordEffectScope(effect2, scope = activeEffectScope) {
  if (scope && scope.active) {
    scope.effects.push(effect2);
  }
}
function getCurrentScope() {
  return activeEffectScope;
}
function onScopeDispose(fn2) {
  if (activeEffectScope) {
    activeEffectScope.cleanups.push(fn2);
  }
}
const createDep = (effects) => {
  const dep = new Set(effects);
  dep.w = 0;
  dep.n = 0;
  return dep;
};
const wasTracked = (dep) => (dep.w & trackOpBit) > 0;
const newTracked = (dep) => (dep.n & trackOpBit) > 0;
const initDepMarkers = ({ deps }) => {
  if (deps.length) {
    for (let i = 0; i < deps.length; i++) {
      deps[i].w |= trackOpBit;
    }
  }
};
const finalizeDepMarkers = (effect2) => {
  const { deps } = effect2;
  if (deps.length) {
    let ptr = 0;
    for (let i = 0; i < deps.length; i++) {
      const dep = deps[i];
      if (wasTracked(dep) && !newTracked(dep)) {
        dep.delete(effect2);
      } else {
        deps[ptr++] = dep;
      }
      dep.w &= ~trackOpBit;
      dep.n &= ~trackOpBit;
    }
    deps.length = ptr;
  }
};
const targetMap = /* @__PURE__ */ new WeakMap();
let effectTrackDepth = 0;
let trackOpBit = 1;
const maxMarkerBits = 30;
let activeEffect;
const ITERATE_KEY = Symbol("");
const MAP_KEY_ITERATE_KEY = Symbol("");
class ReactiveEffect {
  constructor(fn2, scheduler = null, scope) {
    this.fn = fn2;
    this.scheduler = scheduler;
    this.active = true;
    this.deps = [];
    this.parent = void 0;
    recordEffectScope(this, scope);
  }
  run() {
    if (!this.active) {
      return this.fn();
    }
    let parent = activeEffect;
    let lastShouldTrack = shouldTrack;
    while (parent) {
      if (parent === this) {
        return;
      }
      parent = parent.parent;
    }
    try {
      this.parent = activeEffect;
      activeEffect = this;
      shouldTrack = true;
      trackOpBit = 1 << ++effectTrackDepth;
      if (effectTrackDepth <= maxMarkerBits) {
        initDepMarkers(this);
      } else {
        cleanupEffect(this);
      }
      return this.fn();
    } finally {
      if (effectTrackDepth <= maxMarkerBits) {
        finalizeDepMarkers(this);
      }
      trackOpBit = 1 << --effectTrackDepth;
      activeEffect = this.parent;
      shouldTrack = lastShouldTrack;
      this.parent = void 0;
      if (this.deferStop) {
        this.stop();
      }
    }
  }
  stop() {
    if (activeEffect === this) {
      this.deferStop = true;
    } else if (this.active) {
      cleanupEffect(this);
      if (this.onStop) {
        this.onStop();
      }
      this.active = false;
    }
  }
}
function cleanupEffect(effect2) {
  const { deps } = effect2;
  if (deps.length) {
    for (let i = 0; i < deps.length; i++) {
      deps[i].delete(effect2);
    }
    deps.length = 0;
  }
}
let shouldTrack = true;
const trackStack = [];
function pauseTracking() {
  trackStack.push(shouldTrack);
  shouldTrack = false;
}
function resetTracking() {
  const last = trackStack.pop();
  shouldTrack = last === void 0 ? true : last;
}
function track(target2, type2, key) {
  if (shouldTrack && activeEffect) {
    let depsMap = targetMap.get(target2);
    if (!depsMap) {
      targetMap.set(target2, depsMap = /* @__PURE__ */ new Map());
    }
    let dep = depsMap.get(key);
    if (!dep) {
      depsMap.set(key, dep = createDep());
    }
    trackEffects(dep);
  }
}
function trackEffects(dep, debuggerEventExtraInfo) {
  let shouldTrack2 = false;
  if (effectTrackDepth <= maxMarkerBits) {
    if (!newTracked(dep)) {
      dep.n |= trackOpBit;
      shouldTrack2 = !wasTracked(dep);
    }
  } else {
    shouldTrack2 = !dep.has(activeEffect);
  }
  if (shouldTrack2) {
    dep.add(activeEffect);
    activeEffect.deps.push(dep);
  }
}
function trigger(target2, type2, key, newValue, oldValue, oldTarget) {
  const depsMap = targetMap.get(target2);
  if (!depsMap) {
    return;
  }
  let deps = [];
  if (type2 === "clear") {
    deps = [...depsMap.values()];
  } else if (key === "length" && isArray$2(target2)) {
    const newLength = Number(newValue);
    depsMap.forEach((dep, key2) => {
      if (key2 === "length" || key2 >= newLength) {
        deps.push(dep);
      }
    });
  } else {
    if (key !== void 0) {
      deps.push(depsMap.get(key));
    }
    switch (type2) {
      case "add":
        if (!isArray$2(target2)) {
          deps.push(depsMap.get(ITERATE_KEY));
          if (isMap(target2)) {
            deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));
          }
        } else if (isIntegerKey(key)) {
          deps.push(depsMap.get("length"));
        }
        break;
      case "delete":
        if (!isArray$2(target2)) {
          deps.push(depsMap.get(ITERATE_KEY));
          if (isMap(target2)) {
            deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));
          }
        }
        break;
      case "set":
        if (isMap(target2)) {
          deps.push(depsMap.get(ITERATE_KEY));
        }
        break;
    }
  }
  if (deps.length === 1) {
    if (deps[0]) {
      {
        triggerEffects(deps[0]);
      }
    }
  } else {
    const effects = [];
    for (const dep of deps) {
      if (dep) {
        effects.push(...dep);
      }
    }
    {
      triggerEffects(createDep(effects));
    }
  }
}
function triggerEffects(dep, debuggerEventExtraInfo) {
  const effects = isArray$2(dep) ? dep : [...dep];
  for (const effect2 of effects) {
    if (effect2.computed) {
      triggerEffect(effect2);
    }
  }
  for (const effect2 of effects) {
    if (!effect2.computed) {
      triggerEffect(effect2);
    }
  }
}
function triggerEffect(effect2, debuggerEventExtraInfo) {
  if (effect2 !== activeEffect || effect2.allowRecurse) {
    if (effect2.scheduler) {
      effect2.scheduler();
    } else {
      effect2.run();
    }
  }
}
function getDepFromReactive(object, key) {
  var _a3;
  return (_a3 = targetMap.get(object)) === null || _a3 === void 0 ? void 0 : _a3.get(key);
}
const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);
const builtInSymbols = new Set(
  /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol)
);
const get$1 = /* @__PURE__ */ createGetter();
const shallowGet = /* @__PURE__ */ createGetter(false, true);
const readonlyGet = /* @__PURE__ */ createGetter(true);
const arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();
function createArrayInstrumentations() {
  const instrumentations = {};
  ["includes", "indexOf", "lastIndexOf"].forEach((key) => {
    instrumentations[key] = function(...args) {
      const arr = toRaw(this);
      for (let i = 0, l2 = this.length; i < l2; i++) {
        track(arr, "get", i + "");
      }
      const res = arr[key](...args);
      if (res === -1 || res === false) {
        return arr[key](...args.map(toRaw));
      } else {
        return res;
      }
    };
  });
  ["push", "pop", "shift", "unshift", "splice"].forEach((key) => {
    instrumentations[key] = function(...args) {
      pauseTracking();
      const res = toRaw(this)[key].apply(this, args);
      resetTracking();
      return res;
    };
  });
  return instrumentations;
}
function hasOwnProperty$4(key) {
  const obj = toRaw(this);
  track(obj, "has", key);
  return obj.hasOwnProperty(key);
}
function createGetter(isReadonly2 = false, shallow = false) {
  return function get2(target2, key, receiver) {
    if (key === "__v_isReactive") {
      return !isReadonly2;
    } else if (key === "__v_isReadonly") {
      return isReadonly2;
    } else if (key === "__v_isShallow") {
      return shallow;
    } else if (key === "__v_raw" && receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target2)) {
      return target2;
    }
    const targetIsArray = isArray$2(target2);
    if (!isReadonly2) {
      if (targetIsArray && hasOwn$1(arrayInstrumentations, key)) {
        return Reflect.get(arrayInstrumentations, key, receiver);
      }
      if (key === "hasOwnProperty") {
        return hasOwnProperty$4;
      }
    }
    const res = Reflect.get(target2, key, receiver);
    if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {
      return res;
    }
    if (!isReadonly2) {
      track(target2, "get", key);
    }
    if (shallow) {
      return res;
    }
    if (isRef(res)) {
      return targetIsArray && isIntegerKey(key) ? res : res.value;
    }
    if (isObject$6(res)) {
      return isReadonly2 ? readonly(res) : reactive(res);
    }
    return res;
  };
}
const set$1 = /* @__PURE__ */ createSetter();
const shallowSet = /* @__PURE__ */ createSetter(true);
function createSetter(shallow = false) {
  return function set3(target2, key, value, receiver) {
    let oldValue = target2[key];
    if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {
      return false;
    }
    if (!shallow) {
      if (!isShallow(value) && !isReadonly(value)) {
        oldValue = toRaw(oldValue);
        value = toRaw(value);
      }
      if (!isArray$2(target2) && isRef(oldValue) && !isRef(value)) {
        oldValue.value = value;
        return true;
      }
    }
    const hadKey = isArray$2(target2) && isIntegerKey(key) ? Number(key) < target2.length : hasOwn$1(target2, key);
    const result = Reflect.set(target2, key, value, receiver);
    if (target2 === toRaw(receiver)) {
      if (!hadKey) {
        trigger(target2, "add", key, value);
      } else if (hasChanged(value, oldValue)) {
        trigger(target2, "set", key, value);
      }
    }
    return result;
  };
}
function deleteProperty(target2, key) {
  const hadKey = hasOwn$1(target2, key);
  target2[key];
  const result = Reflect.deleteProperty(target2, key);
  if (result && hadKey) {
    trigger(target2, "delete", key, void 0);
  }
  return result;
}
function has$1$1(target2, key) {
  const result = Reflect.has(target2, key);
  if (!isSymbol(key) || !builtInSymbols.has(key)) {
    track(target2, "has", key);
  }
  return result;
}
function ownKeys(target2) {
  track(target2, "iterate", isArray$2(target2) ? "length" : ITERATE_KEY);
  return Reflect.ownKeys(target2);
}
const mutableHandlers = {
  get: get$1,
  set: set$1,
  deleteProperty,
  has: has$1$1,
  ownKeys
};
const readonlyHandlers = {
  get: readonlyGet,
  set(target2, key) {
    return true;
  },
  deleteProperty(target2, key) {
    return true;
  }
};
const shallowReactiveHandlers = /* @__PURE__ */ extend({}, mutableHandlers, {
  get: shallowGet,
  set: shallowSet
});
const toShallow = (value) => value;
const getProto = (v2) => Reflect.getPrototypeOf(v2);
function get$2(target2, key, isReadonly2 = false, isShallow2 = false) {
  target2 = target2[
    "__v_raw"
    /* ReactiveFlags.RAW */
  ];
  const rawTarget = toRaw(target2);
  const rawKey = toRaw(key);
  if (!isReadonly2) {
    if (key !== rawKey) {
      track(rawTarget, "get", key);
    }
    track(rawTarget, "get", rawKey);
  }
  const { has: has2 } = getProto(rawTarget);
  const wrap2 = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;
  if (has2.call(rawTarget, key)) {
    return wrap2(target2.get(key));
  } else if (has2.call(rawTarget, rawKey)) {
    return wrap2(target2.get(rawKey));
  } else if (target2 !== rawTarget) {
    target2.get(key);
  }
}
function has$2(key, isReadonly2 = false) {
  const target2 = this[
    "__v_raw"
    /* ReactiveFlags.RAW */
  ];
  const rawTarget = toRaw(target2);
  const rawKey = toRaw(key);
  if (!isReadonly2) {
    if (key !== rawKey) {
      track(rawTarget, "has", key);
    }
    track(rawTarget, "has", rawKey);
  }
  return key === rawKey ? target2.has(key) : target2.has(key) || target2.has(rawKey);
}
function size$1(target2, isReadonly2 = false) {
  target2 = target2[
    "__v_raw"
    /* ReactiveFlags.RAW */
  ];
  !isReadonly2 && track(toRaw(target2), "iterate", ITERATE_KEY);
  return Reflect.get(target2, "size", target2);
}
function add(value) {
  value = toRaw(value);
  const target2 = toRaw(this);
  const proto2 = getProto(target2);
  const hadKey = proto2.has.call(target2, value);
  if (!hadKey) {
    target2.add(value);
    trigger(target2, "add", value, value);
  }
  return this;
}
function set$2(key, value) {
  value = toRaw(value);
  const target2 = toRaw(this);
  const { has: has2, get: get2 } = getProto(target2);
  let hadKey = has2.call(target2, key);
  if (!hadKey) {
    key = toRaw(key);
    hadKey = has2.call(target2, key);
  }
  const oldValue = get2.call(target2, key);
  target2.set(key, value);
  if (!hadKey) {
    trigger(target2, "add", key, value);
  } else if (hasChanged(value, oldValue)) {
    trigger(target2, "set", key, value);
  }
  return this;
}
function deleteEntry(key) {
  const target2 = toRaw(this);
  const { has: has2, get: get2 } = getProto(target2);
  let hadKey = has2.call(target2, key);
  if (!hadKey) {
    key = toRaw(key);
    hadKey = has2.call(target2, key);
  }
  get2 ? get2.call(target2, key) : void 0;
  const result = target2.delete(key);
  if (hadKey) {
    trigger(target2, "delete", key, void 0);
  }
  return result;
}
function clear() {
  const target2 = toRaw(this);
  const hadItems = target2.size !== 0;
  const result = target2.clear();
  if (hadItems) {
    trigger(target2, "clear", void 0, void 0);
  }
  return result;
}
function createForEach(isReadonly2, isShallow2) {
  return function forEach(callback, thisArg) {
    const observed = this;
    const target2 = observed[
      "__v_raw"
      /* ReactiveFlags.RAW */
    ];
    const rawTarget = toRaw(target2);
    const wrap2 = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;
    !isReadonly2 && track(rawTarget, "iterate", ITERATE_KEY);
    return target2.forEach((value, key) => {
      return callback.call(thisArg, wrap2(value), wrap2(key), observed);
    });
  };
}
function createIterableMethod(method, isReadonly2, isShallow2) {
  return function(...args) {
    const target2 = this[
      "__v_raw"
      /* ReactiveFlags.RAW */
    ];
    const rawTarget = toRaw(target2);
    const targetIsMap = isMap(rawTarget);
    const isPair = method === "entries" || method === Symbol.iterator && targetIsMap;
    const isKeyOnly = method === "keys" && targetIsMap;
    const innerIterator = target2[method](...args);
    const wrap2 = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;
    !isReadonly2 && track(rawTarget, "iterate", isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);
    return {
      // iterator protocol
      next() {
        const { value, done } = innerIterator.next();
        return done ? { value, done } : {
          value: isPair ? [wrap2(value[0]), wrap2(value[1])] : wrap2(value),
          done
        };
      },
      // iterable protocol
      [Symbol.iterator]() {
        return this;
      }
    };
  };
}
function createReadonlyMethod(type2) {
  return function(...args) {
    return type2 === "delete" ? false : this;
  };
}
function createInstrumentations() {
  const mutableInstrumentations2 = {
    get(key) {
      return get$2(this, key);
    },
    get size() {
      return size$1(this);
    },
    has: has$2,
    add,
    set: set$2,
    delete: deleteEntry,
    clear,
    forEach: createForEach(false, false)
  };
  const shallowInstrumentations2 = {
    get(key) {
      return get$2(this, key, false, true);
    },
    get size() {
      return size$1(this);
    },
    has: has$2,
    add,
    set: set$2,
    delete: deleteEntry,
    clear,
    forEach: createForEach(false, true)
  };
  const readonlyInstrumentations2 = {
    get(key) {
      return get$2(this, key, true);
    },
    get size() {
      return size$1(this, true);
    },
    has(key) {
      return has$2.call(this, key, true);
    },
    add: createReadonlyMethod(
      "add"
      /* TriggerOpTypes.ADD */
    ),
    set: createReadonlyMethod(
      "set"
      /* TriggerOpTypes.SET */
    ),
    delete: createReadonlyMethod(
      "delete"
      /* TriggerOpTypes.DELETE */
    ),
    clear: createReadonlyMethod(
      "clear"
      /* TriggerOpTypes.CLEAR */
    ),
    forEach: createForEach(true, false)
  };
  const shallowReadonlyInstrumentations2 = {
    get(key) {
      return get$2(this, key, true, true);
    },
    get size() {
      return size$1(this, true);
    },
    has(key) {
      return has$2.call(this, key, true);
    },
    add: createReadonlyMethod(
      "add"
      /* TriggerOpTypes.ADD */
    ),
    set: createReadonlyMethod(
      "set"
      /* TriggerOpTypes.SET */
    ),
    delete: createReadonlyMethod(
      "delete"
      /* TriggerOpTypes.DELETE */
    ),
    clear: createReadonlyMethod(
      "clear"
      /* TriggerOpTypes.CLEAR */
    ),
    forEach: createForEach(true, true)
  };
  const iteratorMethods = ["keys", "values", "entries", Symbol.iterator];
  iteratorMethods.forEach((method) => {
    mutableInstrumentations2[method] = createIterableMethod(method, false, false);
    readonlyInstrumentations2[method] = createIterableMethod(method, true, false);
    shallowInstrumentations2[method] = createIterableMethod(method, false, true);
    shallowReadonlyInstrumentations2[method] = createIterableMethod(method, true, true);
  });
  return [
    mutableInstrumentations2,
    readonlyInstrumentations2,
    shallowInstrumentations2,
    shallowReadonlyInstrumentations2
  ];
}
const [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* @__PURE__ */ createInstrumentations();
function createInstrumentationGetter(isReadonly2, shallow) {
  const instrumentations = shallow ? isReadonly2 ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly2 ? readonlyInstrumentations : mutableInstrumentations;
  return (target2, key, receiver) => {
    if (key === "__v_isReactive") {
      return !isReadonly2;
    } else if (key === "__v_isReadonly") {
      return isReadonly2;
    } else if (key === "__v_raw") {
      return target2;
    }
    return Reflect.get(hasOwn$1(instrumentations, key) && key in target2 ? instrumentations : target2, key, receiver);
  };
}
const mutableCollectionHandlers = {
  get: /* @__PURE__ */ createInstrumentationGetter(false, false)
};
const shallowCollectionHandlers = {
  get: /* @__PURE__ */ createInstrumentationGetter(false, true)
};
const readonlyCollectionHandlers = {
  get: /* @__PURE__ */ createInstrumentationGetter(true, false)
};
const reactiveMap = /* @__PURE__ */ new WeakMap();
const shallowReactiveMap = /* @__PURE__ */ new WeakMap();
const readonlyMap = /* @__PURE__ */ new WeakMap();
const shallowReadonlyMap = /* @__PURE__ */ new WeakMap();
function targetTypeMap(rawType) {
  switch (rawType) {
    case "Object":
    case "Array":
      return 1;
    case "Map":
    case "Set":
    case "WeakMap":
    case "WeakSet":
      return 2;
    default:
      return 0;
  }
}
function getTargetType(value) {
  return value[
    "__v_skip"
    /* ReactiveFlags.SKIP */
  ] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value));
}
function reactive(target2) {
  if (isReadonly(target2)) {
    return target2;
  }
  return createReactiveObject(target2, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);
}
function shallowReactive(target2) {
  return createReactiveObject(target2, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap);
}
function readonly(target2) {
  return createReactiveObject(target2, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);
}
function createReactiveObject(target2, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {
  if (!isObject$6(target2)) {
    return target2;
  }
  if (target2[
    "__v_raw"
    /* ReactiveFlags.RAW */
  ] && !(isReadonly2 && target2[
    "__v_isReactive"
    /* ReactiveFlags.IS_REACTIVE */
  ])) {
    return target2;
  }
  const existingProxy = proxyMap.get(target2);
  if (existingProxy) {
    return existingProxy;
  }
  const targetType = getTargetType(target2);
  if (targetType === 0) {
    return target2;
  }
  const proxy = new Proxy(target2, targetType === 2 ? collectionHandlers : baseHandlers);
  proxyMap.set(target2, proxy);
  return proxy;
}
function isReactive(value) {
  if (isReadonly(value)) {
    return isReactive(value[
      "__v_raw"
      /* ReactiveFlags.RAW */
    ]);
  }
  return !!(value && value[
    "__v_isReactive"
    /* ReactiveFlags.IS_REACTIVE */
  ]);
}
function isReadonly(value) {
  return !!(value && value[
    "__v_isReadonly"
    /* ReactiveFlags.IS_READONLY */
  ]);
}
function isShallow(value) {
  return !!(value && value[
    "__v_isShallow"
    /* ReactiveFlags.IS_SHALLOW */
  ]);
}
function isProxy(value) {
  return isReactive(value) || isReadonly(value);
}
function toRaw(observed) {
  const raw = observed && observed[
    "__v_raw"
    /* ReactiveFlags.RAW */
  ];
  return raw ? toRaw(raw) : observed;
}
function markRaw(value) {
  def(value, "__v_skip", true);
  return value;
}
const toReactive = (value) => isObject$6(value) ? reactive(value) : value;
const toReadonly = (value) => isObject$6(value) ? readonly(value) : value;
function trackRefValue(ref2) {
  if (shouldTrack && activeEffect) {
    ref2 = toRaw(ref2);
    {
      trackEffects(ref2.dep || (ref2.dep = createDep()));
    }
  }
}
function triggerRefValue(ref2, newVal) {
  ref2 = toRaw(ref2);
  const dep = ref2.dep;
  if (dep) {
    {
      triggerEffects(dep);
    }
  }
}
function isRef(r2) {
  return !!(r2 && r2.__v_isRef === true);
}
function ref(value) {
  return createRef(value, false);
}
function shallowRef(value) {
  return createRef(value, true);
}
function createRef(rawValue, shallow) {
  if (isRef(rawValue)) {
    return rawValue;
  }
  return new RefImpl(rawValue, shallow);
}
class RefImpl {
  constructor(value, __v_isShallow) {
    this.__v_isShallow = __v_isShallow;
    this.dep = void 0;
    this.__v_isRef = true;
    this._rawValue = __v_isShallow ? value : toRaw(value);
    this._value = __v_isShallow ? value : toReactive(value);
  }
  get value() {
    trackRefValue(this);
    return this._value;
  }
  set value(newVal) {
    const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);
    newVal = useDirectValue ? newVal : toRaw(newVal);
    if (hasChanged(newVal, this._rawValue)) {
      this._rawValue = newVal;
      this._value = useDirectValue ? newVal : toReactive(newVal);
      triggerRefValue(this);
    }
  }
}
function unref(ref2) {
  return isRef(ref2) ? ref2.value : ref2;
}
const shallowUnwrapHandlers = {
  get: (target2, key, receiver) => unref(Reflect.get(target2, key, receiver)),
  set: (target2, key, value, receiver) => {
    const oldValue = target2[key];
    if (isRef(oldValue) && !isRef(value)) {
      oldValue.value = value;
      return true;
    } else {
      return Reflect.set(target2, key, value, receiver);
    }
  }
};
function proxyRefs(objectWithRefs) {
  return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);
}
function toRefs(object) {
  const ret = isArray$2(object) ? new Array(object.length) : {};
  for (const key in object) {
    ret[key] = toRef(object, key);
  }
  return ret;
}
class ObjectRefImpl {
  constructor(_object, _key, _defaultValue) {
    this._object = _object;
    this._key = _key;
    this._defaultValue = _defaultValue;
    this.__v_isRef = true;
  }
  get value() {
    const val = this._object[this._key];
    return val === void 0 ? this._defaultValue : val;
  }
  set value(newVal) {
    this._object[this._key] = newVal;
  }
  get dep() {
    return getDepFromReactive(toRaw(this._object), this._key);
  }
}
function toRef(object, key, defaultValue) {
  const val = object[key];
  return isRef(val) ? val : new ObjectRefImpl(object, key, defaultValue);
}
var _a$1$2;
class ComputedRefImpl {
  constructor(getter, _setter, isReadonly2, isSSR) {
    this._setter = _setter;
    this.dep = void 0;
    this.__v_isRef = true;
    this[_a$1$2] = false;
    this._dirty = true;
    this.effect = new ReactiveEffect(getter, () => {
      if (!this._dirty) {
        this._dirty = true;
        triggerRefValue(this);
      }
    });
    this.effect.computed = this;
    this.effect.active = this._cacheable = !isSSR;
    this[
      "__v_isReadonly"
      /* ReactiveFlags.IS_READONLY */
    ] = isReadonly2;
  }
  get value() {
    const self2 = toRaw(this);
    trackRefValue(self2);
    if (self2._dirty || !self2._cacheable) {
      self2._dirty = false;
      self2._value = self2.effect.run();
    }
    return self2._value;
  }
  set value(newValue) {
    this._setter(newValue);
  }
}
_a$1$2 = "__v_isReadonly";
function computed$1(getterOrOptions, debugOptions, isSSR = false) {
  let getter;
  let setter;
  const onlyGetter = isFunction$4(getterOrOptions);
  if (onlyGetter) {
    getter = getterOrOptions;
    setter = NOOP;
  } else {
    getter = getterOrOptions.get;
    setter = getterOrOptions.set;
  }
  const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);
  return cRef;
}
function warn$1(msg, ...args) {
  return;
}
function callWithErrorHandling(fn2, instance, type2, args) {
  let res;
  try {
    res = args ? fn2(...args) : fn2();
  } catch (err) {
    handleError(err, instance, type2);
  }
  return res;
}
function callWithAsyncErrorHandling(fn2, instance, type2, args) {
  if (isFunction$4(fn2)) {
    const res = callWithErrorHandling(fn2, instance, type2, args);
    if (res && isPromise(res)) {
      res.catch((err) => {
        handleError(err, instance, type2);
      });
    }
    return res;
  }
  const values = [];
  for (let i = 0; i < fn2.length; i++) {
    values.push(callWithAsyncErrorHandling(fn2[i], instance, type2, args));
  }
  return values;
}
function handleError(err, instance, type2, throwInDev = true) {
  const contextVNode = instance ? instance.vnode : null;
  if (instance) {
    let cur = instance.parent;
    const exposedInstance = instance.proxy;
    const errorInfo = type2;
    while (cur) {
      const errorCapturedHooks = cur.ec;
      if (errorCapturedHooks) {
        for (let i = 0; i < errorCapturedHooks.length; i++) {
          if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {
            return;
          }
        }
      }
      cur = cur.parent;
    }
    const appErrorHandler = instance.appContext.config.errorHandler;
    if (appErrorHandler) {
      callWithErrorHandling(appErrorHandler, null, 10, [err, exposedInstance, errorInfo]);
      return;
    }
  }
  logError(err, type2, contextVNode, throwInDev);
}
function logError(err, type2, contextVNode, throwInDev = true) {
  {
    console.error(err);
  }
}
let isFlushing = false;
let isFlushPending = false;
const queue = [];
let flushIndex = 0;
const pendingPostFlushCbs = [];
let activePostFlushCbs = null;
let postFlushIndex = 0;
const resolvedPromise = /* @__PURE__ */ Promise.resolve();
let currentFlushPromise = null;
function nextTick(fn2) {
  const p2 = currentFlushPromise || resolvedPromise;
  return fn2 ? p2.then(this ? fn2.bind(this) : fn2) : p2;
}
function findInsertionIndex(id2) {
  let start2 = flushIndex + 1;
  let end2 = queue.length;
  while (start2 < end2) {
    const middle = start2 + end2 >>> 1;
    const middleJobId = getId$1(queue[middle]);
    middleJobId < id2 ? start2 = middle + 1 : end2 = middle;
  }
  return start2;
}
function queueJob(job) {
  if (!queue.length || !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) {
    if (job.id == null) {
      queue.push(job);
    } else {
      queue.splice(findInsertionIndex(job.id), 0, job);
    }
    queueFlush();
  }
}
function queueFlush() {
  if (!isFlushing && !isFlushPending) {
    isFlushPending = true;
    currentFlushPromise = resolvedPromise.then(flushJobs);
  }
}
function invalidateJob(job) {
  const i = queue.indexOf(job);
  if (i > flushIndex) {
    queue.splice(i, 1);
  }
}
function queuePostFlushCb(cb) {
  if (!isArray$2(cb)) {
    if (!activePostFlushCbs || !activePostFlushCbs.includes(cb, cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex)) {
      pendingPostFlushCbs.push(cb);
    }
  } else {
    pendingPostFlushCbs.push(...cb);
  }
  queueFlush();
}
function flushPreFlushCbs(seen2, i = isFlushing ? flushIndex + 1 : 0) {
  for (; i < queue.length; i++) {
    const cb = queue[i];
    if (cb && cb.pre) {
      queue.splice(i, 1);
      i--;
      cb();
    }
  }
}
function flushPostFlushCbs(seen2) {
  if (pendingPostFlushCbs.length) {
    const deduped = [...new Set(pendingPostFlushCbs)];
    pendingPostFlushCbs.length = 0;
    if (activePostFlushCbs) {
      activePostFlushCbs.push(...deduped);
      return;
    }
    activePostFlushCbs = deduped;
    activePostFlushCbs.sort((a2, b2) => getId$1(a2) - getId$1(b2));
    for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {
      activePostFlushCbs[postFlushIndex]();
    }
    activePostFlushCbs = null;
    postFlushIndex = 0;
  }
}
const getId$1 = (job) => job.id == null ? Infinity : job.id;
const comparator = (a2, b2) => {
  const diff = getId$1(a2) - getId$1(b2);
  if (diff === 0) {
    if (a2.pre && !b2.pre)
      return -1;
    if (b2.pre && !a2.pre)
      return 1;
  }
  return diff;
};
function flushJobs(seen2) {
  isFlushPending = false;
  isFlushing = true;
  queue.sort(comparator);
  const check2 = NOOP;
  try {
    for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {
      const job = queue[flushIndex];
      if (job && job.active !== false) {
        if (false)
          ;
        callWithErrorHandling(
          job,
          null,
          14
          /* ErrorCodes.SCHEDULER */
        );
      }
    }
  } finally {
    flushIndex = 0;
    queue.length = 0;
    flushPostFlushCbs();
    isFlushing = false;
    currentFlushPromise = null;
    if (queue.length || pendingPostFlushCbs.length) {
      flushJobs();
    }
  }
}
function emit(instance, event, ...rawArgs) {
  if (instance.isUnmounted)
    return;
  const props = instance.vnode.props || EMPTY_OBJ;
  let args = rawArgs;
  const isModelListener2 = event.startsWith("update:");
  const modelArg = isModelListener2 && event.slice(7);
  if (modelArg && modelArg in props) {
    const modifiersKey = `${modelArg === "modelValue" ? "model" : modelArg}Modifiers`;
    const { number: number2, trim: trim2 } = props[modifiersKey] || EMPTY_OBJ;
    if (trim2) {
      args = rawArgs.map((a2) => isString$4(a2) ? a2.trim() : a2);
    }
    if (number2) {
      args = rawArgs.map(looseToNumber);
    }
  }
  let handlerName;
  let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)
  props[handlerName = toHandlerKey(camelize(event))];
  if (!handler && isModelListener2) {
    handler = props[handlerName = toHandlerKey(hyphenate(event))];
  }
  if (handler) {
    callWithAsyncErrorHandling(handler, instance, 6, args);
  }
  const onceHandler = props[handlerName + `Once`];
  if (onceHandler) {
    if (!instance.emitted) {
      instance.emitted = {};
    } else if (instance.emitted[handlerName]) {
      return;
    }
    instance.emitted[handlerName] = true;
    callWithAsyncErrorHandling(onceHandler, instance, 6, args);
  }
}
function normalizeEmitsOptions(comp2, appContext, asMixin = false) {
  const cache2 = appContext.emitsCache;
  const cached = cache2.get(comp2);
  if (cached !== void 0) {
    return cached;
  }
  const raw = comp2.emits;
  let normalized = {};
  let hasExtends = false;
  if (!isFunction$4(comp2)) {
    const extendEmits = (raw2) => {
      const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);
      if (normalizedFromExtend) {
        hasExtends = true;
        extend(normalized, normalizedFromExtend);
      }
    };
    if (!asMixin && appContext.mixins.length) {
      appContext.mixins.forEach(extendEmits);
    }
    if (comp2.extends) {
      extendEmits(comp2.extends);
    }
    if (comp2.mixins) {
      comp2.mixins.forEach(extendEmits);
    }
  }
  if (!raw && !hasExtends) {
    if (isObject$6(comp2)) {
      cache2.set(comp2, null);
    }
    return null;
  }
  if (isArray$2(raw)) {
    raw.forEach((key) => normalized[key] = null);
  } else {
    extend(normalized, raw);
  }
  if (isObject$6(comp2)) {
    cache2.set(comp2, normalized);
  }
  return normalized;
}
function isEmitListener(options2, key) {
  if (!options2 || !isOn(key)) {
    return false;
  }
  key = key.slice(2).replace(/Once$/, "");
  return hasOwn$1(options2, key[0].toLowerCase() + key.slice(1)) || hasOwn$1(options2, hyphenate(key)) || hasOwn$1(options2, key);
}
let currentRenderingInstance = null;
let currentScopeId = null;
function setCurrentRenderingInstance(instance) {
  const prev2 = currentRenderingInstance;
  currentRenderingInstance = instance;
  currentScopeId = instance && instance.type.__scopeId || null;
  return prev2;
}
function pushScopeId(id2) {
  currentScopeId = id2;
}
function popScopeId() {
  currentScopeId = null;
}
const withScopeId = (_id) => withCtx;
function withCtx(fn2, ctx = currentRenderingInstance, isNonScopedSlot) {
  if (!ctx)
    return fn2;
  if (fn2._n) {
    return fn2;
  }
  const renderFnWithContext = (...args) => {
    if (renderFnWithContext._d) {
      setBlockTracking(-1);
    }
    const prevInstance = setCurrentRenderingInstance(ctx);
    let res;
    try {
      res = fn2(...args);
    } finally {
      setCurrentRenderingInstance(prevInstance);
      if (renderFnWithContext._d) {
        setBlockTracking(1);
      }
    }
    return res;
  };
  renderFnWithContext._n = true;
  renderFnWithContext._c = true;
  renderFnWithContext._d = true;
  return renderFnWithContext;
}
function markAttrsAccessed() {
}
function renderComponentRoot(instance) {
  const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit: emit3, render: render2, renderCache, data, setupState, ctx, inheritAttrs } = instance;
  let result;
  let fallthroughAttrs;
  const prev2 = setCurrentRenderingInstance(instance);
  try {
    if (vnode.shapeFlag & 4) {
      const proxyToUse = withProxy || proxy;
      result = normalizeVNode(render2.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));
      fallthroughAttrs = attrs;
    } else {
      const render3 = Component;
      if (false)
        ;
      result = normalizeVNode(render3.length > 1 ? render3(props, false ? {
        get attrs() {
          markAttrsAccessed();
          return attrs;
        },
        slots,
        emit: emit3
      } : { attrs, slots, emit: emit3 }) : render3(
        props,
        null
        /* we know it doesn't need it */
      ));
      fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);
    }
  } catch (err) {
    blockStack.length = 0;
    handleError(
      err,
      instance,
      1
      /* ErrorCodes.RENDER_FUNCTION */
    );
    result = createVNode(Comment);
  }
  let root2 = result;
  if (fallthroughAttrs && inheritAttrs !== false) {
    const keys = Object.keys(fallthroughAttrs);
    const { shapeFlag } = root2;
    if (keys.length) {
      if (shapeFlag & (1 | 6)) {
        if (propsOptions && keys.some(isModelListener)) {
          fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);
        }
        root2 = cloneVNode(root2, fallthroughAttrs);
      }
    }
  }
  if (vnode.dirs) {
    root2 = cloneVNode(root2);
    root2.dirs = root2.dirs ? root2.dirs.concat(vnode.dirs) : vnode.dirs;
  }
  if (vnode.transition) {
    root2.transition = vnode.transition;
  }
  {
    result = root2;
  }
  setCurrentRenderingInstance(prev2);
  return result;
}
const getFunctionalFallthrough = (attrs) => {
  let res;
  for (const key in attrs) {
    if (key === "class" || key === "style" || isOn(key)) {
      (res || (res = {}))[key] = attrs[key];
    }
  }
  return res;
};
const filterModelListeners = (attrs, props) => {
  const res = {};
  for (const key in attrs) {
    if (!isModelListener(key) || !(key.slice(9) in props)) {
      res[key] = attrs[key];
    }
  }
  return res;
};
function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
  const { props: prevProps, children: prevChildren, component } = prevVNode;
  const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;
  const emits = component.emitsOptions;
  if (nextVNode.dirs || nextVNode.transition) {
    return true;
  }
  if (optimized && patchFlag >= 0) {
    if (patchFlag & 1024) {
      return true;
    }
    if (patchFlag & 16) {
      if (!prevProps) {
        return !!nextProps;
      }
      return hasPropsChanged(prevProps, nextProps, emits);
    } else if (patchFlag & 8) {
      const dynamicProps = nextVNode.dynamicProps;
      for (let i = 0; i < dynamicProps.length; i++) {
        const key = dynamicProps[i];
        if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
          return true;
        }
      }
    }
  } else {
    if (prevChildren || nextChildren) {
      if (!nextChildren || !nextChildren.$stable) {
        return true;
      }
    }
    if (prevProps === nextProps) {
      return false;
    }
    if (!prevProps) {
      return !!nextProps;
    }
    if (!nextProps) {
      return true;
    }
    return hasPropsChanged(prevProps, nextProps, emits);
  }
  return false;
}
function hasPropsChanged(prevProps, nextProps, emitsOptions) {
  const nextKeys = Object.keys(nextProps);
  if (nextKeys.length !== Object.keys(prevProps).length) {
    return true;
  }
  for (let i = 0; i < nextKeys.length; i++) {
    const key = nextKeys[i];
    if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
      return true;
    }
  }
  return false;
}
function updateHOCHostEl({ vnode, parent }, el2) {
  while (parent && parent.subTree === vnode) {
    (vnode = parent.vnode).el = el2;
    parent = parent.parent;
  }
}
const isSuspense = (type2) => type2.__isSuspense;
function queueEffectWithSuspense(fn2, suspense) {
  if (suspense && suspense.pendingBranch) {
    if (isArray$2(fn2)) {
      suspense.effects.push(...fn2);
    } else {
      suspense.effects.push(fn2);
    }
  } else {
    queuePostFlushCb(fn2);
  }
}
function provide(key, value) {
  if (!currentInstance)
    ;
  else {
    let provides = currentInstance.provides;
    const parentProvides = currentInstance.parent && currentInstance.parent.provides;
    if (parentProvides === provides) {
      provides = currentInstance.provides = Object.create(parentProvides);
    }
    provides[key] = value;
  }
}
function inject(key, defaultValue, treatDefaultAsFactory = false) {
  const instance = currentInstance || currentRenderingInstance;
  if (instance) {
    const provides = instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides;
    if (provides && key in provides) {
      return provides[key];
    } else if (arguments.length > 1) {
      return treatDefaultAsFactory && isFunction$4(defaultValue) ? defaultValue.call(instance.proxy) : defaultValue;
    } else
      ;
  }
}
function watchEffect(effect2, options2) {
  return doWatch(effect2, null, options2);
}
function watchPostEffect(effect2, options2) {
  return doWatch(effect2, null, { flush: "post" });
}
const INITIAL_WATCHER_VALUE = {};
function watch(source, cb, options2) {
  return doWatch(source, cb, options2);
}
function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) {
  const instance = getCurrentScope() === (currentInstance === null || currentInstance === void 0 ? void 0 : currentInstance.scope) ? currentInstance : null;
  let getter;
  let forceTrigger = false;
  let isMultiSource = false;
  if (isRef(source)) {
    getter = () => source.value;
    forceTrigger = isShallow(source);
  } else if (isReactive(source)) {
    getter = () => source;
    deep = true;
  } else if (isArray$2(source)) {
    isMultiSource = true;
    forceTrigger = source.some((s2) => isReactive(s2) || isShallow(s2));
    getter = () => source.map((s2) => {
      if (isRef(s2)) {
        return s2.value;
      } else if (isReactive(s2)) {
        return traverse(s2);
      } else if (isFunction$4(s2)) {
        return callWithErrorHandling(
          s2,
          instance,
          2
          /* ErrorCodes.WATCH_GETTER */
        );
      } else
        ;
    });
  } else if (isFunction$4(source)) {
    if (cb) {
      getter = () => callWithErrorHandling(
        source,
        instance,
        2
        /* ErrorCodes.WATCH_GETTER */
      );
    } else {
      getter = () => {
        if (instance && instance.isUnmounted) {
          return;
        }
        if (cleanup) {
          cleanup();
        }
        return callWithAsyncErrorHandling(source, instance, 3, [onCleanup]);
      };
    }
  } else {
    getter = NOOP;
  }
  if (cb && deep) {
    const baseGetter = getter;
    getter = () => traverse(baseGetter());
  }
  let cleanup;
  let onCleanup = (fn2) => {
    cleanup = effect2.onStop = () => {
      callWithErrorHandling(
        fn2,
        instance,
        4
        /* ErrorCodes.WATCH_CLEANUP */
      );
    };
  };
  let ssrCleanup;
  if (isInSSRComponentSetup) {
    onCleanup = NOOP;
    if (!cb) {
      getter();
    } else if (immediate) {
      callWithAsyncErrorHandling(cb, instance, 3, [
        getter(),
        isMultiSource ? [] : void 0,
        onCleanup
      ]);
    }
    if (flush === "sync") {
      const ctx = useSSRContext();
      ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);
    } else {
      return NOOP;
    }
  }
  let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
  const job = () => {
    if (!effect2.active) {
      return;
    }
    if (cb) {
      const newValue = effect2.run();
      if (deep || forceTrigger || (isMultiSource ? newValue.some((v2, i) => hasChanged(v2, oldValue[i])) : hasChanged(newValue, oldValue)) || false) {
        if (cleanup) {
          cleanup();
        }
        callWithAsyncErrorHandling(cb, instance, 3, [
          newValue,
          // pass undefined as the old value when it's changed for the first time
          oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,
          onCleanup
        ]);
        oldValue = newValue;
      }
    } else {
      effect2.run();
    }
  };
  job.allowRecurse = !!cb;
  let scheduler;
  if (flush === "sync") {
    scheduler = job;
  } else if (flush === "post") {
    scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);
  } else {
    job.pre = true;
    if (instance)
      job.id = instance.uid;
    scheduler = () => queueJob(job);
  }
  const effect2 = new ReactiveEffect(getter, scheduler);
  if (cb) {
    if (immediate) {
      job();
    } else {
      oldValue = effect2.run();
    }
  } else if (flush === "post") {
    queuePostRenderEffect(effect2.run.bind(effect2), instance && instance.suspense);
  } else {
    effect2.run();
  }
  const unwatch = () => {
    effect2.stop();
    if (instance && instance.scope) {
      remove(instance.scope.effects, effect2);
    }
  };
  if (ssrCleanup)
    ssrCleanup.push(unwatch);
  return unwatch;
}
function instanceWatch(source, value, options2) {
  const publicThis = this.proxy;
  const getter = isString$4(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);
  let cb;
  if (isFunction$4(value)) {
    cb = value;
  } else {
    cb = value.handler;
    options2 = value;
  }
  const cur = currentInstance;
  setCurrentInstance(this);
  const res = doWatch(getter, cb.bind(publicThis), options2);
  if (cur) {
    setCurrentInstance(cur);
  } else {
    unsetCurrentInstance();
  }
  return res;
}
function createPathGetter(ctx, path) {
  const segments = path.split(".");
  return () => {
    let cur = ctx;
    for (let i = 0; i < segments.length && cur; i++) {
      cur = cur[segments[i]];
    }
    return cur;
  };
}
function traverse(value, seen2) {
  if (!isObject$6(value) || value[
    "__v_skip"
    /* ReactiveFlags.SKIP */
  ]) {
    return value;
  }
  seen2 = seen2 || /* @__PURE__ */ new Set();
  if (seen2.has(value)) {
    return value;
  }
  seen2.add(value);
  if (isRef(value)) {
    traverse(value.value, seen2);
  } else if (isArray$2(value)) {
    for (let i = 0; i < value.length; i++) {
      traverse(value[i], seen2);
    }
  } else if (isSet(value) || isMap(value)) {
    value.forEach((v2) => {
      traverse(v2, seen2);
    });
  } else if (isPlainObject$4(value)) {
    for (const key in value) {
      traverse(value[key], seen2);
    }
  }
  return value;
}
function useTransitionState() {
  const state = {
    isMounted: false,
    isLeaving: false,
    isUnmounting: false,
    leavingVNodes: /* @__PURE__ */ new Map()
  };
  onMounted(() => {
    state.isMounted = true;
  });
  onBeforeUnmount(() => {
    state.isUnmounting = true;
  });
  return state;
}
const TransitionHookValidator = [Function, Array];
const BaseTransitionImpl = {
  name: `BaseTransition`,
  props: {
    mode: String,
    appear: Boolean,
    persisted: Boolean,
    // enter
    onBeforeEnter: TransitionHookValidator,
    onEnter: TransitionHookValidator,
    onAfterEnter: TransitionHookValidator,
    onEnterCancelled: TransitionHookValidator,
    // leave
    onBeforeLeave: TransitionHookValidator,
    onLeave: TransitionHookValidator,
    onAfterLeave: TransitionHookValidator,
    onLeaveCancelled: TransitionHookValidator,
    // appear
    onBeforeAppear: TransitionHookValidator,
    onAppear: TransitionHookValidator,
    onAfterAppear: TransitionHookValidator,
    onAppearCancelled: TransitionHookValidator
  },
  setup(props, { slots }) {
    const instance = getCurrentInstance();
    const state = useTransitionState();
    let prevTransitionKey;
    return () => {
      const children = slots.default && getTransitionRawChildren(slots.default(), true);
      if (!children || !children.length) {
        return;
      }
      let child = children[0];
      if (children.length > 1) {
        for (const c2 of children) {
          if (c2.type !== Comment) {
            child = c2;
            break;
          }
        }
      }
      const rawProps = toRaw(props);
      const { mode } = rawProps;
      if (state.isLeaving) {
        return emptyPlaceholder(child);
      }
      const innerChild = getKeepAliveChild(child);
      if (!innerChild) {
        return emptyPlaceholder(child);
      }
      const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance);
      setTransitionHooks(innerChild, enterHooks);
      const oldChild = instance.subTree;
      const oldInnerChild = oldChild && getKeepAliveChild(oldChild);
      let transitionKeyChanged = false;
      const { getTransitionKey } = innerChild.type;
      if (getTransitionKey) {
        const key = getTransitionKey();
        if (prevTransitionKey === void 0) {
          prevTransitionKey = key;
        } else if (key !== prevTransitionKey) {
          prevTransitionKey = key;
          transitionKeyChanged = true;
        }
      }
      if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {
        const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance);
        setTransitionHooks(oldInnerChild, leavingHooks);
        if (mode === "out-in") {
          state.isLeaving = true;
          leavingHooks.afterLeave = () => {
            state.isLeaving = false;
            if (instance.update.active !== false) {
              instance.update();
            }
          };
          return emptyPlaceholder(child);
        } else if (mode === "in-out" && innerChild.type !== Comment) {
          leavingHooks.delayLeave = (el2, earlyRemove, delayedLeave) => {
            const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);
            leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;
            el2._leaveCb = () => {
              earlyRemove();
              el2._leaveCb = void 0;
              delete enterHooks.delayedLeave;
            };
            enterHooks.delayedLeave = delayedLeave;
          };
        }
      }
      return child;
    };
  }
};
const BaseTransition = BaseTransitionImpl;
function getLeavingNodesForType(state, vnode) {
  const { leavingVNodes } = state;
  let leavingVNodesCache = leavingVNodes.get(vnode.type);
  if (!leavingVNodesCache) {
    leavingVNodesCache = /* @__PURE__ */ Object.create(null);
    leavingVNodes.set(vnode.type, leavingVNodesCache);
  }
  return leavingVNodesCache;
}
function resolveTransitionHooks(vnode, props, state, instance) {
  const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;
  const key = String(vnode.key);
  const leavingVNodesCache = getLeavingNodesForType(state, vnode);
  const callHook2 = (hook, args) => {
    hook && callWithAsyncErrorHandling(hook, instance, 9, args);
  };
  const callAsyncHook = (hook, args) => {
    const done = args[1];
    callHook2(hook, args);
    if (isArray$2(hook)) {
      if (hook.every((hook2) => hook2.length <= 1))
        done();
    } else if (hook.length <= 1) {
      done();
    }
  };
  const hooks = {
    mode,
    persisted,
    beforeEnter(el2) {
      let hook = onBeforeEnter;
      if (!state.isMounted) {
        if (appear) {
          hook = onBeforeAppear || onBeforeEnter;
        } else {
          return;
        }
      }
      if (el2._leaveCb) {
        el2._leaveCb(
          true
          /* cancelled */
        );
      }
      const leavingVNode = leavingVNodesCache[key];
      if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el._leaveCb) {
        leavingVNode.el._leaveCb();
      }
      callHook2(hook, [el2]);
    },
    enter(el2) {
      let hook = onEnter;
      let afterHook = onAfterEnter;
      let cancelHook = onEnterCancelled;
      if (!state.isMounted) {
        if (appear) {
          hook = onAppear || onEnter;
          afterHook = onAfterAppear || onAfterEnter;
          cancelHook = onAppearCancelled || onEnterCancelled;
        } else {
          return;
        }
      }
      let called = false;
      const done = el2._enterCb = (cancelled) => {
        if (called)
          return;
        called = true;
        if (cancelled) {
          callHook2(cancelHook, [el2]);
        } else {
          callHook2(afterHook, [el2]);
        }
        if (hooks.delayedLeave) {
          hooks.delayedLeave();
        }
        el2._enterCb = void 0;
      };
      if (hook) {
        callAsyncHook(hook, [el2, done]);
      } else {
        done();
      }
    },
    leave(el2, remove2) {
      const key2 = String(vnode.key);
      if (el2._enterCb) {
        el2._enterCb(
          true
          /* cancelled */
        );
      }
      if (state.isUnmounting) {
        return remove2();
      }
      callHook2(onBeforeLeave, [el2]);
      let called = false;
      const done = el2._leaveCb = (cancelled) => {
        if (called)
          return;
        called = true;
        remove2();
        if (cancelled) {
          callHook2(onLeaveCancelled, [el2]);
        } else {
          callHook2(onAfterLeave, [el2]);
        }
        el2._leaveCb = void 0;
        if (leavingVNodesCache[key2] === vnode) {
          delete leavingVNodesCache[key2];
        }
      };
      leavingVNodesCache[key2] = vnode;
      if (onLeave) {
        callAsyncHook(onLeave, [el2, done]);
      } else {
        done();
      }
    },
    clone(vnode2) {
      return resolveTransitionHooks(vnode2, props, state, instance);
    }
  };
  return hooks;
}
function emptyPlaceholder(vnode) {
  if (isKeepAlive(vnode)) {
    vnode = cloneVNode(vnode);
    vnode.children = null;
    return vnode;
  }
}
function getKeepAliveChild(vnode) {
  return isKeepAlive(vnode) ? vnode.children ? vnode.children[0] : void 0 : vnode;
}
function setTransitionHooks(vnode, hooks) {
  if (vnode.shapeFlag & 6 && vnode.component) {
    setTransitionHooks(vnode.component.subTree, hooks);
  } else if (vnode.shapeFlag & 128) {
    vnode.ssContent.transition = hooks.clone(vnode.ssContent);
    vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
  } else {
    vnode.transition = hooks;
  }
}
function getTransitionRawChildren(children, keepComment = false, parentKey) {
  let ret = [];
  let keyedFragmentCount = 0;
  for (let i = 0; i < children.length; i++) {
    let child = children[i];
    const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);
    if (child.type === Fragment) {
      if (child.patchFlag & 128)
        keyedFragmentCount++;
      ret = ret.concat(getTransitionRawChildren(child.children, keepComment, key));
    } else if (keepComment || child.type !== Comment) {
      ret.push(key != null ? cloneVNode(child, { key }) : child);
    }
  }
  if (keyedFragmentCount > 1) {
    for (let i = 0; i < ret.length; i++) {
      ret[i].patchFlag = -2;
    }
  }
  return ret;
}
function defineComponent(options2) {
  return isFunction$4(options2) ? { setup: options2, name: options2.name } : options2;
}
const isAsyncWrapper = (i) => !!i.type.__asyncLoader;
const isKeepAlive = (vnode) => vnode.type.__isKeepAlive;
function onActivated(hook, target2) {
  registerKeepAliveHook(hook, "a", target2);
}
function onDeactivated(hook, target2) {
  registerKeepAliveHook(hook, "da", target2);
}
function registerKeepAliveHook(hook, type2, target2 = currentInstance) {
  const wrappedHook = hook.__wdc || (hook.__wdc = () => {
    let current = target2;
    while (current) {
      if (current.isDeactivated) {
        return;
      }
      current = current.parent;
    }
    return hook();
  });
  injectHook(type2, wrappedHook, target2);
  if (target2) {
    let current = target2.parent;
    while (current && current.parent) {
      if (isKeepAlive(current.parent.vnode)) {
        injectToKeepAliveRoot(wrappedHook, type2, target2, current);
      }
      current = current.parent;
    }
  }
}
function injectToKeepAliveRoot(hook, type2, target2, keepAliveRoot) {
  const injected = injectHook(
    type2,
    hook,
    keepAliveRoot,
    true
    /* prepend */
  );
  onUnmounted(() => {
    remove(keepAliveRoot[type2], injected);
  }, target2);
}
function injectHook(type2, hook, target2 = currentInstance, prepend = false) {
  if (target2) {
    const hooks = target2[type2] || (target2[type2] = []);
    const wrappedHook = hook.__weh || (hook.__weh = (...args) => {
      if (target2.isUnmounted) {
        return;
      }
      pauseTracking();
      setCurrentInstance(target2);
      const res = callWithAsyncErrorHandling(hook, target2, type2, args);
      unsetCurrentInstance();
      resetTracking();
      return res;
    });
    if (prepend) {
      hooks.unshift(wrappedHook);
    } else {
      hooks.push(wrappedHook);
    }
    return wrappedHook;
  }
}
const createHook = (lifecycle) => (hook, target2 = currentInstance) => (
  // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)
  (!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target2)
);
const onBeforeMount = createHook(
  "bm"
  /* LifecycleHooks.BEFORE_MOUNT */
);
const onMounted = createHook(
  "m"
  /* LifecycleHooks.MOUNTED */
);
const onBeforeUpdate = createHook(
  "bu"
  /* LifecycleHooks.BEFORE_UPDATE */
);
const onUpdated = createHook(
  "u"
  /* LifecycleHooks.UPDATED */
);
const onBeforeUnmount = createHook(
  "bum"
  /* LifecycleHooks.BEFORE_UNMOUNT */
);
const onUnmounted = createHook(
  "um"
  /* LifecycleHooks.UNMOUNTED */
);
const onServerPrefetch = createHook(
  "sp"
  /* LifecycleHooks.SERVER_PREFETCH */
);
const onRenderTriggered = createHook(
  "rtg"
  /* LifecycleHooks.RENDER_TRIGGERED */
);
const onRenderTracked = createHook(
  "rtc"
  /* LifecycleHooks.RENDER_TRACKED */
);
function onErrorCaptured(hook, target2 = currentInstance) {
  injectHook("ec", hook, target2);
}
function withDirectives(vnode, directives) {
  const internalInstance = currentRenderingInstance;
  if (internalInstance === null) {
    return vnode;
  }
  const instance = getExposeProxy(internalInstance) || internalInstance.proxy;
  const bindings = vnode.dirs || (vnode.dirs = []);
  for (let i = 0; i < directives.length; i++) {
    let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];
    if (dir) {
      if (isFunction$4(dir)) {
        dir = {
          mounted: dir,
          updated: dir
        };
      }
      if (dir.deep) {
        traverse(value);
      }
      bindings.push({
        dir,
        instance,
        value,
        oldValue: void 0,
        arg,
        modifiers
      });
    }
  }
  return vnode;
}
function invokeDirectiveHook(vnode, prevVNode, instance, name2) {
  const bindings = vnode.dirs;
  const oldBindings = prevVNode && prevVNode.dirs;
  for (let i = 0; i < bindings.length; i++) {
    const binding = bindings[i];
    if (oldBindings) {
      binding.oldValue = oldBindings[i].value;
    }
    let hook = binding.dir[name2];
    if (hook) {
      pauseTracking();
      callWithAsyncErrorHandling(hook, instance, 8, [
        vnode.el,
        binding,
        vnode,
        prevVNode
      ]);
      resetTracking();
    }
  }
}
const COMPONENTS = "components";
function resolveComponent(name2, maybeSelfReference) {
  return resolveAsset(COMPONENTS, name2, true, maybeSelfReference) || name2;
}
const NULL_DYNAMIC_COMPONENT = Symbol();
function resolveDynamicComponent(component) {
  if (isString$4(component)) {
    return resolveAsset(COMPONENTS, component, false) || component;
  } else {
    return component || NULL_DYNAMIC_COMPONENT;
  }
}
function resolveAsset(type2, name2, warnMissing = true, maybeSelfReference = false) {
  const instance = currentRenderingInstance || currentInstance;
  if (instance) {
    const Component = instance.type;
    if (type2 === COMPONENTS) {
      const selfName = getComponentName(
        Component,
        false
        /* do not include inferred name to avoid breaking existing code */
      );
      if (selfName && (selfName === name2 || selfName === camelize(name2) || selfName === capitalize(camelize(name2)))) {
        return Component;
      }
    }
    const res = (
      // local registration
      // check instance[type] first which is resolved for options API
      resolve(instance[type2] || Component[type2], name2) || // global registration
      resolve(instance.appContext[type2], name2)
    );
    if (!res && maybeSelfReference) {
      return Component;
    }
    return res;
  }
}
function resolve(registry, name2) {
  return registry && (registry[name2] || registry[camelize(name2)] || registry[capitalize(camelize(name2))]);
}
function renderList(source, renderItem, cache2, index2) {
  let ret;
  const cached = cache2 && cache2[index2];
  if (isArray$2(source) || isString$4(source)) {
    ret = new Array(source.length);
    for (let i = 0, l2 = source.length; i < l2; i++) {
      ret[i] = renderItem(source[i], i, void 0, cached && cached[i]);
    }
  } else if (typeof source === "number") {
    ret = new Array(source);
    for (let i = 0; i < source; i++) {
      ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);
    }
  } else if (isObject$6(source)) {
    if (source[Symbol.iterator]) {
      ret = Array.from(source, (item, i) => renderItem(item, i, void 0, cached && cached[i]));
    } else {
      const keys = Object.keys(source);
      ret = new Array(keys.length);
      for (let i = 0, l2 = keys.length; i < l2; i++) {
        const key = keys[i];
        ret[i] = renderItem(source[key], key, i, cached && cached[i]);
      }
    }
  } else {
    ret = [];
  }
  if (cache2) {
    cache2[index2] = ret;
  }
  return ret;
}
function createSlots(slots, dynamicSlots) {
  for (let i = 0; i < dynamicSlots.length; i++) {
    const slot = dynamicSlots[i];
    if (isArray$2(slot)) {
      for (let j2 = 0; j2 < slot.length; j2++) {
        slots[slot[j2].name] = slot[j2].fn;
      }
    } else if (slot) {
      slots[slot.name] = slot.key ? (...args) => {
        const res = slot.fn(...args);
        if (res)
          res.key = slot.key;
        return res;
      } : slot.fn;
    }
  }
  return slots;
}
function renderSlot(slots, name2, props = {}, fallback, noSlotted) {
  if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) {
    if (name2 !== "default")
      props.name = name2;
    return createVNode("slot", props, fallback && fallback());
  }
  let slot = slots[name2];
  if (slot && slot._c) {
    slot._d = false;
  }
  openBlock();
  const validSlotContent = slot && ensureValidVNode(slot(props));
  const rendered = createBlock(
    Fragment,
    {
      key: props.key || // slot content array of a dynamic conditional slot may have a branch
      // key attached in the `createSlots` helper, respect that
      validSlotContent && validSlotContent.key || `_${name2}`
    },
    validSlotContent || (fallback ? fallback() : []),
    validSlotContent && slots._ === 1 ? 64 : -2
    /* PatchFlags.BAIL */
  );
  if (!noSlotted && rendered.scopeId) {
    rendered.slotScopeIds = [rendered.scopeId + "-s"];
  }
  if (slot && slot._c) {
    slot._d = true;
  }
  return rendered;
}
function ensureValidVNode(vnodes) {
  return vnodes.some((child) => {
    if (!isVNode(child))
      return true;
    if (child.type === Comment)
      return false;
    if (child.type === Fragment && !ensureValidVNode(child.children))
      return false;
    return true;
  }) ? vnodes : null;
}
function toHandlers(obj, preserveCaseIfNecessary) {
  const ret = {};
  for (const key in obj) {
    ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];
  }
  return ret;
}
const getPublicInstance = (i) => {
  if (!i)
    return null;
  if (isStatefulComponent(i))
    return getExposeProxy(i) || i.proxy;
  return getPublicInstance(i.parent);
};
const publicPropertiesMap = (
  // Move PURE marker to new line to workaround compiler discarding it
  // due to type annotation
  /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {
    $: (i) => i,
    $el: (i) => i.vnode.el,
    $data: (i) => i.data,
    $props: (i) => i.props,
    $attrs: (i) => i.attrs,
    $slots: (i) => i.slots,
    $refs: (i) => i.refs,
    $parent: (i) => getPublicInstance(i.parent),
    $root: (i) => getPublicInstance(i.root),
    $emit: (i) => i.emit,
    $options: (i) => resolveMergedOptions(i),
    $forceUpdate: (i) => i.f || (i.f = () => queueJob(i.update)),
    $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),
    $watch: (i) => instanceWatch.bind(i)
  })
);
const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn$1(state, key);
const PublicInstanceProxyHandlers = {
  get({ _: instance }, key) {
    const { ctx, setupState, data, props, accessCache, type: type2, appContext } = instance;
    let normalizedProps;
    if (key[0] !== "$") {
      const n = accessCache[key];
      if (n !== void 0) {
        switch (n) {
          case 1:
            return setupState[key];
          case 2:
            return data[key];
          case 4:
            return ctx[key];
          case 3:
            return props[key];
        }
      } else if (hasSetupBinding(setupState, key)) {
        accessCache[key] = 1;
        return setupState[key];
      } else if (data !== EMPTY_OBJ && hasOwn$1(data, key)) {
        accessCache[key] = 2;
        return data[key];
      } else if (
        // only cache other properties when instance has declared (thus stable)
        // props
        (normalizedProps = instance.propsOptions[0]) && hasOwn$1(normalizedProps, key)
      ) {
        accessCache[key] = 3;
        return props[key];
      } else if (ctx !== EMPTY_OBJ && hasOwn$1(ctx, key)) {
        accessCache[key] = 4;
        return ctx[key];
      } else if (shouldCacheAccess) {
        accessCache[key] = 0;
      }
    }
    const publicGetter = publicPropertiesMap[key];
    let cssModule, globalProperties;
    if (publicGetter) {
      if (key === "$attrs") {
        track(instance, "get", key);
      }
      return publicGetter(instance);
    } else if (
      // css module (injected by vue-loader)
      (cssModule = type2.__cssModules) && (cssModule = cssModule[key])
    ) {
      return cssModule;
    } else if (ctx !== EMPTY_OBJ && hasOwn$1(ctx, key)) {
      accessCache[key] = 4;
      return ctx[key];
    } else if (
      // global properties
      globalProperties = appContext.config.globalProperties, hasOwn$1(globalProperties, key)
    ) {
      {
        return globalProperties[key];
      }
    } else
      ;
  },
  set({ _: instance }, key, value) {
    const { data, setupState, ctx } = instance;
    if (hasSetupBinding(setupState, key)) {
      setupState[key] = value;
      return true;
    } else if (data !== EMPTY_OBJ && hasOwn$1(data, key)) {
      data[key] = value;
      return true;
    } else if (hasOwn$1(instance.props, key)) {
      return false;
    }
    if (key[0] === "$" && key.slice(1) in instance) {
      return false;
    } else {
      {
        ctx[key] = value;
      }
    }
    return true;
  },
  has({ _: { data, setupState, accessCache, ctx, appContext, propsOptions } }, key) {
    let normalizedProps;
    return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn$1(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn$1(normalizedProps, key) || hasOwn$1(ctx, key) || hasOwn$1(publicPropertiesMap, key) || hasOwn$1(appContext.config.globalProperties, key);
  },
  defineProperty(target2, key, descriptor) {
    if (descriptor.get != null) {
      target2._.accessCache[key] = 0;
    } else if (hasOwn$1(descriptor, "value")) {
      this.set(target2, key, descriptor.value, null);
    }
    return Reflect.defineProperty(target2, key, descriptor);
  }
};
let shouldCacheAccess = true;
function applyOptions(instance) {
  const options2 = resolveMergedOptions(instance);
  const publicThis = instance.proxy;
  const ctx = instance.ctx;
  shouldCacheAccess = false;
  if (options2.beforeCreate) {
    callHook$1(
      options2.beforeCreate,
      instance,
      "bc"
      /* LifecycleHooks.BEFORE_CREATE */
    );
  }
  const {
    // state
    data: dataOptions,
    computed: computedOptions,
    methods,
    watch: watchOptions,
    provide: provideOptions,
    inject: injectOptions,
    // lifecycle
    created,
    beforeMount,
    mounted,
    beforeUpdate,
    updated,
    activated,
    deactivated,
    beforeDestroy,
    beforeUnmount,
    destroyed,
    unmounted,
    render: render2,
    renderTracked,
    renderTriggered,
    errorCaptured,
    serverPrefetch,
    // public API
    expose,
    inheritAttrs,
    // assets
    components,
    directives,
    filters
  } = options2;
  const checkDuplicateProperties = null;
  if (injectOptions) {
    resolveInjections(injectOptions, ctx, checkDuplicateProperties, instance.appContext.config.unwrapInjectedRef);
  }
  if (methods) {
    for (const key in methods) {
      const methodHandler = methods[key];
      if (isFunction$4(methodHandler)) {
        {
          ctx[key] = methodHandler.bind(publicThis);
        }
      }
    }
  }
  if (dataOptions) {
    const data = dataOptions.call(publicThis, publicThis);
    if (!isObject$6(data))
      ;
    else {
      instance.data = reactive(data);
    }
  }
  shouldCacheAccess = true;
  if (computedOptions) {
    for (const key in computedOptions) {
      const opt = computedOptions[key];
      const get2 = isFunction$4(opt) ? opt.bind(publicThis, publicThis) : isFunction$4(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;
      const set3 = !isFunction$4(opt) && isFunction$4(opt.set) ? opt.set.bind(publicThis) : NOOP;
      const c2 = computed({
        get: get2,
        set: set3
      });
      Object.defineProperty(ctx, key, {
        enumerable: true,
        configurable: true,
        get: () => c2.value,
        set: (v2) => c2.value = v2
      });
    }
  }
  if (watchOptions) {
    for (const key in watchOptions) {
      createWatcher(watchOptions[key], ctx, publicThis, key);
    }
  }
  if (provideOptions) {
    const provides = isFunction$4(provideOptions) ? provideOptions.call(publicThis) : provideOptions;
    Reflect.ownKeys(provides).forEach((key) => {
      provide(key, provides[key]);
    });
  }
  if (created) {
    callHook$1(
      created,
      instance,
      "c"
      /* LifecycleHooks.CREATED */
    );
  }
  function registerLifecycleHook(register, hook) {
    if (isArray$2(hook)) {
      hook.forEach((_hook) => register(_hook.bind(publicThis)));
    } else if (hook) {
      register(hook.bind(publicThis));
    }
  }
  registerLifecycleHook(onBeforeMount, beforeMount);
  registerLifecycleHook(onMounted, mounted);
  registerLifecycleHook(onBeforeUpdate, beforeUpdate);
  registerLifecycleHook(onUpdated, updated);
  registerLifecycleHook(onActivated, activated);
  registerLifecycleHook(onDeactivated, deactivated);
  registerLifecycleHook(onErrorCaptured, errorCaptured);
  registerLifecycleHook(onRenderTracked, renderTracked);
  registerLifecycleHook(onRenderTriggered, renderTriggered);
  registerLifecycleHook(onBeforeUnmount, beforeUnmount);
  registerLifecycleHook(onUnmounted, unmounted);
  registerLifecycleHook(onServerPrefetch, serverPrefetch);
  if (isArray$2(expose)) {
    if (expose.length) {
      const exposed = instance.exposed || (instance.exposed = {});
      expose.forEach((key) => {
        Object.defineProperty(exposed, key, {
          get: () => publicThis[key],
          set: (val) => publicThis[key] = val
        });
      });
    } else if (!instance.exposed) {
      instance.exposed = {};
    }
  }
  if (render2 && instance.render === NOOP) {
    instance.render = render2;
  }
  if (inheritAttrs != null) {
    instance.inheritAttrs = inheritAttrs;
  }
  if (components)
    instance.components = components;
  if (directives)
    instance.directives = directives;
}
function resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP, unwrapRef = false) {
  if (isArray$2(injectOptions)) {
    injectOptions = normalizeInject(injectOptions);
  }
  for (const key in injectOptions) {
    const opt = injectOptions[key];
    let injected;
    if (isObject$6(opt)) {
      if ("default" in opt) {
        injected = inject(
          opt.from || key,
          opt.default,
          true
          /* treat default function as factory */
        );
      } else {
        injected = inject(opt.from || key);
      }
    } else {
      injected = inject(opt);
    }
    if (isRef(injected)) {
      if (unwrapRef) {
        Object.defineProperty(ctx, key, {
          enumerable: true,
          configurable: true,
          get: () => injected.value,
          set: (v2) => injected.value = v2
        });
      } else {
        ctx[key] = injected;
      }
    } else {
      ctx[key] = injected;
    }
  }
}
function callHook$1(hook, instance, type2) {
  callWithAsyncErrorHandling(isArray$2(hook) ? hook.map((h2) => h2.bind(instance.proxy)) : hook.bind(instance.proxy), instance, type2);
}
function createWatcher(raw, ctx, publicThis, key) {
  const getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key];
  if (isString$4(raw)) {
    const handler = ctx[raw];
    if (isFunction$4(handler)) {
      watch(getter, handler);
    }
  } else if (isFunction$4(raw)) {
    watch(getter, raw.bind(publicThis));
  } else if (isObject$6(raw)) {
    if (isArray$2(raw)) {
      raw.forEach((r2) => createWatcher(r2, ctx, publicThis, key));
    } else {
      const handler = isFunction$4(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];
      if (isFunction$4(handler)) {
        watch(getter, handler, raw);
      }
    }
  } else
    ;
}
function resolveMergedOptions(instance) {
  const base2 = instance.type;
  const { mixins, extends: extendsOptions } = base2;
  const { mixins: globalMixins, optionsCache: cache2, config: { optionMergeStrategies } } = instance.appContext;
  const cached = cache2.get(base2);
  let resolved;
  if (cached) {
    resolved = cached;
  } else if (!globalMixins.length && !mixins && !extendsOptions) {
    {
      resolved = base2;
    }
  } else {
    resolved = {};
    if (globalMixins.length) {
      globalMixins.forEach((m2) => mergeOptions$1(resolved, m2, optionMergeStrategies, true));
    }
    mergeOptions$1(resolved, base2, optionMergeStrategies);
  }
  if (isObject$6(base2)) {
    cache2.set(base2, resolved);
  }
  return resolved;
}
function mergeOptions$1(to2, from, strats, asMixin = false) {
  const { mixins, extends: extendsOptions } = from;
  if (extendsOptions) {
    mergeOptions$1(to2, extendsOptions, strats, true);
  }
  if (mixins) {
    mixins.forEach((m2) => mergeOptions$1(to2, m2, strats, true));
  }
  for (const key in from) {
    if (asMixin && key === "expose")
      ;
    else {
      const strat = internalOptionMergeStrats[key] || strats && strats[key];
      to2[key] = strat ? strat(to2[key], from[key]) : from[key];
    }
  }
  return to2;
}
const internalOptionMergeStrats = {
  data: mergeDataFn,
  props: mergeObjectOptions,
  emits: mergeObjectOptions,
  // objects
  methods: mergeObjectOptions,
  computed: mergeObjectOptions,
  // lifecycle
  beforeCreate: mergeAsArray,
  created: mergeAsArray,
  beforeMount: mergeAsArray,
  mounted: mergeAsArray,
  beforeUpdate: mergeAsArray,
  updated: mergeAsArray,
  beforeDestroy: mergeAsArray,
  beforeUnmount: mergeAsArray,
  destroyed: mergeAsArray,
  unmounted: mergeAsArray,
  activated: mergeAsArray,
  deactivated: mergeAsArray,
  errorCaptured: mergeAsArray,
  serverPrefetch: mergeAsArray,
  // assets
  components: mergeObjectOptions,
  directives: mergeObjectOptions,
  // watch
  watch: mergeWatchOptions,
  // provide / inject
  provide: mergeDataFn,
  inject: mergeInject
};
function mergeDataFn(to2, from) {
  if (!from) {
    return to2;
  }
  if (!to2) {
    return from;
  }
  return function mergedDataFn() {
    return extend(isFunction$4(to2) ? to2.call(this, this) : to2, isFunction$4(from) ? from.call(this, this) : from);
  };
}
function mergeInject(to2, from) {
  return mergeObjectOptions(normalizeInject(to2), normalizeInject(from));
}
function normalizeInject(raw) {
  if (isArray$2(raw)) {
    const res = {};
    for (let i = 0; i < raw.length; i++) {
      res[raw[i]] = raw[i];
    }
    return res;
  }
  return raw;
}
function mergeAsArray(to2, from) {
  return to2 ? [...new Set([].concat(to2, from))] : from;
}
function mergeObjectOptions(to2, from) {
  return to2 ? extend(extend(/* @__PURE__ */ Object.create(null), to2), from) : from;
}
function mergeWatchOptions(to2, from) {
  if (!to2)
    return from;
  if (!from)
    return to2;
  const merged = extend(/* @__PURE__ */ Object.create(null), to2);
  for (const key in from) {
    merged[key] = mergeAsArray(to2[key], from[key]);
  }
  return merged;
}
function initProps(instance, rawProps, isStateful, isSSR = false) {
  const props = {};
  const attrs = {};
  def(attrs, InternalObjectKey, 1);
  instance.propsDefaults = /* @__PURE__ */ Object.create(null);
  setFullProps(instance, rawProps, props, attrs);
  for (const key in instance.propsOptions[0]) {
    if (!(key in props)) {
      props[key] = void 0;
    }
  }
  if (isStateful) {
    instance.props = isSSR ? props : shallowReactive(props);
  } else {
    if (!instance.type.props) {
      instance.props = attrs;
    } else {
      instance.props = props;
    }
  }
  instance.attrs = attrs;
}
function updateProps(instance, rawProps, rawPrevProps, optimized) {
  const { props, attrs, vnode: { patchFlag } } = instance;
  const rawCurrentProps = toRaw(props);
  const [options2] = instance.propsOptions;
  let hasAttrsChanged = false;
  if (
    // always force full diff in dev
    // - #1942 if hmr is enabled with sfc component
    // - vite#872 non-sfc component used by sfc component
    (optimized || patchFlag > 0) && !(patchFlag & 16)
  ) {
    if (patchFlag & 8) {
      const propsToUpdate = instance.vnode.dynamicProps;
      for (let i = 0; i < propsToUpdate.length; i++) {
        let key = propsToUpdate[i];
        if (isEmitListener(instance.emitsOptions, key)) {
          continue;
        }
        const value = rawProps[key];
        if (options2) {
          if (hasOwn$1(attrs, key)) {
            if (value !== attrs[key]) {
              attrs[key] = value;
              hasAttrsChanged = true;
            }
          } else {
            const camelizedKey = camelize(key);
            props[camelizedKey] = resolvePropValue(
              options2,
              rawCurrentProps,
              camelizedKey,
              value,
              instance,
              false
              /* isAbsent */
            );
          }
        } else {
          if (value !== attrs[key]) {
            attrs[key] = value;
            hasAttrsChanged = true;
          }
        }
      }
    }
  } else {
    if (setFullProps(instance, rawProps, props, attrs)) {
      hasAttrsChanged = true;
    }
    let kebabKey;
    for (const key in rawCurrentProps) {
      if (!rawProps || // for camelCase
      !hasOwn$1(rawProps, key) && // it's possible the original props was passed in as kebab-case
      // and converted to camelCase (#955)
      ((kebabKey = hyphenate(key)) === key || !hasOwn$1(rawProps, kebabKey))) {
        if (options2) {
          if (rawPrevProps && // for camelCase
          (rawPrevProps[key] !== void 0 || // for kebab-case
          rawPrevProps[kebabKey] !== void 0)) {
            props[key] = resolvePropValue(
              options2,
              rawCurrentProps,
              key,
              void 0,
              instance,
              true
              /* isAbsent */
            );
          }
        } else {
          delete props[key];
        }
      }
    }
    if (attrs !== rawCurrentProps) {
      for (const key in attrs) {
        if (!rawProps || !hasOwn$1(rawProps, key) && true) {
          delete attrs[key];
          hasAttrsChanged = true;
        }
      }
    }
  }
  if (hasAttrsChanged) {
    trigger(instance, "set", "$attrs");
  }
}
function setFullProps(instance, rawProps, props, attrs) {
  const [options2, needCastKeys] = instance.propsOptions;
  let hasAttrsChanged = false;
  let rawCastValues;
  if (rawProps) {
    for (let key in rawProps) {
      if (isReservedProp(key)) {
        continue;
      }
      const value = rawProps[key];
      let camelKey;
      if (options2 && hasOwn$1(options2, camelKey = camelize(key))) {
        if (!needCastKeys || !needCastKeys.includes(camelKey)) {
          props[camelKey] = value;
        } else {
          (rawCastValues || (rawCastValues = {}))[camelKey] = value;
        }
      } else if (!isEmitListener(instance.emitsOptions, key)) {
        if (!(key in attrs) || value !== attrs[key]) {
          attrs[key] = value;
          hasAttrsChanged = true;
        }
      }
    }
  }
  if (needCastKeys) {
    const rawCurrentProps = toRaw(props);
    const castValues = rawCastValues || EMPTY_OBJ;
    for (let i = 0; i < needCastKeys.length; i++) {
      const key = needCastKeys[i];
      props[key] = resolvePropValue(options2, rawCurrentProps, key, castValues[key], instance, !hasOwn$1(castValues, key));
    }
  }
  return hasAttrsChanged;
}
function resolvePropValue(options2, props, key, value, instance, isAbsent) {
  const opt = options2[key];
  if (opt != null) {
    const hasDefault = hasOwn$1(opt, "default");
    if (hasDefault && value === void 0) {
      const defaultValue = opt.default;
      if (opt.type !== Function && isFunction$4(defaultValue)) {
        const { propsDefaults } = instance;
        if (key in propsDefaults) {
          value = propsDefaults[key];
        } else {
          setCurrentInstance(instance);
          value = propsDefaults[key] = defaultValue.call(null, props);
          unsetCurrentInstance();
        }
      } else {
        value = defaultValue;
      }
    }
    if (opt[
      0
      /* BooleanFlags.shouldCast */
    ]) {
      if (isAbsent && !hasDefault) {
        value = false;
      } else if (opt[
        1
        /* BooleanFlags.shouldCastTrue */
      ] && (value === "" || value === hyphenate(key))) {
        value = true;
      }
    }
  }
  return value;
}
function normalizePropsOptions(comp2, appContext, asMixin = false) {
  const cache2 = appContext.propsCache;
  const cached = cache2.get(comp2);
  if (cached) {
    return cached;
  }
  const raw = comp2.props;
  const normalized = {};
  const needCastKeys = [];
  let hasExtends = false;
  if (!isFunction$4(comp2)) {
    const extendProps = (raw2) => {
      hasExtends = true;
      const [props, keys] = normalizePropsOptions(raw2, appContext, true);
      extend(normalized, props);
      if (keys)
        needCastKeys.push(...keys);
    };
    if (!asMixin && appContext.mixins.length) {
      appContext.mixins.forEach(extendProps);
    }
    if (comp2.extends) {
      extendProps(comp2.extends);
    }
    if (comp2.mixins) {
      comp2.mixins.forEach(extendProps);
    }
  }
  if (!raw && !hasExtends) {
    if (isObject$6(comp2)) {
      cache2.set(comp2, EMPTY_ARR);
    }
    return EMPTY_ARR;
  }
  if (isArray$2(raw)) {
    for (let i = 0; i < raw.length; i++) {
      const normalizedKey = camelize(raw[i]);
      if (validatePropName(normalizedKey)) {
        normalized[normalizedKey] = EMPTY_OBJ;
      }
    }
  } else if (raw) {
    for (const key in raw) {
      const normalizedKey = camelize(key);
      if (validatePropName(normalizedKey)) {
        const opt = raw[key];
        const prop2 = normalized[normalizedKey] = isArray$2(opt) || isFunction$4(opt) ? { type: opt } : Object.assign({}, opt);
        if (prop2) {
          const booleanIndex = getTypeIndex(Boolean, prop2.type);
          const stringIndex = getTypeIndex(String, prop2.type);
          prop2[
            0
            /* BooleanFlags.shouldCast */
          ] = booleanIndex > -1;
          prop2[
            1
            /* BooleanFlags.shouldCastTrue */
          ] = stringIndex < 0 || booleanIndex < stringIndex;
          if (booleanIndex > -1 || hasOwn$1(prop2, "default")) {
            needCastKeys.push(normalizedKey);
          }
        }
      }
    }
  }
  const res = [normalized, needCastKeys];
  if (isObject$6(comp2)) {
    cache2.set(comp2, res);
  }
  return res;
}
function validatePropName(key) {
  if (key[0] !== "$") {
    return true;
  }
  return false;
}
function getType(ctor) {
  const match3 = ctor && ctor.toString().match(/^\s*(function|class) (\w+)/);
  return match3 ? match3[2] : ctor === null ? "null" : "";
}
function isSameType(a2, b2) {
  return getType(a2) === getType(b2);
}
function getTypeIndex(type2, expectedTypes) {
  if (isArray$2(expectedTypes)) {
    return expectedTypes.findIndex((t2) => isSameType(t2, type2));
  } else if (isFunction$4(expectedTypes)) {
    return isSameType(expectedTypes, type2) ? 0 : -1;
  }
  return -1;
}
const isInternalKey = (key) => key[0] === "_" || key === "$stable";
const normalizeSlotValue = (value) => isArray$2(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];
const normalizeSlot$1 = (key, rawSlot, ctx) => {
  if (rawSlot._n) {
    return rawSlot;
  }
  const normalized = withCtx((...args) => {
    if (false)
      ;
    return normalizeSlotValue(rawSlot(...args));
  }, ctx);
  normalized._c = false;
  return normalized;
};
const normalizeObjectSlots = (rawSlots, slots, instance) => {
  const ctx = rawSlots._ctx;
  for (const key in rawSlots) {
    if (isInternalKey(key))
      continue;
    const value = rawSlots[key];
    if (isFunction$4(value)) {
      slots[key] = normalizeSlot$1(key, value, ctx);
    } else if (value != null) {
      const normalized = normalizeSlotValue(value);
      slots[key] = () => normalized;
    }
  }
};
const normalizeVNodeSlots = (instance, children) => {
  const normalized = normalizeSlotValue(children);
  instance.slots.default = () => normalized;
};
const initSlots = (instance, children) => {
  if (instance.vnode.shapeFlag & 32) {
    const type2 = children._;
    if (type2) {
      instance.slots = toRaw(children);
      def(children, "_", type2);
    } else {
      normalizeObjectSlots(children, instance.slots = {});
    }
  } else {
    instance.slots = {};
    if (children) {
      normalizeVNodeSlots(instance, children);
    }
  }
  def(instance.slots, InternalObjectKey, 1);
};
const updateSlots = (instance, children, optimized) => {
  const { vnode, slots } = instance;
  let needDeletionCheck = true;
  let deletionComparisonTarget = EMPTY_OBJ;
  if (vnode.shapeFlag & 32) {
    const type2 = children._;
    if (type2) {
      if (optimized && type2 === 1) {
        needDeletionCheck = false;
      } else {
        extend(slots, children);
        if (!optimized && type2 === 1) {
          delete slots._;
        }
      }
    } else {
      needDeletionCheck = !children.$stable;
      normalizeObjectSlots(children, slots);
    }
    deletionComparisonTarget = children;
  } else if (children) {
    normalizeVNodeSlots(instance, children);
    deletionComparisonTarget = { default: 1 };
  }
  if (needDeletionCheck) {
    for (const key in slots) {
      if (!isInternalKey(key) && !(key in deletionComparisonTarget)) {
        delete slots[key];
      }
    }
  }
};
function createAppContext() {
  return {
    app: null,
    config: {
      isNativeTag: NO,
      performance: false,
      globalProperties: {},
      optionMergeStrategies: {},
      errorHandler: void 0,
      warnHandler: void 0,
      compilerOptions: {}
    },
    mixins: [],
    components: {},
    directives: {},
    provides: /* @__PURE__ */ Object.create(null),
    optionsCache: /* @__PURE__ */ new WeakMap(),
    propsCache: /* @__PURE__ */ new WeakMap(),
    emitsCache: /* @__PURE__ */ new WeakMap()
  };
}
let uid$1 = 0;
function createAppAPI(render2, hydrate) {
  return function createApp2(rootComponent, rootProps = null) {
    if (!isFunction$4(rootComponent)) {
      rootComponent = Object.assign({}, rootComponent);
    }
    if (rootProps != null && !isObject$6(rootProps)) {
      rootProps = null;
    }
    const context2 = createAppContext();
    const installedPlugins = /* @__PURE__ */ new Set();
    let isMounted = false;
    const app2 = context2.app = {
      _uid: uid$1++,
      _component: rootComponent,
      _props: rootProps,
      _container: null,
      _context: context2,
      _instance: null,
      version: version$9,
      get config() {
        return context2.config;
      },
      set config(v2) {
      },
      use(plugin, ...options2) {
        if (installedPlugins.has(plugin))
          ;
        else if (plugin && isFunction$4(plugin.install)) {
          installedPlugins.add(plugin);
          plugin.install(app2, ...options2);
        } else if (isFunction$4(plugin)) {
          installedPlugins.add(plugin);
          plugin(app2, ...options2);
        } else
          ;
        return app2;
      },
      mixin(mixin) {
        {
          if (!context2.mixins.includes(mixin)) {
            context2.mixins.push(mixin);
          }
        }
        return app2;
      },
      component(name2, component) {
        if (!component) {
          return context2.components[name2];
        }
        context2.components[name2] = component;
        return app2;
      },
      directive(name2, directive) {
        if (!directive) {
          return context2.directives[name2];
        }
        context2.directives[name2] = directive;
        return app2;
      },
      mount(rootContainer, isHydrate, isSVG) {
        if (!isMounted) {
          const vnode = createVNode(rootComponent, rootProps);
          vnode.appContext = context2;
          if (isHydrate && hydrate) {
            hydrate(vnode, rootContainer);
          } else {
            render2(vnode, rootContainer, isSVG);
          }
          isMounted = true;
          app2._container = rootContainer;
          rootContainer.__vue_app__ = app2;
          return getExposeProxy(vnode.component) || vnode.component.proxy;
        }
      },
      unmount() {
        if (isMounted) {
          render2(null, app2._container);
          delete app2._container.__vue_app__;
        }
      },
      provide(key, value) {
        context2.provides[key] = value;
        return app2;
      }
    };
    return app2;
  };
}
function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
  if (isArray$2(rawRef)) {
    rawRef.forEach((r2, i) => setRef(r2, oldRawRef && (isArray$2(oldRawRef) ? oldRawRef[i] : oldRawRef), parentSuspense, vnode, isUnmount));
    return;
  }
  if (isAsyncWrapper(vnode) && !isUnmount) {
    return;
  }
  const refValue = vnode.shapeFlag & 4 ? getExposeProxy(vnode.component) || vnode.component.proxy : vnode.el;
  const value = isUnmount ? null : refValue;
  const { i: owner, r: ref2 } = rawRef;
  const oldRef = oldRawRef && oldRawRef.r;
  const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;
  const setupState = owner.setupState;
  if (oldRef != null && oldRef !== ref2) {
    if (isString$4(oldRef)) {
      refs[oldRef] = null;
      if (hasOwn$1(setupState, oldRef)) {
        setupState[oldRef] = null;
      }
    } else if (isRef(oldRef)) {
      oldRef.value = null;
    }
  }
  if (isFunction$4(ref2)) {
    callWithErrorHandling(ref2, owner, 12, [value, refs]);
  } else {
    const _isString = isString$4(ref2);
    const _isRef = isRef(ref2);
    if (_isString || _isRef) {
      const doSet = () => {
        if (rawRef.f) {
          const existing = _isString ? hasOwn$1(setupState, ref2) ? setupState[ref2] : refs[ref2] : ref2.value;
          if (isUnmount) {
            isArray$2(existing) && remove(existing, refValue);
          } else {
            if (!isArray$2(existing)) {
              if (_isString) {
                refs[ref2] = [refValue];
                if (hasOwn$1(setupState, ref2)) {
                  setupState[ref2] = refs[ref2];
                }
              } else {
                ref2.value = [refValue];
                if (rawRef.k)
                  refs[rawRef.k] = ref2.value;
              }
            } else if (!existing.includes(refValue)) {
              existing.push(refValue);
            }
          }
        } else if (_isString) {
          refs[ref2] = value;
          if (hasOwn$1(setupState, ref2)) {
            setupState[ref2] = value;
          }
        } else if (_isRef) {
          ref2.value = value;
          if (rawRef.k)
            refs[rawRef.k] = value;
        } else
          ;
      };
      if (value) {
        doSet.id = -1;
        queuePostRenderEffect(doSet, parentSuspense);
      } else {
        doSet();
      }
    }
  }
}
const queuePostRenderEffect = queueEffectWithSuspense;
function createRenderer(options2) {
  return baseCreateRenderer(options2);
}
function baseCreateRenderer(options2, createHydrationFns) {
  const target2 = getGlobalThis$1();
  target2.__VUE__ = true;
  const { insert: hostInsert, remove: hostRemove, patchProp: hostPatchProp, createElement: hostCreateElement, createText: hostCreateText, createComment: hostCreateComment, setText: hostSetText, setElementText: hostSetElementText, parentNode: hostParentNode, nextSibling: hostNextSibling, setScopeId: hostSetScopeId = NOOP, insertStaticContent: hostInsertStaticContent } = options2;
  const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = !!n2.dynamicChildren) => {
    if (n1 === n2) {
      return;
    }
    if (n1 && !isSameVNodeType(n1, n2)) {
      anchor = getNextHostNode(n1);
      unmount(n1, parentComponent, parentSuspense, true);
      n1 = null;
    }
    if (n2.patchFlag === -2) {
      optimized = false;
      n2.dynamicChildren = null;
    }
    const { type: type2, ref: ref2, shapeFlag } = n2;
    switch (type2) {
      case Text:
        processText(n1, n2, container, anchor);
        break;
      case Comment:
        processCommentNode(n1, n2, container, anchor);
        break;
      case Static:
        if (n1 == null) {
          mountStaticNode(n2, container, anchor, isSVG);
        }
        break;
      case Fragment:
        processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
        break;
      default:
        if (shapeFlag & 1) {
          processElement(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
        } else if (shapeFlag & 6) {
          processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
        } else if (shapeFlag & 64) {
          type2.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);
        } else if (shapeFlag & 128) {
          type2.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);
        } else
          ;
    }
    if (ref2 != null && parentComponent) {
      setRef(ref2, n1 && n1.ref, parentSuspense, n2 || n1, !n2);
    }
  };
  const processText = (n1, n2, container, anchor) => {
    if (n1 == null) {
      hostInsert(n2.el = hostCreateText(n2.children), container, anchor);
    } else {
      const el2 = n2.el = n1.el;
      if (n2.children !== n1.children) {
        hostSetText(el2, n2.children);
      }
    }
  };
  const processCommentNode = (n1, n2, container, anchor) => {
    if (n1 == null) {
      hostInsert(n2.el = hostCreateComment(n2.children || ""), container, anchor);
    } else {
      n2.el = n1.el;
    }
  };
  const mountStaticNode = (n2, container, anchor, isSVG) => {
    [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG, n2.el, n2.anchor);
  };
  const moveStaticNode = ({ el: el2, anchor }, container, nextSibling) => {
    let next;
    while (el2 && el2 !== anchor) {
      next = hostNextSibling(el2);
      hostInsert(el2, container, nextSibling);
      el2 = next;
    }
    hostInsert(anchor, container, nextSibling);
  };
  const removeStaticNode = ({ el: el2, anchor }) => {
    let next;
    while (el2 && el2 !== anchor) {
      next = hostNextSibling(el2);
      hostRemove(el2);
      el2 = next;
    }
    hostRemove(anchor);
  };
  const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
    isSVG = isSVG || n2.type === "svg";
    if (n1 == null) {
      mountElement(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
    } else {
      patchElement(n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
    }
  };
  const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
    let el2;
    let vnodeHook;
    const { type: type2, props, shapeFlag, transition, dirs } = vnode;
    el2 = vnode.el = hostCreateElement(vnode.type, isSVG, props && props.is, props);
    if (shapeFlag & 8) {
      hostSetElementText(el2, vnode.children);
    } else if (shapeFlag & 16) {
      mountChildren(vnode.children, el2, null, parentComponent, parentSuspense, isSVG && type2 !== "foreignObject", slotScopeIds, optimized);
    }
    if (dirs) {
      invokeDirectiveHook(vnode, null, parentComponent, "created");
    }
    setScopeId(el2, vnode, vnode.scopeId, slotScopeIds, parentComponent);
    if (props) {
      for (const key in props) {
        if (key !== "value" && !isReservedProp(key)) {
          hostPatchProp(el2, key, null, props[key], isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);
        }
      }
      if ("value" in props) {
        hostPatchProp(el2, "value", null, props.value);
      }
      if (vnodeHook = props.onVnodeBeforeMount) {
        invokeVNodeHook(vnodeHook, parentComponent, vnode);
      }
    }
    if (dirs) {
      invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
    }
    const needCallTransitionHooks = (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;
    if (needCallTransitionHooks) {
      transition.beforeEnter(el2);
    }
    hostInsert(el2, container, anchor);
    if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {
      queuePostRenderEffect(() => {
        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
        needCallTransitionHooks && transition.enter(el2);
        dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted");
      }, parentSuspense);
    }
  };
  const setScopeId = (el2, vnode, scopeId, slotScopeIds, parentComponent) => {
    if (scopeId) {
      hostSetScopeId(el2, scopeId);
    }
    if (slotScopeIds) {
      for (let i = 0; i < slotScopeIds.length; i++) {
        hostSetScopeId(el2, slotScopeIds[i]);
      }
    }
    if (parentComponent) {
      let subTree = parentComponent.subTree;
      if (vnode === subTree) {
        const parentVNode = parentComponent.vnode;
        setScopeId(el2, parentVNode, parentVNode.scopeId, parentVNode.slotScopeIds, parentComponent.parent);
      }
    }
  };
  const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start2 = 0) => {
    for (let i = start2; i < children.length; i++) {
      const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]);
      patch(null, child, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
    }
  };
  const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
    const el2 = n2.el = n1.el;
    let { patchFlag, dynamicChildren, dirs } = n2;
    patchFlag |= n1.patchFlag & 16;
    const oldProps = n1.props || EMPTY_OBJ;
    const newProps = n2.props || EMPTY_OBJ;
    let vnodeHook;
    parentComponent && toggleRecurse(parentComponent, false);
    if (vnodeHook = newProps.onVnodeBeforeUpdate) {
      invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
    }
    if (dirs) {
      invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate");
    }
    parentComponent && toggleRecurse(parentComponent, true);
    const areChildrenSVG = isSVG && n2.type !== "foreignObject";
    if (dynamicChildren) {
      patchBlockChildren(n1.dynamicChildren, dynamicChildren, el2, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds);
    } else if (!optimized) {
      patchChildren(n1, n2, el2, null, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds, false);
    }
    if (patchFlag > 0) {
      if (patchFlag & 16) {
        patchProps(el2, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);
      } else {
        if (patchFlag & 2) {
          if (oldProps.class !== newProps.class) {
            hostPatchProp(el2, "class", null, newProps.class, isSVG);
          }
        }
        if (patchFlag & 4) {
          hostPatchProp(el2, "style", oldProps.style, newProps.style, isSVG);
        }
        if (patchFlag & 8) {
          const propsToUpdate = n2.dynamicProps;
          for (let i = 0; i < propsToUpdate.length; i++) {
            const key = propsToUpdate[i];
            const prev2 = oldProps[key];
            const next = newProps[key];
            if (next !== prev2 || key === "value") {
              hostPatchProp(el2, key, prev2, next, isSVG, n1.children, parentComponent, parentSuspense, unmountChildren);
            }
          }
        }
      }
      if (patchFlag & 1) {
        if (n1.children !== n2.children) {
          hostSetElementText(el2, n2.children);
        }
      }
    } else if (!optimized && dynamicChildren == null) {
      patchProps(el2, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);
    }
    if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {
      queuePostRenderEffect(() => {
        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
        dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated");
      }, parentSuspense);
    }
  };
  const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => {
    for (let i = 0; i < newChildren.length; i++) {
      const oldVNode = oldChildren[i];
      const newVNode = newChildren[i];
      const container = (
        // oldVNode may be an errored async setup() component inside Suspense
        // which will not have a mounted element
        oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent
        // of the Fragment itself so it can move its children.
        (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement
        // which also requires the correct parent container
        !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.
        oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : (
          // In other cases, the parent container is not actually used so we
          // just pass the block element here to avoid a DOM parentNode call.
          fallbackContainer
        )
      );
      patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, true);
    }
  };
  const patchProps = (el2, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {
    if (oldProps !== newProps) {
      if (oldProps !== EMPTY_OBJ) {
        for (const key in oldProps) {
          if (!isReservedProp(key) && !(key in newProps)) {
            hostPatchProp(el2, key, oldProps[key], null, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);
          }
        }
      }
      for (const key in newProps) {
        if (isReservedProp(key))
          continue;
        const next = newProps[key];
        const prev2 = oldProps[key];
        if (next !== prev2 && key !== "value") {
          hostPatchProp(el2, key, prev2, next, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);
        }
      }
      if ("value" in newProps) {
        hostPatchProp(el2, "value", oldProps.value, newProps.value);
      }
    }
  };
  const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
    const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText("");
    const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText("");
    let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;
    if (fragmentSlotScopeIds) {
      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;
    }
    if (n1 == null) {
      hostInsert(fragmentStartAnchor, container, anchor);
      hostInsert(fragmentEndAnchor, container, anchor);
      mountChildren(n2.children, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
    } else {
      if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result
      // of renderSlot() with no valid children
      n1.dynamicChildren) {
        patchBlockChildren(n1.dynamicChildren, dynamicChildren, container, parentComponent, parentSuspense, isSVG, slotScopeIds);
        if (
          // #2080 if the stable fragment has a key, it's a <template v-for> that may
          //  get moved around. Make sure all root level vnodes inherit el.
          // #2134 or if it's a component root, it may also get moved around
          // as the component is being moved.
          n2.key != null || parentComponent && n2 === parentComponent.subTree
        ) {
          traverseStaticChildren(
            n1,
            n2,
            true
            /* shallow */
          );
        }
      } else {
        patchChildren(n1, n2, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
      }
    }
  };
  const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
    n2.slotScopeIds = slotScopeIds;
    if (n1 == null) {
      if (n2.shapeFlag & 512) {
        parentComponent.ctx.activate(n2, container, anchor, isSVG, optimized);
      } else {
        mountComponent(n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);
      }
    } else {
      updateComponent(n1, n2, optimized);
    }
  };
  const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {
    const instance = initialVNode.component = createComponentInstance(initialVNode, parentComponent, parentSuspense);
    if (isKeepAlive(initialVNode)) {
      instance.ctx.renderer = internals;
    }
    {
      setupComponent(instance);
    }
    if (instance.asyncDep) {
      parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect);
      if (!initialVNode.el) {
        const placeholder = instance.subTree = createVNode(Comment);
        processCommentNode(null, placeholder, container, anchor);
      }
      return;
    }
    setupRenderEffect(instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized);
  };
  const updateComponent = (n1, n2, optimized) => {
    const instance = n2.component = n1.component;
    if (shouldUpdateComponent(n1, n2, optimized)) {
      if (instance.asyncDep && !instance.asyncResolved) {
        updateComponentPreRender(instance, n2, optimized);
        return;
      } else {
        instance.next = n2;
        invalidateJob(instance.update);
        instance.update();
      }
    } else {
      n2.el = n1.el;
      instance.vnode = n2;
    }
  };
  const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => {
    const componentUpdateFn = () => {
      if (!instance.isMounted) {
        let vnodeHook;
        const { el: el2, props } = initialVNode;
        const { bm, m: m2, parent } = instance;
        const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);
        toggleRecurse(instance, false);
        if (bm) {
          invokeArrayFns(bm);
        }
        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) {
          invokeVNodeHook(vnodeHook, parent, initialVNode);
        }
        toggleRecurse(instance, true);
        if (el2 && hydrateNode) {
          const hydrateSubTree = () => {
            instance.subTree = renderComponentRoot(instance);
            hydrateNode(el2, instance.subTree, instance, parentSuspense, null);
          };
          if (isAsyncWrapperVNode) {
            initialVNode.type.__asyncLoader().then(
              // note: we are moving the render call into an async callback,
              // which means it won't track dependencies - but it's ok because
              // a server-rendered async wrapper is already in resolved state
              // and it will never need to change.
              () => !instance.isUnmounted && hydrateSubTree()
            );
          } else {
            hydrateSubTree();
          }
        } else {
          const subTree = instance.subTree = renderComponentRoot(instance);
          patch(null, subTree, container, anchor, instance, parentSuspense, isSVG);
          initialVNode.el = subTree.el;
        }
        if (m2) {
          queuePostRenderEffect(m2, parentSuspense);
        }
        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) {
          const scopedInitialVNode = initialVNode;
          queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), parentSuspense);
        }
        if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) {
          instance.a && queuePostRenderEffect(instance.a, parentSuspense);
        }
        instance.isMounted = true;
        initialVNode = container = anchor = null;
      } else {
        let { next, bu, u: u2, parent, vnode } = instance;
        let originNext = next;
        let vnodeHook;
        toggleRecurse(instance, false);
        if (next) {
          next.el = vnode.el;
          updateComponentPreRender(instance, next, optimized);
        } else {
          next = vnode;
        }
        if (bu) {
          invokeArrayFns(bu);
        }
        if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) {
          invokeVNodeHook(vnodeHook, parent, next, vnode);
        }
        toggleRecurse(instance, true);
        const nextTree = renderComponentRoot(instance);
        const prevTree = instance.subTree;
        instance.subTree = nextTree;
        patch(
          prevTree,
          nextTree,
          // parent may have changed if it's in a teleport
          hostParentNode(prevTree.el),
          // anchor may have changed if it's in a fragment
          getNextHostNode(prevTree),
          instance,
          parentSuspense,
          isSVG
        );
        next.el = nextTree.el;
        if (originNext === null) {
          updateHOCHostEl(instance, nextTree.el);
        }
        if (u2) {
          queuePostRenderEffect(u2, parentSuspense);
        }
        if (vnodeHook = next.props && next.props.onVnodeUpdated) {
          queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, next, vnode), parentSuspense);
        }
      }
    };
    const effect2 = instance.effect = new ReactiveEffect(
      componentUpdateFn,
      () => queueJob(update),
      instance.scope
      // track it in component's effect scope
    );
    const update = instance.update = () => effect2.run();
    update.id = instance.uid;
    toggleRecurse(instance, true);
    update();
  };
  const updateComponentPreRender = (instance, nextVNode, optimized) => {
    nextVNode.component = instance;
    const prevProps = instance.vnode.props;
    instance.vnode = nextVNode;
    instance.next = null;
    updateProps(instance, nextVNode.props, prevProps, optimized);
    updateSlots(instance, nextVNode.children, optimized);
    pauseTracking();
    flushPreFlushCbs();
    resetTracking();
  };
  const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => {
    const c1 = n1 && n1.children;
    const prevShapeFlag = n1 ? n1.shapeFlag : 0;
    const c2 = n2.children;
    const { patchFlag, shapeFlag } = n2;
    if (patchFlag > 0) {
      if (patchFlag & 128) {
        patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
        return;
      } else if (patchFlag & 256) {
        patchUnkeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
        return;
      }
    }
    if (shapeFlag & 8) {
      if (prevShapeFlag & 16) {
        unmountChildren(c1, parentComponent, parentSuspense);
      }
      if (c2 !== c1) {
        hostSetElementText(container, c2);
      }
    } else {
      if (prevShapeFlag & 16) {
        if (shapeFlag & 16) {
          patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
        } else {
          unmountChildren(c1, parentComponent, parentSuspense, true);
        }
      } else {
        if (prevShapeFlag & 8) {
          hostSetElementText(container, "");
        }
        if (shapeFlag & 16) {
          mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
        }
      }
    }
  };
  const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
    c1 = c1 || EMPTY_ARR;
    c2 = c2 || EMPTY_ARR;
    const oldLength = c1.length;
    const newLength = c2.length;
    const commonLength = Math.min(oldLength, newLength);
    let i;
    for (i = 0; i < commonLength; i++) {
      const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);
      patch(c1[i], nextChild, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
    }
    if (oldLength > newLength) {
      unmountChildren(c1, parentComponent, parentSuspense, true, false, commonLength);
    } else {
      mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, commonLength);
    }
  };
  const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
    let i = 0;
    const l2 = c2.length;
    let e1 = c1.length - 1;
    let e2 = l2 - 1;
    while (i <= e1 && i <= e2) {
      const n1 = c1[i];
      const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);
      if (isSameVNodeType(n1, n2)) {
        patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
      } else {
        break;
      }
      i++;
    }
    while (i <= e1 && i <= e2) {
      const n1 = c1[e1];
      const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]);
      if (isSameVNodeType(n1, n2)) {
        patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
      } else {
        break;
      }
      e1--;
      e2--;
    }
    if (i > e1) {
      if (i <= e2) {
        const nextPos = e2 + 1;
        const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;
        while (i <= e2) {
          patch(null, c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]), container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
          i++;
        }
      }
    } else if (i > e2) {
      while (i <= e1) {
        unmount(c1[i], parentComponent, parentSuspense, true);
        i++;
      }
    } else {
      const s12 = i;
      const s2 = i;
      const keyToNewIndexMap = /* @__PURE__ */ new Map();
      for (i = s2; i <= e2; i++) {
        const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);
        if (nextChild.key != null) {
          keyToNewIndexMap.set(nextChild.key, i);
        }
      }
      let j2;
      let patched = 0;
      const toBePatched = e2 - s2 + 1;
      let moved = false;
      let maxNewIndexSoFar = 0;
      const newIndexToOldIndexMap = new Array(toBePatched);
      for (i = 0; i < toBePatched; i++)
        newIndexToOldIndexMap[i] = 0;
      for (i = s12; i <= e1; i++) {
        const prevChild = c1[i];
        if (patched >= toBePatched) {
          unmount(prevChild, parentComponent, parentSuspense, true);
          continue;
        }
        let newIndex;
        if (prevChild.key != null) {
          newIndex = keyToNewIndexMap.get(prevChild.key);
        } else {
          for (j2 = s2; j2 <= e2; j2++) {
            if (newIndexToOldIndexMap[j2 - s2] === 0 && isSameVNodeType(prevChild, c2[j2])) {
              newIndex = j2;
              break;
            }
          }
        }
        if (newIndex === void 0) {
          unmount(prevChild, parentComponent, parentSuspense, true);
        } else {
          newIndexToOldIndexMap[newIndex - s2] = i + 1;
          if (newIndex >= maxNewIndexSoFar) {
            maxNewIndexSoFar = newIndex;
          } else {
            moved = true;
          }
          patch(prevChild, c2[newIndex], container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
          patched++;
        }
      }
      const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR;
      j2 = increasingNewIndexSequence.length - 1;
      for (i = toBePatched - 1; i >= 0; i--) {
        const nextIndex = s2 + i;
        const nextChild = c2[nextIndex];
        const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;
        if (newIndexToOldIndexMap[i] === 0) {
          patch(null, nextChild, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
        } else if (moved) {
          if (j2 < 0 || i !== increasingNewIndexSequence[j2]) {
            move(
              nextChild,
              container,
              anchor,
              2
              /* MoveType.REORDER */
            );
          } else {
            j2--;
          }
        }
      }
    }
  };
  const move = (vnode, container, anchor, moveType, parentSuspense = null) => {
    const { el: el2, type: type2, transition, children, shapeFlag } = vnode;
    if (shapeFlag & 6) {
      move(vnode.component.subTree, container, anchor, moveType);
      return;
    }
    if (shapeFlag & 128) {
      vnode.suspense.move(container, anchor, moveType);
      return;
    }
    if (shapeFlag & 64) {
      type2.move(vnode, container, anchor, internals);
      return;
    }
    if (type2 === Fragment) {
      hostInsert(el2, container, anchor);
      for (let i = 0; i < children.length; i++) {
        move(children[i], container, anchor, moveType);
      }
      hostInsert(vnode.anchor, container, anchor);
      return;
    }
    if (type2 === Static) {
      moveStaticNode(vnode, container, anchor);
      return;
    }
    const needTransition = moveType !== 2 && shapeFlag & 1 && transition;
    if (needTransition) {
      if (moveType === 0) {
        transition.beforeEnter(el2);
        hostInsert(el2, container, anchor);
        queuePostRenderEffect(() => transition.enter(el2), parentSuspense);
      } else {
        const { leave, delayLeave, afterLeave } = transition;
        const remove3 = () => hostInsert(el2, container, anchor);
        const performLeave = () => {
          leave(el2, () => {
            remove3();
            afterLeave && afterLeave();
          });
        };
        if (delayLeave) {
          delayLeave(el2, remove3, performLeave);
        } else {
          performLeave();
        }
      }
    } else {
      hostInsert(el2, container, anchor);
    }
  };
  const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {
    const { type: type2, props, ref: ref2, children, dynamicChildren, shapeFlag, patchFlag, dirs } = vnode;
    if (ref2 != null) {
      setRef(ref2, null, parentSuspense, vnode, true);
    }
    if (shapeFlag & 256) {
      parentComponent.ctx.deactivate(vnode);
      return;
    }
    const shouldInvokeDirs = shapeFlag & 1 && dirs;
    const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);
    let vnodeHook;
    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) {
      invokeVNodeHook(vnodeHook, parentComponent, vnode);
    }
    if (shapeFlag & 6) {
      unmountComponent(vnode.component, parentSuspense, doRemove);
    } else {
      if (shapeFlag & 128) {
        vnode.suspense.unmount(parentSuspense, doRemove);
        return;
      }
      if (shouldInvokeDirs) {
        invokeDirectiveHook(vnode, null, parentComponent, "beforeUnmount");
      }
      if (shapeFlag & 64) {
        vnode.type.remove(vnode, parentComponent, parentSuspense, optimized, internals, doRemove);
      } else if (dynamicChildren && // #1153: fast path should not be taken for non-stable (v-for) fragments
      (type2 !== Fragment || patchFlag > 0 && patchFlag & 64)) {
        unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);
      } else if (type2 === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {
        unmountChildren(children, parentComponent, parentSuspense);
      }
      if (doRemove) {
        remove2(vnode);
      }
    }
    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) {
      queuePostRenderEffect(() => {
        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
        shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted");
      }, parentSuspense);
    }
  };
  const remove2 = (vnode) => {
    const { type: type2, el: el2, anchor, transition } = vnode;
    if (type2 === Fragment) {
      {
        removeFragment(el2, anchor);
      }
      return;
    }
    if (type2 === Static) {
      removeStaticNode(vnode);
      return;
    }
    const performRemove = () => {
      hostRemove(el2);
      if (transition && !transition.persisted && transition.afterLeave) {
        transition.afterLeave();
      }
    };
    if (vnode.shapeFlag & 1 && transition && !transition.persisted) {
      const { leave, delayLeave } = transition;
      const performLeave = () => leave(el2, performRemove);
      if (delayLeave) {
        delayLeave(vnode.el, performRemove, performLeave);
      } else {
        performLeave();
      }
    } else {
      performRemove();
    }
  };
  const removeFragment = (cur, end2) => {
    let next;
    while (cur !== end2) {
      next = hostNextSibling(cur);
      hostRemove(cur);
      cur = next;
    }
    hostRemove(end2);
  };
  const unmountComponent = (instance, parentSuspense, doRemove) => {
    const { bum, scope, update, subTree, um } = instance;
    if (bum) {
      invokeArrayFns(bum);
    }
    scope.stop();
    if (update) {
      update.active = false;
      unmount(subTree, instance, parentSuspense, doRemove);
    }
    if (um) {
      queuePostRenderEffect(um, parentSuspense);
    }
    queuePostRenderEffect(() => {
      instance.isUnmounted = true;
    }, parentSuspense);
    if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) {
      parentSuspense.deps--;
      if (parentSuspense.deps === 0) {
        parentSuspense.resolve();
      }
    }
  };
  const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start2 = 0) => {
    for (let i = start2; i < children.length; i++) {
      unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);
    }
  };
  const getNextHostNode = (vnode) => {
    if (vnode.shapeFlag & 6) {
      return getNextHostNode(vnode.component.subTree);
    }
    if (vnode.shapeFlag & 128) {
      return vnode.suspense.next();
    }
    return hostNextSibling(vnode.anchor || vnode.el);
  };
  const render2 = (vnode, container, isSVG) => {
    if (vnode == null) {
      if (container._vnode) {
        unmount(container._vnode, null, null, true);
      }
    } else {
      patch(container._vnode || null, vnode, container, null, null, null, isSVG);
    }
    flushPreFlushCbs();
    flushPostFlushCbs();
    container._vnode = vnode;
  };
  const internals = {
    p: patch,
    um: unmount,
    m: move,
    r: remove2,
    mt: mountComponent,
    mc: mountChildren,
    pc: patchChildren,
    pbc: patchBlockChildren,
    n: getNextHostNode,
    o: options2
  };
  let hydrate;
  let hydrateNode;
  if (createHydrationFns) {
    [hydrate, hydrateNode] = createHydrationFns(internals);
  }
  return {
    render: render2,
    hydrate,
    createApp: createAppAPI(render2, hydrate)
  };
}
function toggleRecurse({ effect: effect2, update }, allowed) {
  effect2.allowRecurse = update.allowRecurse = allowed;
}
function traverseStaticChildren(n1, n2, shallow = false) {
  const ch1 = n1.children;
  const ch2 = n2.children;
  if (isArray$2(ch1) && isArray$2(ch2)) {
    for (let i = 0; i < ch1.length; i++) {
      const c1 = ch1[i];
      let c2 = ch2[i];
      if (c2.shapeFlag & 1 && !c2.dynamicChildren) {
        if (c2.patchFlag <= 0 || c2.patchFlag === 32) {
          c2 = ch2[i] = cloneIfMounted(ch2[i]);
          c2.el = c1.el;
        }
        if (!shallow)
          traverseStaticChildren(c1, c2);
      }
      if (c2.type === Text) {
        c2.el = c1.el;
      }
    }
  }
}
function getSequence(arr) {
  const p2 = arr.slice();
  const result = [0];
  let i, j2, u2, v2, c2;
  const len = arr.length;
  for (i = 0; i < len; i++) {
    const arrI = arr[i];
    if (arrI !== 0) {
      j2 = result[result.length - 1];
      if (arr[j2] < arrI) {
        p2[i] = j2;
        result.push(i);
        continue;
      }
      u2 = 0;
      v2 = result.length - 1;
      while (u2 < v2) {
        c2 = u2 + v2 >> 1;
        if (arr[result[c2]] < arrI) {
          u2 = c2 + 1;
        } else {
          v2 = c2;
        }
      }
      if (arrI < arr[result[u2]]) {
        if (u2 > 0) {
          p2[i] = result[u2 - 1];
        }
        result[u2] = i;
      }
    }
  }
  u2 = result.length;
  v2 = result[u2 - 1];
  while (u2-- > 0) {
    result[u2] = v2;
    v2 = p2[v2];
  }
  return result;
}
const isTeleport = (type2) => type2.__isTeleport;
const isTeleportDisabled = (props) => props && (props.disabled || props.disabled === "");
const isTargetSVG = (target2) => typeof SVGElement !== "undefined" && target2 instanceof SVGElement;
const resolveTarget = (props, select) => {
  const targetSelector = props && props.to;
  if (isString$4(targetSelector)) {
    if (!select) {
      return null;
    } else {
      const target2 = select(targetSelector);
      return target2;
    }
  } else {
    return targetSelector;
  }
};
const TeleportImpl = {
  __isTeleport: true,
  process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) {
    const { mc: mountChildren, pc: patchChildren, pbc: patchBlockChildren, o: { insert: insert2, querySelector, createText, createComment } } = internals;
    const disabled = isTeleportDisabled(n2.props);
    let { shapeFlag, children, dynamicChildren } = n2;
    if (n1 == null) {
      const placeholder = n2.el = createText("");
      const mainAnchor = n2.anchor = createText("");
      insert2(placeholder, container, anchor);
      insert2(mainAnchor, container, anchor);
      const target2 = n2.target = resolveTarget(n2.props, querySelector);
      const targetAnchor = n2.targetAnchor = createText("");
      if (target2) {
        insert2(targetAnchor, target2);
        isSVG = isSVG || isTargetSVG(target2);
      }
      const mount = (container2, anchor2) => {
        if (shapeFlag & 16) {
          mountChildren(children, container2, anchor2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
        }
      };
      if (disabled) {
        mount(container, mainAnchor);
      } else if (target2) {
        mount(target2, targetAnchor);
      }
    } else {
      n2.el = n1.el;
      const mainAnchor = n2.anchor = n1.anchor;
      const target2 = n2.target = n1.target;
      const targetAnchor = n2.targetAnchor = n1.targetAnchor;
      const wasDisabled = isTeleportDisabled(n1.props);
      const currentContainer = wasDisabled ? container : target2;
      const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;
      isSVG = isSVG || isTargetSVG(target2);
      if (dynamicChildren) {
        patchBlockChildren(n1.dynamicChildren, dynamicChildren, currentContainer, parentComponent, parentSuspense, isSVG, slotScopeIds);
        traverseStaticChildren(n1, n2, true);
      } else if (!optimized) {
        patchChildren(n1, n2, currentContainer, currentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, false);
      }
      if (disabled) {
        if (!wasDisabled) {
          moveTeleport(
            n2,
            container,
            mainAnchor,
            internals,
            1
            /* TeleportMoveTypes.TOGGLE */
          );
        }
      } else {
        if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {
          const nextTarget = n2.target = resolveTarget(n2.props, querySelector);
          if (nextTarget) {
            moveTeleport(
              n2,
              nextTarget,
              null,
              internals,
              0
              /* TeleportMoveTypes.TARGET_CHANGE */
            );
          }
        } else if (wasDisabled) {
          moveTeleport(
            n2,
            target2,
            targetAnchor,
            internals,
            1
            /* TeleportMoveTypes.TOGGLE */
          );
        }
      }
    }
    updateCssVars(n2);
  },
  remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) {
    const { shapeFlag, children, anchor, targetAnchor, target: target2, props } = vnode;
    if (target2) {
      hostRemove(targetAnchor);
    }
    if (doRemove || !isTeleportDisabled(props)) {
      hostRemove(anchor);
      if (shapeFlag & 16) {
        for (let i = 0; i < children.length; i++) {
          const child = children[i];
          unmount(child, parentComponent, parentSuspense, true, !!child.dynamicChildren);
        }
      }
    }
  },
  move: moveTeleport,
  hydrate: hydrateTeleport
};
function moveTeleport(vnode, container, parentAnchor, { o: { insert: insert2 }, m: move }, moveType = 2) {
  if (moveType === 0) {
    insert2(vnode.targetAnchor, container, parentAnchor);
  }
  const { el: el2, anchor, shapeFlag, children, props } = vnode;
  const isReorder = moveType === 2;
  if (isReorder) {
    insert2(el2, container, parentAnchor);
  }
  if (!isReorder || isTeleportDisabled(props)) {
    if (shapeFlag & 16) {
      for (let i = 0; i < children.length; i++) {
        move(
          children[i],
          container,
          parentAnchor,
          2
          /* MoveType.REORDER */
        );
      }
    }
  }
  if (isReorder) {
    insert2(anchor, container, parentAnchor);
  }
}
function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { o: { nextSibling, parentNode, querySelector } }, hydrateChildren) {
  const target2 = vnode.target = resolveTarget(vnode.props, querySelector);
  if (target2) {
    const targetNode = target2._lpa || target2.firstChild;
    if (vnode.shapeFlag & 16) {
      if (isTeleportDisabled(vnode.props)) {
        vnode.anchor = hydrateChildren(nextSibling(node), vnode, parentNode(node), parentComponent, parentSuspense, slotScopeIds, optimized);
        vnode.targetAnchor = targetNode;
      } else {
        vnode.anchor = nextSibling(node);
        let targetAnchor = targetNode;
        while (targetAnchor) {
          targetAnchor = nextSibling(targetAnchor);
          if (targetAnchor && targetAnchor.nodeType === 8 && targetAnchor.data === "teleport anchor") {
            vnode.targetAnchor = targetAnchor;
            target2._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
            break;
          }
        }
        hydrateChildren(targetNode, vnode, target2, parentComponent, parentSuspense, slotScopeIds, optimized);
      }
    }
    updateCssVars(vnode);
  }
  return vnode.anchor && nextSibling(vnode.anchor);
}
const Teleport = TeleportImpl;
function updateCssVars(vnode) {
  const ctx = vnode.ctx;
  if (ctx && ctx.ut) {
    let node = vnode.children[0].el;
    while (node !== vnode.targetAnchor) {
      if (node.nodeType === 1)
        node.setAttribute("data-v-owner", ctx.uid);
      node = node.nextSibling;
    }
    ctx.ut();
  }
}
const Fragment = Symbol(void 0);
const Text = Symbol(void 0);
const Comment = Symbol(void 0);
const Static = Symbol(void 0);
const blockStack = [];
let currentBlock = null;
function openBlock(disableTracking = false) {
  blockStack.push(currentBlock = disableTracking ? null : []);
}
function closeBlock() {
  blockStack.pop();
  currentBlock = blockStack[blockStack.length - 1] || null;
}
let isBlockTreeEnabled = 1;
function setBlockTracking(value) {
  isBlockTreeEnabled += value;
}
function setupBlock(vnode) {
  vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;
  closeBlock();
  if (isBlockTreeEnabled > 0 && currentBlock) {
    currentBlock.push(vnode);
  }
  return vnode;
}
function createElementBlock(type2, props, children, patchFlag, dynamicProps, shapeFlag) {
  return setupBlock(createBaseVNode(
    type2,
    props,
    children,
    patchFlag,
    dynamicProps,
    shapeFlag,
    true
    /* isBlock */
  ));
}
function createBlock(type2, props, children, patchFlag, dynamicProps) {
  return setupBlock(createVNode(
    type2,
    props,
    children,
    patchFlag,
    dynamicProps,
    true
    /* isBlock: prevent a block from tracking itself */
  ));
}
function isVNode(value) {
  return value ? value.__v_isVNode === true : false;
}
function isSameVNodeType(n1, n2) {
  return n1.type === n2.type && n1.key === n2.key;
}
const InternalObjectKey = `__vInternal`;
const normalizeKey = ({ key }) => key != null ? key : null;
const normalizeRef = ({ ref: ref2, ref_key, ref_for }) => {
  return ref2 != null ? isString$4(ref2) || isRef(ref2) || isFunction$4(ref2) ? { i: currentRenderingInstance, r: ref2, k: ref_key, f: !!ref_for } : ref2 : null;
};
function createBaseVNode(type2, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type2 === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {
  const vnode = {
    __v_isVNode: true,
    __v_skip: true,
    type: type2,
    props,
    key: props && normalizeKey(props),
    ref: props && normalizeRef(props),
    scopeId: currentScopeId,
    slotScopeIds: null,
    children,
    component: null,
    suspense: null,
    ssContent: null,
    ssFallback: null,
    dirs: null,
    transition: null,
    el: null,
    anchor: null,
    target: null,
    targetAnchor: null,
    staticCount: 0,
    shapeFlag,
    patchFlag,
    dynamicProps,
    dynamicChildren: null,
    appContext: null,
    ctx: currentRenderingInstance
  };
  if (needFullChildrenNormalization) {
    normalizeChildren(vnode, children);
    if (shapeFlag & 128) {
      type2.normalize(vnode);
    }
  } else if (children) {
    vnode.shapeFlag |= isString$4(children) ? 8 : 16;
  }
  if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself
  !isBlockNode && // has current parent block
  currentBlock && // presence of a patch flag indicates this node needs patching on updates.
  // component nodes also should always be patched, because even if the
  // component doesn't need to update, it needs to persist the instance on to
  // the next vnode so that it can be properly unmounted later.
  (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the
  // vnode should not be considered dynamic due to handler caching.
  vnode.patchFlag !== 32) {
    currentBlock.push(vnode);
  }
  return vnode;
}
const createVNode = _createVNode;
function _createVNode(type2, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {
  if (!type2 || type2 === NULL_DYNAMIC_COMPONENT) {
    type2 = Comment;
  }
  if (isVNode(type2)) {
    const cloned = cloneVNode(
      type2,
      props,
      true
      /* mergeRef: true */
    );
    if (children) {
      normalizeChildren(cloned, children);
    }
    if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {
      if (cloned.shapeFlag & 6) {
        currentBlock[currentBlock.indexOf(type2)] = cloned;
      } else {
        currentBlock.push(cloned);
      }
    }
    cloned.patchFlag |= -2;
    return cloned;
  }
  if (isClassComponent(type2)) {
    type2 = type2.__vccOpts;
  }
  if (props) {
    props = guardReactiveProps(props);
    let { class: klass, style } = props;
    if (klass && !isString$4(klass)) {
      props.class = normalizeClass(klass);
    }
    if (isObject$6(style)) {
      if (isProxy(style) && !isArray$2(style)) {
        style = extend({}, style);
      }
      props.style = normalizeStyle(style);
    }
  }
  const shapeFlag = isString$4(type2) ? 1 : isSuspense(type2) ? 128 : isTeleport(type2) ? 64 : isObject$6(type2) ? 4 : isFunction$4(type2) ? 2 : 0;
  return createBaseVNode(type2, props, children, patchFlag, dynamicProps, shapeFlag, isBlockNode, true);
}
function guardReactiveProps(props) {
  if (!props)
    return null;
  return isProxy(props) || InternalObjectKey in props ? extend({}, props) : props;
}
function cloneVNode(vnode, extraProps, mergeRef = false) {
  const { props, ref: ref2, patchFlag, children } = vnode;
  const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;
  const cloned = {
    __v_isVNode: true,
    __v_skip: true,
    type: vnode.type,
    props: mergedProps,
    key: mergedProps && normalizeKey(mergedProps),
    ref: extraProps && extraProps.ref ? (
      // #2078 in the case of <component :is="vnode" ref="extra"/>
      // if the vnode itself already has a ref, cloneVNode will need to merge
      // the refs so the single vnode can be set on multiple refs
      mergeRef && ref2 ? isArray$2(ref2) ? ref2.concat(normalizeRef(extraProps)) : [ref2, normalizeRef(extraProps)] : normalizeRef(extraProps)
    ) : ref2,
    scopeId: vnode.scopeId,
    slotScopeIds: vnode.slotScopeIds,
    children,
    target: vnode.target,
    targetAnchor: vnode.targetAnchor,
    staticCount: vnode.staticCount,
    shapeFlag: vnode.shapeFlag,
    // if the vnode is cloned with extra props, we can no longer assume its
    // existing patch flag to be reliable and need to add the FULL_PROPS flag.
    // note: preserve flag for fragments since they use the flag for children
    // fast paths only.
    patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag,
    dynamicProps: vnode.dynamicProps,
    dynamicChildren: vnode.dynamicChildren,
    appContext: vnode.appContext,
    dirs: vnode.dirs,
    transition: vnode.transition,
    // These should technically only be non-null on mounted VNodes. However,
    // they *should* be copied for kept-alive vnodes. So we just always copy
    // them since them being non-null during a mount doesn't affect the logic as
    // they will simply be overwritten.
    component: vnode.component,
    suspense: vnode.suspense,
    ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),
    ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),
    el: vnode.el,
    anchor: vnode.anchor,
    ctx: vnode.ctx,
    ce: vnode.ce
  };
  return cloned;
}
function createTextVNode(text3 = " ", flag = 0) {
  return createVNode(Text, null, text3, flag);
}
function createStaticVNode(content, numberOfNodes) {
  const vnode = createVNode(Static, null, content);
  vnode.staticCount = numberOfNodes;
  return vnode;
}
function createCommentVNode(text3 = "", asBlock = false) {
  return asBlock ? (openBlock(), createBlock(Comment, null, text3)) : createVNode(Comment, null, text3);
}
function normalizeVNode(child) {
  if (child == null || typeof child === "boolean") {
    return createVNode(Comment);
  } else if (isArray$2(child)) {
    return createVNode(
      Fragment,
      null,
      // #3666, avoid reference pollution when reusing vnode
      child.slice()
    );
  } else if (typeof child === "object") {
    return cloneIfMounted(child);
  } else {
    return createVNode(Text, null, String(child));
  }
}
function cloneIfMounted(child) {
  return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child);
}
function normalizeChildren(vnode, children) {
  let type2 = 0;
  const { shapeFlag } = vnode;
  if (children == null) {
    children = null;
  } else if (isArray$2(children)) {
    type2 = 16;
  } else if (typeof children === "object") {
    if (shapeFlag & (1 | 64)) {
      const slot = children.default;
      if (slot) {
        slot._c && (slot._d = false);
        normalizeChildren(vnode, slot());
        slot._c && (slot._d = true);
      }
      return;
    } else {
      type2 = 32;
      const slotFlag = children._;
      if (!slotFlag && !(InternalObjectKey in children)) {
        children._ctx = currentRenderingInstance;
      } else if (slotFlag === 3 && currentRenderingInstance) {
        if (currentRenderingInstance.slots._ === 1) {
          children._ = 1;
        } else {
          children._ = 2;
          vnode.patchFlag |= 1024;
        }
      }
    }
  } else if (isFunction$4(children)) {
    children = { default: children, _ctx: currentRenderingInstance };
    type2 = 32;
  } else {
    children = String(children);
    if (shapeFlag & 64) {
      type2 = 16;
      children = [createTextVNode(children)];
    } else {
      type2 = 8;
    }
  }
  vnode.children = children;
  vnode.shapeFlag |= type2;
}
function mergeProps(...args) {
  const ret = {};
  for (let i = 0; i < args.length; i++) {
    const toMerge = args[i];
    for (const key in toMerge) {
      if (key === "class") {
        if (ret.class !== toMerge.class) {
          ret.class = normalizeClass([ret.class, toMerge.class]);
        }
      } else if (key === "style") {
        ret.style = normalizeStyle([ret.style, toMerge.style]);
      } else if (isOn(key)) {
        const existing = ret[key];
        const incoming = toMerge[key];
        if (incoming && existing !== incoming && !(isArray$2(existing) && existing.includes(incoming))) {
          ret[key] = existing ? [].concat(existing, incoming) : incoming;
        }
      } else if (key !== "") {
        ret[key] = toMerge[key];
      }
    }
  }
  return ret;
}
function invokeVNodeHook(hook, instance, vnode, prevVNode = null) {
  callWithAsyncErrorHandling(hook, instance, 7, [
    vnode,
    prevVNode
  ]);
}
const emptyAppContext = createAppContext();
let uid = 0;
function createComponentInstance(vnode, parent, suspense) {
  const type2 = vnode.type;
  const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;
  const instance = {
    uid: uid++,
    vnode,
    type: type2,
    parent,
    appContext,
    root: null,
    next: null,
    subTree: null,
    effect: null,
    update: null,
    scope: new EffectScope(
      true
      /* detached */
    ),
    render: null,
    proxy: null,
    exposed: null,
    exposeProxy: null,
    withProxy: null,
    provides: parent ? parent.provides : Object.create(appContext.provides),
    accessCache: null,
    renderCache: [],
    // local resolved assets
    components: null,
    directives: null,
    // resolved props and emits options
    propsOptions: normalizePropsOptions(type2, appContext),
    emitsOptions: normalizeEmitsOptions(type2, appContext),
    // emit
    emit: null,
    emitted: null,
    // props default value
    propsDefaults: EMPTY_OBJ,
    // inheritAttrs
    inheritAttrs: type2.inheritAttrs,
    // state
    ctx: EMPTY_OBJ,
    data: EMPTY_OBJ,
    props: EMPTY_OBJ,
    attrs: EMPTY_OBJ,
    slots: EMPTY_OBJ,
    refs: EMPTY_OBJ,
    setupState: EMPTY_OBJ,
    setupContext: null,
    // suspense related
    suspense,
    suspenseId: suspense ? suspense.pendingId : 0,
    asyncDep: null,
    asyncResolved: false,
    // lifecycle hooks
    // not using enums here because it results in computed properties
    isMounted: false,
    isUnmounted: false,
    isDeactivated: false,
    bc: null,
    c: null,
    bm: null,
    m: null,
    bu: null,
    u: null,
    um: null,
    bum: null,
    da: null,
    a: null,
    rtg: null,
    rtc: null,
    ec: null,
    sp: null
  };
  {
    instance.ctx = { _: instance };
  }
  instance.root = parent ? parent.root : instance;
  instance.emit = emit.bind(null, instance);
  if (vnode.ce) {
    vnode.ce(instance);
  }
  return instance;
}
let currentInstance = null;
const getCurrentInstance = () => currentInstance || currentRenderingInstance;
const setCurrentInstance = (instance) => {
  currentInstance = instance;
  instance.scope.on();
};
const unsetCurrentInstance = () => {
  currentInstance && currentInstance.scope.off();
  currentInstance = null;
};
function isStatefulComponent(instance) {
  return instance.vnode.shapeFlag & 4;
}
let isInSSRComponentSetup = false;
function setupComponent(instance, isSSR = false) {
  isInSSRComponentSetup = isSSR;
  const { props, children } = instance.vnode;
  const isStateful = isStatefulComponent(instance);
  initProps(instance, props, isStateful, isSSR);
  initSlots(instance, children);
  const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;
  isInSSRComponentSetup = false;
  return setupResult;
}
function setupStatefulComponent(instance, isSSR) {
  const Component = instance.type;
  instance.accessCache = /* @__PURE__ */ Object.create(null);
  instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers));
  const { setup: setup21 } = Component;
  if (setup21) {
    const setupContext = instance.setupContext = setup21.length > 1 ? createSetupContext(instance) : null;
    setCurrentInstance(instance);
    pauseTracking();
    const setupResult = callWithErrorHandling(setup21, instance, 0, [instance.props, setupContext]);
    resetTracking();
    unsetCurrentInstance();
    if (isPromise(setupResult)) {
      setupResult.then(unsetCurrentInstance, unsetCurrentInstance);
      if (isSSR) {
        return setupResult.then((resolvedResult) => {
          handleSetupResult(instance, resolvedResult, isSSR);
        }).catch((e) => {
          handleError(
            e,
            instance,
            0
            /* ErrorCodes.SETUP_FUNCTION */
          );
        });
      } else {
        instance.asyncDep = setupResult;
      }
    } else {
      handleSetupResult(instance, setupResult, isSSR);
    }
  } else {
    finishComponentSetup(instance, isSSR);
  }
}
function handleSetupResult(instance, setupResult, isSSR) {
  if (isFunction$4(setupResult)) {
    if (instance.type.__ssrInlineRender) {
      instance.ssrRender = setupResult;
    } else {
      instance.render = setupResult;
    }
  } else if (isObject$6(setupResult)) {
    instance.setupState = proxyRefs(setupResult);
  } else
    ;
  finishComponentSetup(instance, isSSR);
}
let compile$1;
function finishComponentSetup(instance, isSSR, skipOptions) {
  const Component = instance.type;
  if (!instance.render) {
    if (!isSSR && compile$1 && !Component.render) {
      const template = Component.template || resolveMergedOptions(instance).template;
      if (template) {
        const { isCustomElement, compilerOptions } = instance.appContext.config;
        const { delimiters, compilerOptions: componentCompilerOptions } = Component;
        const finalCompilerOptions = extend(extend({
          isCustomElement,
          delimiters
        }, compilerOptions), componentCompilerOptions);
        Component.render = compile$1(template, finalCompilerOptions);
      }
    }
    instance.render = Component.render || NOOP;
  }
  {
    setCurrentInstance(instance);
    pauseTracking();
    applyOptions(instance);
    resetTracking();
    unsetCurrentInstance();
  }
}
function createAttrsProxy(instance) {
  return new Proxy(instance.attrs, {
    get(target2, key) {
      track(instance, "get", "$attrs");
      return target2[key];
    }
  });
}
function createSetupContext(instance) {
  const expose = (exposed) => {
    instance.exposed = exposed || {};
  };
  let attrs;
  {
    return {
      get attrs() {
        return attrs || (attrs = createAttrsProxy(instance));
      },
      slots: instance.slots,
      emit: instance.emit,
      expose
    };
  }
}
function getExposeProxy(instance) {
  if (instance.exposed) {
    return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {
      get(target2, key) {
        if (key in target2) {
          return target2[key];
        } else if (key in publicPropertiesMap) {
          return publicPropertiesMap[key](instance);
        }
      },
      has(target2, key) {
        return key in target2 || key in publicPropertiesMap;
      }
    }));
  }
}
function getComponentName(Component, includeInferred = true) {
  return isFunction$4(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;
}
function isClassComponent(value) {
  return isFunction$4(value) && "__vccOpts" in value;
}
const computed = (getterOrOptions, debugOptions) => {
  return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);
};
function useSlots() {
  return getContext().slots;
}
function useAttrs() {
  return getContext().attrs;
}
function getContext() {
  const i = getCurrentInstance();
  return i.setupContext || (i.setupContext = createSetupContext(i));
}
function h$1(type2, propsOrChildren, children) {
  const l2 = arguments.length;
  if (l2 === 2) {
    if (isObject$6(propsOrChildren) && !isArray$2(propsOrChildren)) {
      if (isVNode(propsOrChildren)) {
        return createVNode(type2, null, [propsOrChildren]);
      }
      return createVNode(type2, propsOrChildren);
    } else {
      return createVNode(type2, null, propsOrChildren);
    }
  } else {
    if (l2 > 3) {
      children = Array.prototype.slice.call(arguments, 2);
    } else if (l2 === 3 && isVNode(children)) {
      children = [children];
    }
    return createVNode(type2, propsOrChildren, children);
  }
}
const ssrContextKey = Symbol(``);
const useSSRContext = () => {
  {
    const ctx = inject(ssrContextKey);
    return ctx;
  }
};
const version$9 = "3.2.47";
const svgNS = "http://www.w3.org/2000/svg";
const doc = typeof document !== "undefined" ? document : null;
const templateContainer = doc && /* @__PURE__ */ doc.createElement("template");
const nodeOps = {
  insert: (child, parent, anchor) => {
    parent.insertBefore(child, anchor || null);
  },
  remove: (child) => {
    const parent = child.parentNode;
    if (parent) {
      parent.removeChild(child);
    }
  },
  createElement: (tag, isSVG, is, props) => {
    const el2 = isSVG ? doc.createElementNS(svgNS, tag) : doc.createElement(tag, is ? { is } : void 0);
    if (tag === "select" && props && props.multiple != null) {
      el2.setAttribute("multiple", props.multiple);
    }
    return el2;
  },
  createText: (text3) => doc.createTextNode(text3),
  createComment: (text3) => doc.createComment(text3),
  setText: (node, text3) => {
    node.nodeValue = text3;
  },
  setElementText: (el2, text3) => {
    el2.textContent = text3;
  },
  parentNode: (node) => node.parentNode,
  nextSibling: (node) => node.nextSibling,
  querySelector: (selector) => doc.querySelector(selector),
  setScopeId(el2, id2) {
    el2.setAttribute(id2, "");
  },
  // __UNSAFE__
  // Reason: innerHTML.
  // Static content here can only come from compiled templates.
  // As long as the user only uses trusted templates, this is safe.
  insertStaticContent(content, parent, anchor, isSVG, start2, end2) {
    const before = anchor ? anchor.previousSibling : parent.lastChild;
    if (start2 && (start2 === end2 || start2.nextSibling)) {
      while (true) {
        parent.insertBefore(start2.cloneNode(true), anchor);
        if (start2 === end2 || !(start2 = start2.nextSibling))
          break;
      }
    } else {
      templateContainer.innerHTML = isSVG ? `<svg>${content}</svg>` : content;
      const template = templateContainer.content;
      if (isSVG) {
        const wrapper = template.firstChild;
        while (wrapper.firstChild) {
          template.appendChild(wrapper.firstChild);
        }
        template.removeChild(wrapper);
      }
      parent.insertBefore(template, anchor);
    }
    return [
      // first
      before ? before.nextSibling : parent.firstChild,
      // last
      anchor ? anchor.previousSibling : parent.lastChild
    ];
  }
};
function patchClass(el2, value, isSVG) {
  const transitionClasses = el2._vtc;
  if (transitionClasses) {
    value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" ");
  }
  if (value == null) {
    el2.removeAttribute("class");
  } else if (isSVG) {
    el2.setAttribute("class", value);
  } else {
    el2.className = value;
  }
}
function patchStyle(el2, prev2, next) {
  const style = el2.style;
  const isCssString = isString$4(next);
  if (next && !isCssString) {
    if (prev2 && !isString$4(prev2)) {
      for (const key in prev2) {
        if (next[key] == null) {
          setStyle(style, key, "");
        }
      }
    }
    for (const key in next) {
      setStyle(style, key, next[key]);
    }
  } else {
    const currentDisplay = style.display;
    if (isCssString) {
      if (prev2 !== next) {
        style.cssText = next;
      }
    } else if (prev2) {
      el2.removeAttribute("style");
    }
    if ("_vod" in el2) {
      style.display = currentDisplay;
    }
  }
}
const importantRE = /\s*!important$/;
function setStyle(style, name2, val) {
  if (isArray$2(val)) {
    val.forEach((v2) => setStyle(style, name2, v2));
  } else {
    if (val == null)
      val = "";
    if (name2.startsWith("--")) {
      style.setProperty(name2, val);
    } else {
      const prefixed = autoPrefix(style, name2);
      if (importantRE.test(val)) {
        style.setProperty(hyphenate(prefixed), val.replace(importantRE, ""), "important");
      } else {
        style[prefixed] = val;
      }
    }
  }
}
const prefixes = ["Webkit", "Moz", "ms"];
const prefixCache = {};
function autoPrefix(style, rawName) {
  const cached = prefixCache[rawName];
  if (cached) {
    return cached;
  }
  let name2 = camelize(rawName);
  if (name2 !== "filter" && name2 in style) {
    return prefixCache[rawName] = name2;
  }
  name2 = capitalize(name2);
  for (let i = 0; i < prefixes.length; i++) {
    const prefixed = prefixes[i] + name2;
    if (prefixed in style) {
      return prefixCache[rawName] = prefixed;
    }
  }
  return rawName;
}
const xlinkNS = "http://www.w3.org/1999/xlink";
function patchAttr(el2, key, value, isSVG, instance) {
  if (isSVG && key.startsWith("xlink:")) {
    if (value == null) {
      el2.removeAttributeNS(xlinkNS, key.slice(6, key.length));
    } else {
      el2.setAttributeNS(xlinkNS, key, value);
    }
  } else {
    const isBoolean2 = isSpecialBooleanAttr(key);
    if (value == null || isBoolean2 && !includeBooleanAttr(value)) {
      el2.removeAttribute(key);
    } else {
      el2.setAttribute(key, isBoolean2 ? "" : value);
    }
  }
}
function patchDOMProp(el2, key, value, prevChildren, parentComponent, parentSuspense, unmountChildren) {
  if (key === "innerHTML" || key === "textContent") {
    if (prevChildren) {
      unmountChildren(prevChildren, parentComponent, parentSuspense);
    }
    el2[key] = value == null ? "" : value;
    return;
  }
  if (key === "value" && el2.tagName !== "PROGRESS" && // custom elements may use _value internally
  !el2.tagName.includes("-")) {
    el2._value = value;
    const newValue = value == null ? "" : value;
    if (el2.value !== newValue || // #4956: always set for OPTION elements because its value falls back to
    // textContent if no value attribute is present. And setting .value for
    // OPTION has no side effect
    el2.tagName === "OPTION") {
      el2.value = newValue;
    }
    if (value == null) {
      el2.removeAttribute(key);
    }
    return;
  }
  let needRemove = false;
  if (value === "" || value == null) {
    const type2 = typeof el2[key];
    if (type2 === "boolean") {
      value = includeBooleanAttr(value);
    } else if (value == null && type2 === "string") {
      value = "";
      needRemove = true;
    } else if (type2 === "number") {
      value = 0;
      needRemove = true;
    }
  }
  try {
    el2[key] = value;
  } catch (e) {
  }
  needRemove && el2.removeAttribute(key);
}
function addEventListener$1(el2, event, handler, options2) {
  el2.addEventListener(event, handler, options2);
}
function removeEventListener$1(el2, event, handler, options2) {
  el2.removeEventListener(event, handler, options2);
}
function patchEvent(el2, rawName, prevValue, nextValue, instance = null) {
  const invokers = el2._vei || (el2._vei = {});
  const existingInvoker = invokers[rawName];
  if (nextValue && existingInvoker) {
    existingInvoker.value = nextValue;
  } else {
    const [name2, options2] = parseName(rawName);
    if (nextValue) {
      const invoker = invokers[rawName] = createInvoker(nextValue, instance);
      addEventListener$1(el2, name2, invoker, options2);
    } else if (existingInvoker) {
      removeEventListener$1(el2, name2, existingInvoker, options2);
      invokers[rawName] = void 0;
    }
  }
}
const optionsModifierRE = /(?:Once|Passive|Capture)$/;
function parseName(name2) {
  let options2;
  if (optionsModifierRE.test(name2)) {
    options2 = {};
    let m2;
    while (m2 = name2.match(optionsModifierRE)) {
      name2 = name2.slice(0, name2.length - m2[0].length);
      options2[m2[0].toLowerCase()] = true;
    }
  }
  const event = name2[2] === ":" ? name2.slice(3) : hyphenate(name2.slice(2));
  return [event, options2];
}
let cachedNow = 0;
const p$2 = /* @__PURE__ */ Promise.resolve();
const getNow = () => cachedNow || (p$2.then(() => cachedNow = 0), cachedNow = Date.now());
function createInvoker(initialValue, instance) {
  const invoker = (e) => {
    if (!e._vts) {
      e._vts = Date.now();
    } else if (e._vts <= invoker.attached) {
      return;
    }
    callWithAsyncErrorHandling(patchStopImmediatePropagation(e, invoker.value), instance, 5, [e]);
  };
  invoker.value = initialValue;
  invoker.attached = getNow();
  return invoker;
}
function patchStopImmediatePropagation(e, value) {
  if (isArray$2(value)) {
    const originalStop = e.stopImmediatePropagation;
    e.stopImmediatePropagation = () => {
      originalStop.call(e);
      e._stopped = true;
    };
    return value.map((fn2) => (e2) => !e2._stopped && fn2 && fn2(e2));
  } else {
    return value;
  }
}
const nativeOnRE = /^on[a-z]/;
const patchProp = (el2, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {
  if (key === "class") {
    patchClass(el2, nextValue, isSVG);
  } else if (key === "style") {
    patchStyle(el2, prevValue, nextValue);
  } else if (isOn(key)) {
    if (!isModelListener(key)) {
      patchEvent(el2, key, prevValue, nextValue, parentComponent);
    }
  } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el2, key, nextValue, isSVG)) {
    patchDOMProp(el2, key, nextValue, prevChildren, parentComponent, parentSuspense, unmountChildren);
  } else {
    if (key === "true-value") {
      el2._trueValue = nextValue;
    } else if (key === "false-value") {
      el2._falseValue = nextValue;
    }
    patchAttr(el2, key, nextValue, isSVG);
  }
};
function shouldSetAsProp(el2, key, value, isSVG) {
  if (isSVG) {
    if (key === "innerHTML" || key === "textContent") {
      return true;
    }
    if (key in el2 && nativeOnRE.test(key) && isFunction$4(value)) {
      return true;
    }
    return false;
  }
  if (key === "spellcheck" || key === "draggable" || key === "translate") {
    return false;
  }
  if (key === "form") {
    return false;
  }
  if (key === "list" && el2.tagName === "INPUT") {
    return false;
  }
  if (key === "type" && el2.tagName === "TEXTAREA") {
    return false;
  }
  if (nativeOnRE.test(key) && isString$4(value)) {
    return false;
  }
  return key in el2;
}
function useCssVars(getter) {
  const instance = getCurrentInstance();
  if (!instance) {
    return;
  }
  const updateTeleports = instance.ut = (vars = getter(instance.proxy)) => {
    Array.from(document.querySelectorAll(`[data-v-owner="${instance.uid}"]`)).forEach((node) => setVarsOnNode(node, vars));
  };
  const setVars = () => {
    const vars = getter(instance.proxy);
    setVarsOnVNode(instance.subTree, vars);
    updateTeleports(vars);
  };
  watchPostEffect(setVars);
  onMounted(() => {
    const ob = new MutationObserver(setVars);
    ob.observe(instance.subTree.el.parentNode, { childList: true });
    onUnmounted(() => ob.disconnect());
  });
}
function setVarsOnVNode(vnode, vars) {
  if (vnode.shapeFlag & 128) {
    const suspense = vnode.suspense;
    vnode = suspense.activeBranch;
    if (suspense.pendingBranch && !suspense.isHydrating) {
      suspense.effects.push(() => {
        setVarsOnVNode(suspense.activeBranch, vars);
      });
    }
  }
  while (vnode.component) {
    vnode = vnode.component.subTree;
  }
  if (vnode.shapeFlag & 1 && vnode.el) {
    setVarsOnNode(vnode.el, vars);
  } else if (vnode.type === Fragment) {
    vnode.children.forEach((c2) => setVarsOnVNode(c2, vars));
  } else if (vnode.type === Static) {
    let { el: el2, anchor } = vnode;
    while (el2) {
      setVarsOnNode(el2, vars);
      if (el2 === anchor)
        break;
      el2 = el2.nextSibling;
    }
  }
}
function setVarsOnNode(el2, vars) {
  if (el2.nodeType === 1) {
    const style = el2.style;
    for (const key in vars) {
      style.setProperty(`--${key}`, vars[key]);
    }
  }
}
const TRANSITION$1 = "transition";
const ANIMATION = "animation";
const Transition = (props, { slots }) => h$1(BaseTransition, resolveTransitionProps(props), slots);
Transition.displayName = "Transition";
const DOMTransitionPropsValidators = {
  name: String,
  type: String,
  css: {
    type: Boolean,
    default: true
  },
  duration: [String, Number, Object],
  enterFromClass: String,
  enterActiveClass: String,
  enterToClass: String,
  appearFromClass: String,
  appearActiveClass: String,
  appearToClass: String,
  leaveFromClass: String,
  leaveActiveClass: String,
  leaveToClass: String
};
const TransitionPropsValidators = Transition.props = /* @__PURE__ */ extend({}, BaseTransition.props, DOMTransitionPropsValidators);
const callHook = (hook, args = []) => {
  if (isArray$2(hook)) {
    hook.forEach((h2) => h2(...args));
  } else if (hook) {
    hook(...args);
  }
};
const hasExplicitCallback = (hook) => {
  return hook ? isArray$2(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false;
};
function resolveTransitionProps(rawProps) {
  const baseProps = {};
  for (const key in rawProps) {
    if (!(key in DOMTransitionPropsValidators)) {
      baseProps[key] = rawProps[key];
    }
  }
  if (rawProps.css === false) {
    return baseProps;
  }
  const { name: name2 = "v", type: type2, duration: duration2, enterFromClass = `${name2}-enter-from`, enterActiveClass = `${name2}-enter-active`, enterToClass = `${name2}-enter-to`, appearFromClass = enterFromClass, appearActiveClass = enterActiveClass, appearToClass = enterToClass, leaveFromClass = `${name2}-leave-from`, leaveActiveClass = `${name2}-leave-active`, leaveToClass = `${name2}-leave-to` } = rawProps;
  const durations = normalizeDuration(duration2);
  const enterDuration = durations && durations[0];
  const leaveDuration = durations && durations[1];
  const { onBeforeEnter, onEnter, onEnterCancelled, onLeave, onLeaveCancelled, onBeforeAppear = onBeforeEnter, onAppear = onEnter, onAppearCancelled = onEnterCancelled } = baseProps;
  const finishEnter = (el2, isAppear, done) => {
    removeTransitionClass(el2, isAppear ? appearToClass : enterToClass);
    removeTransitionClass(el2, isAppear ? appearActiveClass : enterActiveClass);
    done && done();
  };
  const finishLeave = (el2, done) => {
    el2._isLeaving = false;
    removeTransitionClass(el2, leaveFromClass);
    removeTransitionClass(el2, leaveToClass);
    removeTransitionClass(el2, leaveActiveClass);
    done && done();
  };
  const makeEnterHook = (isAppear) => {
    return (el2, done) => {
      const hook = isAppear ? onAppear : onEnter;
      const resolve3 = () => finishEnter(el2, isAppear, done);
      callHook(hook, [el2, resolve3]);
      nextFrame$2(() => {
        removeTransitionClass(el2, isAppear ? appearFromClass : enterFromClass);
        addTransitionClass(el2, isAppear ? appearToClass : enterToClass);
        if (!hasExplicitCallback(hook)) {
          whenTransitionEnds(el2, type2, enterDuration, resolve3);
        }
      });
    };
  };
  return extend(baseProps, {
    onBeforeEnter(el2) {
      callHook(onBeforeEnter, [el2]);
      addTransitionClass(el2, enterFromClass);
      addTransitionClass(el2, enterActiveClass);
    },
    onBeforeAppear(el2) {
      callHook(onBeforeAppear, [el2]);
      addTransitionClass(el2, appearFromClass);
      addTransitionClass(el2, appearActiveClass);
    },
    onEnter: makeEnterHook(false),
    onAppear: makeEnterHook(true),
    onLeave(el2, done) {
      el2._isLeaving = true;
      const resolve3 = () => finishLeave(el2, done);
      addTransitionClass(el2, leaveFromClass);
      forceReflow();
      addTransitionClass(el2, leaveActiveClass);
      nextFrame$2(() => {
        if (!el2._isLeaving) {
          return;
        }
        removeTransitionClass(el2, leaveFromClass);
        addTransitionClass(el2, leaveToClass);
        if (!hasExplicitCallback(onLeave)) {
          whenTransitionEnds(el2, type2, leaveDuration, resolve3);
        }
      });
      callHook(onLeave, [el2, resolve3]);
    },
    onEnterCancelled(el2) {
      finishEnter(el2, false);
      callHook(onEnterCancelled, [el2]);
    },
    onAppearCancelled(el2) {
      finishEnter(el2, true);
      callHook(onAppearCancelled, [el2]);
    },
    onLeaveCancelled(el2) {
      finishLeave(el2);
      callHook(onLeaveCancelled, [el2]);
    }
  });
}
function normalizeDuration(duration2) {
  if (duration2 == null) {
    return null;
  } else if (isObject$6(duration2)) {
    return [NumberOf(duration2.enter), NumberOf(duration2.leave)];
  } else {
    const n = NumberOf(duration2);
    return [n, n];
  }
}
function NumberOf(val) {
  const res = toNumber(val);
  return res;
}
function addTransitionClass(el2, cls) {
  cls.split(/\s+/).forEach((c2) => c2 && el2.classList.add(c2));
  (el2._vtc || (el2._vtc = /* @__PURE__ */ new Set())).add(cls);
}
function removeTransitionClass(el2, cls) {
  cls.split(/\s+/).forEach((c2) => c2 && el2.classList.remove(c2));
  const { _vtc } = el2;
  if (_vtc) {
    _vtc.delete(cls);
    if (!_vtc.size) {
      el2._vtc = void 0;
    }
  }
}
function nextFrame$2(cb) {
  requestAnimationFrame(() => {
    requestAnimationFrame(cb);
  });
}
let endId = 0;
function whenTransitionEnds(el2, expectedType, explicitTimeout, resolve3) {
  const id2 = el2._endId = ++endId;
  const resolveIfNotStale = () => {
    if (id2 === el2._endId) {
      resolve3();
    }
  };
  if (explicitTimeout) {
    return setTimeout(resolveIfNotStale, explicitTimeout);
  }
  const { type: type2, timeout, propCount } = getTransitionInfo(el2, expectedType);
  if (!type2) {
    return resolve3();
  }
  const endEvent = type2 + "end";
  let ended = 0;
  const end2 = () => {
    el2.removeEventListener(endEvent, onEnd);
    resolveIfNotStale();
  };
  const onEnd = (e) => {
    if (e.target === el2 && ++ended >= propCount) {
      end2();
    }
  };
  setTimeout(() => {
    if (ended < propCount) {
      end2();
    }
  }, timeout + 1);
  el2.addEventListener(endEvent, onEnd);
}
function getTransitionInfo(el2, expectedType) {
  const styles = window.getComputedStyle(el2);
  const getStyleProperties = (key) => (styles[key] || "").split(", ");
  const transitionDelays = getStyleProperties(`${TRANSITION$1}Delay`);
  const transitionDurations = getStyleProperties(`${TRANSITION$1}Duration`);
  const transitionTimeout = getTimeout(transitionDelays, transitionDurations);
  const animationDelays = getStyleProperties(`${ANIMATION}Delay`);
  const animationDurations = getStyleProperties(`${ANIMATION}Duration`);
  const animationTimeout = getTimeout(animationDelays, animationDurations);
  let type2 = null;
  let timeout = 0;
  let propCount = 0;
  if (expectedType === TRANSITION$1) {
    if (transitionTimeout > 0) {
      type2 = TRANSITION$1;
      timeout = transitionTimeout;
      propCount = transitionDurations.length;
    }
  } else if (expectedType === ANIMATION) {
    if (animationTimeout > 0) {
      type2 = ANIMATION;
      timeout = animationTimeout;
      propCount = animationDurations.length;
    }
  } else {
    timeout = Math.max(transitionTimeout, animationTimeout);
    type2 = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION$1 : ANIMATION : null;
    propCount = type2 ? type2 === TRANSITION$1 ? transitionDurations.length : animationDurations.length : 0;
  }
  const hasTransform = type2 === TRANSITION$1 && /\b(transform|all)(,|$)/.test(getStyleProperties(`${TRANSITION$1}Property`).toString());
  return {
    type: type2,
    timeout,
    propCount,
    hasTransform
  };
}
function getTimeout(delays, durations) {
  while (delays.length < durations.length) {
    delays = delays.concat(delays);
  }
  return Math.max(...durations.map((d2, i) => toMs(d2) + toMs(delays[i])));
}
function toMs(s2) {
  return Number(s2.slice(0, -1).replace(",", ".")) * 1e3;
}
function forceReflow() {
  return document.body.offsetHeight;
}
const positionMap = /* @__PURE__ */ new WeakMap();
const newPositionMap = /* @__PURE__ */ new WeakMap();
const TransitionGroupImpl = {
  name: "TransitionGroup",
  props: /* @__PURE__ */ extend({}, TransitionPropsValidators, {
    tag: String,
    moveClass: String
  }),
  setup(props, { slots }) {
    const instance = getCurrentInstance();
    const state = useTransitionState();
    let prevChildren;
    let children;
    onUpdated(() => {
      if (!prevChildren.length) {
        return;
      }
      const moveClass = props.moveClass || `${props.name || "v"}-move`;
      if (!hasCSSTransform(prevChildren[0].el, instance.vnode.el, moveClass)) {
        return;
      }
      prevChildren.forEach(callPendingCbs);
      prevChildren.forEach(recordPosition);
      const movedChildren = prevChildren.filter(applyTranslation);
      forceReflow();
      movedChildren.forEach((c2) => {
        const el2 = c2.el;
        const style = el2.style;
        addTransitionClass(el2, moveClass);
        style.transform = style.webkitTransform = style.transitionDuration = "";
        const cb = el2._moveCb = (e) => {
          if (e && e.target !== el2) {
            return;
          }
          if (!e || /transform$/.test(e.propertyName)) {
            el2.removeEventListener("transitionend", cb);
            el2._moveCb = null;
            removeTransitionClass(el2, moveClass);
          }
        };
        el2.addEventListener("transitionend", cb);
      });
    });
    return () => {
      const rawProps = toRaw(props);
      const cssTransitionProps = resolveTransitionProps(rawProps);
      let tag = rawProps.tag || Fragment;
      prevChildren = children;
      children = slots.default ? getTransitionRawChildren(slots.default()) : [];
      for (let i = 0; i < children.length; i++) {
        const child = children[i];
        if (child.key != null) {
          setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
        }
      }
      if (prevChildren) {
        for (let i = 0; i < prevChildren.length; i++) {
          const child = prevChildren[i];
          setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
          positionMap.set(child, child.el.getBoundingClientRect());
        }
      }
      return createVNode(tag, null, children);
    };
  }
};
const removeMode = (props) => delete props.mode;
/* @__PURE__ */ removeMode(TransitionGroupImpl.props);
const TransitionGroup = TransitionGroupImpl;
function callPendingCbs(c2) {
  const el2 = c2.el;
  if (el2._moveCb) {
    el2._moveCb();
  }
  if (el2._enterCb) {
    el2._enterCb();
  }
}
function recordPosition(c2) {
  newPositionMap.set(c2, c2.el.getBoundingClientRect());
}
function applyTranslation(c2) {
  const oldPos = positionMap.get(c2);
  const newPos = newPositionMap.get(c2);
  const dx = oldPos.left - newPos.left;
  const dy = oldPos.top - newPos.top;
  if (dx || dy) {
    const s2 = c2.el.style;
    s2.transform = s2.webkitTransform = `translate(${dx}px,${dy}px)`;
    s2.transitionDuration = "0s";
    return c2;
  }
}
function hasCSSTransform(el2, root2, moveClass) {
  const clone2 = el2.cloneNode();
  if (el2._vtc) {
    el2._vtc.forEach((cls) => {
      cls.split(/\s+/).forEach((c2) => c2 && clone2.classList.remove(c2));
    });
  }
  moveClass.split(/\s+/).forEach((c2) => c2 && clone2.classList.add(c2));
  clone2.style.display = "none";
  const container = root2.nodeType === 1 ? root2 : root2.parentNode;
  container.appendChild(clone2);
  const { hasTransform } = getTransitionInfo(clone2);
  container.removeChild(clone2);
  return hasTransform;
}
const getModelAssigner = (vnode) => {
  const fn2 = vnode.props["onUpdate:modelValue"] || false;
  return isArray$2(fn2) ? (value) => invokeArrayFns(fn2, value) : fn2;
};
function onCompositionStart(e) {
  e.target.composing = true;
}
function onCompositionEnd(e) {
  const target2 = e.target;
  if (target2.composing) {
    target2.composing = false;
    target2.dispatchEvent(new Event("input"));
  }
}
const vModelText = {
  created(el2, { modifiers: { lazy, trim: trim2, number: number2 } }, vnode) {
    el2._assign = getModelAssigner(vnode);
    const castToNumber = number2 || vnode.props && vnode.props.type === "number";
    addEventListener$1(el2, lazy ? "change" : "input", (e) => {
      if (e.target.composing)
        return;
      let domValue = el2.value;
      if (trim2) {
        domValue = domValue.trim();
      }
      if (castToNumber) {
        domValue = looseToNumber(domValue);
      }
      el2._assign(domValue);
    });
    if (trim2) {
      addEventListener$1(el2, "change", () => {
        el2.value = el2.value.trim();
      });
    }
    if (!lazy) {
      addEventListener$1(el2, "compositionstart", onCompositionStart);
      addEventListener$1(el2, "compositionend", onCompositionEnd);
      addEventListener$1(el2, "change", onCompositionEnd);
    }
  },
  // set value on mounted so it's after min/max for type="range"
  mounted(el2, { value }) {
    el2.value = value == null ? "" : value;
  },
  beforeUpdate(el2, { value, modifiers: { lazy, trim: trim2, number: number2 } }, vnode) {
    el2._assign = getModelAssigner(vnode);
    if (el2.composing)
      return;
    if (document.activeElement === el2 && el2.type !== "range") {
      if (lazy) {
        return;
      }
      if (trim2 && el2.value.trim() === value) {
        return;
      }
      if ((number2 || el2.type === "number") && looseToNumber(el2.value) === value) {
        return;
      }
    }
    const newValue = value == null ? "" : value;
    if (el2.value !== newValue) {
      el2.value = newValue;
    }
  }
};
const vModelCheckbox = {
  // #4096 array checkboxes need to be deep traversed
  deep: true,
  created(el2, _2, vnode) {
    el2._assign = getModelAssigner(vnode);
    addEventListener$1(el2, "change", () => {
      const modelValue = el2._modelValue;
      const elementValue = getValue(el2);
      const checked = el2.checked;
      const assign2 = el2._assign;
      if (isArray$2(modelValue)) {
        const index2 = looseIndexOf(modelValue, elementValue);
        const found = index2 !== -1;
        if (checked && !found) {
          assign2(modelValue.concat(elementValue));
        } else if (!checked && found) {
          const filtered = [...modelValue];
          filtered.splice(index2, 1);
          assign2(filtered);
        }
      } else if (isSet(modelValue)) {
        const cloned = new Set(modelValue);
        if (checked) {
          cloned.add(elementValue);
        } else {
          cloned.delete(elementValue);
        }
        assign2(cloned);
      } else {
        assign2(getCheckboxValue(el2, checked));
      }
    });
  },
  // set initial checked on mount to wait for true-value/false-value
  mounted: setChecked,
  beforeUpdate(el2, binding, vnode) {
    el2._assign = getModelAssigner(vnode);
    setChecked(el2, binding, vnode);
  }
};
function setChecked(el2, { value, oldValue }, vnode) {
  el2._modelValue = value;
  if (isArray$2(value)) {
    el2.checked = looseIndexOf(value, vnode.props.value) > -1;
  } else if (isSet(value)) {
    el2.checked = value.has(vnode.props.value);
  } else if (value !== oldValue) {
    el2.checked = looseEqual(value, getCheckboxValue(el2, true));
  }
}
const vModelRadio = {
  created(el2, { value }, vnode) {
    el2.checked = looseEqual(value, vnode.props.value);
    el2._assign = getModelAssigner(vnode);
    addEventListener$1(el2, "change", () => {
      el2._assign(getValue(el2));
    });
  },
  beforeUpdate(el2, { value, oldValue }, vnode) {
    el2._assign = getModelAssigner(vnode);
    if (value !== oldValue) {
      el2.checked = looseEqual(value, vnode.props.value);
    }
  }
};
const vModelSelect = {
  // <select multiple> value need to be deep traversed
  deep: true,
  created(el2, { value, modifiers: { number: number2 } }, vnode) {
    const isSetModel = isSet(value);
    addEventListener$1(el2, "change", () => {
      const selectedVal = Array.prototype.filter.call(el2.options, (o2) => o2.selected).map((o2) => number2 ? looseToNumber(getValue(o2)) : getValue(o2));
      el2._assign(el2.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0]);
    });
    el2._assign = getModelAssigner(vnode);
  },
  // set value in mounted & updated because <select> relies on its children
  // <option>s.
  mounted(el2, { value }) {
    setSelected(el2, value);
  },
  beforeUpdate(el2, _binding, vnode) {
    el2._assign = getModelAssigner(vnode);
  },
  updated(el2, { value }) {
    setSelected(el2, value);
  }
};
function setSelected(el2, value) {
  const isMultiple = el2.multiple;
  if (isMultiple && !isArray$2(value) && !isSet(value)) {
    return;
  }
  for (let i = 0, l2 = el2.options.length; i < l2; i++) {
    const option = el2.options[i];
    const optionValue = getValue(option);
    if (isMultiple) {
      if (isArray$2(value)) {
        option.selected = looseIndexOf(value, optionValue) > -1;
      } else {
        option.selected = value.has(optionValue);
      }
    } else {
      if (looseEqual(getValue(option), value)) {
        if (el2.selectedIndex !== i)
          el2.selectedIndex = i;
        return;
      }
    }
  }
  if (!isMultiple && el2.selectedIndex !== -1) {
    el2.selectedIndex = -1;
  }
}
function getValue(el2) {
  return "_value" in el2 ? el2._value : el2.value;
}
function getCheckboxValue(el2, checked) {
  const key = checked ? "_trueValue" : "_falseValue";
  return key in el2 ? el2[key] : checked;
}
const vModelDynamic = {
  created(el2, binding, vnode) {
    callModelHook(el2, binding, vnode, null, "created");
  },
  mounted(el2, binding, vnode) {
    callModelHook(el2, binding, vnode, null, "mounted");
  },
  beforeUpdate(el2, binding, vnode, prevVNode) {
    callModelHook(el2, binding, vnode, prevVNode, "beforeUpdate");
  },
  updated(el2, binding, vnode, prevVNode) {
    callModelHook(el2, binding, vnode, prevVNode, "updated");
  }
};
function resolveDynamicModel(tagName, type2) {
  switch (tagName) {
    case "SELECT":
      return vModelSelect;
    case "TEXTAREA":
      return vModelText;
    default:
      switch (type2) {
        case "checkbox":
          return vModelCheckbox;
        case "radio":
          return vModelRadio;
        default:
          return vModelText;
      }
  }
}
function callModelHook(el2, binding, vnode, prevVNode, hook) {
  const modelToUse = resolveDynamicModel(el2.tagName, vnode.props && vnode.props.type);
  const fn2 = modelToUse[hook];
  fn2 && fn2(el2, binding, vnode, prevVNode);
}
const systemModifiers = ["ctrl", "shift", "alt", "meta"];
const modifierGuards = {
  stop: (e) => e.stopPropagation(),
  prevent: (e) => e.preventDefault(),
  self: (e) => e.target !== e.currentTarget,
  ctrl: (e) => !e.ctrlKey,
  shift: (e) => !e.shiftKey,
  alt: (e) => !e.altKey,
  meta: (e) => !e.metaKey,
  left: (e) => "button" in e && e.button !== 0,
  middle: (e) => "button" in e && e.button !== 1,
  right: (e) => "button" in e && e.button !== 2,
  exact: (e, modifiers) => systemModifiers.some((m2) => e[`${m2}Key`] && !modifiers.includes(m2))
};
const withModifiers = (fn2, modifiers) => {
  return (event, ...args) => {
    for (let i = 0; i < modifiers.length; i++) {
      const guard = modifierGuards[modifiers[i]];
      if (guard && guard(event, modifiers))
        return;
    }
    return fn2(event, ...args);
  };
};
const keyNames = {
  esc: "escape",
  space: " ",
  up: "arrow-up",
  left: "arrow-left",
  right: "arrow-right",
  down: "arrow-down",
  delete: "backspace"
};
const withKeys = (fn2, modifiers) => {
  return (event) => {
    if (!("key" in event)) {
      return;
    }
    const eventKey = hyphenate(event.key);
    if (modifiers.some((k2) => k2 === eventKey || keyNames[k2] === eventKey)) {
      return fn2(event);
    }
  };
};
const vShow = {
  beforeMount(el2, { value }, { transition }) {
    el2._vod = el2.style.display === "none" ? "" : el2.style.display;
    if (transition && value) {
      transition.beforeEnter(el2);
    } else {
      setDisplay(el2, value);
    }
  },
  mounted(el2, { value }, { transition }) {
    if (transition && value) {
      transition.enter(el2);
    }
  },
  updated(el2, { value, oldValue }, { transition }) {
    if (!value === !oldValue)
      return;
    if (transition) {
      if (value) {
        transition.beforeEnter(el2);
        setDisplay(el2, true);
        transition.enter(el2);
      } else {
        transition.leave(el2, () => {
          setDisplay(el2, false);
        });
      }
    } else {
      setDisplay(el2, value);
    }
  },
  beforeUnmount(el2, { value }) {
    setDisplay(el2, value);
  }
};
function setDisplay(el2, value) {
  el2.style.display = value ? el2._vod : "none";
}
const rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);
let renderer$1;
function ensureRenderer() {
  return renderer$1 || (renderer$1 = createRenderer(rendererOptions));
}
const createApp = (...args) => {
  const app2 = ensureRenderer().createApp(...args);
  const { mount } = app2;
  app2.mount = (containerOrSelector) => {
    const container = normalizeContainer(containerOrSelector);
    if (!container)
      return;
    const component = app2._component;
    if (!isFunction$4(component) && !component.render && !component.template) {
      component.template = container.innerHTML;
    }
    container.innerHTML = "";
    const proxy = mount(container, false, container instanceof SVGElement);
    if (container instanceof Element) {
      container.removeAttribute("v-cloak");
      container.setAttribute("data-v-app", "");
    }
    return proxy;
  };
  return app2;
};
function normalizeContainer(container) {
  if (isString$4(container)) {
    const res = document.querySelector(container);
    return res;
  }
  return container;
}
const main$2 = "";
const tailwind = "";
var nodejsCustomInspectSymbol = typeof Symbol === "function" && typeof Symbol.for === "function" ? Symbol.for("nodejs.util.inspect.custom") : void 0;
const nodejsCustomInspectSymbol$1 = nodejsCustomInspectSymbol;
function _typeof$2(obj) {
  "@babel/helpers - typeof";
  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
    _typeof$2 = function _typeof2(obj2) {
      return typeof obj2;
    };
  } else {
    _typeof$2 = function _typeof2(obj2) {
      return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
    };
  }
  return _typeof$2(obj);
}
var MAX_ARRAY_LENGTH = 10;
var MAX_RECURSIVE_DEPTH = 2;
function inspect(value) {
  return formatValue(value, []);
}
function formatValue(value, seenValues) {
  switch (_typeof$2(value)) {
    case "string":
      return JSON.stringify(value);
    case "function":
      return value.name ? "[function ".concat(value.name, "]") : "[function]";
    case "object":
      if (value === null) {
        return "null";
      }
      return formatObjectValue(value, seenValues);
    default:
      return String(value);
  }
}
function formatObjectValue(value, previouslySeenValues) {
  if (previouslySeenValues.indexOf(value) !== -1) {
    return "[Circular]";
  }
  var seenValues = [].concat(previouslySeenValues, [value]);
  var customInspectFn = getCustomFn(value);
  if (customInspectFn !== void 0) {
    var customValue = customInspectFn.call(value);
    if (customValue !== value) {
      return typeof customValue === "string" ? customValue : formatValue(customValue, seenValues);
    }
  } else if (Array.isArray(value)) {
    return formatArray(value, seenValues);
  }
  return formatObject(value, seenValues);
}
function formatObject(object, seenValues) {
  var keys = Object.keys(object);
  if (keys.length === 0) {
    return "{}";
  }
  if (seenValues.length > MAX_RECURSIVE_DEPTH) {
    return "[" + getObjectTag(object) + "]";
  }
  var properties = keys.map(function(key) {
    var value = formatValue(object[key], seenValues);
    return key + ": " + value;
  });
  return "{ " + properties.join(", ") + " }";
}
function formatArray(array, seenValues) {
  if (array.length === 0) {
    return "[]";
  }
  if (seenValues.length > MAX_RECURSIVE_DEPTH) {
    return "[Array]";
  }
  var len = Math.min(MAX_ARRAY_LENGTH, array.length);
  var remaining = array.length - len;
  var items = [];
  for (var i = 0; i < len; ++i) {
    items.push(formatValue(array[i], seenValues));
  }
  if (remaining === 1) {
    items.push("... 1 more item");
  } else if (remaining > 1) {
    items.push("... ".concat(remaining, " more items"));
  }
  return "[" + items.join(", ") + "]";
}
function getCustomFn(object) {
  var customInspectFn = object[String(nodejsCustomInspectSymbol$1)];
  if (typeof customInspectFn === "function") {
    return customInspectFn;
  }
  if (typeof object.inspect === "function") {
    return object.inspect;
  }
}
function getObjectTag(object) {
  var tag = Object.prototype.toString.call(object).replace(/^\[object /, "").replace(/]$/, "");
  if (tag === "Object" && typeof object.constructor === "function") {
    var name2 = object.constructor.name;
    if (typeof name2 === "string" && name2 !== "") {
      return name2;
    }
  }
  return tag;
}
function invariant$2(condition, message) {
  var booleanCondition = Boolean(condition);
  if (!booleanCondition) {
    throw new Error(message != null ? message : "Unexpected invariant triggered.");
  }
}
function defineInspect(classObject) {
  var fn2 = classObject.prototype.toJSON;
  typeof fn2 === "function" || invariant$2(0);
  classObject.prototype.inspect = fn2;
  if (nodejsCustomInspectSymbol$1) {
    classObject.prototype[nodejsCustomInspectSymbol$1] = fn2;
  }
}
var Location = /* @__PURE__ */ function() {
  function Location2(startToken, endToken, source) {
    this.start = startToken.start;
    this.end = endToken.end;
    this.startToken = startToken;
    this.endToken = endToken;
    this.source = source;
  }
  var _proto = Location2.prototype;
  _proto.toJSON = function toJSON() {
    return {
      start: this.start,
      end: this.end
    };
  };
  return Location2;
}();
defineInspect(Location);
var Token$4 = /* @__PURE__ */ function() {
  function Token2(kind, start2, end2, line, column, prev2, value) {
    this.kind = kind;
    this.start = start2;
    this.end = end2;
    this.line = line;
    this.column = column;
    this.value = value;
    this.prev = prev2;
    this.next = null;
  }
  var _proto2 = Token2.prototype;
  _proto2.toJSON = function toJSON() {
    return {
      kind: this.kind,
      value: this.value,
      line: this.line,
      column: this.column
    };
  };
  return Token2;
}();
defineInspect(Token$4);
function isNode$1(maybeNode) {
  return maybeNode != null && typeof maybeNode.kind === "string";
}
var QueryDocumentKeys = {
  Name: [],
  Document: ["definitions"],
  OperationDefinition: ["name", "variableDefinitions", "directives", "selectionSet"],
  VariableDefinition: ["variable", "type", "defaultValue", "directives"],
  Variable: ["name"],
  SelectionSet: ["selections"],
  Field: ["alias", "name", "arguments", "directives", "selectionSet"],
  Argument: ["name", "value"],
  FragmentSpread: ["name", "directives"],
  InlineFragment: ["typeCondition", "directives", "selectionSet"],
  FragmentDefinition: [
    "name",
    // Note: fragment variable definitions are experimental and may be changed
    // or removed in the future.
    "variableDefinitions",
    "typeCondition",
    "directives",
    "selectionSet"
  ],
  IntValue: [],
  FloatValue: [],
  StringValue: [],
  BooleanValue: [],
  NullValue: [],
  EnumValue: [],
  ListValue: ["values"],
  ObjectValue: ["fields"],
  ObjectField: ["name", "value"],
  Directive: ["name", "arguments"],
  NamedType: ["name"],
  ListType: ["type"],
  NonNullType: ["type"],
  SchemaDefinition: ["description", "directives", "operationTypes"],
  OperationTypeDefinition: ["type"],
  ScalarTypeDefinition: ["description", "name", "directives"],
  ObjectTypeDefinition: ["description", "name", "interfaces", "directives", "fields"],
  FieldDefinition: ["description", "name", "arguments", "type", "directives"],
  InputValueDefinition: ["description", "name", "type", "defaultValue", "directives"],
  InterfaceTypeDefinition: ["description", "name", "interfaces", "directives", "fields"],
  UnionTypeDefinition: ["description", "name", "directives", "types"],
  EnumTypeDefinition: ["description", "name", "directives", "values"],
  EnumValueDefinition: ["description", "name", "directives"],
  InputObjectTypeDefinition: ["description", "name", "directives", "fields"],
  DirectiveDefinition: ["description", "name", "arguments", "locations"],
  SchemaExtension: ["directives", "operationTypes"],
  ScalarTypeExtension: ["name", "directives"],
  ObjectTypeExtension: ["name", "interfaces", "directives", "fields"],
  InterfaceTypeExtension: ["name", "interfaces", "directives", "fields"],
  UnionTypeExtension: ["name", "directives", "types"],
  EnumTypeExtension: ["name", "directives", "values"],
  InputObjectTypeExtension: ["name", "directives", "fields"]
};
var BREAK = Object.freeze({});
function visit$1(root2, visitor) {
  var visitorKeys = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : QueryDocumentKeys;
  var stack = void 0;
  var inArray = Array.isArray(root2);
  var keys = [root2];
  var index2 = -1;
  var edits = [];
  var node = void 0;
  var key = void 0;
  var parent = void 0;
  var path = [];
  var ancestors = [];
  var newRoot = root2;
  do {
    index2++;
    var isLeaving = index2 === keys.length;
    var isEdited = isLeaving && edits.length !== 0;
    if (isLeaving) {
      key = ancestors.length === 0 ? void 0 : path[path.length - 1];
      node = parent;
      parent = ancestors.pop();
      if (isEdited) {
        if (inArray) {
          node = node.slice();
        } else {
          var clone2 = {};
          for (var _i2 = 0, _Object$keys2 = Object.keys(node); _i2 < _Object$keys2.length; _i2++) {
            var k2 = _Object$keys2[_i2];
            clone2[k2] = node[k2];
          }
          node = clone2;
        }
        var editOffset = 0;
        for (var ii2 = 0; ii2 < edits.length; ii2++) {
          var editKey = edits[ii2][0];
          var editValue = edits[ii2][1];
          if (inArray) {
            editKey -= editOffset;
          }
          if (inArray && editValue === null) {
            node.splice(editKey, 1);
            editOffset++;
          } else {
            node[editKey] = editValue;
          }
        }
      }
      index2 = stack.index;
      keys = stack.keys;
      edits = stack.edits;
      inArray = stack.inArray;
      stack = stack.prev;
    } else {
      key = parent ? inArray ? index2 : keys[index2] : void 0;
      node = parent ? parent[key] : newRoot;
      if (node === null || node === void 0) {
        continue;
      }
      if (parent) {
        path.push(key);
      }
    }
    var result = void 0;
    if (!Array.isArray(node)) {
      if (!isNode$1(node)) {
        throw new Error("Invalid AST Node: ".concat(inspect(node), "."));
      }
      var visitFn = getVisitFn(visitor, node.kind, isLeaving);
      if (visitFn) {
        result = visitFn.call(visitor, node, key, parent, path, ancestors);
        if (result === BREAK) {
          break;
        }
        if (result === false) {
          if (!isLeaving) {
            path.pop();
            continue;
          }
        } else if (result !== void 0) {
          edits.push([key, result]);
          if (!isLeaving) {
            if (isNode$1(result)) {
              node = result;
            } else {
              path.pop();
              continue;
            }
          }
        }
      }
    }
    if (result === void 0 && isEdited) {
      edits.push([key, node]);
    }
    if (isLeaving) {
      path.pop();
    } else {
      var _visitorKeys$node$kin;
      stack = {
        inArray,
        index: index2,
        keys,
        edits,
        prev: stack
      };
      inArray = Array.isArray(node);
      keys = inArray ? node : (_visitorKeys$node$kin = visitorKeys[node.kind]) !== null && _visitorKeys$node$kin !== void 0 ? _visitorKeys$node$kin : [];
      index2 = -1;
      edits = [];
      if (parent) {
        ancestors.push(parent);
      }
      parent = node;
    }
  } while (stack !== void 0);
  if (edits.length !== 0) {
    newRoot = edits[edits.length - 1][1];
  }
  return newRoot;
}
function getVisitFn(visitor, kind, isLeaving) {
  var kindVisitor = visitor[kind];
  if (kindVisitor) {
    if (!isLeaving && typeof kindVisitor === "function") {
      return kindVisitor;
    }
    var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;
    if (typeof kindSpecificVisitor === "function") {
      return kindSpecificVisitor;
    }
  } else {
    var specificVisitor = isLeaving ? visitor.leave : visitor.enter;
    if (specificVisitor) {
      if (typeof specificVisitor === "function") {
        return specificVisitor;
      }
      var specificKindVisitor = specificVisitor[kind];
      if (typeof specificKindVisitor === "function") {
        return specificKindVisitor;
      }
    }
  }
}
var Kind = Object.freeze({
  // Name
  NAME: "Name",
  // Document
  DOCUMENT: "Document",
  OPERATION_DEFINITION: "OperationDefinition",
  VARIABLE_DEFINITION: "VariableDefinition",
  SELECTION_SET: "SelectionSet",
  FIELD: "Field",
  ARGUMENT: "Argument",
  // Fragments
  FRAGMENT_SPREAD: "FragmentSpread",
  INLINE_FRAGMENT: "InlineFragment",
  FRAGMENT_DEFINITION: "FragmentDefinition",
  // Values
  VARIABLE: "Variable",
  INT: "IntValue",
  FLOAT: "FloatValue",
  STRING: "StringValue",
  BOOLEAN: "BooleanValue",
  NULL: "NullValue",
  ENUM: "EnumValue",
  LIST: "ListValue",
  OBJECT: "ObjectValue",
  OBJECT_FIELD: "ObjectField",
  // Directives
  DIRECTIVE: "Directive",
  // Types
  NAMED_TYPE: "NamedType",
  LIST_TYPE: "ListType",
  NON_NULL_TYPE: "NonNullType",
  // Type System Definitions
  SCHEMA_DEFINITION: "SchemaDefinition",
  OPERATION_TYPE_DEFINITION: "OperationTypeDefinition",
  // Type Definitions
  SCALAR_TYPE_DEFINITION: "ScalarTypeDefinition",
  OBJECT_TYPE_DEFINITION: "ObjectTypeDefinition",
  FIELD_DEFINITION: "FieldDefinition",
  INPUT_VALUE_DEFINITION: "InputValueDefinition",
  INTERFACE_TYPE_DEFINITION: "InterfaceTypeDefinition",
  UNION_TYPE_DEFINITION: "UnionTypeDefinition",
  ENUM_TYPE_DEFINITION: "EnumTypeDefinition",
  ENUM_VALUE_DEFINITION: "EnumValueDefinition",
  INPUT_OBJECT_TYPE_DEFINITION: "InputObjectTypeDefinition",
  // Directive Definitions
  DIRECTIVE_DEFINITION: "DirectiveDefinition",
  // Type System Extensions
  SCHEMA_EXTENSION: "SchemaExtension",
  // Type Extensions
  SCALAR_TYPE_EXTENSION: "ScalarTypeExtension",
  OBJECT_TYPE_EXTENSION: "ObjectTypeExtension",
  INTERFACE_TYPE_EXTENSION: "InterfaceTypeExtension",
  UNION_TYPE_EXTENSION: "UnionTypeExtension",
  ENUM_TYPE_EXTENSION: "EnumTypeExtension",
  INPUT_OBJECT_TYPE_EXTENSION: "InputObjectTypeExtension"
});
function dedentBlockStringValue(rawString) {
  var lines = rawString.split(/\r\n|[\n\r]/g);
  var commonIndent = getBlockStringIndentation(rawString);
  if (commonIndent !== 0) {
    for (var i = 1; i < lines.length; i++) {
      lines[i] = lines[i].slice(commonIndent);
    }
  }
  var startLine = 0;
  while (startLine < lines.length && isBlank(lines[startLine])) {
    ++startLine;
  }
  var endLine = lines.length;
  while (endLine > startLine && isBlank(lines[endLine - 1])) {
    --endLine;
  }
  return lines.slice(startLine, endLine).join("\n");
}
function isBlank(str) {
  for (var i = 0; i < str.length; ++i) {
    if (str[i] !== " " && str[i] !== "	") {
      return false;
    }
  }
  return true;
}
function getBlockStringIndentation(value) {
  var _commonIndent;
  var isFirstLine = true;
  var isEmptyLine = true;
  var indent2 = 0;
  var commonIndent = null;
  for (var i = 0; i < value.length; ++i) {
    switch (value.charCodeAt(i)) {
      case 13:
        if (value.charCodeAt(i + 1) === 10) {
          ++i;
        }
      case 10:
        isFirstLine = false;
        isEmptyLine = true;
        indent2 = 0;
        break;
      case 9:
      case 32:
        ++indent2;
        break;
      default:
        if (isEmptyLine && !isFirstLine && (commonIndent === null || indent2 < commonIndent)) {
          commonIndent = indent2;
        }
        isEmptyLine = false;
    }
  }
  return (_commonIndent = commonIndent) !== null && _commonIndent !== void 0 ? _commonIndent : 0;
}
function printBlockString(value) {
  var indentation = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "";
  var preferMultipleLines = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
  var isSingleLine = value.indexOf("\n") === -1;
  var hasLeadingSpace = value[0] === " " || value[0] === "	";
  var hasTrailingQuote = value[value.length - 1] === '"';
  var hasTrailingSlash = value[value.length - 1] === "\\";
  var printAsMultipleLines = !isSingleLine || hasTrailingQuote || hasTrailingSlash || preferMultipleLines;
  var result = "";
  if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {
    result += "\n" + indentation;
  }
  result += indentation ? value.replace(/\n/g, "\n" + indentation) : value;
  if (printAsMultipleLines) {
    result += "\n";
  }
  return '"""' + result.replace(/"""/g, '\\"""') + '"""';
}
function print$1(ast2) {
  return visit$1(ast2, {
    leave: printDocASTReducer
  });
}
var MAX_LINE_LENGTH = 80;
var printDocASTReducer = {
  Name: function Name(node) {
    return node.value;
  },
  Variable: function Variable(node) {
    return "$" + node.name;
  },
  // Document
  Document: function Document(node) {
    return join$1(node.definitions, "\n\n") + "\n";
  },
  OperationDefinition: function OperationDefinition(node) {
    var op = node.operation;
    var name2 = node.name;
    var varDefs = wrap("(", join$1(node.variableDefinitions, ", "), ")");
    var directives = join$1(node.directives, " ");
    var selectionSet = node.selectionSet;
    return !name2 && !directives && !varDefs && op === "query" ? selectionSet : join$1([op, join$1([name2, varDefs]), directives, selectionSet], " ");
  },
  VariableDefinition: function VariableDefinition(_ref) {
    var variable = _ref.variable, type2 = _ref.type, defaultValue = _ref.defaultValue, directives = _ref.directives;
    return variable + ": " + type2 + wrap(" = ", defaultValue) + wrap(" ", join$1(directives, " "));
  },
  SelectionSet: function SelectionSet(_ref2) {
    var selections = _ref2.selections;
    return block$2(selections);
  },
  Field: function Field(_ref3) {
    var alias = _ref3.alias, name2 = _ref3.name, args = _ref3.arguments, directives = _ref3.directives, selectionSet = _ref3.selectionSet;
    var prefix = wrap("", alias, ": ") + name2;
    var argsLine = prefix + wrap("(", join$1(args, ", "), ")");
    if (argsLine.length > MAX_LINE_LENGTH) {
      argsLine = prefix + wrap("(\n", indent(join$1(args, "\n")), "\n)");
    }
    return join$1([argsLine, join$1(directives, " "), selectionSet], " ");
  },
  Argument: function Argument(_ref4) {
    var name2 = _ref4.name, value = _ref4.value;
    return name2 + ": " + value;
  },
  // Fragments
  FragmentSpread: function FragmentSpread(_ref5) {
    var name2 = _ref5.name, directives = _ref5.directives;
    return "..." + name2 + wrap(" ", join$1(directives, " "));
  },
  InlineFragment: function InlineFragment(_ref6) {
    var typeCondition = _ref6.typeCondition, directives = _ref6.directives, selectionSet = _ref6.selectionSet;
    return join$1(["...", wrap("on ", typeCondition), join$1(directives, " "), selectionSet], " ");
  },
  FragmentDefinition: function FragmentDefinition(_ref7) {
    var name2 = _ref7.name, typeCondition = _ref7.typeCondition, variableDefinitions = _ref7.variableDefinitions, directives = _ref7.directives, selectionSet = _ref7.selectionSet;
    return (
      // Note: fragment variable definitions are experimental and may be changed
      // or removed in the future.
      "fragment ".concat(name2).concat(wrap("(", join$1(variableDefinitions, ", "), ")"), " ") + "on ".concat(typeCondition, " ").concat(wrap("", join$1(directives, " "), " ")) + selectionSet
    );
  },
  // Value
  IntValue: function IntValue(_ref8) {
    var value = _ref8.value;
    return value;
  },
  FloatValue: function FloatValue(_ref9) {
    var value = _ref9.value;
    return value;
  },
  StringValue: function StringValue(_ref10, key) {
    var value = _ref10.value, isBlockString = _ref10.block;
    return isBlockString ? printBlockString(value, key === "description" ? "" : "  ") : JSON.stringify(value);
  },
  BooleanValue: function BooleanValue(_ref11) {
    var value = _ref11.value;
    return value ? "true" : "false";
  },
  NullValue: function NullValue() {
    return "null";
  },
  EnumValue: function EnumValue(_ref12) {
    var value = _ref12.value;
    return value;
  },
  ListValue: function ListValue(_ref13) {
    var values = _ref13.values;
    return "[" + join$1(values, ", ") + "]";
  },
  ObjectValue: function ObjectValue(_ref14) {
    var fields = _ref14.fields;
    return "{" + join$1(fields, ", ") + "}";
  },
  ObjectField: function ObjectField(_ref15) {
    var name2 = _ref15.name, value = _ref15.value;
    return name2 + ": " + value;
  },
  // Directive
  Directive: function Directive(_ref16) {
    var name2 = _ref16.name, args = _ref16.arguments;
    return "@" + name2 + wrap("(", join$1(args, ", "), ")");
  },
  // Type
  NamedType: function NamedType(_ref17) {
    var name2 = _ref17.name;
    return name2;
  },
  ListType: function ListType(_ref18) {
    var type2 = _ref18.type;
    return "[" + type2 + "]";
  },
  NonNullType: function NonNullType(_ref19) {
    var type2 = _ref19.type;
    return type2 + "!";
  },
  // Type System Definitions
  SchemaDefinition: addDescription(function(_ref20) {
    var directives = _ref20.directives, operationTypes = _ref20.operationTypes;
    return join$1(["schema", join$1(directives, " "), block$2(operationTypes)], " ");
  }),
  OperationTypeDefinition: function OperationTypeDefinition(_ref21) {
    var operation = _ref21.operation, type2 = _ref21.type;
    return operation + ": " + type2;
  },
  ScalarTypeDefinition: addDescription(function(_ref22) {
    var name2 = _ref22.name, directives = _ref22.directives;
    return join$1(["scalar", name2, join$1(directives, " ")], " ");
  }),
  ObjectTypeDefinition: addDescription(function(_ref23) {
    var name2 = _ref23.name, interfaces = _ref23.interfaces, directives = _ref23.directives, fields = _ref23.fields;
    return join$1(["type", name2, wrap("implements ", join$1(interfaces, " & ")), join$1(directives, " "), block$2(fields)], " ");
  }),
  FieldDefinition: addDescription(function(_ref24) {
    var name2 = _ref24.name, args = _ref24.arguments, type2 = _ref24.type, directives = _ref24.directives;
    return name2 + (hasMultilineItems(args) ? wrap("(\n", indent(join$1(args, "\n")), "\n)") : wrap("(", join$1(args, ", "), ")")) + ": " + type2 + wrap(" ", join$1(directives, " "));
  }),
  InputValueDefinition: addDescription(function(_ref25) {
    var name2 = _ref25.name, type2 = _ref25.type, defaultValue = _ref25.defaultValue, directives = _ref25.directives;
    return join$1([name2 + ": " + type2, wrap("= ", defaultValue), join$1(directives, " ")], " ");
  }),
  InterfaceTypeDefinition: addDescription(function(_ref26) {
    var name2 = _ref26.name, interfaces = _ref26.interfaces, directives = _ref26.directives, fields = _ref26.fields;
    return join$1(["interface", name2, wrap("implements ", join$1(interfaces, " & ")), join$1(directives, " "), block$2(fields)], " ");
  }),
  UnionTypeDefinition: addDescription(function(_ref27) {
    var name2 = _ref27.name, directives = _ref27.directives, types = _ref27.types;
    return join$1(["union", name2, join$1(directives, " "), types && types.length !== 0 ? "= " + join$1(types, " | ") : ""], " ");
  }),
  EnumTypeDefinition: addDescription(function(_ref28) {
    var name2 = _ref28.name, directives = _ref28.directives, values = _ref28.values;
    return join$1(["enum", name2, join$1(directives, " "), block$2(values)], " ");
  }),
  EnumValueDefinition: addDescription(function(_ref29) {
    var name2 = _ref29.name, directives = _ref29.directives;
    return join$1([name2, join$1(directives, " ")], " ");
  }),
  InputObjectTypeDefinition: addDescription(function(_ref30) {
    var name2 = _ref30.name, directives = _ref30.directives, fields = _ref30.fields;
    return join$1(["input", name2, join$1(directives, " "), block$2(fields)], " ");
  }),
  DirectiveDefinition: addDescription(function(_ref31) {
    var name2 = _ref31.name, args = _ref31.arguments, repeatable = _ref31.repeatable, locations = _ref31.locations;
    return "directive @" + name2 + (hasMultilineItems(args) ? wrap("(\n", indent(join$1(args, "\n")), "\n)") : wrap("(", join$1(args, ", "), ")")) + (repeatable ? " repeatable" : "") + " on " + join$1(locations, " | ");
  }),
  SchemaExtension: function SchemaExtension(_ref32) {
    var directives = _ref32.directives, operationTypes = _ref32.operationTypes;
    return join$1(["extend schema", join$1(directives, " "), block$2(operationTypes)], " ");
  },
  ScalarTypeExtension: function ScalarTypeExtension(_ref33) {
    var name2 = _ref33.name, directives = _ref33.directives;
    return join$1(["extend scalar", name2, join$1(directives, " ")], " ");
  },
  ObjectTypeExtension: function ObjectTypeExtension(_ref34) {
    var name2 = _ref34.name, interfaces = _ref34.interfaces, directives = _ref34.directives, fields = _ref34.fields;
    return join$1(["extend type", name2, wrap("implements ", join$1(interfaces, " & ")), join$1(directives, " "), block$2(fields)], " ");
  },
  InterfaceTypeExtension: function InterfaceTypeExtension(_ref35) {
    var name2 = _ref35.name, interfaces = _ref35.interfaces, directives = _ref35.directives, fields = _ref35.fields;
    return join$1(["extend interface", name2, wrap("implements ", join$1(interfaces, " & ")), join$1(directives, " "), block$2(fields)], " ");
  },
  UnionTypeExtension: function UnionTypeExtension(_ref36) {
    var name2 = _ref36.name, directives = _ref36.directives, types = _ref36.types;
    return join$1(["extend union", name2, join$1(directives, " "), types && types.length !== 0 ? "= " + join$1(types, " | ") : ""], " ");
  },
  EnumTypeExtension: function EnumTypeExtension(_ref37) {
    var name2 = _ref37.name, directives = _ref37.directives, values = _ref37.values;
    return join$1(["extend enum", name2, join$1(directives, " "), block$2(values)], " ");
  },
  InputObjectTypeExtension: function InputObjectTypeExtension(_ref38) {
    var name2 = _ref38.name, directives = _ref38.directives, fields = _ref38.fields;
    return join$1(["extend input", name2, join$1(directives, " "), block$2(fields)], " ");
  }
};
function addDescription(cb) {
  return function(node) {
    return join$1([node.description, cb(node)], "\n");
  };
}
function join$1(maybeArray) {
  var _maybeArray$filter$jo;
  var separator = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "";
  return (_maybeArray$filter$jo = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.filter(function(x2) {
    return x2;
  }).join(separator)) !== null && _maybeArray$filter$jo !== void 0 ? _maybeArray$filter$jo : "";
}
function block$2(array) {
  return wrap("{\n", indent(join$1(array, "\n")), "\n}");
}
function wrap(start2, maybeString) {
  var end2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "";
  return maybeString != null && maybeString !== "" ? start2 + maybeString + end2 : "";
}
function indent(str) {
  return wrap("  ", str.replace(/\n/g, "\n  "));
}
function isMultiline(str) {
  return str.indexOf("\n") !== -1;
}
function hasMultilineItems(maybeArray) {
  return maybeArray != null && maybeArray.some(isMultiline);
}
function _typeof$1(obj) {
  "@babel/helpers - typeof";
  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
    _typeof$1 = function _typeof2(obj2) {
      return typeof obj2;
    };
  } else {
    _typeof$1 = function _typeof2(obj2) {
      return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
    };
  }
  return _typeof$1(obj);
}
function isObjectLike$1(value) {
  return _typeof$1(value) == "object" && value !== null;
}
var SYMBOL_TO_STRING_TAG = typeof Symbol === "function" && Symbol.toStringTag != null ? Symbol.toStringTag : "@@toStringTag";
function getLocation(source, position) {
  var lineRegexp = /\r\n|[\n\r]/g;
  var line = 1;
  var column = position + 1;
  var match3;
  while ((match3 = lineRegexp.exec(source.body)) && match3.index < position) {
    line += 1;
    column = position + 1 - (match3.index + match3[0].length);
  }
  return {
    line,
    column
  };
}
function printLocation(location2) {
  return printSourceLocation(location2.source, getLocation(location2.source, location2.start));
}
function printSourceLocation(source, sourceLocation) {
  var firstLineColumnOffset = source.locationOffset.column - 1;
  var body = whitespace(firstLineColumnOffset) + source.body;
  var lineIndex = sourceLocation.line - 1;
  var lineOffset = source.locationOffset.line - 1;
  var lineNum = sourceLocation.line + lineOffset;
  var columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;
  var columnNum = sourceLocation.column + columnOffset;
  var locationStr = "".concat(source.name, ":").concat(lineNum, ":").concat(columnNum, "\n");
  var lines = body.split(/\r\n|[\n\r]/g);
  var locationLine = lines[lineIndex];
  if (locationLine.length > 120) {
    var subLineIndex = Math.floor(columnNum / 80);
    var subLineColumnNum = columnNum % 80;
    var subLines = [];
    for (var i = 0; i < locationLine.length; i += 80) {
      subLines.push(locationLine.slice(i, i + 80));
    }
    return locationStr + printPrefixedLines([["".concat(lineNum), subLines[0]]].concat(subLines.slice(1, subLineIndex + 1).map(function(subLine) {
      return ["", subLine];
    }), [[" ", whitespace(subLineColumnNum - 1) + "^"], ["", subLines[subLineIndex + 1]]]));
  }
  return locationStr + printPrefixedLines([
    // Lines specified like this: ["prefix", "string"],
    ["".concat(lineNum - 1), lines[lineIndex - 1]],
    ["".concat(lineNum), locationLine],
    ["", whitespace(columnNum - 1) + "^"],
    ["".concat(lineNum + 1), lines[lineIndex + 1]]
  ]);
}
function printPrefixedLines(lines) {
  var existingLines = lines.filter(function(_ref) {
    _ref[0];
    var line = _ref[1];
    return line !== void 0;
  });
  var padLen = Math.max.apply(Math, existingLines.map(function(_ref2) {
    var prefix = _ref2[0];
    return prefix.length;
  }));
  return existingLines.map(function(_ref3) {
    var prefix = _ref3[0], line = _ref3[1];
    return leftPad(padLen, prefix) + (line ? " | " + line : " |");
  }).join("\n");
}
function whitespace(len) {
  return Array(len + 1).join(" ");
}
function leftPad(len, str) {
  return whitespace(len - str.length) + str;
}
function _typeof(obj) {
  "@babel/helpers - typeof";
  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
    _typeof = function _typeof2(obj2) {
      return typeof obj2;
    };
  } else {
    _typeof = function _typeof2(obj2) {
      return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
    };
  }
  return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
  if (!(instance instanceof Constructor)) {
    throw new TypeError("Cannot call a class as a function");
  }
}
function _defineProperties$1(target2, props) {
  for (var i = 0; i < props.length; i++) {
    var descriptor = props[i];
    descriptor.enumerable = descriptor.enumerable || false;
    descriptor.configurable = true;
    if ("value" in descriptor)
      descriptor.writable = true;
    Object.defineProperty(target2, descriptor.key, descriptor);
  }
}
function _createClass$1(Constructor, protoProps, staticProps) {
  if (protoProps)
    _defineProperties$1(Constructor.prototype, protoProps);
  if (staticProps)
    _defineProperties$1(Constructor, staticProps);
  return Constructor;
}
function _inherits(subClass, superClass) {
  if (typeof superClass !== "function" && superClass !== null) {
    throw new TypeError("Super expression must either be null or a function");
  }
  subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
  if (superClass)
    _setPrototypeOf(subClass, superClass);
}
function _createSuper(Derived) {
  var hasNativeReflectConstruct = _isNativeReflectConstruct();
  return function _createSuperInternal() {
    var Super = _getPrototypeOf(Derived), result;
    if (hasNativeReflectConstruct) {
      var NewTarget = _getPrototypeOf(this).constructor;
      result = Reflect.construct(Super, arguments, NewTarget);
    } else {
      result = Super.apply(this, arguments);
    }
    return _possibleConstructorReturn(this, result);
  };
}
function _possibleConstructorReturn(self2, call) {
  if (call && (_typeof(call) === "object" || typeof call === "function")) {
    return call;
  }
  return _assertThisInitialized(self2);
}
function _assertThisInitialized(self2) {
  if (self2 === void 0) {
    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  }
  return self2;
}
function _wrapNativeSuper(Class) {
  var _cache = typeof Map === "function" ? /* @__PURE__ */ new Map() : void 0;
  _wrapNativeSuper = function _wrapNativeSuper2(Class2) {
    if (Class2 === null || !_isNativeFunction(Class2))
      return Class2;
    if (typeof Class2 !== "function") {
      throw new TypeError("Super expression must either be null or a function");
    }
    if (typeof _cache !== "undefined") {
      if (_cache.has(Class2))
        return _cache.get(Class2);
      _cache.set(Class2, Wrapper);
    }
    function Wrapper() {
      return _construct(Class2, arguments, _getPrototypeOf(this).constructor);
    }
    Wrapper.prototype = Object.create(Class2.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });
    return _setPrototypeOf(Wrapper, Class2);
  };
  return _wrapNativeSuper(Class);
}
function _construct(Parent, args, Class) {
  if (_isNativeReflectConstruct()) {
    _construct = Reflect.construct;
  } else {
    _construct = function _construct2(Parent2, args2, Class2) {
      var a2 = [null];
      a2.push.apply(a2, args2);
      var Constructor = Function.bind.apply(Parent2, a2);
      var instance = new Constructor();
      if (Class2)
        _setPrototypeOf(instance, Class2.prototype);
      return instance;
    };
  }
  return _construct.apply(null, arguments);
}
function _isNativeReflectConstruct() {
  if (typeof Reflect === "undefined" || !Reflect.construct)
    return false;
  if (Reflect.construct.sham)
    return false;
  if (typeof Proxy === "function")
    return true;
  try {
    Date.prototype.toString.call(Reflect.construct(Date, [], function() {
    }));
    return true;
  } catch (e) {
    return false;
  }
}
function _isNativeFunction(fn2) {
  return Function.toString.call(fn2).indexOf("[native code]") !== -1;
}
function _setPrototypeOf(o2, p2) {
  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) {
    o3.__proto__ = p3;
    return o3;
  };
  return _setPrototypeOf(o2, p2);
}
function _getPrototypeOf(o2) {
  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) {
    return o3.__proto__ || Object.getPrototypeOf(o3);
  };
  return _getPrototypeOf(o2);
}
var GraphQLError = /* @__PURE__ */ function(_Error) {
  _inherits(GraphQLError2, _Error);
  var _super = _createSuper(GraphQLError2);
  function GraphQLError2(message, nodes, source, positions, path, originalError, extensions) {
    var _locations2, _source2, _positions2, _extensions2;
    var _this;
    _classCallCheck(this, GraphQLError2);
    _this = _super.call(this, message);
    var _nodes = Array.isArray(nodes) ? nodes.length !== 0 ? nodes : void 0 : nodes ? [nodes] : void 0;
    var _source = source;
    if (!_source && _nodes) {
      var _nodes$0$loc;
      _source = (_nodes$0$loc = _nodes[0].loc) === null || _nodes$0$loc === void 0 ? void 0 : _nodes$0$loc.source;
    }
    var _positions = positions;
    if (!_positions && _nodes) {
      _positions = _nodes.reduce(function(list3, node) {
        if (node.loc) {
          list3.push(node.loc.start);
        }
        return list3;
      }, []);
    }
    if (_positions && _positions.length === 0) {
      _positions = void 0;
    }
    var _locations;
    if (positions && source) {
      _locations = positions.map(function(pos) {
        return getLocation(source, pos);
      });
    } else if (_nodes) {
      _locations = _nodes.reduce(function(list3, node) {
        if (node.loc) {
          list3.push(getLocation(node.loc.source, node.loc.start));
        }
        return list3;
      }, []);
    }
    var _extensions = extensions;
    if (_extensions == null && originalError != null) {
      var originalExtensions = originalError.extensions;
      if (isObjectLike$1(originalExtensions)) {
        _extensions = originalExtensions;
      }
    }
    Object.defineProperties(_assertThisInitialized(_this), {
      name: {
        value: "GraphQLError"
      },
      message: {
        value: message,
        // By being enumerable, JSON.stringify will include `message` in the
        // resulting output. This ensures that the simplest possible GraphQL
        // service adheres to the spec.
        enumerable: true,
        writable: true
      },
      locations: {
        // Coercing falsy values to undefined ensures they will not be included
        // in JSON.stringify() when not provided.
        value: (_locations2 = _locations) !== null && _locations2 !== void 0 ? _locations2 : void 0,
        // By being enumerable, JSON.stringify will include `locations` in the
        // resulting output. This ensures that the simplest possible GraphQL
        // service adheres to the spec.
        enumerable: _locations != null
      },
      path: {
        // Coercing falsy values to undefined ensures they will not be included
        // in JSON.stringify() when not provided.
        value: path !== null && path !== void 0 ? path : void 0,
        // By being enumerable, JSON.stringify will include `path` in the
        // resulting output. This ensures that the simplest possible GraphQL
        // service adheres to the spec.
        enumerable: path != null
      },
      nodes: {
        value: _nodes !== null && _nodes !== void 0 ? _nodes : void 0
      },
      source: {
        value: (_source2 = _source) !== null && _source2 !== void 0 ? _source2 : void 0
      },
      positions: {
        value: (_positions2 = _positions) !== null && _positions2 !== void 0 ? _positions2 : void 0
      },
      originalError: {
        value: originalError
      },
      extensions: {
        // Coercing falsy values to undefined ensures they will not be included
        // in JSON.stringify() when not provided.
        value: (_extensions2 = _extensions) !== null && _extensions2 !== void 0 ? _extensions2 : void 0,
        // By being enumerable, JSON.stringify will include `path` in the
        // resulting output. This ensures that the simplest possible GraphQL
        // service adheres to the spec.
        enumerable: _extensions != null
      }
    });
    if (originalError !== null && originalError !== void 0 && originalError.stack) {
      Object.defineProperty(_assertThisInitialized(_this), "stack", {
        value: originalError.stack,
        writable: true,
        configurable: true
      });
      return _possibleConstructorReturn(_this);
    }
    if (Error.captureStackTrace) {
      Error.captureStackTrace(_assertThisInitialized(_this), GraphQLError2);
    } else {
      Object.defineProperty(_assertThisInitialized(_this), "stack", {
        value: Error().stack,
        writable: true,
        configurable: true
      });
    }
    return _this;
  }
  _createClass$1(GraphQLError2, [{
    key: "toString",
    value: function toString2() {
      return printError(this);
    }
    // FIXME: workaround to not break chai comparisons, should be remove in v16
    // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
  }, {
    key: SYMBOL_TO_STRING_TAG,
    get: function get2() {
      return "Object";
    }
  }]);
  return GraphQLError2;
}(/* @__PURE__ */ _wrapNativeSuper(Error));
function printError(error2) {
  var output = error2.message;
  if (error2.nodes) {
    for (var _i2 = 0, _error$nodes2 = error2.nodes; _i2 < _error$nodes2.length; _i2++) {
      var node = _error$nodes2[_i2];
      if (node.loc) {
        output += "\n\n" + printLocation(node.loc);
      }
    }
  } else if (error2.source && error2.locations) {
    for (var _i4 = 0, _error$locations2 = error2.locations; _i4 < _error$locations2.length; _i4++) {
      var location2 = _error$locations2[_i4];
      output += "\n\n" + printSourceLocation(error2.source, location2);
    }
  }
  return output;
}
function syntaxError(source, position, description) {
  return new GraphQLError("Syntax Error: ".concat(description), void 0, source, [position]);
}
var TokenKind = Object.freeze({
  SOF: "<SOF>",
  EOF: "<EOF>",
  BANG: "!",
  DOLLAR: "$",
  AMP: "&",
  PAREN_L: "(",
  PAREN_R: ")",
  SPREAD: "...",
  COLON: ":",
  EQUALS: "=",
  AT: "@",
  BRACKET_L: "[",
  BRACKET_R: "]",
  BRACE_L: "{",
  PIPE: "|",
  BRACE_R: "}",
  NAME: "Name",
  INT: "Int",
  FLOAT: "Float",
  STRING: "String",
  BLOCK_STRING: "BlockString",
  COMMENT: "Comment"
});
function devAssert(condition, message) {
  var booleanCondition = Boolean(condition);
  if (!booleanCondition) {
    throw new Error(message);
  }
}
const instanceOf = (
  // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')
  // eslint-disable-next-line no-shadow
  function instanceOf2(value, constructor) {
    return value instanceof constructor;
  }
);
function _defineProperties(target2, props) {
  for (var i = 0; i < props.length; i++) {
    var descriptor = props[i];
    descriptor.enumerable = descriptor.enumerable || false;
    descriptor.configurable = true;
    if ("value" in descriptor)
      descriptor.writable = true;
    Object.defineProperty(target2, descriptor.key, descriptor);
  }
}
function _createClass(Constructor, protoProps, staticProps) {
  if (protoProps)
    _defineProperties(Constructor.prototype, protoProps);
  if (staticProps)
    _defineProperties(Constructor, staticProps);
  return Constructor;
}
var Source = /* @__PURE__ */ function() {
  function Source2(body) {
    var name2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "GraphQL request";
    var locationOffset = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {
      line: 1,
      column: 1
    };
    typeof body === "string" || devAssert(0, "Body must be a string. Received: ".concat(inspect(body), "."));
    this.body = body;
    this.name = name2;
    this.locationOffset = locationOffset;
    this.locationOffset.line > 0 || devAssert(0, "line in locationOffset is 1-indexed and must be positive.");
    this.locationOffset.column > 0 || devAssert(0, "column in locationOffset is 1-indexed and must be positive.");
  }
  _createClass(Source2, [{
    key: SYMBOL_TO_STRING_TAG,
    get: function get2() {
      return "Source";
    }
  }]);
  return Source2;
}();
function isSource(source) {
  return instanceOf(source, Source);
}
var DirectiveLocation = Object.freeze({
  // Request Definitions
  QUERY: "QUERY",
  MUTATION: "MUTATION",
  SUBSCRIPTION: "SUBSCRIPTION",
  FIELD: "FIELD",
  FRAGMENT_DEFINITION: "FRAGMENT_DEFINITION",
  FRAGMENT_SPREAD: "FRAGMENT_SPREAD",
  INLINE_FRAGMENT: "INLINE_FRAGMENT",
  VARIABLE_DEFINITION: "VARIABLE_DEFINITION",
  // Type System Definitions
  SCHEMA: "SCHEMA",
  SCALAR: "SCALAR",
  OBJECT: "OBJECT",
  FIELD_DEFINITION: "FIELD_DEFINITION",
  ARGUMENT_DEFINITION: "ARGUMENT_DEFINITION",
  INTERFACE: "INTERFACE",
  UNION: "UNION",
  ENUM: "ENUM",
  ENUM_VALUE: "ENUM_VALUE",
  INPUT_OBJECT: "INPUT_OBJECT",
  INPUT_FIELD_DEFINITION: "INPUT_FIELD_DEFINITION"
});
var Lexer = /* @__PURE__ */ function() {
  function Lexer2(source) {
    var startOfFileToken = new Token$4(TokenKind.SOF, 0, 0, 0, 0, null);
    this.source = source;
    this.lastToken = startOfFileToken;
    this.token = startOfFileToken;
    this.line = 1;
    this.lineStart = 0;
  }
  var _proto = Lexer2.prototype;
  _proto.advance = function advance() {
    this.lastToken = this.token;
    var token2 = this.token = this.lookahead();
    return token2;
  };
  _proto.lookahead = function lookahead() {
    var token2 = this.token;
    if (token2.kind !== TokenKind.EOF) {
      do {
        var _token$next;
        token2 = (_token$next = token2.next) !== null && _token$next !== void 0 ? _token$next : token2.next = readToken(this, token2);
      } while (token2.kind === TokenKind.COMMENT);
    }
    return token2;
  };
  return Lexer2;
}();
function isPunctuatorTokenKind(kind) {
  return kind === TokenKind.BANG || kind === TokenKind.DOLLAR || kind === TokenKind.AMP || kind === TokenKind.PAREN_L || kind === TokenKind.PAREN_R || kind === TokenKind.SPREAD || kind === TokenKind.COLON || kind === TokenKind.EQUALS || kind === TokenKind.AT || kind === TokenKind.BRACKET_L || kind === TokenKind.BRACKET_R || kind === TokenKind.BRACE_L || kind === TokenKind.PIPE || kind === TokenKind.BRACE_R;
}
function printCharCode(code3) {
  return (
    // NaN/undefined represents access beyond the end of the file.
    isNaN(code3) ? TokenKind.EOF : (
      // Trust JSON for ASCII.
      code3 < 127 ? JSON.stringify(String.fromCharCode(code3)) : (
        // Otherwise print the escaped form.
        '"\\u'.concat(("00" + code3.toString(16).toUpperCase()).slice(-4), '"')
      )
    )
  );
}
function readToken(lexer, prev2) {
  var source = lexer.source;
  var body = source.body;
  var bodyLength = body.length;
  var pos = prev2.end;
  while (pos < bodyLength) {
    var code3 = body.charCodeAt(pos);
    var _line = lexer.line;
    var _col = 1 + pos - lexer.lineStart;
    switch (code3) {
      case 65279:
      case 9:
      case 32:
      case 44:
        ++pos;
        continue;
      case 10:
        ++pos;
        ++lexer.line;
        lexer.lineStart = pos;
        continue;
      case 13:
        if (body.charCodeAt(pos + 1) === 10) {
          pos += 2;
        } else {
          ++pos;
        }
        ++lexer.line;
        lexer.lineStart = pos;
        continue;
      case 33:
        return new Token$4(TokenKind.BANG, pos, pos + 1, _line, _col, prev2);
      case 35:
        return readComment(source, pos, _line, _col, prev2);
      case 36:
        return new Token$4(TokenKind.DOLLAR, pos, pos + 1, _line, _col, prev2);
      case 38:
        return new Token$4(TokenKind.AMP, pos, pos + 1, _line, _col, prev2);
      case 40:
        return new Token$4(TokenKind.PAREN_L, pos, pos + 1, _line, _col, prev2);
      case 41:
        return new Token$4(TokenKind.PAREN_R, pos, pos + 1, _line, _col, prev2);
      case 46:
        if (body.charCodeAt(pos + 1) === 46 && body.charCodeAt(pos + 2) === 46) {
          return new Token$4(TokenKind.SPREAD, pos, pos + 3, _line, _col, prev2);
        }
        break;
      case 58:
        return new Token$4(TokenKind.COLON, pos, pos + 1, _line, _col, prev2);
      case 61:
        return new Token$4(TokenKind.EQUALS, pos, pos + 1, _line, _col, prev2);
      case 64:
        return new Token$4(TokenKind.AT, pos, pos + 1, _line, _col, prev2);
      case 91:
        return new Token$4(TokenKind.BRACKET_L, pos, pos + 1, _line, _col, prev2);
      case 93:
        return new Token$4(TokenKind.BRACKET_R, pos, pos + 1, _line, _col, prev2);
      case 123:
        return new Token$4(TokenKind.BRACE_L, pos, pos + 1, _line, _col, prev2);
      case 124:
        return new Token$4(TokenKind.PIPE, pos, pos + 1, _line, _col, prev2);
      case 125:
        return new Token$4(TokenKind.BRACE_R, pos, pos + 1, _line, _col, prev2);
      case 34:
        if (body.charCodeAt(pos + 1) === 34 && body.charCodeAt(pos + 2) === 34) {
          return readBlockString(source, pos, _line, _col, prev2, lexer);
        }
        return readString(source, pos, _line, _col, prev2);
      case 45:
      case 48:
      case 49:
      case 50:
      case 51:
      case 52:
      case 53:
      case 54:
      case 55:
      case 56:
      case 57:
        return readNumber(source, pos, code3, _line, _col, prev2);
      case 65:
      case 66:
      case 67:
      case 68:
      case 69:
      case 70:
      case 71:
      case 72:
      case 73:
      case 74:
      case 75:
      case 76:
      case 77:
      case 78:
      case 79:
      case 80:
      case 81:
      case 82:
      case 83:
      case 84:
      case 85:
      case 86:
      case 87:
      case 88:
      case 89:
      case 90:
      case 95:
      case 97:
      case 98:
      case 99:
      case 100:
      case 101:
      case 102:
      case 103:
      case 104:
      case 105:
      case 106:
      case 107:
      case 108:
      case 109:
      case 110:
      case 111:
      case 112:
      case 113:
      case 114:
      case 115:
      case 116:
      case 117:
      case 118:
      case 119:
      case 120:
      case 121:
      case 122:
        return readName(source, pos, _line, _col, prev2);
    }
    throw syntaxError(source, pos, unexpectedCharacterMessage(code3));
  }
  var line = lexer.line;
  var col = 1 + pos - lexer.lineStart;
  return new Token$4(TokenKind.EOF, bodyLength, bodyLength, line, col, prev2);
}
function unexpectedCharacterMessage(code3) {
  if (code3 < 32 && code3 !== 9 && code3 !== 10 && code3 !== 13) {
    return "Cannot contain the invalid character ".concat(printCharCode(code3), ".");
  }
  if (code3 === 39) {
    return `Unexpected single quote character ('), did you mean to use a double quote (")?`;
  }
  return "Cannot parse the unexpected character ".concat(printCharCode(code3), ".");
}
function readComment(source, start2, line, col, prev2) {
  var body = source.body;
  var code3;
  var position = start2;
  do {
    code3 = body.charCodeAt(++position);
  } while (!isNaN(code3) && // SourceCharacter but not LineTerminator
  (code3 > 31 || code3 === 9));
  return new Token$4(TokenKind.COMMENT, start2, position, line, col, prev2, body.slice(start2 + 1, position));
}
function readNumber(source, start2, firstCode, line, col, prev2) {
  var body = source.body;
  var code3 = firstCode;
  var position = start2;
  var isFloat = false;
  if (code3 === 45) {
    code3 = body.charCodeAt(++position);
  }
  if (code3 === 48) {
    code3 = body.charCodeAt(++position);
    if (code3 >= 48 && code3 <= 57) {
      throw syntaxError(source, position, "Invalid number, unexpected digit after 0: ".concat(printCharCode(code3), "."));
    }
  } else {
    position = readDigits(source, position, code3);
    code3 = body.charCodeAt(position);
  }
  if (code3 === 46) {
    isFloat = true;
    code3 = body.charCodeAt(++position);
    position = readDigits(source, position, code3);
    code3 = body.charCodeAt(position);
  }
  if (code3 === 69 || code3 === 101) {
    isFloat = true;
    code3 = body.charCodeAt(++position);
    if (code3 === 43 || code3 === 45) {
      code3 = body.charCodeAt(++position);
    }
    position = readDigits(source, position, code3);
    code3 = body.charCodeAt(position);
  }
  if (code3 === 46 || isNameStart(code3)) {
    throw syntaxError(source, position, "Invalid number, expected digit but got: ".concat(printCharCode(code3), "."));
  }
  return new Token$4(isFloat ? TokenKind.FLOAT : TokenKind.INT, start2, position, line, col, prev2, body.slice(start2, position));
}
function readDigits(source, start2, firstCode) {
  var body = source.body;
  var position = start2;
  var code3 = firstCode;
  if (code3 >= 48 && code3 <= 57) {
    do {
      code3 = body.charCodeAt(++position);
    } while (code3 >= 48 && code3 <= 57);
    return position;
  }
  throw syntaxError(source, position, "Invalid number, expected digit but got: ".concat(printCharCode(code3), "."));
}
function readString(source, start2, line, col, prev2) {
  var body = source.body;
  var position = start2 + 1;
  var chunkStart = position;
  var code3 = 0;
  var value = "";
  while (position < body.length && !isNaN(code3 = body.charCodeAt(position)) && // not LineTerminator
  code3 !== 10 && code3 !== 13) {
    if (code3 === 34) {
      value += body.slice(chunkStart, position);
      return new Token$4(TokenKind.STRING, start2, position + 1, line, col, prev2, value);
    }
    if (code3 < 32 && code3 !== 9) {
      throw syntaxError(source, position, "Invalid character within String: ".concat(printCharCode(code3), "."));
    }
    ++position;
    if (code3 === 92) {
      value += body.slice(chunkStart, position - 1);
      code3 = body.charCodeAt(position);
      switch (code3) {
        case 34:
          value += '"';
          break;
        case 47:
          value += "/";
          break;
        case 92:
          value += "\\";
          break;
        case 98:
          value += "\b";
          break;
        case 102:
          value += "\f";
          break;
        case 110:
          value += "\n";
          break;
        case 114:
          value += "\r";
          break;
        case 116:
          value += "	";
          break;
        case 117: {
          var charCode = uniCharCode(body.charCodeAt(position + 1), body.charCodeAt(position + 2), body.charCodeAt(position + 3), body.charCodeAt(position + 4));
          if (charCode < 0) {
            var invalidSequence = body.slice(position + 1, position + 5);
            throw syntaxError(source, position, "Invalid character escape sequence: \\u".concat(invalidSequence, "."));
          }
          value += String.fromCharCode(charCode);
          position += 4;
          break;
        }
        default:
          throw syntaxError(source, position, "Invalid character escape sequence: \\".concat(String.fromCharCode(code3), "."));
      }
      ++position;
      chunkStart = position;
    }
  }
  throw syntaxError(source, position, "Unterminated string.");
}
function readBlockString(source, start2, line, col, prev2, lexer) {
  var body = source.body;
  var position = start2 + 3;
  var chunkStart = position;
  var code3 = 0;
  var rawValue = "";
  while (position < body.length && !isNaN(code3 = body.charCodeAt(position))) {
    if (code3 === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) {
      rawValue += body.slice(chunkStart, position);
      return new Token$4(TokenKind.BLOCK_STRING, start2, position + 3, line, col, prev2, dedentBlockStringValue(rawValue));
    }
    if (code3 < 32 && code3 !== 9 && code3 !== 10 && code3 !== 13) {
      throw syntaxError(source, position, "Invalid character within String: ".concat(printCharCode(code3), "."));
    }
    if (code3 === 10) {
      ++position;
      ++lexer.line;
      lexer.lineStart = position;
    } else if (code3 === 13) {
      if (body.charCodeAt(position + 1) === 10) {
        position += 2;
      } else {
        ++position;
      }
      ++lexer.line;
      lexer.lineStart = position;
    } else if (
      // Escape Triple-Quote (\""")
      code3 === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34
    ) {
      rawValue += body.slice(chunkStart, position) + '"""';
      position += 4;
      chunkStart = position;
    } else {
      ++position;
    }
  }
  throw syntaxError(source, position, "Unterminated string.");
}
function uniCharCode(a2, b2, c2, d2) {
  return char2hex(a2) << 12 | char2hex(b2) << 8 | char2hex(c2) << 4 | char2hex(d2);
}
function char2hex(a2) {
  return a2 >= 48 && a2 <= 57 ? a2 - 48 : a2 >= 65 && a2 <= 70 ? a2 - 55 : a2 >= 97 && a2 <= 102 ? a2 - 87 : -1;
}
function readName(source, start2, line, col, prev2) {
  var body = source.body;
  var bodyLength = body.length;
  var position = start2 + 1;
  var code3 = 0;
  while (position !== bodyLength && !isNaN(code3 = body.charCodeAt(position)) && (code3 === 95 || // _
  code3 >= 48 && code3 <= 57 || // 0-9
  code3 >= 65 && code3 <= 90 || // A-Z
  code3 >= 97 && code3 <= 122)) {
    ++position;
  }
  return new Token$4(TokenKind.NAME, start2, position, line, col, prev2, body.slice(start2, position));
}
function isNameStart(code3) {
  return code3 === 95 || code3 >= 65 && code3 <= 90 || code3 >= 97 && code3 <= 122;
}
function parse$4(source, options2) {
  var parser2 = new Parser(source, options2);
  return parser2.parseDocument();
}
var Parser = /* @__PURE__ */ function() {
  function Parser2(source, options2) {
    var sourceObj = isSource(source) ? source : new Source(source);
    this._lexer = new Lexer(sourceObj);
    this._options = options2;
  }
  var _proto = Parser2.prototype;
  _proto.parseName = function parseName2() {
    var token2 = this.expectToken(TokenKind.NAME);
    return {
      kind: Kind.NAME,
      value: token2.value,
      loc: this.loc(token2)
    };
  };
  _proto.parseDocument = function parseDocument() {
    var start2 = this._lexer.token;
    return {
      kind: Kind.DOCUMENT,
      definitions: this.many(TokenKind.SOF, this.parseDefinition, TokenKind.EOF),
      loc: this.loc(start2)
    };
  };
  _proto.parseDefinition = function parseDefinition() {
    if (this.peek(TokenKind.NAME)) {
      switch (this._lexer.token.value) {
        case "query":
        case "mutation":
        case "subscription":
          return this.parseOperationDefinition();
        case "fragment":
          return this.parseFragmentDefinition();
        case "schema":
        case "scalar":
        case "type":
        case "interface":
        case "union":
        case "enum":
        case "input":
        case "directive":
          return this.parseTypeSystemDefinition();
        case "extend":
          return this.parseTypeSystemExtension();
      }
    } else if (this.peek(TokenKind.BRACE_L)) {
      return this.parseOperationDefinition();
    } else if (this.peekDescription()) {
      return this.parseTypeSystemDefinition();
    }
    throw this.unexpected();
  };
  _proto.parseOperationDefinition = function parseOperationDefinition() {
    var start2 = this._lexer.token;
    if (this.peek(TokenKind.BRACE_L)) {
      return {
        kind: Kind.OPERATION_DEFINITION,
        operation: "query",
        name: void 0,
        variableDefinitions: [],
        directives: [],
        selectionSet: this.parseSelectionSet(),
        loc: this.loc(start2)
      };
    }
    var operation = this.parseOperationType();
    var name2;
    if (this.peek(TokenKind.NAME)) {
      name2 = this.parseName();
    }
    return {
      kind: Kind.OPERATION_DEFINITION,
      operation,
      name: name2,
      variableDefinitions: this.parseVariableDefinitions(),
      directives: this.parseDirectives(false),
      selectionSet: this.parseSelectionSet(),
      loc: this.loc(start2)
    };
  };
  _proto.parseOperationType = function parseOperationType() {
    var operationToken = this.expectToken(TokenKind.NAME);
    switch (operationToken.value) {
      case "query":
        return "query";
      case "mutation":
        return "mutation";
      case "subscription":
        return "subscription";
    }
    throw this.unexpected(operationToken);
  };
  _proto.parseVariableDefinitions = function parseVariableDefinitions() {
    return this.optionalMany(TokenKind.PAREN_L, this.parseVariableDefinition, TokenKind.PAREN_R);
  };
  _proto.parseVariableDefinition = function parseVariableDefinition() {
    var start2 = this._lexer.token;
    return {
      kind: Kind.VARIABLE_DEFINITION,
      variable: this.parseVariable(),
      type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),
      defaultValue: this.expectOptionalToken(TokenKind.EQUALS) ? this.parseValueLiteral(true) : void 0,
      directives: this.parseDirectives(true),
      loc: this.loc(start2)
    };
  };
  _proto.parseVariable = function parseVariable() {
    var start2 = this._lexer.token;
    this.expectToken(TokenKind.DOLLAR);
    return {
      kind: Kind.VARIABLE,
      name: this.parseName(),
      loc: this.loc(start2)
    };
  };
  _proto.parseSelectionSet = function parseSelectionSet() {
    var start2 = this._lexer.token;
    return {
      kind: Kind.SELECTION_SET,
      selections: this.many(TokenKind.BRACE_L, this.parseSelection, TokenKind.BRACE_R),
      loc: this.loc(start2)
    };
  };
  _proto.parseSelection = function parseSelection() {
    return this.peek(TokenKind.SPREAD) ? this.parseFragment() : this.parseField();
  };
  _proto.parseField = function parseField() {
    var start2 = this._lexer.token;
    var nameOrAlias = this.parseName();
    var alias;
    var name2;
    if (this.expectOptionalToken(TokenKind.COLON)) {
      alias = nameOrAlias;
      name2 = this.parseName();
    } else {
      name2 = nameOrAlias;
    }
    return {
      kind: Kind.FIELD,
      alias,
      name: name2,
      arguments: this.parseArguments(false),
      directives: this.parseDirectives(false),
      selectionSet: this.peek(TokenKind.BRACE_L) ? this.parseSelectionSet() : void 0,
      loc: this.loc(start2)
    };
  };
  _proto.parseArguments = function parseArguments(isConst) {
    var item = isConst ? this.parseConstArgument : this.parseArgument;
    return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);
  };
  _proto.parseArgument = function parseArgument() {
    var start2 = this._lexer.token;
    var name2 = this.parseName();
    this.expectToken(TokenKind.COLON);
    return {
      kind: Kind.ARGUMENT,
      name: name2,
      value: this.parseValueLiteral(false),
      loc: this.loc(start2)
    };
  };
  _proto.parseConstArgument = function parseConstArgument() {
    var start2 = this._lexer.token;
    return {
      kind: Kind.ARGUMENT,
      name: this.parseName(),
      value: (this.expectToken(TokenKind.COLON), this.parseValueLiteral(true)),
      loc: this.loc(start2)
    };
  };
  _proto.parseFragment = function parseFragment() {
    var start2 = this._lexer.token;
    this.expectToken(TokenKind.SPREAD);
    var hasTypeCondition = this.expectOptionalKeyword("on");
    if (!hasTypeCondition && this.peek(TokenKind.NAME)) {
      return {
        kind: Kind.FRAGMENT_SPREAD,
        name: this.parseFragmentName(),
        directives: this.parseDirectives(false),
        loc: this.loc(start2)
      };
    }
    return {
      kind: Kind.INLINE_FRAGMENT,
      typeCondition: hasTypeCondition ? this.parseNamedType() : void 0,
      directives: this.parseDirectives(false),
      selectionSet: this.parseSelectionSet(),
      loc: this.loc(start2)
    };
  };
  _proto.parseFragmentDefinition = function parseFragmentDefinition() {
    var _this$_options;
    var start2 = this._lexer.token;
    this.expectKeyword("fragment");
    if (((_this$_options = this._options) === null || _this$_options === void 0 ? void 0 : _this$_options.experimentalFragmentVariables) === true) {
      return {
        kind: Kind.FRAGMENT_DEFINITION,
        name: this.parseFragmentName(),
        variableDefinitions: this.parseVariableDefinitions(),
        typeCondition: (this.expectKeyword("on"), this.parseNamedType()),
        directives: this.parseDirectives(false),
        selectionSet: this.parseSelectionSet(),
        loc: this.loc(start2)
      };
    }
    return {
      kind: Kind.FRAGMENT_DEFINITION,
      name: this.parseFragmentName(),
      typeCondition: (this.expectKeyword("on"), this.parseNamedType()),
      directives: this.parseDirectives(false),
      selectionSet: this.parseSelectionSet(),
      loc: this.loc(start2)
    };
  };
  _proto.parseFragmentName = function parseFragmentName() {
    if (this._lexer.token.value === "on") {
      throw this.unexpected();
    }
    return this.parseName();
  };
  _proto.parseValueLiteral = function parseValueLiteral(isConst) {
    var token2 = this._lexer.token;
    switch (token2.kind) {
      case TokenKind.BRACKET_L:
        return this.parseList(isConst);
      case TokenKind.BRACE_L:
        return this.parseObject(isConst);
      case TokenKind.INT:
        this._lexer.advance();
        return {
          kind: Kind.INT,
          value: token2.value,
          loc: this.loc(token2)
        };
      case TokenKind.FLOAT:
        this._lexer.advance();
        return {
          kind: Kind.FLOAT,
          value: token2.value,
          loc: this.loc(token2)
        };
      case TokenKind.STRING:
      case TokenKind.BLOCK_STRING:
        return this.parseStringLiteral();
      case TokenKind.NAME:
        this._lexer.advance();
        switch (token2.value) {
          case "true":
            return {
              kind: Kind.BOOLEAN,
              value: true,
              loc: this.loc(token2)
            };
          case "false":
            return {
              kind: Kind.BOOLEAN,
              value: false,
              loc: this.loc(token2)
            };
          case "null":
            return {
              kind: Kind.NULL,
              loc: this.loc(token2)
            };
          default:
            return {
              kind: Kind.ENUM,
              value: token2.value,
              loc: this.loc(token2)
            };
        }
      case TokenKind.DOLLAR:
        if (!isConst) {
          return this.parseVariable();
        }
        break;
    }
    throw this.unexpected();
  };
  _proto.parseStringLiteral = function parseStringLiteral() {
    var token2 = this._lexer.token;
    this._lexer.advance();
    return {
      kind: Kind.STRING,
      value: token2.value,
      block: token2.kind === TokenKind.BLOCK_STRING,
      loc: this.loc(token2)
    };
  };
  _proto.parseList = function parseList(isConst) {
    var _this = this;
    var start2 = this._lexer.token;
    var item = function item2() {
      return _this.parseValueLiteral(isConst);
    };
    return {
      kind: Kind.LIST,
      values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),
      loc: this.loc(start2)
    };
  };
  _proto.parseObject = function parseObject(isConst) {
    var _this2 = this;
    var start2 = this._lexer.token;
    var item = function item2() {
      return _this2.parseObjectField(isConst);
    };
    return {
      kind: Kind.OBJECT,
      fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),
      loc: this.loc(start2)
    };
  };
  _proto.parseObjectField = function parseObjectField(isConst) {
    var start2 = this._lexer.token;
    var name2 = this.parseName();
    this.expectToken(TokenKind.COLON);
    return {
      kind: Kind.OBJECT_FIELD,
      name: name2,
      value: this.parseValueLiteral(isConst),
      loc: this.loc(start2)
    };
  };
  _proto.parseDirectives = function parseDirectives(isConst) {
    var directives = [];
    while (this.peek(TokenKind.AT)) {
      directives.push(this.parseDirective(isConst));
    }
    return directives;
  };
  _proto.parseDirective = function parseDirective(isConst) {
    var start2 = this._lexer.token;
    this.expectToken(TokenKind.AT);
    return {
      kind: Kind.DIRECTIVE,
      name: this.parseName(),
      arguments: this.parseArguments(isConst),
      loc: this.loc(start2)
    };
  };
  _proto.parseTypeReference = function parseTypeReference() {
    var start2 = this._lexer.token;
    var type2;
    if (this.expectOptionalToken(TokenKind.BRACKET_L)) {
      type2 = this.parseTypeReference();
      this.expectToken(TokenKind.BRACKET_R);
      type2 = {
        kind: Kind.LIST_TYPE,
        type: type2,
        loc: this.loc(start2)
      };
    } else {
      type2 = this.parseNamedType();
    }
    if (this.expectOptionalToken(TokenKind.BANG)) {
      return {
        kind: Kind.NON_NULL_TYPE,
        type: type2,
        loc: this.loc(start2)
      };
    }
    return type2;
  };
  _proto.parseNamedType = function parseNamedType() {
    var start2 = this._lexer.token;
    return {
      kind: Kind.NAMED_TYPE,
      name: this.parseName(),
      loc: this.loc(start2)
    };
  };
  _proto.parseTypeSystemDefinition = function parseTypeSystemDefinition() {
    var keywordToken = this.peekDescription() ? this._lexer.lookahead() : this._lexer.token;
    if (keywordToken.kind === TokenKind.NAME) {
      switch (keywordToken.value) {
        case "schema":
          return this.parseSchemaDefinition();
        case "scalar":
          return this.parseScalarTypeDefinition();
        case "type":
          return this.parseObjectTypeDefinition();
        case "interface":
          return this.parseInterfaceTypeDefinition();
        case "union":
          return this.parseUnionTypeDefinition();
        case "enum":
          return this.parseEnumTypeDefinition();
        case "input":
          return this.parseInputObjectTypeDefinition();
        case "directive":
          return this.parseDirectiveDefinition();
      }
    }
    throw this.unexpected(keywordToken);
  };
  _proto.peekDescription = function peekDescription() {
    return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);
  };
  _proto.parseDescription = function parseDescription() {
    if (this.peekDescription()) {
      return this.parseStringLiteral();
    }
  };
  _proto.parseSchemaDefinition = function parseSchemaDefinition() {
    var start2 = this._lexer.token;
    var description = this.parseDescription();
    this.expectKeyword("schema");
    var directives = this.parseDirectives(true);
    var operationTypes = this.many(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);
    return {
      kind: Kind.SCHEMA_DEFINITION,
      description,
      directives,
      operationTypes,
      loc: this.loc(start2)
    };
  };
  _proto.parseOperationTypeDefinition = function parseOperationTypeDefinition() {
    var start2 = this._lexer.token;
    var operation = this.parseOperationType();
    this.expectToken(TokenKind.COLON);
    var type2 = this.parseNamedType();
    return {
      kind: Kind.OPERATION_TYPE_DEFINITION,
      operation,
      type: type2,
      loc: this.loc(start2)
    };
  };
  _proto.parseScalarTypeDefinition = function parseScalarTypeDefinition() {
    var start2 = this._lexer.token;
    var description = this.parseDescription();
    this.expectKeyword("scalar");
    var name2 = this.parseName();
    var directives = this.parseDirectives(true);
    return {
      kind: Kind.SCALAR_TYPE_DEFINITION,
      description,
      name: name2,
      directives,
      loc: this.loc(start2)
    };
  };
  _proto.parseObjectTypeDefinition = function parseObjectTypeDefinition() {
    var start2 = this._lexer.token;
    var description = this.parseDescription();
    this.expectKeyword("type");
    var name2 = this.parseName();
    var interfaces = this.parseImplementsInterfaces();
    var directives = this.parseDirectives(true);
    var fields = this.parseFieldsDefinition();
    return {
      kind: Kind.OBJECT_TYPE_DEFINITION,
      description,
      name: name2,
      interfaces,
      directives,
      fields,
      loc: this.loc(start2)
    };
  };
  _proto.parseImplementsInterfaces = function parseImplementsInterfaces() {
    var _this$_options2;
    if (!this.expectOptionalKeyword("implements")) {
      return [];
    }
    if (((_this$_options2 = this._options) === null || _this$_options2 === void 0 ? void 0 : _this$_options2.allowLegacySDLImplementsInterfaces) === true) {
      var types = [];
      this.expectOptionalToken(TokenKind.AMP);
      do {
        types.push(this.parseNamedType());
      } while (this.expectOptionalToken(TokenKind.AMP) || this.peek(TokenKind.NAME));
      return types;
    }
    return this.delimitedMany(TokenKind.AMP, this.parseNamedType);
  };
  _proto.parseFieldsDefinition = function parseFieldsDefinition() {
    var _this$_options3;
    if (((_this$_options3 = this._options) === null || _this$_options3 === void 0 ? void 0 : _this$_options3.allowLegacySDLEmptyFields) === true && this.peek(TokenKind.BRACE_L) && this._lexer.lookahead().kind === TokenKind.BRACE_R) {
      this._lexer.advance();
      this._lexer.advance();
      return [];
    }
    return this.optionalMany(TokenKind.BRACE_L, this.parseFieldDefinition, TokenKind.BRACE_R);
  };
  _proto.parseFieldDefinition = function parseFieldDefinition() {
    var start2 = this._lexer.token;
    var description = this.parseDescription();
    var name2 = this.parseName();
    var args = this.parseArgumentDefs();
    this.expectToken(TokenKind.COLON);
    var type2 = this.parseTypeReference();
    var directives = this.parseDirectives(true);
    return {
      kind: Kind.FIELD_DEFINITION,
      description,
      name: name2,
      arguments: args,
      type: type2,
      directives,
      loc: this.loc(start2)
    };
  };
  _proto.parseArgumentDefs = function parseArgumentDefs() {
    return this.optionalMany(TokenKind.PAREN_L, this.parseInputValueDef, TokenKind.PAREN_R);
  };
  _proto.parseInputValueDef = function parseInputValueDef() {
    var start2 = this._lexer.token;
    var description = this.parseDescription();
    var name2 = this.parseName();
    this.expectToken(TokenKind.COLON);
    var type2 = this.parseTypeReference();
    var defaultValue;
    if (this.expectOptionalToken(TokenKind.EQUALS)) {
      defaultValue = this.parseValueLiteral(true);
    }
    var directives = this.parseDirectives(true);
    return {
      kind: Kind.INPUT_VALUE_DEFINITION,
      description,
      name: name2,
      type: type2,
      defaultValue,
      directives,
      loc: this.loc(start2)
    };
  };
  _proto.parseInterfaceTypeDefinition = function parseInterfaceTypeDefinition() {
    var start2 = this._lexer.token;
    var description = this.parseDescription();
    this.expectKeyword("interface");
    var name2 = this.parseName();
    var interfaces = this.parseImplementsInterfaces();
    var directives = this.parseDirectives(true);
    var fields = this.parseFieldsDefinition();
    return {
      kind: Kind.INTERFACE_TYPE_DEFINITION,
      description,
      name: name2,
      interfaces,
      directives,
      fields,
      loc: this.loc(start2)
    };
  };
  _proto.parseUnionTypeDefinition = function parseUnionTypeDefinition() {
    var start2 = this._lexer.token;
    var description = this.parseDescription();
    this.expectKeyword("union");
    var name2 = this.parseName();
    var directives = this.parseDirectives(true);
    var types = this.parseUnionMemberTypes();
    return {
      kind: Kind.UNION_TYPE_DEFINITION,
      description,
      name: name2,
      directives,
      types,
      loc: this.loc(start2)
    };
  };
  _proto.parseUnionMemberTypes = function parseUnionMemberTypes() {
    return this.expectOptionalToken(TokenKind.EQUALS) ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType) : [];
  };
  _proto.parseEnumTypeDefinition = function parseEnumTypeDefinition() {
    var start2 = this._lexer.token;
    var description = this.parseDescription();
    this.expectKeyword("enum");
    var name2 = this.parseName();
    var directives = this.parseDirectives(true);
    var values = this.parseEnumValuesDefinition();
    return {
      kind: Kind.ENUM_TYPE_DEFINITION,
      description,
      name: name2,
      directives,
      values,
      loc: this.loc(start2)
    };
  };
  _proto.parseEnumValuesDefinition = function parseEnumValuesDefinition() {
    return this.optionalMany(TokenKind.BRACE_L, this.parseEnumValueDefinition, TokenKind.BRACE_R);
  };
  _proto.parseEnumValueDefinition = function parseEnumValueDefinition() {
    var start2 = this._lexer.token;
    var description = this.parseDescription();
    var name2 = this.parseName();
    var directives = this.parseDirectives(true);
    return {
      kind: Kind.ENUM_VALUE_DEFINITION,
      description,
      name: name2,
      directives,
      loc: this.loc(start2)
    };
  };
  _proto.parseInputObjectTypeDefinition = function parseInputObjectTypeDefinition() {
    var start2 = this._lexer.token;
    var description = this.parseDescription();
    this.expectKeyword("input");
    var name2 = this.parseName();
    var directives = this.parseDirectives(true);
    var fields = this.parseInputFieldsDefinition();
    return {
      kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,
      description,
      name: name2,
      directives,
      fields,
      loc: this.loc(start2)
    };
  };
  _proto.parseInputFieldsDefinition = function parseInputFieldsDefinition() {
    return this.optionalMany(TokenKind.BRACE_L, this.parseInputValueDef, TokenKind.BRACE_R);
  };
  _proto.parseTypeSystemExtension = function parseTypeSystemExtension() {
    var keywordToken = this._lexer.lookahead();
    if (keywordToken.kind === TokenKind.NAME) {
      switch (keywordToken.value) {
        case "schema":
          return this.parseSchemaExtension();
        case "scalar":
          return this.parseScalarTypeExtension();
        case "type":
          return this.parseObjectTypeExtension();
        case "interface":
          return this.parseInterfaceTypeExtension();
        case "union":
          return this.parseUnionTypeExtension();
        case "enum":
          return this.parseEnumTypeExtension();
        case "input":
          return this.parseInputObjectTypeExtension();
      }
    }
    throw this.unexpected(keywordToken);
  };
  _proto.parseSchemaExtension = function parseSchemaExtension() {
    var start2 = this._lexer.token;
    this.expectKeyword("extend");
    this.expectKeyword("schema");
    var directives = this.parseDirectives(true);
    var operationTypes = this.optionalMany(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);
    if (directives.length === 0 && operationTypes.length === 0) {
      throw this.unexpected();
    }
    return {
      kind: Kind.SCHEMA_EXTENSION,
      directives,
      operationTypes,
      loc: this.loc(start2)
    };
  };
  _proto.parseScalarTypeExtension = function parseScalarTypeExtension() {
    var start2 = this._lexer.token;
    this.expectKeyword("extend");
    this.expectKeyword("scalar");
    var name2 = this.parseName();
    var directives = this.parseDirectives(true);
    if (directives.length === 0) {
      throw this.unexpected();
    }
    return {
      kind: Kind.SCALAR_TYPE_EXTENSION,
      name: name2,
      directives,
      loc: this.loc(start2)
    };
  };
  _proto.parseObjectTypeExtension = function parseObjectTypeExtension() {
    var start2 = this._lexer.token;
    this.expectKeyword("extend");
    this.expectKeyword("type");
    var name2 = this.parseName();
    var interfaces = this.parseImplementsInterfaces();
    var directives = this.parseDirectives(true);
    var fields = this.parseFieldsDefinition();
    if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {
      throw this.unexpected();
    }
    return {
      kind: Kind.OBJECT_TYPE_EXTENSION,
      name: name2,
      interfaces,
      directives,
      fields,
      loc: this.loc(start2)
    };
  };
  _proto.parseInterfaceTypeExtension = function parseInterfaceTypeExtension() {
    var start2 = this._lexer.token;
    this.expectKeyword("extend");
    this.expectKeyword("interface");
    var name2 = this.parseName();
    var interfaces = this.parseImplementsInterfaces();
    var directives = this.parseDirectives(true);
    var fields = this.parseFieldsDefinition();
    if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {
      throw this.unexpected();
    }
    return {
      kind: Kind.INTERFACE_TYPE_EXTENSION,
      name: name2,
      interfaces,
      directives,
      fields,
      loc: this.loc(start2)
    };
  };
  _proto.parseUnionTypeExtension = function parseUnionTypeExtension() {
    var start2 = this._lexer.token;
    this.expectKeyword("extend");
    this.expectKeyword("union");
    var name2 = this.parseName();
    var directives = this.parseDirectives(true);
    var types = this.parseUnionMemberTypes();
    if (directives.length === 0 && types.length === 0) {
      throw this.unexpected();
    }
    return {
      kind: Kind.UNION_TYPE_EXTENSION,
      name: name2,
      directives,
      types,
      loc: this.loc(start2)
    };
  };
  _proto.parseEnumTypeExtension = function parseEnumTypeExtension() {
    var start2 = this._lexer.token;
    this.expectKeyword("extend");
    this.expectKeyword("enum");
    var name2 = this.parseName();
    var directives = this.parseDirectives(true);
    var values = this.parseEnumValuesDefinition();
    if (directives.length === 0 && values.length === 0) {
      throw this.unexpected();
    }
    return {
      kind: Kind.ENUM_TYPE_EXTENSION,
      name: name2,
      directives,
      values,
      loc: this.loc(start2)
    };
  };
  _proto.parseInputObjectTypeExtension = function parseInputObjectTypeExtension() {
    var start2 = this._lexer.token;
    this.expectKeyword("extend");
    this.expectKeyword("input");
    var name2 = this.parseName();
    var directives = this.parseDirectives(true);
    var fields = this.parseInputFieldsDefinition();
    if (directives.length === 0 && fields.length === 0) {
      throw this.unexpected();
    }
    return {
      kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,
      name: name2,
      directives,
      fields,
      loc: this.loc(start2)
    };
  };
  _proto.parseDirectiveDefinition = function parseDirectiveDefinition() {
    var start2 = this._lexer.token;
    var description = this.parseDescription();
    this.expectKeyword("directive");
    this.expectToken(TokenKind.AT);
    var name2 = this.parseName();
    var args = this.parseArgumentDefs();
    var repeatable = this.expectOptionalKeyword("repeatable");
    this.expectKeyword("on");
    var locations = this.parseDirectiveLocations();
    return {
      kind: Kind.DIRECTIVE_DEFINITION,
      description,
      name: name2,
      arguments: args,
      repeatable,
      locations,
      loc: this.loc(start2)
    };
  };
  _proto.parseDirectiveLocations = function parseDirectiveLocations() {
    return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);
  };
  _proto.parseDirectiveLocation = function parseDirectiveLocation() {
    var start2 = this._lexer.token;
    var name2 = this.parseName();
    if (DirectiveLocation[name2.value] !== void 0) {
      return name2;
    }
    throw this.unexpected(start2);
  };
  _proto.loc = function loc(startToken) {
    var _this$_options4;
    if (((_this$_options4 = this._options) === null || _this$_options4 === void 0 ? void 0 : _this$_options4.noLocation) !== true) {
      return new Location(startToken, this._lexer.lastToken, this._lexer.source);
    }
  };
  _proto.peek = function peek(kind) {
    return this._lexer.token.kind === kind;
  };
  _proto.expectToken = function expectToken(kind) {
    var token2 = this._lexer.token;
    if (token2.kind === kind) {
      this._lexer.advance();
      return token2;
    }
    throw syntaxError(this._lexer.source, token2.start, "Expected ".concat(getTokenKindDesc(kind), ", found ").concat(getTokenDesc(token2), "."));
  };
  _proto.expectOptionalToken = function expectOptionalToken(kind) {
    var token2 = this._lexer.token;
    if (token2.kind === kind) {
      this._lexer.advance();
      return token2;
    }
    return void 0;
  };
  _proto.expectKeyword = function expectKeyword(value) {
    var token2 = this._lexer.token;
    if (token2.kind === TokenKind.NAME && token2.value === value) {
      this._lexer.advance();
    } else {
      throw syntaxError(this._lexer.source, token2.start, 'Expected "'.concat(value, '", found ').concat(getTokenDesc(token2), "."));
    }
  };
  _proto.expectOptionalKeyword = function expectOptionalKeyword(value) {
    var token2 = this._lexer.token;
    if (token2.kind === TokenKind.NAME && token2.value === value) {
      this._lexer.advance();
      return true;
    }
    return false;
  };
  _proto.unexpected = function unexpected(atToken) {
    var token2 = atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;
    return syntaxError(this._lexer.source, token2.start, "Unexpected ".concat(getTokenDesc(token2), "."));
  };
  _proto.any = function any(openKind, parseFn, closeKind) {
    this.expectToken(openKind);
    var nodes = [];
    while (!this.expectOptionalToken(closeKind)) {
      nodes.push(parseFn.call(this));
    }
    return nodes;
  };
  _proto.optionalMany = function optionalMany(openKind, parseFn, closeKind) {
    if (this.expectOptionalToken(openKind)) {
      var nodes = [];
      do {
        nodes.push(parseFn.call(this));
      } while (!this.expectOptionalToken(closeKind));
      return nodes;
    }
    return [];
  };
  _proto.many = function many(openKind, parseFn, closeKind) {
    this.expectToken(openKind);
    var nodes = [];
    do {
      nodes.push(parseFn.call(this));
    } while (!this.expectOptionalToken(closeKind));
    return nodes;
  };
  _proto.delimitedMany = function delimitedMany(delimiterKind, parseFn) {
    this.expectOptionalToken(delimiterKind);
    var nodes = [];
    do {
      nodes.push(parseFn.call(this));
    } while (this.expectOptionalToken(delimiterKind));
    return nodes;
  };
  return Parser2;
}();
function getTokenDesc(token2) {
  var value = token2.value;
  return getTokenKindDesc(token2.kind) + (value != null ? ' "'.concat(value, '"') : "");
}
function getTokenKindDesc(kind) {
  return isPunctuatorTokenKind(kind) ? '"'.concat(kind, '"') : kind;
}
function l$1(a2, b2) {
  b2.tag = a2;
  return b2;
}
function m$1() {
}
function p$1(a2) {
  return function(b2) {
    var c2 = a2.length;
    let d2 = false, e = false, f2 = false, g = 0;
    b2(
      l$1(0, [
        function(h2) {
          if (h2) {
            d2 = true;
          } else if (e) {
            f2 = true;
          } else {
            for (e = f2 = true; f2 && !d2; ) {
              g < c2 ? (h2 = a2[g], g = g + 1 | 0, f2 = false, b2(l$1(1, [h2]))) : (d2 = true, b2(0));
            }
            e = false;
          }
        }
      ])
    );
  };
}
function r() {
}
function t(a2) {
  a2(0);
}
function u$1(a2) {
  let b2 = false;
  a2(
    l$1(0, [
      function(c2) {
        c2 ? b2 = true : b2 || a2(0);
      }
    ])
  );
}
function C$1(a2) {
  return a2(0);
}
function D$1(a2) {
  return function(b2) {
    return function(c2) {
      let e = m$1, f2 = false, g = [], h2 = false;
      b2(function(b3) {
        "number" == typeof b3 ? h2 || (h2 = true, 0 === g.length && c2(0)) : b3.tag ? h2 || (f2 = false, function(a3) {
          function b4(a4) {
            "number" == typeof a4 ? 0 !== g.length && (g = g.filter(d2), a4 = 0 === g.length, h2 && a4 ? c2(0) : !f2 && a4 && (f2 = true, e(0))) : a4.tag ? 0 !== g.length && (c2(l$1(1, [a4[0]])), k2(0)) : (k2 = a4 = a4[0], g = g.concat(a4), a4(0));
          }
          function d2(a4) {
            return a4 !== k2;
          }
          let k2 = m$1;
          1 === a3.length ? a3(b4) : a3.bind(null, b4);
        }(a2(b3[0])), f2 || (f2 = true, e(0))) : e = b3[0];
      });
      c2(
        l$1(0, [
          function(a3) {
            a3 ? (h2 || (h2 = true, e(a3)), g.forEach(function(c3) {
              return c3(a3);
            }), g = []) : (f2 || h2 ? f2 = false : (f2 = true, e(0)), g.forEach(C$1));
          }
        ])
      );
    };
  };
}
function E$1(a2) {
  return a2;
}
function H(a2) {
  return function(b2) {
    return function(c2) {
      let d2 = false;
      return b2(function(e) {
        if ("number" == typeof e) {
          d2 || (d2 = true, c2(e));
        } else if (e.tag) {
          d2 || (a2(e[0]), c2(e));
        } else {
          var g = e[0];
          c2(
            l$1(0, [
              function(a3) {
                if (!d2) {
                  return a3 && (d2 = true), g(a3);
                }
              }
            ])
          );
        }
      });
    };
  };
}
function J$2(a2) {
  a2(0);
}
function K$1(a2) {
  return function(b2) {
    return function(c2) {
      function d2(a3) {
        h2 && ("number" == typeof a3 ? (h2 = false, n ? c2(a3) : f2 || (f2 = true, e(0))) : a3.tag ? (c2(a3), k2 ? k2 = false : g(0)) : (g = a3 = a3[0], k2 = false, a3(0)));
      }
      let e = m$1, f2 = false, g = m$1, h2 = false, k2 = false, n = false;
      b2(function(b3) {
        "number" == typeof b3 ? n || (n = true, h2 || c2(0)) : b3.tag ? n || (h2 && (g(1), g = m$1), f2 ? f2 = false : (f2 = true, e(0)), b3 = a2(b3[0]), h2 = true, b3(d2)) : e = b3[0];
      });
      c2(
        l$1(0, [
          function(a3) {
            if (a3) {
              if (n || (n = true, e(1)), h2) {
                return h2 = false, g(1);
              }
            } else {
              n || f2 || (f2 = true, e(0)), h2 && !k2 && (k2 = true, g(0));
            }
          }
        ])
      );
    };
  };
}
function M(a2) {
  return function(b2) {
    return function(c2) {
      let d2 = [], e = m$1;
      return b2(function(b3) {
        "number" == typeof b3 ? p$1(d2)(c2) : b3.tag ? (d2.length >= a2 && 0 < a2 && d2.shift(), d2.push(b3[0]), e(0)) : (b3 = b3[0], 0 >= a2 ? (b3(1), u$1(c2)) : (e = b3, b3(0)));
      });
    };
  };
}
function N$1(a2) {
  return function(b2) {
    let c2 = m$1, d2 = false;
    b2(function(e) {
      "number" == typeof e ? d2 = true : e.tag ? d2 || (a2(e[0]), c2(0)) : (c2 = e = e[0], e(0));
    });
    return {
      unsubscribe: function() {
        if (!d2) {
          return d2 = true, c2(1);
        }
      }
    };
  };
}
function O() {
}
function buffer$1(a2) {
  return function(b2) {
    return function(c2) {
      function d2(a3) {
        "number" == typeof a3 ? k2 || (k2 = true, f2(1), 0 < e.length && c2(l$1(1, [e])), c2(0)) : a3.tag ? !k2 && 0 < e.length && (a3 = e, e = [], c2(l$1(1, [a3]))) : g = a3[0];
      }
      let e = [], f2 = m$1, g = m$1, h2 = false, k2 = false;
      b2(function(b3) {
        "number" == typeof b3 ? k2 || (k2 = true, g(1), 0 < e.length && c2(l$1(1, [e])), c2(0)) : b3.tag ? k2 || (e.push(b3[0]), h2 ? h2 = false : (h2 = true, f2(0), g(0))) : (f2 = b3[0], a2(d2));
      });
      c2(
        l$1(0, [
          function(a3) {
            if (!k2) {
              if (a3) {
                return k2 = true, f2(1), g(1);
              }
              if (!h2) {
                return h2 = true, f2(0), g(0);
              }
            }
          }
        ])
      );
    };
  };
}
function filter$1(a2) {
  return function(b2) {
    return function(c2) {
      let d2 = m$1;
      return b2(function(b3) {
        "number" == typeof b3 ? c2(b3) : b3.tag ? a2(b3[0]) ? c2(b3) : d2(0) : (d2 = b3[0], c2(b3));
      });
    };
  };
}
function fromPromise$1(a2) {
  return function(b2) {
    let c2 = false;
    a2.then(function(a3) {
      c2 || (b2(l$1(1, [a3])), b2(0));
      return Promise.resolve(void 0);
    });
    b2(
      l$1(0, [
        function(a3) {
          a3 && (c2 = true);
        }
      ])
    );
  };
}
function fromValue$1(a2) {
  return function(b2) {
    let c2 = false;
    b2(
      l$1(0, [
        function(d2) {
          d2 ? c2 = true : c2 || (c2 = true, b2(l$1(1, [a2])), b2(0));
        }
      ])
    );
  };
}
function make$1(a2) {
  return function(b2) {
    let c2 = r, d2 = false;
    c2 = a2({
      next: function(a3) {
        d2 || b2(l$1(1, [a3]));
      },
      complete: function() {
        d2 || (d2 = true, b2(0));
      }
    });
    b2(
      l$1(0, [
        function(a3) {
          if (a3 && !d2) {
            return d2 = true, c2();
          }
        }
      ])
    );
  };
}
function makeSubject$1() {
  let a2 = [], b2 = false;
  return {
    source: function(c2) {
      function b3(a3) {
        return a3 !== c2;
      }
      a2 = a2.concat(c2);
      c2(
        l$1(0, [
          function(c3) {
            c3 && (a2 = a2.filter(b3));
          }
        ])
      );
    },
    next: function(c2) {
      b2 || a2.forEach(function(a3) {
        a3(l$1(1, [c2]));
      });
    },
    complete: function() {
      b2 || (b2 = true, a2.forEach(t));
    }
  };
}
function map$1$1(a2) {
  return function(b2) {
    return function(c2) {
      return b2(function(b3) {
        b3 = "number" == typeof b3 ? 0 : b3.tag ? l$1(1, [a2(b3[0])]) : l$1(0, [b3[0]]);
        c2(b3);
      });
    };
  };
}
function merge$1(a2) {
  return D$1(E$1)(p$1(a2));
}
function onEnd$1(a2) {
  return function(b2) {
    return function(c2) {
      let d2 = false;
      return b2(function(b3) {
        if ("number" == typeof b3) {
          if (d2) {
            return;
          }
          d2 = true;
          c2(b3);
          return a2();
        }
        if (b3.tag) {
          d2 || c2(b3);
        } else {
          var e = b3[0];
          c2(
            l$1(0, [
              function(c3) {
                if (!d2) {
                  return c3 ? (d2 = true, e(c3), a2()) : e(c3);
                }
              }
            ])
          );
        }
      });
    };
  };
}
function onStart$1(a2) {
  return function(b2) {
    return function(c2) {
      return b2(function(b3) {
        "number" == typeof b3 ? c2(b3) : b3.tag ? c2(b3) : (c2(b3), a2());
      });
    };
  };
}
function pipe() {
  for (var a2 = arguments, b2 = arguments[0], c2 = 1, d2 = arguments.length; c2 < d2; c2++) {
    b2 = a2[c2](b2);
  }
  return b2;
}
function publish$1(a2) {
  return N$1(O)(a2);
}
function share$1(a2) {
  function b2(a3) {
    "number" == typeof a3 ? (c2.forEach(J$2), c2 = []) : a3.tag ? (e = false, c2.forEach(function(b3) {
      b3(a3);
    })) : d2 = a3[0];
  }
  let c2 = [], d2 = m$1, e = false;
  return function(f2) {
    function g(a3) {
      return a3 !== f2;
    }
    c2 = c2.concat(f2);
    1 === c2.length && a2(b2);
    f2(
      l$1(0, [
        function(a3) {
          if (a3) {
            if (c2 = c2.filter(g), 0 === c2.length) {
              return d2(1);
            }
          } else {
            e || (e = true, d2(a3));
          }
        }
      ])
    );
  };
}
function skipUntil$1(a2) {
  return function(b2) {
    return function(c2) {
      function d2(a3) {
        "number" == typeof a3 ? g && (k2 = true, e(1)) : a3.tag ? (g = false, f2(1)) : (f2 = a3 = a3[0], a3(0));
      }
      let e = m$1, f2 = m$1, g = true, h2 = false, k2 = false;
      b2(function(b3) {
        "number" == typeof b3 ? (g && f2(1), k2 = true, c2(0)) : b3.tag ? g || k2 ? h2 ? h2 = false : (h2 = true, e(0), f2(0)) : (h2 = false, c2(b3)) : (e = b3[0], a2(d2));
      });
      c2(
        l$1(0, [
          function(a3) {
            if (!k2) {
              if (a3) {
                if (k2 = true, e(1), g) {
                  return f2(1);
                }
              } else {
                h2 || (h2 = true, g && f2(0), e(0));
              }
            }
          }
        ])
      );
    };
  };
}
function take$1(a2) {
  return function(b2) {
    return function(c2) {
      let d2 = false, e = 0, f2 = m$1;
      b2(function(b3) {
        "number" == typeof b3 ? d2 || (d2 = true, c2(0)) : b3.tag ? e < a2 && !d2 && (e = e + 1 | 0, c2(b3), !d2 && e >= a2 && (d2 = true, c2(0), f2(1))) : (b3 = b3[0], 0 >= a2 ? (d2 = true, c2(0), b3(1)) : f2 = b3);
      });
      c2(
        l$1(0, [
          function(b3) {
            if (!d2) {
              if (b3) {
                return d2 = true, f2(1);
              }
              if (e < a2) {
                return f2(0);
              }
            }
          }
        ])
      );
    };
  };
}
function takeUntil$1(a2) {
  return function(b2) {
    return function(c2) {
      function d2(a3) {
        "number" != typeof a3 && (a3.tag ? (e = true, f2(1), c2(0)) : (g = a3 = a3[0], a3(0)));
      }
      let e = false, f2 = m$1, g = m$1;
      b2(function(b3) {
        "number" == typeof b3 ? e || (e = true, g(1), c2(0)) : b3.tag ? e || c2(b3) : (f2 = b3[0], a2(d2));
      });
      c2(
        l$1(0, [
          function(a3) {
            if (!e) {
              return a3 ? (e = true, f2(1), g(1)) : f2(0);
            }
          }
        ])
      );
    };
  };
}
function toPromise$1(a2) {
  return new Promise(function(b2) {
    M(1)(a2)(function(a3) {
      if ("number" != typeof a3) {
        if (a3.tag) {
          b2(a3[0]);
        } else {
          a3[0](0);
        }
      }
    });
  });
}
"function" == typeof Symbol ? Symbol.observable || (Symbol.observable = Symbol("observable")) : "@@observable";
function rehydrateGraphQlError(r2) {
  if ("string" == typeof r2) {
    return new GraphQLError(r2);
  } else if ("object" == typeof r2 && r2.message) {
    return new GraphQLError(r2.message, r2.nodes, r2.source, r2.positions, r2.path, r2, r2.extensions || {});
  } else {
    return r2;
  }
}
var o = function(e) {
  function CombinedError(r2) {
    var t2 = r2.networkError;
    var n = r2.response;
    var a2 = (r2.graphQLErrors || []).map(rehydrateGraphQlError);
    var o2 = function generateErrorMessage(e2, r3) {
      var t3 = "";
      if (void 0 !== e2) {
        return t3 = "[Network] " + e2.message;
      }
      if (void 0 !== r3) {
        r3.forEach(function(e3) {
          t3 += "[GraphQL] " + e3.message + "\n";
        });
      }
      return t3.trim();
    }(t2, a2);
    e.call(this, o2);
    this.name = "CombinedError";
    this.message = o2;
    this.graphQLErrors = a2;
    this.networkError = t2;
    this.response = n;
  }
  if (e) {
    CombinedError.__proto__ = e;
  }
  (CombinedError.prototype = Object.create(e && e.prototype)).constructor = CombinedError;
  CombinedError.prototype.toString = function toString2() {
    return this.message;
  };
  return CombinedError;
}(Error);
function phash(e, r2) {
  e |= 0;
  for (var t2 = 0, n = 0 | r2.length; t2 < n; t2++) {
    e = (e << 5) + e + r2.charCodeAt(t2);
  }
  return e;
}
function hash$3(e) {
  return phash(5381, e) >>> 0;
}
var i$2 = /* @__PURE__ */ new Set();
var s = /* @__PURE__ */ new WeakMap();
function stringify(e) {
  if (null === e || i$2.has(e)) {
    return "null";
  } else if ("object" != typeof e) {
    return JSON.stringify(e) || "";
  } else if (e.toJSON) {
    return stringify(e.toJSON());
  } else if (Array.isArray(e)) {
    var r2 = "[";
    for (var t2 = 0, n = e.length; t2 < n; t2++) {
      if (t2 > 0) {
        r2 += ",";
      }
      var a2 = stringify(e[t2]);
      r2 += a2.length > 0 ? a2 : "null";
    }
    return r2 += "]";
  }
  var o2 = Object.keys(e).sort();
  if (!o2.length && e.constructor && e.constructor !== Object) {
    var u2 = s.get(e) || Math.random().toString(36).slice(2);
    s.set(e, u2);
    return '{"__key":"' + u2 + '"}';
  }
  i$2.add(e);
  var f2 = "{";
  for (var c2 = 0, l2 = o2.length; c2 < l2; c2++) {
    var h2 = o2[c2];
    var p2 = stringify(e[h2]);
    if (p2) {
      if (f2.length > 1) {
        f2 += ",";
      }
      f2 += stringify(h2) + ":" + p2;
    }
  }
  i$2.delete(e);
  return f2 += "}";
}
function stringifyVariables(e) {
  i$2.clear();
  return stringify(e);
}
var u = /("{3}[\s\S]*"{3}|"(?:\\.|[^"])*")/g;
var f$2 = /([\s,]|#[^\n\r]+)+/g;
function replaceOutsideStrings(e, r2) {
  return r2 % 2 == 0 ? e.replace(f$2, " ").trim() : e;
}
function stringifyDocument(e) {
  var r2 = ("string" != typeof e ? e.loc && e.loc.source.body || print$1(e) : e).split(u).map(replaceOutsideStrings).join("");
  if ("string" != typeof e) {
    var t2 = "definitions" in e && getOperationName$1(e);
    if (t2) {
      r2 = "# " + t2 + "\n" + r2;
    }
    if (!e.loc) {
      e.loc = {
        start: 0,
        end: r2.length,
        source: {
          body: r2,
          name: "gql",
          locationOffset: {
            line: 1,
            column: 1
          }
        }
      };
    }
  }
  return r2;
}
var c$1 = /* @__PURE__ */ new Map();
function keyDocument(e) {
  var r2;
  var n;
  if ("string" == typeof e) {
    r2 = hash$3(stringifyDocument(e));
    n = c$1.get(r2) || parse$4(e, {
      noLocation: true
    });
  } else {
    r2 = e.__key || hash$3(stringifyDocument(e));
    n = c$1.get(r2) || e;
  }
  if (!n.loc) {
    stringifyDocument(n);
  }
  n.__key = r2;
  c$1.set(r2, n);
  return n;
}
function createRequest(e, r2) {
  if (!r2) {
    r2 = {};
  }
  var t2 = keyDocument(e);
  return {
    key: phash(t2.__key, stringifyVariables(r2)) >>> 0,
    query: t2,
    variables: r2
  };
}
function getOperationName$1(e) {
  for (var t2 = 0, n = e.definitions.length; t2 < n; t2++) {
    var a2 = e.definitions[t2];
    if (a2.kind === Kind.OPERATION_DEFINITION && a2.name) {
      return a2.name.value;
    }
  }
}
function getOperationType(e) {
  for (var t2 = 0, n = e.definitions.length; t2 < n; t2++) {
    var a2 = e.definitions[t2];
    if (a2.kind === Kind.OPERATION_DEFINITION) {
      return a2.operation;
    }
  }
}
function _extends$3() {
  return (_extends$3 = Object.assign || function(e) {
    for (var r2 = 1; r2 < arguments.length; r2++) {
      var t2 = arguments[r2];
      for (var n in t2) {
        if (Object.prototype.hasOwnProperty.call(t2, n)) {
          e[n] = t2[n];
        }
      }
    }
    return e;
  }).apply(this, arguments);
}
function makeResult(e, r2, t2) {
  if (!("data" in r2) && !("errors" in r2) || "path" in r2) {
    throw new Error("No Content");
  }
  return {
    operation: e,
    data: r2.data,
    error: Array.isArray(r2.errors) ? new o({
      graphQLErrors: r2.errors,
      response: t2
    }) : void 0,
    extensions: "object" == typeof r2.extensions && r2.extensions || void 0,
    hasNext: !!r2.hasNext
  };
}
function mergeResultPatch(e, r2, t2) {
  var n = _extends$3({}, e);
  n.hasNext = !!r2.hasNext;
  if (!("path" in r2)) {
    if ("data" in r2) {
      n.data = r2.data;
    }
    return n;
  }
  if (Array.isArray(r2.errors)) {
    n.error = new o({
      graphQLErrors: n.error ? n.error.graphQLErrors.concat(r2.errors) : r2.errors,
      response: t2
    });
  }
  var a2 = n.data = _extends$3({}, n.data);
  var i = 0;
  var s2;
  while (i < r2.path.length) {
    a2 = a2[s2 = r2.path[i++]] = Array.isArray(a2[s2]) ? [].concat(a2[s2]) : _extends$3({}, a2[s2]);
  }
  _extends$3(a2, r2.data);
  return n;
}
function makeErrorResult(e, r2, t2) {
  return {
    operation: e,
    data: void 0,
    error: new o({
      networkError: r2,
      response: t2
    }),
    extensions: void 0
  };
}
function shouldUseGet(e) {
  return "query" === e.kind && !!e.context.preferGetMethod;
}
function makeFetchBody(e) {
  return {
    query: print$1(e.query),
    operationName: getOperationName$1(e.query),
    variables: e.variables || void 0,
    extensions: void 0
  };
}
function makeFetchURL(e, r2) {
  var t2 = shouldUseGet(e);
  var n = e.context.url;
  if (!t2 || !r2) {
    return n;
  }
  var a2 = [];
  if (r2.operationName) {
    a2.push("operationName=" + encodeURIComponent(r2.operationName));
  }
  if (r2.query) {
    a2.push("query=" + encodeURIComponent(r2.query.replace(/#[^\n\r]+/g, " ").trim()));
  }
  if (r2.variables) {
    a2.push("variables=" + encodeURIComponent(stringifyVariables(r2.variables)));
  }
  if (r2.extensions) {
    a2.push("extensions=" + encodeURIComponent(stringifyVariables(r2.extensions)));
  }
  var o2 = n + "?" + a2.join("&");
  if (o2.length > 2047) {
    e.context.preferGetMethod = false;
    return n;
  }
  return o2;
}
function makeFetchOptions(e, r2) {
  var t2 = shouldUseGet(e);
  var n = "function" == typeof e.context.fetchOptions ? e.context.fetchOptions() : e.context.fetchOptions || {};
  return _extends$3({}, n, {
    body: !t2 && r2 ? JSON.stringify(r2) : void 0,
    method: t2 ? "GET" : "POST",
    headers: t2 ? n.headers : _extends$3({}, {
      "content-type": "application/json"
    }, n.headers)
  });
}
var l = "undefined" != typeof Symbol ? Symbol.asyncIterator : null;
var h = "undefined" != typeof TextDecoder ? new TextDecoder() : null;
var p = /content-type:[^\r\n]*application\/json/i;
var d = /boundary="?([^=";]+)"?/i;
function makeFetchSource(e, r2, t2) {
  var n = "manual" === t2.redirect ? 400 : 300;
  var o2 = e.context.fetch;
  return make$1(function(a2) {
    var i = a2.next;
    var s2 = a2.complete;
    var u2 = "undefined" != typeof AbortController ? new AbortController() : null;
    if (u2) {
      t2.signal = u2.signal;
    }
    var f2 = false;
    function executeIncrementalFetch(e2, r3, t3) {
      var n2 = t3.headers && t3.headers.get("Content-Type") || "";
      if (!/multipart\/mixed/i.test(n2)) {
        return t3.json().then(function(n3) {
          var a4 = makeResult(r3, n3, t3);
          f2 = true;
          e2(a4);
        });
      }
      var a3 = "---";
      var o3 = n2.match(d);
      if (o3) {
        a3 = "--" + o3[1];
      }
      var i2;
      var cancel = function() {
      };
      if (l && t3[l]) {
        var s3 = t3[l]();
        i2 = s3.next.bind(s3);
      } else if ("body" in t3 && t3.body) {
        var u3 = t3.body.getReader();
        cancel = u3.cancel.bind(u3);
        i2 = u3.read.bind(u3);
      } else {
        throw new TypeError("Streaming requests unsupported");
      }
      var c3 = "";
      var v3 = true;
      var m3 = null;
      var g = null;
      return i2().then(function next(n3) {
        if (!n3.done) {
          var o4 = function toString2(e3) {
            return "Buffer" === e3.constructor.name ? e3.toString() : h.decode(e3);
          }(n3.value);
          var s4 = o4.indexOf(a3);
          if (s4 > -1) {
            s4 += c3.length;
          } else {
            s4 = c3.indexOf(a3);
          }
          c3 += o4;
          while (s4 > -1) {
            var u4 = c3.slice(0, s4);
            var l2 = c3.slice(s4 + a3.length);
            if (v3) {
              v3 = false;
            } else {
              var d2 = u4.indexOf("\r\n\r\n") + 4;
              var y2 = u4.slice(0, d2);
              var x2 = u4.slice(d2, u4.lastIndexOf("\r\n"));
              var b2 = void 0;
              if (p.test(y2)) {
                try {
                  b2 = JSON.parse(x2);
                  m3 = g = g ? mergeResultPatch(g, b2, t3) : makeResult(r3, b2, t3);
                } catch (e3) {
                }
              }
              if ("--" === l2.slice(0, 2) || b2 && !b2.hasNext) {
                if (!g) {
                  return e2(makeResult(r3, {}, t3));
                }
                break;
              }
            }
            s4 = (c3 = l2).indexOf(a3);
          }
        } else {
          f2 = true;
        }
        if (m3) {
          e2(m3);
          m3 = null;
        }
        if (!n3.done && (!g || g.hasNext)) {
          return i2().then(next);
        }
      }).finally(cancel);
    }
    var c2 = false;
    var v2 = false;
    var m2;
    Promise.resolve().then(function() {
      if (c2) {
        return;
      }
      return (o2 || fetch)(r2, t2);
    }).then(function(r3) {
      if (!r3) {
        return;
      }
      v2 = (m2 = r3).status < 200 || m2.status >= n;
      return executeIncrementalFetch(i, e, m2);
    }).then(s2).catch(function(r3) {
      if (f2) {
        throw r3;
      }
      if ("AbortError" !== r3.name) {
        var t3 = makeErrorResult(e, v2 ? new Error(m2.statusText) : r3, m2);
        i(t3);
        s2();
      }
    });
    return function() {
      c2 = true;
      if (u2) {
        u2.abort();
      }
    };
  });
}
function collectTypes(e, n) {
  if (Array.isArray(e)) {
    for (var r2 = 0; r2 < e.length; r2++) {
      collectTypes(e[r2], n);
    }
  } else if ("object" == typeof e && null !== e) {
    for (var t2 in e) {
      if ("__typename" === t2 && "string" == typeof e[t2]) {
        n[e[t2]] = 0;
      } else {
        collectTypes(e[t2], n);
      }
    }
  }
  return n;
}
function collectTypesFromResponse(e) {
  return Object.keys(collectTypes(e, {}));
}
var formatNode = function(e) {
  if (e.selectionSet && !e.selectionSet.selections.some(function(e2) {
    return e2.kind === Kind.FIELD && "__typename" === e2.name.value && !e2.alias;
  })) {
    return _extends$3({}, e, {
      selectionSet: _extends$3({}, e.selectionSet, {
        selections: e.selectionSet.selections.concat([{
          kind: Kind.FIELD,
          name: {
            kind: Kind.NAME,
            value: "__typename"
          }
        }])
      })
    });
  }
};
var F$1 = /* @__PURE__ */ new Map();
function formatDocument(n) {
  var r2 = keyDocument(n);
  var a2 = F$1.get(r2.__key);
  if (!a2) {
    a2 = visit$1(r2, {
      Field: formatNode,
      InlineFragment: formatNode
    });
    Object.defineProperty(a2, "__key", {
      value: r2.__key,
      enumerable: false
    });
    F$1.set(r2.__key, a2);
  }
  return a2;
}
function maskTypename(e) {
  if (!e || "object" != typeof e) {
    return e;
  }
  return Object.keys(e).reduce(function(n, r2) {
    var t2 = e[r2];
    if ("__typename" === r2) {
      Object.defineProperty(n, "__typename", {
        enumerable: false,
        value: t2
      });
    } else if (Array.isArray(t2)) {
      n[r2] = t2.map(maskTypename);
    } else if (t2 && "object" == typeof t2 && "__typename" in t2) {
      n[r2] = maskTypename(t2);
    } else {
      n[r2] = t2;
    }
    return n;
  }, Array.isArray(e) ? [] : {});
}
function withPromise(e) {
  e.toPromise = function() {
    return new Promise(function(n) {
      var r2 = N$1(function(e2) {
        if (!e2.stale && !e2.hasNext) {
          Promise.resolve().then(function() {
            r2.unsubscribe();
            n(e2);
          });
        }
      })(e);
    });
  };
  return e;
}
function makeOperation(e, n, r2) {
  if (!r2) {
    r2 = n.context;
  }
  return {
    key: n.key,
    query: n.query,
    variables: n.variables,
    kind: e,
    context: r2
  };
}
function addMetadata(e, n) {
  return makeOperation(e.kind, e, _extends$3({}, e.context, {
    meta: _extends$3({}, e.context.meta, n)
  }));
}
function noop$5() {
}
function applyDefinitions(e, r2, t2) {
  for (var a2 = 0; a2 < t2.length; a2++) {
    if (t2[a2].kind === Kind.FRAGMENT_DEFINITION) {
      var o2 = t2[a2].name.value;
      var i = stringifyDocument(t2[a2]);
      if (!e.has(o2)) {
        e.set(o2, i);
        r2.push(t2[a2]);
      }
    } else {
      r2.push(t2[a2]);
    }
  }
}
function gql() {
  var e = arguments;
  var r2 = /* @__PURE__ */ new Map();
  var a2 = [];
  var o2 = [];
  var i = Array.isArray(arguments[0]) ? arguments[0][0] : arguments[0] || "";
  for (var u2 = 1; u2 < arguments.length; u2++) {
    var c2 = e[u2];
    if (c2 && c2.definitions) {
      o2.push.apply(o2, c2.definitions);
    } else {
      i += c2;
    }
    i += e[0][u2];
  }
  applyDefinitions(r2, a2, keyDocument(i).definitions);
  applyDefinitions(r2, a2, o2);
  return keyDocument({
    kind: Kind.DOCUMENT,
    definitions: a2
  });
}
function shouldSkip(e) {
  var n = e.kind;
  return "mutation" !== n && "query" !== n;
}
function cacheExchange$1(e) {
  var n = e.forward;
  var r2 = e.client;
  e.dispatchDebug;
  var a2 = /* @__PURE__ */ new Map();
  var i = /* @__PURE__ */ Object.create(null);
  function mapTypeNames(e2) {
    var n2 = makeOperation(e2.kind, e2);
    n2.query = formatDocument(e2.query);
    return n2;
  }
  function isOperationCached(e2) {
    var n2 = e2.context.requestPolicy;
    return "query" === e2.kind && "network-only" !== n2 && ("cache-only" === n2 || a2.has(e2.key));
  }
  return function(e2) {
    var u2 = share$1(e2);
    var c2 = map$1$1(function(e3) {
      var n2 = a2.get(e3.key);
      var i2 = _extends$3({}, n2, {
        operation: addMetadata(e3, {
          cacheOutcome: n2 ? "hit" : "miss"
        })
      });
      if ("cache-and-network" === e3.context.requestPolicy) {
        i2.stale = true;
        reexecuteOperation(r2, e3);
      }
      return i2;
    })(filter$1(function(e3) {
      return !shouldSkip(e3) && isOperationCached(e3);
    })(u2));
    var s2 = H(function(e3) {
      var n2 = e3.operation;
      if (!n2) {
        return;
      }
      var o2 = collectTypesFromResponse(e3.data).concat(n2.context.additionalTypenames || []);
      if ("mutation" === e3.operation.kind) {
        var u3 = /* @__PURE__ */ new Set();
        for (var c3 = 0; c3 < o2.length; c3++) {
          var s3 = o2[c3];
          var f2 = i[s3] || (i[s3] = /* @__PURE__ */ new Set());
          f2.forEach(function(e4) {
            u3.add(e4);
          });
          f2.clear();
        }
        u3.forEach(function(e4) {
          if (a2.has(e4)) {
            n2 = a2.get(e4).operation;
            a2.delete(e4);
            reexecuteOperation(r2, n2);
          }
        });
      } else if ("query" === n2.kind && e3.data) {
        a2.set(n2.key, e3);
        for (var p2 = 0; p2 < o2.length; p2++) {
          var l2 = o2[p2];
          (i[l2] || (i[l2] = /* @__PURE__ */ new Set())).add(n2.key);
        }
      }
    })(n(filter$1(function(e3) {
      return "query" !== e3.kind || "cache-only" !== e3.context.requestPolicy;
    })(map$1$1(function(e3) {
      return addMetadata(e3, {
        cacheOutcome: "miss"
      });
    })(merge$1([map$1$1(mapTypeNames)(filter$1(function(e3) {
      return !shouldSkip(e3) && !isOperationCached(e3);
    })(u2)), filter$1(function(e3) {
      return shouldSkip(e3);
    })(u2)])))));
    return merge$1([c2, s2]);
  };
}
function reexecuteOperation(e, n) {
  return e.reexecuteOperation(makeOperation(n.kind, n, _extends$3({}, n.context, {
    requestPolicy: "network-only"
  })));
}
function subscriptionExchange(e) {
  var n = e.forwardSubscription;
  var t2 = e.enableAllOperations;
  return function(e2) {
    var a2 = e2.client;
    var i = e2.forward;
    function isSubscriptionOperation(e3) {
      var n2 = e3.kind;
      return "subscription" === n2 || !!t2 && ("query" === n2 || "mutation" === n2);
    }
    return function(e3) {
      var t3 = share$1(e3);
      var u2 = D$1(function(e4) {
        var i2 = e4.key;
        var u3 = filter$1(function(e5) {
          return "teardown" === e5.kind && e5.key === i2;
        })(t3);
        return takeUntil$1(u3)(function createSubscriptionSource(e5) {
          var t4 = n({
            key: e5.key.toString(36),
            query: print$1(e5.query),
            variables: e5.variables,
            context: _extends$3({}, e5.context)
          });
          return make$1(function(n2) {
            var r2 = n2.next;
            var o2 = n2.complete;
            var i3 = false;
            var u4;
            Promise.resolve().then(function() {
              if (i3) {
                return;
              }
              u4 = t4.subscribe({
                next: function(n3) {
                  return r2(makeResult(e5, n3));
                },
                error: function(n3) {
                  return r2(makeErrorResult(e5, n3));
                },
                complete: function() {
                  if (!i3) {
                    i3 = true;
                    if ("subscription" === e5.kind) {
                      a2.reexecuteOperation(makeOperation("teardown", e5, e5.context));
                    }
                    o2();
                  }
                }
              });
            });
            return function() {
              i3 = true;
              if (u4) {
                u4.unsubscribe();
              }
            };
          });
        }(e4));
      })(filter$1(isSubscriptionOperation)(t3));
      var c2 = i(filter$1(function(e4) {
        return !isSubscriptionOperation(e4);
      })(t3));
      return merge$1([u2, c2]);
    };
  };
}
function dedupExchange(e) {
  var n = e.forward;
  e.dispatchDebug;
  var t2 = /* @__PURE__ */ new Set();
  function filterIncomingOperation(e2) {
    var n2 = e2.key;
    var a2 = e2.kind;
    if ("teardown" === a2) {
      t2.delete(n2);
      return true;
    }
    if ("query" !== a2 && "subscription" !== a2) {
      return true;
    }
    var o2 = t2.has(n2);
    t2.add(n2);
    return !o2;
  }
  function afterOperationResult(e2) {
    if (!e2.hasNext) {
      t2.delete(e2.operation.key);
    }
  }
  return function(e2) {
    var r2 = filter$1(filterIncomingOperation)(e2);
    return H(afterOperationResult)(n(r2));
  };
}
function fetchExchange(e) {
  var n = e.forward;
  e.dispatchDebug;
  return function(e2) {
    var t2 = share$1(e2);
    var a2 = D$1(function(e3) {
      var n2 = e3.key;
      var a3 = filter$1(function(e4) {
        return "teardown" === e4.kind && e4.key === n2;
      })(t2);
      var o3 = makeFetchBody(e3);
      var i = makeFetchURL(e3, o3);
      var u2 = makeFetchOptions(e3, o3);
      return H(function(n3) {
        !n3.data ? n3.error : void 0;
      })(takeUntil$1(a3)(makeFetchSource(e3, i, u2)));
    })(filter$1(function(e3) {
      return "query" === e3.kind || "mutation" === e3.kind;
    })(t2));
    var o2 = n(filter$1(function(e3) {
      return "query" !== e3.kind && "mutation" !== e3.kind;
    })(t2));
    return merge$1([a2, o2]);
  };
}
function fallbackExchange(e) {
  e.dispatchDebug;
  return function(e2) {
    return filter$1(function() {
      return false;
    })(H(function(e3) {
      if ("teardown" !== e3.kind && false) {
        var r2 = 'No exchange has handled operations of kind "' + e3.kind + `". Check whether you've added an exchange responsible for these operations.`;
        console.warn(r2);
      }
    })(e2));
  };
}
fallbackExchange({
  dispatchDebug: noop$5
});
function composeExchanges(e) {
  return function(n) {
    var r2 = n.client;
    n.dispatchDebug;
    return e.reduceRight(function(e2, n2) {
      return n2({
        client: r2,
        forward: e2,
        dispatchDebug: function dispatchDebug$1(e3) {
        }
      });
    }, n.forward);
  };
}
function errorExchange(e) {
  var n = e.onError;
  return function(e2) {
    var r2 = e2.forward;
    return function(e3) {
      return H(function(e4) {
        var r3 = e4.error;
        if (r3) {
          n(r3, e4.operation);
        }
      })(r2(e3));
    };
  };
}
var L$2 = [dedupExchange, cacheExchange$1, fetchExchange];
var J$1 = function Client(e) {
  var n = /* @__PURE__ */ new Map();
  var r2 = /* @__PURE__ */ new Map();
  var t2 = [];
  var a2 = makeSubject$1();
  var i = a2.source;
  var u2 = a2.next;
  var c2 = false;
  function dispatchOperation(e2) {
    c2 = true;
    if (e2) {
      u2(e2);
    }
    while (e2 = t2.shift()) {
      u2(e2);
    }
    c2 = false;
  }
  function makeResultSource(e2) {
    var a3 = filter$1(function(n2) {
      return n2.operation.kind === e2.kind && n2.operation.key === e2.key && (!n2.operation.context._instance || n2.operation.context._instance === e2.context._instance);
    })(y2);
    if (f2.maskTypename) {
      a3 = map$1$1(function(e3) {
        return _extends$3({}, e3, {
          data: maskTypename(e3.data)
        });
      })(a3);
    }
    if ("mutation" === e2.kind) {
      return take$1(1)(onStart$1(function() {
        return dispatchOperation(e2);
      })(a3));
    }
    return share$1(onEnd$1(function() {
      n.delete(e2.key);
      r2.delete(e2.key);
      for (var a4 = t2.length - 1; a4 >= 0; a4--) {
        if (t2[a4].key === e2.key) {
          t2.splice(a4, 1);
        }
      }
      dispatchOperation(makeOperation("teardown", e2, e2.context));
    })(H(function(r3) {
      n.set(e2.key, r3);
    })(K$1(function(n2) {
      if ("query" !== e2.kind || n2.stale) {
        return fromValue$1(n2);
      }
      return merge$1([fromValue$1(n2), map$1$1(function() {
        return _extends$3({}, n2, {
          stale: true
        });
      })(take$1(1)(filter$1(function(n3) {
        return "query" === n3.kind && n3.key === e2.key && "cache-only" !== n3.context.requestPolicy;
      })(i)))]);
    })(takeUntil$1(filter$1(function(n2) {
      return "teardown" === n2.kind && n2.key === e2.key;
    })(i))(a3)))));
  }
  var s2 = this instanceof Client ? this : Object.create(Client.prototype);
  var f2 = _extends$3(s2, {
    url: e.url,
    fetchOptions: e.fetchOptions,
    fetch: e.fetch,
    suspense: !!e.suspense,
    requestPolicy: e.requestPolicy || "cache-first",
    preferGetMethod: !!e.preferGetMethod,
    maskTypename: !!e.maskTypename,
    operations$: i,
    reexecuteOperation: function reexecuteOperation2(e2) {
      if ("mutation" === e2.kind || r2.has(e2.key)) {
        t2.push(e2);
        if (!c2) {
          Promise.resolve().then(dispatchOperation);
        }
      }
    },
    createOperationContext: function createOperationContext(e2) {
      if (!e2) {
        e2 = {};
      }
      return _extends$3({}, {
        _instance: void 0,
        url: f2.url,
        fetchOptions: f2.fetchOptions,
        fetch: f2.fetch,
        preferGetMethod: f2.preferGetMethod
      }, e2, {
        suspense: e2.suspense || false !== e2.suspense && f2.suspense,
        requestPolicy: e2.requestPolicy || f2.requestPolicy
      });
    },
    createRequestOperation: function createRequestOperation(e2, n2, r3) {
      getOperationType(n2.query);
      var a3 = f2.createOperationContext(r3);
      if ("mutation" === e2) {
        a3._instance = [];
      }
      return makeOperation(e2, n2, a3);
    },
    executeRequestOperation: function executeRequestOperation(e2) {
      if ("mutation" === e2.kind) {
        return makeResultSource(e2);
      }
      return make$1(function(t3) {
        var a3 = r2.get(e2.key);
        if (!a3) {
          r2.set(e2.key, a3 = makeResultSource(e2));
        }
        var i2 = "cache-and-network" === e2.context.requestPolicy || "network-only" === e2.context.requestPolicy;
        return N$1(t3.next)(onEnd$1(t3.complete)(onStart$1(function() {
          var r3 = n.get(e2.key);
          if ("subscription" === e2.kind) {
            return dispatchOperation(e2);
          } else if (i2) {
            dispatchOperation(e2);
          }
          if (null != r3 && r3 === n.get(e2.key)) {
            t3.next(i2 ? _extends$3({}, r3, {
              stale: true
            }) : r3);
          } else if (!i2) {
            dispatchOperation(e2);
          }
        })(a3))).unsubscribe;
      });
    },
    executeQuery: function executeQuery(e2, n2) {
      var r3 = f2.createRequestOperation("query", e2, n2);
      return f2.executeRequestOperation(r3);
    },
    executeSubscription: function executeSubscription(e2, n2) {
      var r3 = f2.createRequestOperation("subscription", e2, n2);
      return f2.executeRequestOperation(r3);
    },
    executeMutation: function executeMutation(e2, n2) {
      var r3 = f2.createRequestOperation("mutation", e2, n2);
      return f2.executeRequestOperation(r3);
    },
    query: function query2(e2, n2, r3) {
      if (!r3 || "boolean" != typeof r3.suspense) {
        r3 = _extends$3({}, r3, {
          suspense: false
        });
      }
      return withPromise(f2.executeQuery(createRequest(e2, n2), r3));
    },
    readQuery: function readQuery2(e2, n2, r3) {
      var t3 = null;
      N$1(function(e3) {
        t3 = e3;
      })(f2.query(e2, n2, r3)).unsubscribe();
      return t3;
    },
    subscription: function subscription(e2, n2, r3) {
      return f2.executeSubscription(createRequest(e2, n2), r3);
    },
    mutation: function mutation(e2, n2, r3) {
      return withPromise(f2.executeMutation(createRequest(e2, n2), r3));
    }
  });
  var p2 = noop$5;
  var h2 = composeExchanges(void 0 !== e.exchanges ? e.exchanges : L$2);
  var y2 = share$1(h2({
    client: f2,
    dispatchDebug: p2,
    forward: fallbackExchange({
      dispatchDebug: p2
    })
  })(i));
  publish$1(y2);
  return f2;
};
var W = J$1;
function _extends$2() {
  return (_extends$2 = Object.assign || function(e) {
    for (var u2 = 1; u2 < arguments.length; u2++) {
      var n = arguments[u2];
      for (var r2 in n) {
        if (Object.prototype.hasOwnProperty.call(n, r2)) {
          e[r2] = n[r2];
        }
      }
    }
    return e;
  }).apply(this, arguments);
}
function install(u2, t2) {
  var a2;
  if (!isRef(t2)) {
    a2 = ref(t2 instanceof J$1 ? t2 : new J$1(t2));
  } else {
    a2 = t2;
  }
  u2.provide("$urql", a2);
}
function useClient() {
  var e = inject("$urql");
  return e;
}
function unwrapPossibleProxy(e) {
  return e && isRef(e) ? e.value : e;
}
var y$1 = {
  flush: "pre"
};
function useQuery(e) {
  return callUseQuery(e);
}
function callUseQuery(e, t2, a2) {
  if (void 0 === t2) {
    t2 = useClient();
  }
  if (void 0 === a2) {
    a2 = [];
  }
  var i = reactive(e);
  var l2 = ref();
  var v2 = ref(false);
  var p2 = ref(false);
  var d2 = ref();
  var b2 = ref();
  var h2 = ref();
  var x2 = isRef(e.pause) ? e.pause : ref(!!e.pause);
  var w2 = ref(createRequest(i.query, unwrapPossibleProxy(i.variables)));
  var P2 = ref();
  a2.push(watchEffect(function() {
    var e2 = createRequest(i.query, unwrapPossibleProxy(i.variables));
    if (w2.value.key !== e2.key) {
      w2.value = e2;
    }
  }, y$1));
  a2.push(watchEffect(function() {
    P2.value = !x2.value ? t2.value.executeQuery(w2.value, _extends$2({}, {
      requestPolicy: i.requestPolicy
    }, i.context)) : void 0;
  }, y$1));
  var Q = {
    data: l2,
    stale: v2,
    error: d2,
    operation: b2,
    extensions: h2,
    fetching: p2,
    isPaused: x2,
    executeQuery: function executeQuery(e2) {
      var u2 = P2.value = t2.value.executeQuery(w2.value, _extends$2({}, {
        requestPolicy: i.requestPolicy
      }, i.context, e2));
      return _extends$2({}, S2, {
        then: function then(e3, n) {
          return new Promise(function(e4) {
            var n2 = false;
            var r2 = N$1(function() {
              if (!Q.fetching.value && !Q.stale.value) {
                if (r2) {
                  r2.unsubscribe();
                }
                n2 = true;
                e4(Q);
              }
            })(u2);
            if (n2) {
              r2.unsubscribe();
            }
          }).then(e3, n);
        }
      });
    },
    pause: function pause() {
      x2.value = true;
    },
    resume: function resume() {
      x2.value = false;
    }
  };
  a2.push(watchEffect(function(e2) {
    if (P2.value) {
      p2.value = true;
      v2.value = false;
      e2(N$1(function(e3) {
        l2.value = e3.data;
        v2.value = !!e3.stale;
        p2.value = false;
        d2.value = e3.error;
        b2.value = e3.operation;
        h2.value = e3.extensions;
      })(onEnd$1(function() {
        p2.value = false;
        v2.value = false;
      })(P2.value)).unsubscribe);
    } else {
      p2.value = false;
      v2.value = false;
    }
  }, {
    flush: "sync"
  }));
  var S2 = _extends$2({}, Q, {
    then: function then(e2, u2) {
      return new Promise(function(e3) {
        if (!P2.value) {
          return e3(Q);
        }
        var u3 = false;
        var n = N$1(function() {
          if (!Q.fetching.value && !Q.stale.value) {
            if (n) {
              n.unsubscribe();
            }
            u3 = true;
            e3(Q);
          }
        })(P2.value);
        if (u3) {
          n.unsubscribe();
        }
      }).then(e2, u2);
    }
  });
  return S2;
}
function useMutation(e) {
  return callUseMutation(e);
}
function callUseMutation(e, n) {
  if (void 0 === n) {
    n = useClient();
  }
  var t2 = ref();
  var a2 = ref(false);
  var i = ref(false);
  var o2 = ref();
  var s2 = ref();
  var l2 = ref();
  return {
    data: t2,
    stale: a2,
    fetching: i,
    error: o2,
    operation: s2,
    extensions: l2,
    executeMutation: function executeMutation(r2, v2) {
      i.value = true;
      return toPromise$1(take$1(1)(n.value.executeMutation(createRequest(e, unwrapPossibleProxy(r2)), v2 || {}))).then(function(e2) {
        t2.value = e2.data;
        a2.value = !!e2.stale;
        i.value = false;
        o2.value = e2.error;
        s2.value = e2.operation;
        l2.value = e2.extensions;
        return e2;
      });
    }
  };
}
var b$1 = {
  flush: "pre"
};
function useSubscription(e, u2) {
  return callUseSubscription(e, u2);
}
function callUseSubscription(e, t2, a2, i) {
  if (void 0 === a2) {
    a2 = useClient();
  }
  if (void 0 === i) {
    i = [];
  }
  var l2 = reactive(e);
  var v2 = ref();
  var p2 = ref(false);
  var d2 = ref(false);
  var y2 = ref();
  var h2 = ref();
  var x2 = ref();
  var w2 = ref(t2);
  var P2 = isRef(e.pause) ? e.pause : ref(!!e.pause);
  var Q = ref(createRequest(l2.query, unwrapPossibleProxy(l2.variables)));
  var S2 = ref();
  i.push(watchEffect(function() {
    var e2 = createRequest(l2.query, unwrapPossibleProxy(l2.variables));
    if (Q.value.key !== e2.key) {
      Q.value = e2;
    }
  }, b$1));
  i.push(watchEffect(function() {
    S2.value = !P2.value ? a2.value.executeSubscription(Q.value, _extends$2({}, l2.context)) : void 0;
  }, b$1));
  i.push(watchEffect(function(e2) {
    if (S2.value) {
      d2.value = true;
      e2(N$1(function(e3) {
        d2.value = true;
        v2.value = void 0 !== e3.data ? "function" == typeof w2.value ? w2.value(v2.value, e3.data) : e3.data : e3.data, y2.value = e3.error;
        x2.value = e3.extensions;
        p2.value = !!e3.stale;
        h2.value = e3.operation;
      })(onEnd$1(function() {
        d2.value = false;
      })(S2.value)).unsubscribe);
    } else {
      d2.value = false;
    }
  }, b$1));
  var m2 = {
    data: v2,
    stale: p2,
    error: y2,
    operation: h2,
    extensions: x2,
    fetching: d2,
    isPaused: P2,
    executeSubscription: function executeSubscription(e2) {
      S2.value = a2.value.executeSubscription(Q.value, _extends$2({}, l2.context, e2));
      return m2;
    },
    pause: function pause() {
      P2.value = true;
    },
    resume: function resume() {
      P2.value = false;
    }
  };
  return m2;
}
const RUN_ALL_SPECS_KEY = "__all";
const RUN_ALL_SPECS = {
  name: "All E2E Specs",
  absolute: RUN_ALL_SPECS_KEY,
  relative: RUN_ALL_SPECS_KEY,
  baseName: RUN_ALL_SPECS_KEY,
  fileName: RUN_ALL_SPECS_KEY
};
const CY_IN_CY_SIMULATE_RUN_MODE = "CY_IN_CY_SIMULATE_RUN_MODE";
const BannerIds = {
  ACI_082022_LOGIN: "aci_082022_login",
  ACI_082022_CREATE_ORG: "aci_082022_createOrganization",
  ACI_082022_CONNECT_PROJECT: "aci_082022_connectProject",
  ACI_082022_RECORD: "aci_082022_record",
  CT_052023_AVAILABLE: "ct_052023_available",
  ACI_052023_NO_RUNS_FOUND_FOR_BRANCH: "aci_052023_noRunsFoundForBranch",
  ACI_052023_GIT_NOT_DETECTED: "aci_052023_gitNotDetected"
};
const isRunMode = window.location.href.includes(CY_IN_CY_SIMULATE_RUN_MODE) || window.__CYPRESS_MODE__ === "run" && window.top === window;
const _hoisted_1$1z = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1q = /* @__PURE__ */ createBaseVNode("path", {
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M2 8C2 4.68629 4.68629 2 8 2C11.3137 2 14 4.68629 14 8C14 11.3137 11.3137 14 8 14C4.68629 14 2 11.3137 2 8ZM8 0C3.58172 0 0 3.58172 0 8C0 12.4183 3.58172 16 8 16C12.4183 16 16 12.4183 16 8C16 3.58172 12.4183 0 8 0ZM9 5C9 4.44772 8.55228 4 8 4C7.44772 4 7 4.44772 7 5V8C7 8.55228 7.44772 9 8 9C8.55228 9 9 8.55228 9 8V5ZM8 12C8.55228 12 9 11.5523 9 11C9 10.4477 8.55228 10 8 10C7.44772 10 7 10.4477 7 11C7 11.5523 7.44772 12 8 12Z",
  fill: "#DB7903",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$1d = [
  _hoisted_2$1q
];
function render$R(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1z, _hoisted_3$1d);
}
const __unplugin_components_1$8 = { name: "cy-errored-outline_x16", render: render$R };
/*!
  * shared v9.2.0-beta.7
  * (c) 2021 kazuya kawaguchi
  * Released under the MIT License.
  */
const hasSymbol$1 = typeof Symbol === "function" && typeof Symbol.toStringTag === "symbol";
const makeSymbol = (name2) => hasSymbol$1 ? Symbol(name2) : name2;
const generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source });
const friendlyJSONstringify = (json) => JSON.stringify(json).replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029").replace(/\u0027/g, "\\u0027");
const isNumber$1 = (val) => typeof val === "number" && isFinite(val);
const isDate = (val) => toTypeString(val) === "[object Date]";
const isRegExp$1 = (val) => toTypeString(val) === "[object RegExp]";
const isEmptyObject = (val) => isPlainObject$3(val) && Object.keys(val).length === 0;
function warn(msg, err) {
  if (typeof console !== "undefined") {
    console.warn(`[intlify] ` + msg);
    if (err) {
      console.warn(err.stack);
    }
  }
}
const assign$4 = Object.assign;
let _globalThis$2;
const getGlobalThis = () => {
  return _globalThis$2 || (_globalThis$2 = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {});
};
function escapeHtml$2(rawText) {
  return rawText.replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");
}
const hasOwnProperty$3 = Object.prototype.hasOwnProperty;
function hasOwn(obj, key) {
  return hasOwnProperty$3.call(obj, key);
}
const isArray$1 = Array.isArray;
const isFunction$3 = (val) => typeof val === "function";
const isString$3 = (val) => typeof val === "string";
const isBoolean = (val) => typeof val === "boolean";
const isObject$5 = (val) => (
  // eslint-disable-line
  val !== null && typeof val === "object"
);
const objectToString$1 = Object.prototype.toString;
const toTypeString = (value) => objectToString$1.call(value);
const isPlainObject$3 = (val) => toTypeString(val) === "[object Object]";
const toDisplayString = (val) => {
  return val == null ? "" : isArray$1(val) || isPlainObject$3(val) && val.toString === objectToString$1 ? JSON.stringify(val, null, 2) : String(val);
};
/*!
  * message-compiler v9.2.0-beta.7
  * (c) 2021 kazuya kawaguchi
  * Released under the MIT License.
  */
const CompileErrorCodes = {
  // tokenizer error codes
  EXPECTED_TOKEN: 1,
  INVALID_TOKEN_IN_PLACEHOLDER: 2,
  UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,
  UNKNOWN_ESCAPE_SEQUENCE: 4,
  INVALID_UNICODE_ESCAPE_SEQUENCE: 5,
  UNBALANCED_CLOSING_BRACE: 6,
  UNTERMINATED_CLOSING_BRACE: 7,
  EMPTY_PLACEHOLDER: 8,
  NOT_ALLOW_NEST_PLACEHOLDER: 9,
  INVALID_LINKED_FORMAT: 10,
  // parser error codes
  MUST_HAVE_MESSAGES_IN_PLURAL: 11,
  UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,
  UNEXPECTED_EMPTY_LINKED_KEY: 13,
  UNEXPECTED_LEXICAL_ANALYSIS: 14,
  // Special value for higher-order compilers to pick up the last code
  // to avoid collision of error codes. This should always be kept as the last
  // item.
  __EXTEND_POINT__: 15
};
function createCompileError(code3, loc, options2 = {}) {
  const { domain, messages, args } = options2;
  const msg = code3;
  const error2 = new SyntaxError(String(msg));
  error2.code = code3;
  if (loc) {
    error2.location = loc;
  }
  error2.domain = domain;
  return error2;
}
/*!
  * devtools-if v9.2.0-beta.7
  * (c) 2021 kazuya kawaguchi
  * Released under the MIT License.
  */
const IntlifyDevToolsHooks = {
  I18nInit: "i18n:init",
  FunctionTranslate: "function:translate"
};
/*!
  * core-base v9.2.0-beta.7
  * (c) 2021 kazuya kawaguchi
  * Released under the MIT License.
  */
const pathStateMachine = [];
pathStateMachine[
  0
  /* BEFORE_PATH */
] = {
  [
    "w"
    /* WORKSPACE */
  ]: [
    0
    /* BEFORE_PATH */
  ],
  [
    "i"
    /* IDENT */
  ]: [
    3,
    0
    /* APPEND */
  ],
  [
    "["
    /* LEFT_BRACKET */
  ]: [
    4
    /* IN_SUB_PATH */
  ],
  [
    "o"
    /* END_OF_FAIL */
  ]: [
    7
    /* AFTER_PATH */
  ]
};
pathStateMachine[
  1
  /* IN_PATH */
] = {
  [
    "w"
    /* WORKSPACE */
  ]: [
    1
    /* IN_PATH */
  ],
  [
    "."
    /* DOT */
  ]: [
    2
    /* BEFORE_IDENT */
  ],
  [
    "["
    /* LEFT_BRACKET */
  ]: [
    4
    /* IN_SUB_PATH */
  ],
  [
    "o"
    /* END_OF_FAIL */
  ]: [
    7
    /* AFTER_PATH */
  ]
};
pathStateMachine[
  2
  /* BEFORE_IDENT */
] = {
  [
    "w"
    /* WORKSPACE */
  ]: [
    2
    /* BEFORE_IDENT */
  ],
  [
    "i"
    /* IDENT */
  ]: [
    3,
    0
    /* APPEND */
  ],
  [
    "0"
    /* ZERO */
  ]: [
    3,
    0
    /* APPEND */
  ]
};
pathStateMachine[
  3
  /* IN_IDENT */
] = {
  [
    "i"
    /* IDENT */
  ]: [
    3,
    0
    /* APPEND */
  ],
  [
    "0"
    /* ZERO */
  ]: [
    3,
    0
    /* APPEND */
  ],
  [
    "w"
    /* WORKSPACE */
  ]: [
    1,
    1
    /* PUSH */
  ],
  [
    "."
    /* DOT */
  ]: [
    2,
    1
    /* PUSH */
  ],
  [
    "["
    /* LEFT_BRACKET */
  ]: [
    4,
    1
    /* PUSH */
  ],
  [
    "o"
    /* END_OF_FAIL */
  ]: [
    7,
    1
    /* PUSH */
  ]
};
pathStateMachine[
  4
  /* IN_SUB_PATH */
] = {
  [
    "'"
    /* SINGLE_QUOTE */
  ]: [
    5,
    0
    /* APPEND */
  ],
  [
    '"'
    /* DOUBLE_QUOTE */
  ]: [
    6,
    0
    /* APPEND */
  ],
  [
    "["
    /* LEFT_BRACKET */
  ]: [
    4,
    2
    /* INC_SUB_PATH_DEPTH */
  ],
  [
    "]"
    /* RIGHT_BRACKET */
  ]: [
    1,
    3
    /* PUSH_SUB_PATH */
  ],
  [
    "o"
    /* END_OF_FAIL */
  ]: 8,
  [
    "l"
    /* ELSE */
  ]: [
    4,
    0
    /* APPEND */
  ]
};
pathStateMachine[
  5
  /* IN_SINGLE_QUOTE */
] = {
  [
    "'"
    /* SINGLE_QUOTE */
  ]: [
    4,
    0
    /* APPEND */
  ],
  [
    "o"
    /* END_OF_FAIL */
  ]: 8,
  [
    "l"
    /* ELSE */
  ]: [
    5,
    0
    /* APPEND */
  ]
};
pathStateMachine[
  6
  /* IN_DOUBLE_QUOTE */
] = {
  [
    '"'
    /* DOUBLE_QUOTE */
  ]: [
    4,
    0
    /* APPEND */
  ],
  [
    "o"
    /* END_OF_FAIL */
  ]: 8,
  [
    "l"
    /* ELSE */
  ]: [
    6,
    0
    /* APPEND */
  ]
};
const literalValueRE = /^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;
function isLiteral(exp) {
  return literalValueRE.test(exp);
}
function stripQuotes(str) {
  const a2 = str.charCodeAt(0);
  const b2 = str.charCodeAt(str.length - 1);
  return a2 === b2 && (a2 === 34 || a2 === 39) ? str.slice(1, -1) : str;
}
function getPathCharType(ch) {
  if (ch === void 0 || ch === null) {
    return "o";
  }
  const code3 = ch.charCodeAt(0);
  switch (code3) {
    case 91:
    case 93:
    case 46:
    case 34:
    case 39:
      return ch;
    case 95:
    case 36:
    case 45:
      return "i";
    case 9:
    case 10:
    case 13:
    case 160:
    case 65279:
    case 8232:
    case 8233:
      return "w";
  }
  return "i";
}
function formatSubPath(path) {
  const trimmed = path.trim();
  if (path.charAt(0) === "0" && isNaN(parseInt(path))) {
    return false;
  }
  return isLiteral(trimmed) ? stripQuotes(trimmed) : "*" + trimmed;
}
function parse$3(path) {
  const keys = [];
  let index2 = -1;
  let mode = 0;
  let subPathDepth = 0;
  let c2;
  let key;
  let newChar;
  let type2;
  let transition;
  let action3;
  let typeMap;
  const actions = [];
  actions[
    0
    /* APPEND */
  ] = () => {
    if (key === void 0) {
      key = newChar;
    } else {
      key += newChar;
    }
  };
  actions[
    1
    /* PUSH */
  ] = () => {
    if (key !== void 0) {
      keys.push(key);
      key = void 0;
    }
  };
  actions[
    2
    /* INC_SUB_PATH_DEPTH */
  ] = () => {
    actions[
      0
      /* APPEND */
    ]();
    subPathDepth++;
  };
  actions[
    3
    /* PUSH_SUB_PATH */
  ] = () => {
    if (subPathDepth > 0) {
      subPathDepth--;
      mode = 4;
      actions[
        0
        /* APPEND */
      ]();
    } else {
      subPathDepth = 0;
      if (key === void 0) {
        return false;
      }
      key = formatSubPath(key);
      if (key === false) {
        return false;
      } else {
        actions[
          1
          /* PUSH */
        ]();
      }
    }
  };
  function maybeUnescapeQuote() {
    const nextChar = path[index2 + 1];
    if (mode === 5 && nextChar === "'" || mode === 6 && nextChar === '"') {
      index2++;
      newChar = "\\" + nextChar;
      actions[
        0
        /* APPEND */
      ]();
      return true;
    }
  }
  while (mode !== null) {
    index2++;
    c2 = path[index2];
    if (c2 === "\\" && maybeUnescapeQuote()) {
      continue;
    }
    type2 = getPathCharType(c2);
    typeMap = pathStateMachine[mode];
    transition = typeMap[type2] || typeMap[
      "l"
      /* ELSE */
    ] || 8;
    if (transition === 8) {
      return;
    }
    mode = transition[0];
    if (transition[1] !== void 0) {
      action3 = actions[transition[1]];
      if (action3) {
        newChar = c2;
        if (action3() === false) {
          return;
        }
      }
    }
    if (mode === 7) {
      return keys;
    }
  }
}
const cache$1 = /* @__PURE__ */ new Map();
function resolveWithKeyValue(obj, path) {
  return isObject$5(obj) ? obj[path] : null;
}
function resolveValue(obj, path) {
  if (!isObject$5(obj)) {
    return null;
  }
  let hit = cache$1.get(path);
  if (!hit) {
    hit = parse$3(path);
    if (hit) {
      cache$1.set(path, hit);
    }
  }
  if (!hit) {
    return null;
  }
  const len = hit.length;
  let last = obj;
  let i = 0;
  while (i < len) {
    const val = last[hit[i]];
    if (val === void 0) {
      return null;
    }
    last = val;
    i++;
  }
  return last;
}
const DEFAULT_MODIFIER = (str) => str;
const DEFAULT_MESSAGE = (ctx) => "";
const DEFAULT_MESSAGE_DATA_TYPE = "text";
const DEFAULT_NORMALIZE = (values) => values.length === 0 ? "" : values.join("");
const DEFAULT_INTERPOLATE = toDisplayString;
function pluralDefault(choice, choicesLength) {
  choice = Math.abs(choice);
  if (choicesLength === 2) {
    return choice ? choice > 1 ? 1 : 0 : 1;
  }
  return choice ? Math.min(choice, 2) : 0;
}
function getPluralIndex(options2) {
  const index2 = isNumber$1(options2.pluralIndex) ? options2.pluralIndex : -1;
  return options2.named && (isNumber$1(options2.named.count) || isNumber$1(options2.named.n)) ? isNumber$1(options2.named.count) ? options2.named.count : isNumber$1(options2.named.n) ? options2.named.n : index2 : index2;
}
function normalizeNamed(pluralIndex, props) {
  if (!props.count) {
    props.count = pluralIndex;
  }
  if (!props.n) {
    props.n = pluralIndex;
  }
}
function createMessageContext(options2 = {}) {
  const locale = options2.locale;
  const pluralIndex = getPluralIndex(options2);
  const pluralRule = isObject$5(options2.pluralRules) && isString$3(locale) && isFunction$3(options2.pluralRules[locale]) ? options2.pluralRules[locale] : pluralDefault;
  const orgPluralRule = isObject$5(options2.pluralRules) && isString$3(locale) && isFunction$3(options2.pluralRules[locale]) ? pluralDefault : void 0;
  const plural = (messages) => messages[pluralRule(pluralIndex, messages.length, orgPluralRule)];
  const _list = options2.list || [];
  const list3 = (index2) => _list[index2];
  const _named = options2.named || {};
  isNumber$1(options2.pluralIndex) && normalizeNamed(pluralIndex, _named);
  const named = (key) => _named[key];
  function message(key) {
    const msg = isFunction$3(options2.messages) ? options2.messages(key) : isObject$5(options2.messages) ? options2.messages[key] : false;
    return !msg ? options2.parent ? options2.parent.message(key) : DEFAULT_MESSAGE : msg;
  }
  const _modifier = (name2) => options2.modifiers ? options2.modifiers[name2] : DEFAULT_MODIFIER;
  const normalize4 = isPlainObject$3(options2.processor) && isFunction$3(options2.processor.normalize) ? options2.processor.normalize : DEFAULT_NORMALIZE;
  const interpolate = isPlainObject$3(options2.processor) && isFunction$3(options2.processor.interpolate) ? options2.processor.interpolate : DEFAULT_INTERPOLATE;
  const type2 = isPlainObject$3(options2.processor) && isString$3(options2.processor.type) ? options2.processor.type : DEFAULT_MESSAGE_DATA_TYPE;
  const ctx = {
    [
      "list"
      /* LIST */
    ]: list3,
    [
      "named"
      /* NAMED */
    ]: named,
    [
      "plural"
      /* PLURAL */
    ]: plural,
    [
      "linked"
      /* LINKED */
    ]: (key, modifier) => {
      const msg = message(key)(ctx);
      return isString$3(modifier) ? _modifier(modifier)(msg) : msg;
    },
    [
      "message"
      /* MESSAGE */
    ]: message,
    [
      "type"
      /* TYPE */
    ]: type2,
    [
      "interpolate"
      /* INTERPOLATE */
    ]: interpolate,
    [
      "normalize"
      /* NORMALIZE */
    ]: normalize4
  };
  return ctx;
}
let devtools = null;
function setDevToolsHook(hook) {
  devtools = hook;
}
function initI18nDevTools(i18n, version2, meta) {
  devtools && devtools.emit(IntlifyDevToolsHooks.I18nInit, {
    timestamp: Date.now(),
    i18n,
    version: version2,
    meta
  });
}
const translateDevTools = /* @__PURE__ */ createDevToolsHook(IntlifyDevToolsHooks.FunctionTranslate);
function createDevToolsHook(hook) {
  return (payloads) => devtools && devtools.emit(hook, payloads);
}
function fallbackWithSimple(ctx, fallback, start2) {
  return [.../* @__PURE__ */ new Set([
    start2,
    ...isArray$1(fallback) ? fallback : isObject$5(fallback) ? Object.keys(fallback) : isString$3(fallback) ? [fallback] : [start2]
  ])];
}
function fallbackWithLocaleChain(ctx, fallback, start2) {
  const startLocale = isString$3(start2) ? start2 : DEFAULT_LOCALE;
  const context2 = ctx;
  if (!context2.__localeChainCache) {
    context2.__localeChainCache = /* @__PURE__ */ new Map();
  }
  let chain = context2.__localeChainCache.get(startLocale);
  if (!chain) {
    chain = [];
    let block3 = [start2];
    while (isArray$1(block3)) {
      block3 = appendBlockToChain(chain, block3, fallback);
    }
    const defaults2 = isArray$1(fallback) || !isPlainObject$3(fallback) ? fallback : fallback["default"] ? fallback["default"] : null;
    block3 = isString$3(defaults2) ? [defaults2] : defaults2;
    if (isArray$1(block3)) {
      appendBlockToChain(chain, block3, false);
    }
    context2.__localeChainCache.set(startLocale, chain);
  }
  return chain;
}
function appendBlockToChain(chain, block3, blocks) {
  let follow = true;
  for (let i = 0; i < block3.length && isBoolean(follow); i++) {
    const locale = block3[i];
    if (isString$3(locale)) {
      follow = appendLocaleToChain(chain, block3[i], blocks);
    }
  }
  return follow;
}
function appendLocaleToChain(chain, locale, blocks) {
  let follow;
  const tokens = locale.split("-");
  do {
    const target2 = tokens.join("-");
    follow = appendItemToChain(chain, target2, blocks);
    tokens.splice(-1, 1);
  } while (tokens.length && follow === true);
  return follow;
}
function appendItemToChain(chain, target2, blocks) {
  let follow = false;
  if (!chain.includes(target2)) {
    follow = true;
    if (target2) {
      follow = target2[target2.length - 1] !== "!";
      const locale = target2.replace(/!/g, "");
      chain.push(locale);
      if ((isArray$1(blocks) || isPlainObject$3(blocks)) && blocks[locale]) {
        follow = blocks[locale];
      }
    }
  }
  return follow;
}
const VERSION$4 = "9.2.0-beta.7";
const NOT_REOSLVED = -1;
const DEFAULT_LOCALE = "en-US";
const MISSING_RESOLVE_VALUE = "";
function getDefaultLinkedModifiers() {
  return {
    upper: (val) => isString$3(val) ? val.toUpperCase() : val,
    lower: (val) => isString$3(val) ? val.toLowerCase() : val,
    // prettier-ignore
    capitalize: (val) => isString$3(val) ? `${val.charAt(0).toLocaleUpperCase()}${val.substr(1)}` : val
  };
}
let _compiler;
let _resolver;
function registerMessageResolver(resolver) {
  _resolver = resolver;
}
let _fallbacker;
function registerLocaleFallbacker(fallbacker) {
  _fallbacker = fallbacker;
}
let _additionalMeta = null;
const setAdditionalMeta = (meta) => {
  _additionalMeta = meta;
};
const getAdditionalMeta = () => _additionalMeta;
let _cid = 0;
function createCoreContext(options2 = {}) {
  const version2 = isString$3(options2.version) ? options2.version : VERSION$4;
  const locale = isString$3(options2.locale) ? options2.locale : DEFAULT_LOCALE;
  const fallbackLocale = isArray$1(options2.fallbackLocale) || isPlainObject$3(options2.fallbackLocale) || isString$3(options2.fallbackLocale) || options2.fallbackLocale === false ? options2.fallbackLocale : locale;
  const messages = isPlainObject$3(options2.messages) ? options2.messages : { [locale]: {} };
  const datetimeFormats = isPlainObject$3(options2.datetimeFormats) ? options2.datetimeFormats : { [locale]: {} };
  const numberFormats = isPlainObject$3(options2.numberFormats) ? options2.numberFormats : { [locale]: {} };
  const modifiers = assign$4({}, options2.modifiers || {}, getDefaultLinkedModifiers());
  const pluralRules = options2.pluralRules || {};
  const missing = isFunction$3(options2.missing) ? options2.missing : null;
  const missingWarn = isBoolean(options2.missingWarn) || isRegExp$1(options2.missingWarn) ? options2.missingWarn : true;
  const fallbackWarn = isBoolean(options2.fallbackWarn) || isRegExp$1(options2.fallbackWarn) ? options2.fallbackWarn : true;
  const fallbackFormat = !!options2.fallbackFormat;
  const unresolving = !!options2.unresolving;
  const postTranslation = isFunction$3(options2.postTranslation) ? options2.postTranslation : null;
  const processor = isPlainObject$3(options2.processor) ? options2.processor : null;
  const warnHtmlMessage = isBoolean(options2.warnHtmlMessage) ? options2.warnHtmlMessage : true;
  const escapeParameter = !!options2.escapeParameter;
  const messageCompiler = isFunction$3(options2.messageCompiler) ? options2.messageCompiler : _compiler;
  const messageResolver = isFunction$3(options2.messageResolver) ? options2.messageResolver : _resolver || resolveWithKeyValue;
  const localeFallbacker = isFunction$3(options2.localeFallbacker) ? options2.localeFallbacker : _fallbacker || fallbackWithSimple;
  const onWarn = isFunction$3(options2.onWarn) ? options2.onWarn : warn;
  const internalOptions = options2;
  const __datetimeFormatters = isObject$5(internalOptions.__datetimeFormatters) ? internalOptions.__datetimeFormatters : /* @__PURE__ */ new Map();
  const __numberFormatters = isObject$5(internalOptions.__numberFormatters) ? internalOptions.__numberFormatters : /* @__PURE__ */ new Map();
  const __meta = isObject$5(internalOptions.__meta) ? internalOptions.__meta : {};
  _cid++;
  const context2 = {
    version: version2,
    cid: _cid,
    locale,
    fallbackLocale,
    messages,
    modifiers,
    pluralRules,
    missing,
    missingWarn,
    fallbackWarn,
    fallbackFormat,
    unresolving,
    postTranslation,
    processor,
    warnHtmlMessage,
    escapeParameter,
    messageCompiler,
    messageResolver,
    localeFallbacker,
    onWarn,
    __meta
  };
  {
    context2.datetimeFormats = datetimeFormats;
    context2.numberFormats = numberFormats;
    context2.__datetimeFormatters = __datetimeFormatters;
    context2.__numberFormatters = __numberFormatters;
  }
  if (__INTLIFY_PROD_DEVTOOLS__) {
    initI18nDevTools(context2, version2, __meta);
  }
  return context2;
}
function handleMissing(context2, key, locale, missingWarn, type2) {
  const { missing, onWarn } = context2;
  if (missing !== null) {
    const ret = missing(context2, locale, key, type2);
    return isString$3(ret) ? ret : key;
  } else {
    return key;
  }
}
function updateFallbackLocale(ctx, locale, fallback) {
  const context2 = ctx;
  context2.__localeChainCache = /* @__PURE__ */ new Map();
  ctx.localeFallbacker(ctx, fallback, locale);
}
let code$2 = CompileErrorCodes.__EXTEND_POINT__;
const inc$1 = () => code$2++;
const CoreErrorCodes = {
  INVALID_ARGUMENT: code$2,
  INVALID_DATE_ARGUMENT: inc$1(),
  INVALID_ISO_DATE_ARGUMENT: inc$1(),
  __EXTEND_POINT__: inc$1()
  // 18
};
function createCoreError(code3) {
  return createCompileError(code3, null, void 0);
}
const NOOP_MESSAGE_FUNCTION = () => "";
const isMessageFunction = (val) => isFunction$3(val);
function translate(context2, ...args) {
  const { fallbackFormat, postTranslation, unresolving, fallbackLocale, messages } = context2;
  const [key, options2] = parseTranslateArgs(...args);
  const missingWarn = isBoolean(options2.missingWarn) ? options2.missingWarn : context2.missingWarn;
  const fallbackWarn = isBoolean(options2.fallbackWarn) ? options2.fallbackWarn : context2.fallbackWarn;
  const escapeParameter = isBoolean(options2.escapeParameter) ? options2.escapeParameter : context2.escapeParameter;
  const resolvedMessage = !!options2.resolvedMessage;
  const defaultMsgOrKey = isString$3(options2.default) || isBoolean(options2.default) ? !isBoolean(options2.default) ? options2.default : key : fallbackFormat ? key : "";
  const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== "";
  const locale = isString$3(options2.locale) ? options2.locale : context2.locale;
  escapeParameter && escapeParams(options2);
  let [format3, targetLocale, message] = !resolvedMessage ? resolveMessageFormat(context2, key, locale, fallbackLocale, fallbackWarn, missingWarn) : [
    key,
    locale,
    messages[locale] || {}
  ];
  let cacheBaseKey = key;
  if (!resolvedMessage && !(isString$3(format3) || isMessageFunction(format3))) {
    if (enableDefaultMsg) {
      format3 = defaultMsgOrKey;
      cacheBaseKey = format3;
    }
  }
  if (!resolvedMessage && (!(isString$3(format3) || isMessageFunction(format3)) || !isString$3(targetLocale))) {
    return unresolving ? NOT_REOSLVED : key;
  }
  let occurred = false;
  const errorDetector = () => {
    occurred = true;
  };
  const msg = !isMessageFunction(format3) ? compileMessageFormat(context2, key, targetLocale, format3, cacheBaseKey, errorDetector) : format3;
  if (occurred) {
    return format3;
  }
  const ctxOptions = getMessageContextOptions(context2, targetLocale, message, options2);
  const msgContext = createMessageContext(ctxOptions);
  const messaged = evaluateMessage(context2, msg, msgContext);
  const ret = postTranslation ? postTranslation(messaged) : messaged;
  if (__INTLIFY_PROD_DEVTOOLS__) {
    const payloads = {
      timestamp: Date.now(),
      key: isString$3(key) ? key : isMessageFunction(format3) ? format3.key : "",
      locale: targetLocale || (isMessageFunction(format3) ? format3.locale : ""),
      format: isString$3(format3) ? format3 : isMessageFunction(format3) ? format3.source : "",
      message: ret
    };
    payloads.meta = assign$4({}, context2.__meta, getAdditionalMeta() || {});
    translateDevTools(payloads);
  }
  return ret;
}
function escapeParams(options2) {
  if (isArray$1(options2.list)) {
    options2.list = options2.list.map((item) => isString$3(item) ? escapeHtml$2(item) : item);
  } else if (isObject$5(options2.named)) {
    Object.keys(options2.named).forEach((key) => {
      if (isString$3(options2.named[key])) {
        options2.named[key] = escapeHtml$2(options2.named[key]);
      }
    });
  }
}
function resolveMessageFormat(context2, key, locale, fallbackLocale, fallbackWarn, missingWarn) {
  const { messages, onWarn, messageResolver: resolveValue2, localeFallbacker } = context2;
  const locales = localeFallbacker(context2, fallbackLocale, locale);
  let message = {};
  let targetLocale;
  let format3 = null;
  const type2 = "translate";
  for (let i = 0; i < locales.length; i++) {
    targetLocale = locales[i];
    message = messages[targetLocale] || {};
    if ((format3 = resolveValue2(message, key)) === null) {
      format3 = message[key];
    }
    if (isString$3(format3) || isFunction$3(format3))
      break;
    const missingRet = handleMissing(
      context2,
      // eslint-disable-line @typescript-eslint/no-explicit-any
      key,
      targetLocale,
      missingWarn,
      type2
    );
    if (missingRet !== key) {
      format3 = missingRet;
    }
  }
  return [format3, targetLocale, message];
}
function compileMessageFormat(context2, key, targetLocale, format3, cacheBaseKey, errorDetector) {
  const { messageCompiler, warnHtmlMessage } = context2;
  if (isMessageFunction(format3)) {
    const msg2 = format3;
    msg2.locale = msg2.locale || targetLocale;
    msg2.key = msg2.key || key;
    return msg2;
  }
  const msg = messageCompiler(format3, getCompileOptions(context2, targetLocale, cacheBaseKey, format3, warnHtmlMessage, errorDetector));
  msg.locale = targetLocale;
  msg.key = key;
  msg.source = format3;
  return msg;
}
function evaluateMessage(context2, msg, msgCtx) {
  const messaged = msg(msgCtx);
  return messaged;
}
function parseTranslateArgs(...args) {
  const [arg1, arg2, arg3] = args;
  const options2 = {};
  if (!isString$3(arg1) && !isNumber$1(arg1) && !isMessageFunction(arg1)) {
    throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);
  }
  const key = isNumber$1(arg1) ? String(arg1) : isMessageFunction(arg1) ? arg1 : arg1;
  if (isNumber$1(arg2)) {
    options2.plural = arg2;
  } else if (isString$3(arg2)) {
    options2.default = arg2;
  } else if (isPlainObject$3(arg2) && !isEmptyObject(arg2)) {
    options2.named = arg2;
  } else if (isArray$1(arg2)) {
    options2.list = arg2;
  }
  if (isNumber$1(arg3)) {
    options2.plural = arg3;
  } else if (isString$3(arg3)) {
    options2.default = arg3;
  } else if (isPlainObject$3(arg3)) {
    assign$4(options2, arg3);
  }
  return [key, options2];
}
function getCompileOptions(context2, locale, key, source, warnHtmlMessage, errorDetector) {
  return {
    warnHtmlMessage,
    onError: (err) => {
      errorDetector && errorDetector(err);
      {
        throw err;
      }
    },
    onCacheKey: (source2) => generateFormatCacheKey(locale, key, source2)
  };
}
function getMessageContextOptions(context2, locale, message, options2) {
  const { modifiers, pluralRules, messageResolver: resolveValue2 } = context2;
  const resolveMessage = (key) => {
    const val = resolveValue2(message, key);
    if (isString$3(val)) {
      let occurred = false;
      const errorDetector = () => {
        occurred = true;
      };
      const msg = compileMessageFormat(context2, key, locale, val, key, errorDetector);
      return !occurred ? msg : NOOP_MESSAGE_FUNCTION;
    } else if (isMessageFunction(val)) {
      return val;
    } else {
      return NOOP_MESSAGE_FUNCTION;
    }
  };
  const ctxOptions = {
    locale,
    modifiers,
    pluralRules,
    messages: resolveMessage
  };
  if (context2.processor) {
    ctxOptions.processor = context2.processor;
  }
  if (options2.list) {
    ctxOptions.list = options2.list;
  }
  if (options2.named) {
    ctxOptions.named = options2.named;
  }
  if (isNumber$1(options2.plural)) {
    ctxOptions.pluralIndex = options2.plural;
  }
  return ctxOptions;
}
function datetime(context2, ...args) {
  const { datetimeFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context2;
  const { __datetimeFormatters } = context2;
  const [key, value, options2, overrides] = parseDateTimeArgs(...args);
  const missingWarn = isBoolean(options2.missingWarn) ? options2.missingWarn : context2.missingWarn;
  isBoolean(options2.fallbackWarn) ? options2.fallbackWarn : context2.fallbackWarn;
  const part2 = !!options2.part;
  const locale = isString$3(options2.locale) ? options2.locale : context2.locale;
  const locales = localeFallbacker(
    context2,
    // eslint-disable-line @typescript-eslint/no-explicit-any
    fallbackLocale,
    locale
  );
  if (!isString$3(key) || key === "") {
    return new Intl.DateTimeFormat(locale).format(value);
  }
  let datetimeFormat = {};
  let targetLocale;
  let format3 = null;
  const type2 = "datetime format";
  for (let i = 0; i < locales.length; i++) {
    targetLocale = locales[i];
    datetimeFormat = datetimeFormats[targetLocale] || {};
    format3 = datetimeFormat[key];
    if (isPlainObject$3(format3))
      break;
    handleMissing(context2, key, targetLocale, missingWarn, type2);
  }
  if (!isPlainObject$3(format3) || !isString$3(targetLocale)) {
    return unresolving ? NOT_REOSLVED : key;
  }
  let id2 = `${targetLocale}__${key}`;
  if (!isEmptyObject(overrides)) {
    id2 = `${id2}__${JSON.stringify(overrides)}`;
  }
  let formatter = __datetimeFormatters.get(id2);
  if (!formatter) {
    formatter = new Intl.DateTimeFormat(targetLocale, assign$4({}, format3, overrides));
    __datetimeFormatters.set(id2, formatter);
  }
  return !part2 ? formatter.format(value) : formatter.formatToParts(value);
}
function parseDateTimeArgs(...args) {
  const [arg1, arg2, arg3, arg4] = args;
  let options2 = {};
  let overrides = {};
  let value;
  if (isString$3(arg1)) {
    const matches2 = arg1.match(/(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/);
    if (!matches2) {
      throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);
    }
    const dateTime = matches2[3] ? matches2[3].trim().startsWith("T") ? `${matches2[1].trim()}${matches2[3].trim()}` : `${matches2[1].trim()}T${matches2[3].trim()}` : matches2[1].trim();
    value = new Date(dateTime);
    try {
      value.toISOString();
    } catch (e) {
      throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);
    }
  } else if (isDate(arg1)) {
    if (isNaN(arg1.getTime())) {
      throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT);
    }
    value = arg1;
  } else if (isNumber$1(arg1)) {
    value = arg1;
  } else {
    throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);
  }
  if (isString$3(arg2)) {
    options2.key = arg2;
  } else if (isPlainObject$3(arg2)) {
    options2 = arg2;
  }
  if (isString$3(arg3)) {
    options2.locale = arg3;
  } else if (isPlainObject$3(arg3)) {
    overrides = arg3;
  }
  if (isPlainObject$3(arg4)) {
    overrides = arg4;
  }
  return [options2.key || "", value, options2, overrides];
}
function clearDateTimeFormat(ctx, locale, format3) {
  const context2 = ctx;
  for (const key in format3) {
    const id2 = `${locale}__${key}`;
    if (!context2.__datetimeFormatters.has(id2)) {
      continue;
    }
    context2.__datetimeFormatters.delete(id2);
  }
}
function number(context2, ...args) {
  const { numberFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context2;
  const { __numberFormatters } = context2;
  const [key, value, options2, overrides] = parseNumberArgs(...args);
  const missingWarn = isBoolean(options2.missingWarn) ? options2.missingWarn : context2.missingWarn;
  isBoolean(options2.fallbackWarn) ? options2.fallbackWarn : context2.fallbackWarn;
  const part2 = !!options2.part;
  const locale = isString$3(options2.locale) ? options2.locale : context2.locale;
  const locales = localeFallbacker(
    context2,
    // eslint-disable-line @typescript-eslint/no-explicit-any
    fallbackLocale,
    locale
  );
  if (!isString$3(key) || key === "") {
    return new Intl.NumberFormat(locale).format(value);
  }
  let numberFormat = {};
  let targetLocale;
  let format3 = null;
  const type2 = "number format";
  for (let i = 0; i < locales.length; i++) {
    targetLocale = locales[i];
    numberFormat = numberFormats[targetLocale] || {};
    format3 = numberFormat[key];
    if (isPlainObject$3(format3))
      break;
    handleMissing(context2, key, targetLocale, missingWarn, type2);
  }
  if (!isPlainObject$3(format3) || !isString$3(targetLocale)) {
    return unresolving ? NOT_REOSLVED : key;
  }
  let id2 = `${targetLocale}__${key}`;
  if (!isEmptyObject(overrides)) {
    id2 = `${id2}__${JSON.stringify(overrides)}`;
  }
  let formatter = __numberFormatters.get(id2);
  if (!formatter) {
    formatter = new Intl.NumberFormat(targetLocale, assign$4({}, format3, overrides));
    __numberFormatters.set(id2, formatter);
  }
  return !part2 ? formatter.format(value) : formatter.formatToParts(value);
}
function parseNumberArgs(...args) {
  const [arg1, arg2, arg3, arg4] = args;
  let options2 = {};
  let overrides = {};
  if (!isNumber$1(arg1)) {
    throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);
  }
  const value = arg1;
  if (isString$3(arg2)) {
    options2.key = arg2;
  } else if (isPlainObject$3(arg2)) {
    options2 = arg2;
  }
  if (isString$3(arg3)) {
    options2.locale = arg3;
  } else if (isPlainObject$3(arg3)) {
    overrides = arg3;
  }
  if (isPlainObject$3(arg4)) {
    overrides = arg4;
  }
  return [options2.key || "", value, options2, overrides];
}
function clearNumberFormat(ctx, locale, format3) {
  const context2 = ctx;
  for (const key in format3) {
    const id2 = `${locale}__${key}`;
    if (!context2.__numberFormatters.has(id2)) {
      continue;
    }
    context2.__numberFormatters.delete(id2);
  }
}
{
  if (typeof __INTLIFY_PROD_DEVTOOLS__ !== "boolean") {
    getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;
  }
}
/*!
  * vue-i18n v9.2.0-beta.7
  * (c) 2021 kazuya kawaguchi
  * Released under the MIT License.
  */
const VERSION$3 = "9.2.0-beta.7";
function initFeatureFlags() {
  if (typeof __INTLIFY_PROD_DEVTOOLS__ !== "boolean") {
    getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;
  }
}
let code$1 = CompileErrorCodes.__EXTEND_POINT__;
const inc = () => code$1++;
const I18nErrorCodes = {
  // composer module errors
  UNEXPECTED_RETURN_TYPE: code$1,
  // legacy module errors
  INVALID_ARGUMENT: inc(),
  // i18n module errors
  MUST_BE_CALL_SETUP_TOP: inc(),
  NOT_INSLALLED: inc(),
  NOT_AVAILABLE_IN_LEGACY_MODE: inc(),
  // directive module errors
  REQUIRED_VALUE: inc(),
  INVALID_VALUE: inc(),
  // vue-devtools errors
  CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN: inc(),
  NOT_INSLALLED_WITH_PROVIDE: inc(),
  // unexpected error
  UNEXPECTED_ERROR: inc(),
  // not compatible legacy vue-i18n constructor
  NOT_COMPATIBLE_LEGACY_VUE_I18N: inc(),
  // bridge support vue 2.x only
  BRIDGE_SUPPORT_VUE_2_ONLY: inc(),
  // for enhancement
  __EXTEND_POINT__: inc()
  // 27
};
function createI18nError(code3, ...args) {
  return createCompileError(code3, null, void 0);
}
const TransrateVNodeSymbol = /* @__PURE__ */ makeSymbol("__transrateVNode");
const DatetimePartsSymbol = /* @__PURE__ */ makeSymbol("__datetimeParts");
const NumberPartsSymbol = /* @__PURE__ */ makeSymbol("__numberParts");
const SetPluralRulesSymbol = makeSymbol("__setPluralRules");
makeSymbol("__intlifyMeta");
function handleFlatJson(obj) {
  if (!isObject$5(obj)) {
    return obj;
  }
  for (const key in obj) {
    if (!hasOwn(obj, key)) {
      continue;
    }
    if (!key.includes(".")) {
      if (isObject$5(obj[key])) {
        handleFlatJson(obj[key]);
      }
    } else {
      const subKeys = key.split(".");
      const lastIndex = subKeys.length - 1;
      let currentObj = obj;
      for (let i = 0; i < lastIndex; i++) {
        if (!(subKeys[i] in currentObj)) {
          currentObj[subKeys[i]] = {};
        }
        currentObj = currentObj[subKeys[i]];
      }
      currentObj[subKeys[lastIndex]] = obj[key];
      delete obj[key];
      if (isObject$5(currentObj[subKeys[lastIndex]])) {
        handleFlatJson(currentObj[subKeys[lastIndex]]);
      }
    }
  }
  return obj;
}
function getLocaleMessages(locale, options2) {
  const { messages, __i18n, messageResolver, flatJson } = options2;
  const ret = isPlainObject$3(messages) ? messages : isArray$1(__i18n) ? {} : { [locale]: {} };
  if (isArray$1(__i18n)) {
    __i18n.forEach((custom) => {
      if ("locale" in custom && "resource" in custom) {
        const { locale: locale2, resource } = custom;
        if (locale2) {
          ret[locale2] = ret[locale2] || {};
          deepCopy(resource, ret[locale2]);
        } else {
          deepCopy(resource, ret);
        }
      } else {
        isString$3(custom) && deepCopy(JSON.parse(custom), ret);
      }
    });
  }
  if (messageResolver == null && flatJson) {
    for (const key in ret) {
      if (hasOwn(ret, key)) {
        handleFlatJson(ret[key]);
      }
    }
  }
  return ret;
}
const isNotObjectOrIsArray = (val) => !isObject$5(val) || isArray$1(val);
function deepCopy(src, des) {
  if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {
    throw createI18nError(I18nErrorCodes.INVALID_VALUE);
  }
  for (const key in src) {
    if (hasOwn(src, key)) {
      if (isNotObjectOrIsArray(src[key]) || isNotObjectOrIsArray(des[key])) {
        des[key] = src[key];
      } else {
        deepCopy(src[key], des[key]);
      }
    }
  }
}
function getComponentOptions(instance) {
  return instance.type;
}
const DEVTOOLS_META = "__INTLIFY_META__";
let composerID = 0;
function defineCoreMissingHandler(missing) {
  return (ctx, locale, key, type2) => {
    return missing(locale, key, getCurrentInstance() || void 0, type2);
  };
}
const getMetaInfo = () => {
  const instance = getCurrentInstance();
  let meta = null;
  return instance && (meta = getComponentOptions(instance)[DEVTOOLS_META]) ? { [DEVTOOLS_META]: meta } : null;
};
function createComposer(options2 = {}, VueI18nLegacy) {
  const { __root } = options2;
  const _isGlobal = __root === void 0;
  let _inheritLocale = isBoolean(options2.inheritLocale) ? options2.inheritLocale : true;
  const _locale = ref(
    // prettier-ignore
    __root && _inheritLocale ? __root.locale.value : isString$3(options2.locale) ? options2.locale : DEFAULT_LOCALE
  );
  const _fallbackLocale = ref(
    // prettier-ignore
    __root && _inheritLocale ? __root.fallbackLocale.value : isString$3(options2.fallbackLocale) || isArray$1(options2.fallbackLocale) || isPlainObject$3(options2.fallbackLocale) || options2.fallbackLocale === false ? options2.fallbackLocale : _locale.value
  );
  const _messages = ref(getLocaleMessages(_locale.value, options2));
  const _datetimeFormats = ref(isPlainObject$3(options2.datetimeFormats) ? options2.datetimeFormats : { [_locale.value]: {} });
  const _numberFormats = ref(isPlainObject$3(options2.numberFormats) ? options2.numberFormats : { [_locale.value]: {} });
  let _missingWarn = __root ? __root.missingWarn : isBoolean(options2.missingWarn) || isRegExp$1(options2.missingWarn) ? options2.missingWarn : true;
  let _fallbackWarn = __root ? __root.fallbackWarn : isBoolean(options2.fallbackWarn) || isRegExp$1(options2.fallbackWarn) ? options2.fallbackWarn : true;
  let _fallbackRoot = __root ? __root.fallbackRoot : isBoolean(options2.fallbackRoot) ? options2.fallbackRoot : true;
  let _fallbackFormat = !!options2.fallbackFormat;
  let _missing = isFunction$3(options2.missing) ? options2.missing : null;
  let _runtimeMissing = isFunction$3(options2.missing) ? defineCoreMissingHandler(options2.missing) : null;
  let _postTranslation = isFunction$3(options2.postTranslation) ? options2.postTranslation : null;
  let _warnHtmlMessage = isBoolean(options2.warnHtmlMessage) ? options2.warnHtmlMessage : true;
  let _escapeParameter = !!options2.escapeParameter;
  const _modifiers = __root ? __root.modifiers : isPlainObject$3(options2.modifiers) ? options2.modifiers : {};
  let _pluralRules = options2.pluralRules || __root && __root.pluralRules;
  let _context;
  function getCoreContext() {
    const ctxOptions = {
      version: VERSION$3,
      locale: _locale.value,
      fallbackLocale: _fallbackLocale.value,
      messages: _messages.value,
      modifiers: _modifiers,
      pluralRules: _pluralRules,
      missing: _runtimeMissing === null ? void 0 : _runtimeMissing,
      missingWarn: _missingWarn,
      fallbackWarn: _fallbackWarn,
      fallbackFormat: _fallbackFormat,
      unresolving: true,
      postTranslation: _postTranslation === null ? void 0 : _postTranslation,
      warnHtmlMessage: _warnHtmlMessage,
      escapeParameter: _escapeParameter,
      messageResolver: options2.messageResolver,
      __meta: { framework: "vue" }
    };
    {
      ctxOptions.datetimeFormats = _datetimeFormats.value;
      ctxOptions.numberFormats = _numberFormats.value;
      ctxOptions.__datetimeFormatters = isPlainObject$3(_context) ? _context.__datetimeFormatters : void 0;
      ctxOptions.__numberFormatters = isPlainObject$3(_context) ? _context.__numberFormatters : void 0;
    }
    return createCoreContext(ctxOptions);
  }
  _context = getCoreContext();
  updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);
  function trackReactivityValues() {
    return [
      _locale.value,
      _fallbackLocale.value,
      _messages.value,
      _datetimeFormats.value,
      _numberFormats.value
    ];
  }
  const locale = computed({
    get: () => _locale.value,
    set: (val) => {
      _locale.value = val;
      _context.locale = _locale.value;
    }
  });
  const fallbackLocale = computed({
    get: () => _fallbackLocale.value,
    set: (val) => {
      _fallbackLocale.value = val;
      _context.fallbackLocale = _fallbackLocale.value;
      updateFallbackLocale(_context, _locale.value, val);
    }
  });
  const messages = computed(() => _messages.value);
  const datetimeFormats = /* @__PURE__ */ computed(() => _datetimeFormats.value);
  const numberFormats = /* @__PURE__ */ computed(() => _numberFormats.value);
  function getPostTranslationHandler() {
    return isFunction$3(_postTranslation) ? _postTranslation : null;
  }
  function setPostTranslationHandler(handler) {
    _postTranslation = handler;
    _context.postTranslation = handler;
  }
  function getMissingHandler() {
    return _missing;
  }
  function setMissingHandler(handler) {
    if (handler !== null) {
      _runtimeMissing = defineCoreMissingHandler(handler);
    }
    _missing = handler;
    _context.missing = _runtimeMissing;
  }
  function wrapWithDeps(fn2, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) {
    trackReactivityValues();
    let ret;
    if (__INTLIFY_PROD_DEVTOOLS__) {
      try {
        setAdditionalMeta(getMetaInfo());
        ret = fn2(_context);
      } finally {
        setAdditionalMeta(null);
      }
    } else {
      ret = fn2(_context);
    }
    if (isNumber$1(ret) && ret === NOT_REOSLVED) {
      const [key, arg2] = argumentParser();
      return __root && _fallbackRoot ? fallbackSuccess(__root) : fallbackFail(key);
    } else if (successCondition(ret)) {
      return ret;
    } else {
      throw createI18nError(I18nErrorCodes.UNEXPECTED_RETURN_TYPE);
    }
  }
  function t2(...args) {
    return wrapWithDeps((context2) => Reflect.apply(translate, null, [context2, ...args]), () => parseTranslateArgs(...args), "translate", (root2) => Reflect.apply(root2.t, root2, [...args]), (key) => key, (val) => isString$3(val));
  }
  function rt(...args) {
    const [arg1, arg2, arg3] = args;
    if (arg3 && !isObject$5(arg3)) {
      throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);
    }
    return t2(...[arg1, arg2, assign$4({ resolvedMessage: true }, arg3 || {})]);
  }
  function d2(...args) {
    return wrapWithDeps((context2) => Reflect.apply(datetime, null, [context2, ...args]), () => parseDateTimeArgs(...args), "datetime format", (root2) => Reflect.apply(root2.d, root2, [...args]), () => MISSING_RESOLVE_VALUE, (val) => isString$3(val));
  }
  function n(...args) {
    return wrapWithDeps((context2) => Reflect.apply(number, null, [context2, ...args]), () => parseNumberArgs(...args), "number format", (root2) => Reflect.apply(root2.n, root2, [...args]), () => MISSING_RESOLVE_VALUE, (val) => isString$3(val));
  }
  function normalize4(values) {
    return values.map((val) => isString$3(val) ? createVNode(Text, null, val, 0) : val);
  }
  const interpolate = (val) => val;
  const processor = {
    normalize: normalize4,
    interpolate,
    type: "vnode"
  };
  function transrateVNode(...args) {
    return wrapWithDeps(
      (context2) => {
        let ret;
        const _context2 = context2;
        try {
          _context2.processor = processor;
          ret = Reflect.apply(translate, null, [_context2, ...args]);
        } finally {
          _context2.processor = null;
        }
        return ret;
      },
      () => parseTranslateArgs(...args),
      "translate",
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      (root2) => root2[TransrateVNodeSymbol](...args),
      (key) => [createVNode(Text, null, key, 0)],
      (val) => isArray$1(val)
    );
  }
  function numberParts(...args) {
    return wrapWithDeps(
      (context2) => Reflect.apply(number, null, [context2, ...args]),
      () => parseNumberArgs(...args),
      "number format",
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      (root2) => root2[NumberPartsSymbol](...args),
      () => [],
      (val) => isString$3(val) || isArray$1(val)
    );
  }
  function datetimeParts(...args) {
    return wrapWithDeps(
      (context2) => Reflect.apply(datetime, null, [context2, ...args]),
      () => parseDateTimeArgs(...args),
      "datetime format",
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      (root2) => root2[DatetimePartsSymbol](...args),
      () => [],
      (val) => isString$3(val) || isArray$1(val)
    );
  }
  function setPluralRules(rules) {
    _pluralRules = rules;
    _context.pluralRules = _pluralRules;
  }
  function te(key, locale2) {
    const targetLocale = isString$3(locale2) ? locale2 : _locale.value;
    const message = getLocaleMessage(targetLocale);
    return _context.messageResolver(message, key) !== null;
  }
  function resolveMessages(key) {
    let messages2 = null;
    const locales = fallbackWithLocaleChain(_context, _fallbackLocale.value, _locale.value);
    for (let i = 0; i < locales.length; i++) {
      const targetLocaleMessages = _messages.value[locales[i]] || {};
      const messageValue = _context.messageResolver(targetLocaleMessages, key);
      if (messageValue != null) {
        messages2 = messageValue;
        break;
      }
    }
    return messages2;
  }
  function tm(key) {
    const messages2 = resolveMessages(key);
    return messages2 != null ? messages2 : __root ? __root.tm(key) || {} : {};
  }
  function getLocaleMessage(locale2) {
    return _messages.value[locale2] || {};
  }
  function setLocaleMessage(locale2, message) {
    _messages.value[locale2] = message;
    _context.messages = _messages.value;
  }
  function mergeLocaleMessage(locale2, message) {
    _messages.value[locale2] = _messages.value[locale2] || {};
    deepCopy(message, _messages.value[locale2]);
    _context.messages = _messages.value;
  }
  function getDateTimeFormat(locale2) {
    return _datetimeFormats.value[locale2] || {};
  }
  function setDateTimeFormat(locale2, format3) {
    _datetimeFormats.value[locale2] = format3;
    _context.datetimeFormats = _datetimeFormats.value;
    clearDateTimeFormat(_context, locale2, format3);
  }
  function mergeDateTimeFormat(locale2, format3) {
    _datetimeFormats.value[locale2] = assign$4(_datetimeFormats.value[locale2] || {}, format3);
    _context.datetimeFormats = _datetimeFormats.value;
    clearDateTimeFormat(_context, locale2, format3);
  }
  function getNumberFormat(locale2) {
    return _numberFormats.value[locale2] || {};
  }
  function setNumberFormat(locale2, format3) {
    _numberFormats.value[locale2] = format3;
    _context.numberFormats = _numberFormats.value;
    clearNumberFormat(_context, locale2, format3);
  }
  function mergeNumberFormat(locale2, format3) {
    _numberFormats.value[locale2] = assign$4(_numberFormats.value[locale2] || {}, format3);
    _context.numberFormats = _numberFormats.value;
    clearNumberFormat(_context, locale2, format3);
  }
  composerID++;
  if (__root) {
    watch(__root.locale, (val) => {
      if (_inheritLocale) {
        _locale.value = val;
        _context.locale = val;
        updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);
      }
    });
    watch(__root.fallbackLocale, (val) => {
      if (_inheritLocale) {
        _fallbackLocale.value = val;
        _context.fallbackLocale = val;
        updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);
      }
    });
  }
  const composer = {
    id: composerID,
    locale,
    fallbackLocale,
    get inheritLocale() {
      return _inheritLocale;
    },
    set inheritLocale(val) {
      _inheritLocale = val;
      if (val && __root) {
        _locale.value = __root.locale.value;
        _fallbackLocale.value = __root.fallbackLocale.value;
        updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);
      }
    },
    get availableLocales() {
      return Object.keys(_messages.value).sort();
    },
    messages,
    get modifiers() {
      return _modifiers;
    },
    get pluralRules() {
      return _pluralRules || {};
    },
    get isGlobal() {
      return _isGlobal;
    },
    get missingWarn() {
      return _missingWarn;
    },
    set missingWarn(val) {
      _missingWarn = val;
      _context.missingWarn = _missingWarn;
    },
    get fallbackWarn() {
      return _fallbackWarn;
    },
    set fallbackWarn(val) {
      _fallbackWarn = val;
      _context.fallbackWarn = _fallbackWarn;
    },
    get fallbackRoot() {
      return _fallbackRoot;
    },
    set fallbackRoot(val) {
      _fallbackRoot = val;
    },
    get fallbackFormat() {
      return _fallbackFormat;
    },
    set fallbackFormat(val) {
      _fallbackFormat = val;
      _context.fallbackFormat = _fallbackFormat;
    },
    get warnHtmlMessage() {
      return _warnHtmlMessage;
    },
    set warnHtmlMessage(val) {
      _warnHtmlMessage = val;
      _context.warnHtmlMessage = val;
    },
    get escapeParameter() {
      return _escapeParameter;
    },
    set escapeParameter(val) {
      _escapeParameter = val;
      _context.escapeParameter = val;
    },
    t: t2,
    getLocaleMessage,
    setLocaleMessage,
    mergeLocaleMessage,
    getPostTranslationHandler,
    setPostTranslationHandler,
    getMissingHandler,
    setMissingHandler,
    [SetPluralRulesSymbol]: setPluralRules
  };
  {
    composer.datetimeFormats = datetimeFormats;
    composer.numberFormats = numberFormats;
    composer.rt = rt;
    composer.te = te;
    composer.tm = tm;
    composer.d = d2;
    composer.n = n;
    composer.getDateTimeFormat = getDateTimeFormat;
    composer.setDateTimeFormat = setDateTimeFormat;
    composer.mergeDateTimeFormat = mergeDateTimeFormat;
    composer.getNumberFormat = getNumberFormat;
    composer.setNumberFormat = setNumberFormat;
    composer.mergeNumberFormat = mergeNumberFormat;
    {
      composer[TransrateVNodeSymbol] = transrateVNode;
      composer[NumberPartsSymbol] = numberParts;
      composer[DatetimePartsSymbol] = datetimeParts;
    }
  }
  return composer;
}
const baseFormatProps = {
  tag: {
    type: [String, Object]
  },
  locale: {
    type: String
  },
  scope: {
    type: String,
    // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050
    validator: (val) => val === "parent" || val === "global",
    default: "parent"
    /* ComponetI18nScope */
  },
  i18n: {
    type: Object
  }
};
const Translation = /* @__PURE__ */ defineComponent({
  /* eslint-disable */
  name: "i18n-t",
  props: assign$4({
    keypath: {
      type: String,
      required: true
    },
    plural: {
      type: [Number, String],
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      validator: (val) => isNumber$1(val) || !isNaN(val)
    }
  }, baseFormatProps),
  /* eslint-enable */
  setup(props, context2) {
    const { slots, attrs } = context2;
    const i18n = props.i18n || useI18n$1({ useScope: props.scope });
    const keys = Object.keys(slots).filter((key) => key !== "_");
    return () => {
      const options2 = {};
      if (props.locale) {
        options2.locale = props.locale;
      }
      if (props.plural !== void 0) {
        options2.plural = isString$3(props.plural) ? +props.plural : props.plural;
      }
      const arg = getInterpolateArg(context2, keys);
      const children = i18n[TransrateVNodeSymbol](props.keypath, arg, options2);
      const assignedAttrs = assign$4({}, attrs);
      const tag = isString$3(props.tag) || isObject$5(props.tag) ? props.tag : Fragment;
      return h$1(tag, assignedAttrs, children);
    };
  }
});
function getInterpolateArg({ slots }, keys) {
  if (keys.length === 1 && keys[0] === "default") {
    return slots.default ? slots.default() : [];
  } else {
    return keys.reduce((arg, key) => {
      const slot = slots[key];
      if (slot) {
        arg[key] = slot();
      }
      return arg;
    }, {});
  }
}
function renderFormatter(props, context2, slotKeys, partFormatter) {
  const { slots, attrs } = context2;
  return () => {
    const options2 = { part: true };
    let overrides = {};
    if (props.locale) {
      options2.locale = props.locale;
    }
    if (isString$3(props.format)) {
      options2.key = props.format;
    } else if (isObject$5(props.format)) {
      if (isString$3(props.format.key)) {
        options2.key = props.format.key;
      }
      overrides = Object.keys(props.format).reduce((options3, prop2) => {
        return slotKeys.includes(prop2) ? assign$4({}, options3, { [prop2]: props.format[prop2] }) : options3;
      }, {});
    }
    const parts2 = partFormatter(...[props.value, options2, overrides]);
    let children = [options2.key];
    if (isArray$1(parts2)) {
      children = parts2.map((part2, index2) => {
        const slot = slots[part2.type];
        return slot ? slot({ [part2.type]: part2.value, index: index2, parts: parts2 }) : [part2.value];
      });
    } else if (isString$3(parts2)) {
      children = [parts2];
    }
    const assignedAttrs = assign$4({}, attrs);
    const tag = isString$3(props.tag) || isObject$5(props.tag) ? props.tag : Fragment;
    return h$1(tag, assignedAttrs, children);
  };
}
const NUMBER_FORMAT_KEYS = [
  "localeMatcher",
  "style",
  "unit",
  "unitDisplay",
  "currency",
  "currencyDisplay",
  "useGrouping",
  "numberingSystem",
  "minimumIntegerDigits",
  "minimumFractionDigits",
  "maximumFractionDigits",
  "minimumSignificantDigits",
  "maximumSignificantDigits",
  "notation",
  "formatMatcher"
];
const NumberFormat = /* @__PURE__ */ defineComponent({
  /* eslint-disable */
  name: "i18n-n",
  props: assign$4({
    value: {
      type: Number,
      required: true
    },
    format: {
      type: [String, Object]
    }
  }, baseFormatProps),
  /* eslint-enable */
  setup(props, context2) {
    const i18n = props.i18n || useI18n$1({ useScope: "parent" });
    return renderFormatter(props, context2, NUMBER_FORMAT_KEYS, (...args) => (
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      i18n[NumberPartsSymbol](...args)
    ));
  }
});
const DATETIME_FORMAT_KEYS = [
  "dateStyle",
  "timeStyle",
  "fractionalSecondDigits",
  "calendar",
  "dayPeriod",
  "numberingSystem",
  "localeMatcher",
  "timeZone",
  "hour12",
  "hourCycle",
  "formatMatcher",
  "weekday",
  "era",
  "year",
  "month",
  "day",
  "hour",
  "minute",
  "second",
  "timeZoneName"
];
const DatetimeFormat = /* @__PURE__ */ defineComponent({
  /* eslint-disable */
  name: "i18n-d",
  props: assign$4({
    value: {
      type: [Number, Date],
      required: true
    },
    format: {
      type: [String, Object]
    }
  }, baseFormatProps),
  /* eslint-enable */
  setup(props, context2) {
    const i18n = props.i18n || useI18n$1({ useScope: "parent" });
    return renderFormatter(props, context2, DATETIME_FORMAT_KEYS, (...args) => (
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      i18n[DatetimePartsSymbol](...args)
    ));
  }
});
function getComposer$2(i18n, instance) {
  const i18nInternal = i18n;
  if (i18n.mode === "composition") {
    return i18nInternal.__getInstance(instance) || i18n.global;
  } else {
    const vueI18n = i18nInternal.__getInstance(instance);
    return vueI18n != null ? vueI18n.__composer : i18n.global.__composer;
  }
}
function vTDirective(i18n) {
  const bind = (el2, { instance, value, modifiers }) => {
    if (!instance || !instance.$) {
      throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);
    }
    const composer = getComposer$2(i18n, instance.$);
    const parsedValue = parseValue(value);
    el2.textContent = Reflect.apply(composer.t, composer, [
      ...makeParams(parsedValue)
    ]);
  };
  return {
    beforeMount: bind,
    beforeUpdate: bind
  };
}
function parseValue(value) {
  if (isString$3(value)) {
    return { path: value };
  } else if (isPlainObject$3(value)) {
    if (!("path" in value)) {
      throw createI18nError(I18nErrorCodes.REQUIRED_VALUE, "path");
    }
    return value;
  } else {
    throw createI18nError(I18nErrorCodes.INVALID_VALUE);
  }
}
function makeParams(value) {
  const { path, locale, args, choice, plural } = value;
  const options2 = {};
  const named = args || {};
  if (isString$3(locale)) {
    options2.locale = locale;
  }
  if (isNumber$1(choice)) {
    options2.plural = choice;
  }
  if (isNumber$1(plural)) {
    options2.plural = plural;
  }
  return [path, named, options2];
}
function apply(app2, i18n, ...options2) {
  const pluginOptions = isPlainObject$3(options2[0]) ? options2[0] : {};
  const useI18nComponentName = !!pluginOptions.useI18nComponentName;
  const globalInstall = isBoolean(pluginOptions.globalInstall) ? pluginOptions.globalInstall : true;
  if (globalInstall) {
    app2.component(!useI18nComponentName ? Translation.name : "i18n", Translation);
    app2.component(NumberFormat.name, NumberFormat);
    app2.component(DatetimeFormat.name, DatetimeFormat);
  }
  {
    app2.directive("t", vTDirective(i18n));
  }
}
const I18nInjectionKey = /* @__PURE__ */ makeSymbol("global-vue-i18n");
function createI18n$1(options2 = {}, VueI18nLegacy) {
  const __globalInjection = !!options2.globalInjection;
  const __instances = /* @__PURE__ */ new Map();
  const __global = createGlobal(options2);
  const symbol = makeSymbol("");
  function __getInstance(component) {
    return __instances.get(component) || null;
  }
  function __setInstance(component, instance) {
    __instances.set(component, instance);
  }
  function __deleteInstance(component) {
    __instances.delete(component);
  }
  {
    const i18n = {
      // mode
      get mode() {
        return "composition";
      },
      // install plugin
      async install(app2, ...options3) {
        {
          app2.__VUE_I18N_SYMBOL__ = symbol;
          app2.provide(app2.__VUE_I18N_SYMBOL__, i18n);
        }
        if (__globalInjection) {
          injectGlobalFields(app2, i18n.global);
        }
        {
          apply(app2, i18n, ...options3);
        }
      },
      // global accessor
      get global() {
        return __global;
      },
      // @internal
      __instances,
      // @internal
      __getInstance,
      // @internal
      __setInstance,
      // @internal
      __deleteInstance
    };
    return i18n;
  }
}
function useI18n$1(options2 = {}) {
  const instance = getCurrentInstance();
  if (instance == null) {
    throw createI18nError(I18nErrorCodes.MUST_BE_CALL_SETUP_TOP);
  }
  if (!instance.isCE && instance.appContext.app != null && !instance.appContext.app.__VUE_I18N_SYMBOL__) {
    throw createI18nError(I18nErrorCodes.NOT_INSLALLED);
  }
  const i18n = getI18nInstance(instance);
  const global2 = getGlobalComposer(i18n);
  const componentOptions = getComponentOptions(instance);
  const scope = getScope(options2, componentOptions);
  if (scope === "global") {
    adjustI18nResources(global2, options2, componentOptions);
    return global2;
  }
  if (scope === "parent") {
    let composer2 = getComposer(i18n, instance);
    if (composer2 == null) {
      composer2 = global2;
    }
    return composer2;
  }
  if (i18n.mode === "legacy") {
    throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE);
  }
  const i18nInternal = i18n;
  let composer = i18nInternal.__getInstance(instance);
  if (composer == null) {
    const composerOptions = assign$4({}, options2);
    if ("__i18n" in componentOptions) {
      composerOptions.__i18n = componentOptions.__i18n;
    }
    if (global2) {
      composerOptions.__root = global2;
    }
    composer = createComposer(composerOptions);
    setupLifeCycle(i18nInternal, instance);
    i18nInternal.__setInstance(instance, composer);
  }
  return composer;
}
function createGlobal(options2, legacyMode, VueI18nLegacy) {
  {
    return createComposer(options2);
  }
}
function getI18nInstance(instance) {
  {
    const i18n = inject(!instance.isCE ? instance.appContext.app.__VUE_I18N_SYMBOL__ : I18nInjectionKey);
    if (!i18n) {
      throw createI18nError(!instance.isCE ? I18nErrorCodes.UNEXPECTED_ERROR : I18nErrorCodes.NOT_INSLALLED_WITH_PROVIDE);
    }
    return i18n;
  }
}
function getScope(options2, componentOptions) {
  return isEmptyObject(options2) ? "__i18n" in componentOptions ? "local" : "global" : !options2.useScope ? "local" : options2.useScope;
}
function getGlobalComposer(i18n) {
  return i18n.mode === "composition" ? i18n.global : i18n.global.__composer;
}
function adjustI18nResources(global2, options2, componentOptions) {
  let messages = isObject$5(options2.messages) ? options2.messages : {};
  if ("__i18nGlobal" in componentOptions) {
    messages = getLocaleMessages(global2.locale.value, {
      messages,
      __i18n: componentOptions.__i18nGlobal
    });
  }
  const locales = Object.keys(messages);
  if (locales.length) {
    locales.forEach((locale) => {
      global2.mergeLocaleMessage(locale, messages[locale]);
    });
  }
  {
    if (isObject$5(options2.datetimeFormats)) {
      const locales2 = Object.keys(options2.datetimeFormats);
      if (locales2.length) {
        locales2.forEach((locale) => {
          global2.mergeDateTimeFormat(locale, options2.datetimeFormats[locale]);
        });
      }
    }
    if (isObject$5(options2.numberFormats)) {
      const locales2 = Object.keys(options2.numberFormats);
      if (locales2.length) {
        locales2.forEach((locale) => {
          global2.mergeNumberFormat(locale, options2.numberFormats[locale]);
        });
      }
    }
  }
}
function getComposer(i18n, target2) {
  let composer = null;
  const root2 = target2.root;
  let current = target2.parent;
  while (current != null) {
    const i18nInternal = i18n;
    if (i18n.mode === "composition") {
      composer = i18nInternal.__getInstance(current);
    }
    if (composer != null) {
      break;
    }
    if (root2 === current) {
      break;
    }
    current = current.parent;
  }
  return composer;
}
function setupLifeCycle(i18n, target2, composer) {
  {
    onMounted(() => {
    }, target2);
    onUnmounted(() => {
      i18n.__deleteInstance(target2);
    }, target2);
  }
}
const globalExportProps = [
  "locale",
  "fallbackLocale",
  "availableLocales"
];
const globalExportMethods = ["t", "rt", "d", "n", "tm"];
function injectGlobalFields(app2, composer) {
  const i18n = /* @__PURE__ */ Object.create(null);
  globalExportProps.forEach((prop2) => {
    const desc = Object.getOwnPropertyDescriptor(composer, prop2);
    if (!desc) {
      throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);
    }
    const wrap2 = isRef(desc.value) ? {
      get() {
        return desc.value.value;
      },
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      set(val) {
        desc.value.value = val;
      }
    } : {
      get() {
        return desc.get && desc.get();
      }
    };
    Object.defineProperty(i18n, prop2, wrap2);
  });
  app2.config.globalProperties.$i18n = i18n;
  globalExportMethods.forEach((method) => {
    const desc = Object.getOwnPropertyDescriptor(composer, method);
    if (!desc || !desc.value) {
      throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);
    }
    Object.defineProperty(app2.config.globalProperties, `$${method}`, desc);
  });
}
registerMessageResolver(resolveValue);
registerLocaleFallbacker(fallbackWithLocaleChain);
{
  initFeatureFlags();
}
if (__INTLIFY_PROD_DEVTOOLS__) {
  const target2 = getGlobalThis();
  target2.__INTLIFY__ = true;
  setDevToolsHook(target2.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__);
}
const compiledMessages = {
  "en-US": {
    "links": {
      "learnMore": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Learn more."]);
      },
      "learnMoreButton": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Learn more"]);
      },
      "needHelp": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Need help"]);
      }
    },
    "components": {
      "modal": {
        "dismiss": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Dismiss"]);
        }
      },
      "fileSearch": {
        "noMatchesForExtension": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["No files found when searching for the file extension"]);
        },
        "noMatchesForFileName": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize([]);
        },
        "byFilenameInput": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Search by filename..."]);
        },
        "byExtensionInput": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Extensions to include e.g. *.tsx, *.vue"]);
        },
        "matchesIndicatorEmptyFileSearch": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["No matches"]), _normalize(["1 match"]), _normalize([_interpolate(_named("denominator")), " matches"])]);
        },
        "matchesIndicator": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["No matches"]), _normalize([_interpolate(_named("numerator")), " of ", _interpolate(_named("denominator")), " matches"]), _normalize([_interpolate(_named("numerator")), " of ", _interpolate(_named("denominator")), " matches"])]);
        }
      },
      "button": {
        "cancel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cancel"]);
        },
        "back": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Back"]);
        }
      },
      "loading": {
        "config": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Initializing config..."]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Please wait while we load your project and find browsers installed on your system"]);
          }
        }
      },
      "select": {
        "placeholder": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Choose an option..."]);
        }
      },
      "alert": {
        "dismissAriaLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Dismiss"]);
        }
      },
      "specPattern": {
        "matches": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["No matches"]), _normalize([_interpolate(_named("n")), " match"]), _normalize([_interpolate(_named("n")), " matches"])]);
        }
      },
      "specPatternModal": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Spec pattern settings"]);
        }
      }
    },
    "clipboard": {
      "copy": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Copy"]);
      },
      "copied": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Copied!"]);
      }
    },
    "actions": {
      "close": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Close"]);
      }
    },
    "file": {
      "edit": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Edit"]);
      },
      "git": {
        "modified": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Modified"]);
        },
        "created": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Created"]);
        }
      }
    },
    "status": {
      "enabled": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Enabled"]);
      },
      "disabled": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Disabled"]);
      }
    },
    "createSpec": {
      "newSpec": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["New spec"]);
      },
      "createSpec": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Create spec"]);
      },
      "done": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Done!"]);
      },
      "noComponentsFound": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["No components found"]);
      },
      "unableToParseFile": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Unable to parse file"]);
      },
      "updateSpecPattern": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Update spec pattern"]);
      },
      "newSpecModalTitle": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Create new spec"]);
      },
      "successPage": {
        "header": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Great! The spec was successfully added"]);
        },
        "runSpecButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Okay, run the spec"]);
        },
        "createAnotherSpecButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Create another spec"]);
        }
      },
      "page": {
        "defaultPatternNoSpecs": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Create your first spec"]);
          },
          "component": {
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Since this project looks new, we recommend that you get started by creating a spec for one of your components."]);
            }
          },
          "e2e": {
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Since this project looks new, we recommend that you use the specs and tests that we've written for you to get started."]);
            }
          }
        },
        "customPatternNoSpecs": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["No specs found"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["We couldn't find any files matching the following spec patterns. You may need to move your specs or update your ", _interpolate(_list(0)), " to find them."]);
          }
        }
      },
      "noSpecsMessage": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["If you feel that you're seeing this screen in error, and there should be specs listed here, you likely need to update the spec pattern."]);
      },
      "viewSpecPatternButton": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["View spec pattern"]);
      },
      "e2e": {
        "importFromScaffold": {
          "header": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Scaffold example specs"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["We'll generate several example specs to help guide you on how to write tests in Cypress."]);
          },
          "specsAddedHeader": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Great! We added the following files to your project:"]);
          },
          "specsAddedButton": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Okay, I got it!"]);
          },
          "specsAddingHeader": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Adding specs..."]);
          }
        },
        "importTemplateSpec": {
          "header": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Create new spec"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["We'll generate a template spec file which can be used to start testing your application."]);
          },
          "chooseFilenameHeader": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Enter the path for your new spec"]);
          },
          "inputPlaceholder": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Enter a relative path..."]);
          },
          "invalidSpecWarning": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["This path is invalid because it doesn't match the following "]);
          },
          "specExtensionWarning": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["We recommend naming your spec to match the following pattern: "]);
          }
        }
      },
      "component": {
        "importFromComponent": {
          "header": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Create from component"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Generate a basic component test for any of the components in this project."]);
          },
          "chooseAComponentHeader": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Choose a component"]);
          }
        },
        "importTemplateSpec": {
          "header": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Create new spec"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["We'll generate a template spec file which can be used to start testing your components."]);
          },
          "invalidComponentWarning": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["We couldn't generate a valid path matching your custom "]);
          }
        }
      }
    },
    "specPage": {
      "pageTitle": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Specs"]);
      },
      "newSpecButton": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["New spec"]);
      },
      "searchPlaceholder": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Search specs"]);
      },
      "clearSearch": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Clear search field"]);
      },
      "componentSpecsHeader": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Component specs"]);
      },
      "e2eSpecsHeader": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["E2E specs"]);
      },
      "componentSpecsHeaderShort": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Component"]);
      },
      "e2eSpecsHeaderShort": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["E2E"]);
      },
      "lastUpdated": {
        "header": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Last updated"]);
        },
        "tooltip": {
          "gitStatus": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Git status"]);
          },
          "gitInfo": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["git info"]);
          },
          "gitInfoAvailable": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize([_interpolate(_list(0)), " of the spec files within this project"]);
          },
          "gitInfoUnavailable": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["Cypress is unable to detect ", _interpolate(_list(0)), " for this project and has defaulted to showing file system data instead"]);
          }
        }
      },
      "latestRuns": {
        "header": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Latest runs"]);
        },
        "headerShort": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Runs"]);
        },
        "tooltip": {
          "connected": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["The ", _interpolate(_list(0)), " in Cypress Cloud"]);
          },
          "notConnected": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["Connect to Cypress Cloud to see the ", _interpolate(_list(0))]);
          },
          "noAccess": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["Request access to this project in Cypress Cloud to view the ", _interpolate(_list(0))]);
          },
          "linkText": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["status of your latest runs"]);
          }
        }
      },
      "averageDuration": {
        "header": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Average duration"]);
        },
        "headerShort": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Duration"]);
        },
        "tooltip": {
          "connected": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["The ", _interpolate(_list(0)), " of your latest runs in Cypress Cloud"]);
          },
          "notConnected": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["Connect to Cypress Cloud to see the ", _interpolate(_list(0)), " of your latest runs"]);
          },
          "noAccess": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["Request access to this project in Cypress Cloud to view the ", _interpolate(_list(0)), " of your latest runs"]);
          },
          "linkText": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["average spec durations"]);
          }
        }
      },
      "flaky": {
        "badgeLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Flaky"]);
        },
        "severityLow": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Low"]);
        },
        "severityMedium": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Medium"]);
        },
        "severityHigh": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["High"]);
        },
        "flakyRate": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize([_interpolate(_list(0)), "% flaky rate"]);
        },
        "flakyRuns": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize([_interpolate(_named("flakyRuns")), " flaky runs / ", _interpolate(_named("totalRuns")), " total"]), _normalize([_interpolate(_named("flakyRuns")), " flaky run / ", _interpolate(_named("totalRuns")), " total"]), _normalize([_interpolate(_named("flakyRuns")), " flaky runs / ", _interpolate(_named("totalRuns")), " total"])]);
        },
        "lastFlaky": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["Last run flaky"]), _normalize(["Last flaky ", _interpolate(_named("runsSinceLastFlake")), " run ago"]), _normalize(["Last flaky ", _interpolate(_named("runsSinceLastFlake")), " runs ago"])]);
        }
      },
      "hoverButton": {
        "connect": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Connect"]);
        },
        "connectProject": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Connect project"]);
        },
        "connectProjectShort": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Connect"]);
        },
        "requestAccess": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Request access"]);
        },
        "requestAccessShort": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Request"]);
        },
        "requestSent": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Request sent"]);
        },
        "requestSentShort": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Sent"]);
        }
      },
      "connectProjectButton": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Connect your project"]);
      },
      "cloudLoginButton": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Log in to Cypress Cloud"]);
      },
      "reconnectProjectButton": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Reconnect your project"]);
      },
      "unauthorizedBannerTitle": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Request access to project"]);
      },
      "requestAccessButton": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Request access"]);
      },
      "requestSentButton": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Request sent"]);
      },
      "rows": {
        "gitTooltipSubtext": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize([_interpolate(_named("shortHash")), " by ", _interpolate(_named("author"))]);
        }
      },
      "noResultsMessage": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["No specs matched your search:"]);
      },
      "noSpecError": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Spec not found"]);
        },
        "intro": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["There is no spec matching the following location:"]);
        },
        "explainer": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["It is possible that the file has been moved or deleted. Please choose from the list of specs below."]);
        }
      },
      "offlineWarning": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["No internet connection"]);
        },
        "explainer": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Please check your internet connection to resolve this issue. When your internet connection is fixed, we will automatically attempt to fetch the run metrics from Cypress Cloud."]);
        }
      },
      "fetchFailedWarning": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Lost connection"]);
        },
        "explainer1": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["The request timed out or failed when trying to retrieve the recorded run metrics from Cypress Cloud. The information that you're seeing in the table below may be incomplete as a result."]);
        },
        "explainer2": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["Please refresh the page to try again and visit our ", _interpolate(_list(0)), " if this behavior continues."]);
        },
        "refreshButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Try again"]);
        }
      },
      "banners": {
        "login": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Optimize and record your CI test runs with Cypress Cloud"]);
          },
          "content": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["When you configure Cypress to record tests to Cypress Cloud, you'll see data from your latest recorded runs in the Cypress app. This increased visibility into your test history allows you to debug your tests faster and more effectively, all within your local workflow."]);
          },
          "buttonLabel": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Get started with Cypress Cloud"]);
          }
        },
        "createOrganization": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Finish setting up Cypress Cloud"]);
          },
          "content": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Join or create an organization in Cypress Cloud to access your projects and recorded test runs."]);
          },
          "buttonLabel": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Set up your organization"]);
          }
        },
        "connectProject": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Connect your project to Cypress Cloud"]);
          },
          "content": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Bring your recorded test results into your local development workflow to monitor, run, and fix tests all in the Cypress app."]);
          },
          "buttonLabel": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Connect your project"]);
          }
        },
        "record": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Record your first run"]);
          },
          "content": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Record a run to see your test results in Cypress Cloud. You can then optimize your test suite, debug failing and flaky tests, and integrate with your favorite tools."]);
          }
        },
        "ct": {
          "title": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize([_interpolate(_list(0)), " component testing is available for this project"]);
          },
          "content": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["You can now use Cypress to develop and test individual components without running your whole application. Generate the config in just a few clicks."]);
          },
          "primaryAction": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Quick setup"]);
          },
          "secondaryAction": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Read our guide"]);
          },
          "dismissAction": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Give feedback"]);
          }
        },
        "enableNotifications": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Start debugging as soon as your first tests fail"]);
          },
          "subtitle": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Cypress can notify you about Cloud test runs for your branch."]);
          },
          "enableDesktopNotifications": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Enable desktop notifications"]);
          },
          "remindMeLater": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Remind me later"]);
          },
          "notificationsEnabledTitle": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Notifications Enabled"]);
          },
          "notificationsEnabledBody": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Nice, notifications are enabled!"]);
          },
          "dismissBanner": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Dismiss banner"]);
          }
        }
      },
      "runSelectedSpecs": (ctx) => {
        const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
        return _plural([_normalize(["Run ", _interpolate(_named("n")), " spec"]), _normalize(["Run ", _interpolate(_named("n")), " specs"])]);
      },
      "testingTypePromo": {
        "e2e": {
          "header": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["End-to-end testing is not set up for this project"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize(["Try it out now, or ", _interpolate(_list(0)), " to learn more"]);
            },
            "link": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["read our guides"]);
            },
            "control": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Quick setup"]);
            }
          },
          "body": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["What is end-to-end testing?"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["End-to-end tests are perfect for testing your entire application from a user's perspective. Visit any URL and test full user journeys across pages and domains."]);
            },
            "listItem1": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize(["Test full user journeys across multiple pages using ", _interpolate(_list(0)), " to load up a web page for your test."]);
            },
            "listItem1Command": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["cy.visit()"]);
            },
            "listItem2": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize(["Work with live API calls or mock them with ", _interpolate(_list(0)), " to test all possible states of your app."]);
            },
            "listItem2Command": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["cy.intercept()"]);
            },
            "listItem3": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize(["Use ", _interpolate(_list(0)), " to maintain consistent browser sessions in your tests, and work with features like cookies and local storage, all while keeping your tests properly isolated."]);
            },
            "listItem3Command": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["cy.session()"]);
            }
          }
        },
        "ct": {
          "header": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Component testing is not set up for this project"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize(["Try it out now, or ", _interpolate(_list(0)), " to learn more"]);
            },
            "link": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["read our guides"]);
            },
            "control": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Quick setup"]);
            }
          },
          "body": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["What is Component Testing?"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Cypress Component Testing is a technique for developers to write, test, and debug components in isolation without ever leaving the browser - and without having to run your entire application."]);
            },
            "listItem1": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize(["Instead of visiting a page, use ", _interpolate(_list(0)), " to render your components directly in the browser."]);
            },
            "listItem1Command": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["cy.mount()"]);
            },
            "listItem2": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Test from a user's perspective with all the same Cypress commands that are available in end-to-end testing."]);
            },
            "listItem3": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize(["To get started, you can generate the config for ", _interpolate(_list(0)), ", ", _interpolate(_list(1)), ", and ", _interpolate(_list(2)), " (and ", _interpolate(_list(3)), "!)."]);
            },
            "listItem3Link": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["more"]);
            },
            "link": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Give feedback"]);
            }
          }
        }
      }
    },
    "noResults": {
      "defaultMessage": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["No results matched your search:"]);
      },
      "clearSearch": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Clear search"]);
      }
    },
    "sidebar": {
      "keyboardShortcuts": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Keyboard shortcuts"]);
        },
        "rerun": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Re-run tests"]);
        },
        "stop": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Stop tests"]);
        },
        "toggle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Toggle specs list"]);
        }
      },
      "toggleLabel": {
        "expanded": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Collapse sidebar"]);
        },
        "collapsed": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Expand sidebar"]);
        }
      },
      "nav": {
        "ariaLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Pages"]);
        }
      },
      "debug": {
        "debugFeature": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["New Debug feature"]);
        },
        "passed": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Relevant run passed"]);
        },
        "failed": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["Relevant run had ", _interpolate(_named("n")), " test failure"]), _normalize(["Relevant run had ", _interpolate(_named("n")), " test failures"])]);
        },
        "errored": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Relevant run had an error"]);
        },
        "erroredWithFailures": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["Relevant run had an error with ", _interpolate(_named("n")), " test failure"]), _normalize(["Relevant run had an error with ", _interpolate(_named("n")), " test failures"])]);
        },
        "passing": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Relevant run is passing"]);
        },
        "failing": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["Relevant run is failing with ", _interpolate(_named("n")), " test failure"]), _normalize(["Relevant run is failing with ", _interpolate(_named("n")), " test failures"])]);
        }
      }
    },
    "topNav": {
      "released": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Released"]);
      },
      "version": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Version"]);
      },
      "versionUnsupported": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Unsupported"]);
      },
      "installed": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Installed"]);
      },
      "latest": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Latest"]);
      },
      "seeAllReleases": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["See all releases"]);
      },
      "runningOldVersion": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["You're currently running an old version of Cypress. Update to the latest version for the best experience."]);
      },
      "docsMenu": {
        "docsHeading": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Docs"]);
        },
        "gettingStartedTitle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Getting started"]);
        },
        "firstTest": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Write your first test"]);
        },
        "testingApp": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Testing your app"]);
        },
        "organizingTests": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Organizing tests"]);
        },
        "referencesTitle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["References"]);
        },
        "bestPractices": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Best practices"]);
        },
        "configuration": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Configuration"]);
        },
        "api": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["API"]);
        },
        "ciTitle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Run in CI/CD"]);
        },
        "ciSetup": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Set up CI"]);
        },
        "fasterTests": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Run tests faster"]);
        },
        "prompts": {
          "ci1": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Configure CI"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Optimize your tests in CI by following these guides."]);
            },
            "seeOtherGuides": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["See other guides"]);
            },
            "intro": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Introduction to CI"]);
            },
            "learnTheBasics": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Learn the basics of running Cypress in CI."]);
            }
          },
          "orchestration1": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Run tests faster in CI"]);
            },
            "parallelTime": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["5 mins"]);
            },
            "noParallelTime": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["12 mins"]);
            },
            "withParallelization": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["with Parallelization"]);
            },
            "withoutParallelization": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["without Parallelization"]);
            },
            "intro": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["With Smart Orchestration, you'll be able to:"]);
            },
            "bullet1": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Run spec files in parallel"]);
            },
            "bullet2": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Prioritize failed specs to run first"]);
            },
            "bullet3": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Cancel CI runs on test failure"]);
            },
            "learnMore": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Learn more"]);
            }
          }
        }
      },
      "login": {
        "bodyInitial": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["Logging in gives you access to ", _interpolate(_list(0)), ". You can set up projects to be recorded and see test data from your project."]);
        },
        "bodySuccess": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["You are now logged in as ", _interpolate(_list(0)), "."]);
        },
        "bodyError": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["An error occurred while attempting to log in:"]);
        },
        "bodyBrowserError": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["The browser could not be opened."]);
        },
        "bodyBrowserErrorDetails": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress was unable to open your installed browser. To continue logging in, please paste this URL into your web browser:"]);
        },
        "cloud": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress Cloud"]);
        },
        "titleInitial": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Log in to Cypress"]);
        },
        "titleSuccess": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Login successful"]);
        },
        "titleFailed": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Login failed"]);
        },
        "titleBrowserError": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Browser error"]);
        },
        "actionLogin": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Log in"]);
        },
        "profileMenuLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Profile and logout"]);
        },
        "actionLogout": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Log out"]);
        },
        "actionContinue": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Continue"]);
        },
        "actionOpening": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Opening browser"]);
        },
        "actionWaiting": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Waiting for you to log in"]);
        },
        "actionTryAgain": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Try again"]);
        },
        "actionCancel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cancel"]);
        }
      },
      "updateCypress": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Upgrade to Cypress"]);
        },
        "currentlyRunning": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["You are currently running Version ", _interpolate(_list(0)), " of Cypress. "]);
        },
        "pasteToUpgradeProject": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["To upgrade to the latest version for your project, first ", _interpolate(_list(0)), ", then paste the command below into your terminal:"]);
        },
        "pasteToUpgradeGlobal": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["To upgrade to the latest version, first ", _interpolate(_list(0)), ", then paste the command below into your terminal:"]);
        },
        "rememberToCloseInsert": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["close this app"]);
        }
      },
      "upgradeText": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Upgrade"]);
      },
      "global": {
        "projects": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Projects"]);
        }
      }
    },
    "launchpadErrors": {
      "generic": {
        "configErrorTitle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress configuration error"]);
        },
        "retryButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Try again"]);
        },
        "stackTraceLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Stack trace"]);
        },
        "docsButton": {
          "configGuide": {
            "text": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Configuration guide"]);
            },
            "link": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["https://docs.cypress.io/guides/references/configuration"]);
            }
          },
          "cloudGuide": {
            "text": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Cypress Cloud guide"]);
            },
            "link": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["https://on.cypress.io/features-dashboard"]);
            }
          },
          "docsHomepage": {
            "text": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Cypress docs"]);
            },
            "link": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["https://docs.cypress.io"]);
            }
          }
        }
      },
      "noInternet": {
        "header": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["You have no internet connection"]);
        },
        "message": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Check your internet connection to pull the latest data from Cypress Cloud."]);
        },
        "connectProject": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Please check your internet connection to resolve this issue. When your internet connection is fixed, we will automatically attempt to fetch your latest runs for this project."]);
        }
      }
    },
    "setupPage": {
      "projectSetup": {
        "frameworkLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Front-end framework"]);
        },
        "frameworkPlaceholder": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Pick a framework"]);
        },
        "bundlerLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Bundler"]);
        },
        "bundlerPlaceholder": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Pick a bundler"]);
        },
        "languageLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Language"]);
        },
        "configFileLanguageLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress config file"]);
        },
        "detected": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["(detected)"]);
        },
        "browseIntegrations": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Browse our list of third-party framework integrations"]);
        },
        "communityFrameworkDefinitionProblem": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Community framework definition problem"]);
        },
        "communityDependenciesCouldNotBeParsed": (ctx) => {
          const { normalize: _normalize, plural: _plural } = ctx;
          return _plural([_normalize(["This project has a community framework definition installed that could not be loaded. It is located at the following path:"]), _normalize(["This project has some community framework definitions installed that could not be loaded. They are located at the following paths:"])]);
        },
        "seeFrameworkDefinitionDocumentation": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["See the ", _interpolate(_list(0)), " for more information about creating, installing, and troubleshooting third party definitions."]);
        },
        "frameworkDefinitionDocumentation": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["framework definition documentation"]);
        }
      },
      "step": {
        "continue": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Continue"]);
        },
        "next": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Next step"]);
        },
        "back": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Back"]);
        },
        "skip": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Skip"]);
        }
      },
      "configFile": {
        "createManually": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Create file manually"]);
        },
        "skippedLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Skipped"]);
        },
        "changesRequiredLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Changes required"]);
        },
        "changesRequiredBadge": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Changes required"]);
        },
        "changesRequiredDescription": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["Please merge the code below with your existing ", _interpolate(_list(0))]);
        }
      },
      "testingCard": {
        "configured": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Configured"]);
        },
        "notConfigured": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Not Configured"]);
        },
        "running": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Running"]);
        },
        "chooseABrowser": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Choose a browser"]);
        },
        "reconfigure": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Reconfigure"]);
        },
        "disabled": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Disabled"]);
        }
      }
    },
    "globalPage": {
      "empty": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Add project"]);
        },
        "helper": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Get started by adding your first project below."]);
        },
        "dropText": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["Drag your project directory here or ", _interpolate(_list(0))]);
        },
        "browseManually": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["browse manually."]);
        }
      },
      "settings": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Settings"]);
      },
      "saveChanges": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Save changes"]);
      },
      "cancel": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Cancel"]);
      },
      "externalEditorPreferences": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["External editor preferences"]);
      },
      "externalEditorPreferencesDescription1": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Select your preference for opening files on your system."]);
      },
      "externalEditorPreferencesDescription2": (ctx) => {
        const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
        return _normalize(["You can change this later in the ", _interpolate(_list(0)), " page."]);
      },
      "recentProjectsHeader": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Recent projects"]);
      },
      "searchPlaceholder": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Search projects"]);
      },
      "addProjectButton": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Add project"]);
      },
      "projectActions": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Project actions"]);
      },
      "removeProject": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Remove project"]);
      },
      "openInIDE": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Open in IDE"]);
      },
      "openInFinder": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Open in Finder"]);
      },
      "noResultsMessage": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["No projects matched your search:"]);
      }
    },
    "welcomePage": {
      "review": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Review the differences between each testing type"]);
      },
      "codeExample": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Code example"]);
      },
      "compareTypes": {
        "content": {
          "e2eTitle": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["End-to-end tests"]);
          },
          "e2eBullet1": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Visit URLs via"]);
          },
          "e2eBullet2": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Test flows and functionality across multiple pages"]);
          },
          "e2eBullet3": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Ideal for testing integrated flows in CD workflows"]);
          },
          "componentTitle": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Component tests"]);
          },
          "ctBullet1": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Import components via"]);
          },
          "ctBullet2": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Test individual components of a design system in isolation"]);
          },
          "ctBullet3": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Ideal for testing isolated flows and components in CI"]);
          }
        },
        "modalTitle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Key differences"]);
        }
      },
      "title": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Welcome to Cypress!"]);
      }
    },
    "settingsPage": {
      "config": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Resolved configuration"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["Since the options in the ", _interpolate(_list(0)), " can be set dynamically by your development environment, please refer to the legend below to understand how the configuration options are resolved."]);
        },
        "legend": {
          "env": {
            "label": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["env"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Set from environment variables"]);
            }
          },
          "default": {
            "label": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["default"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Default values"]);
            }
          },
          "dynamic": {
            "label": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["dynamic"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize(["Set by the ", _interpolate(_list(0)), " function"]);
            }
          },
          "cli": {
            "label": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["cli"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Set from CLI arguments"]);
            }
          },
          "config": {
            "label": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["config"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize(["Set from ", _interpolate(_list(0))]);
            }
          }
        }
      },
      "proxy": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Proxy settings"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress auto-detected the following proxy settings from your operating system."]);
        },
        "bypassList": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Proxy bypass list"]);
        },
        "proxyServer": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Proxy server"]);
        }
      },
      "editor": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["External editor"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["External editor to use for editing code opened when using Cypress."]);
        },
        "noEditorSelectedPlaceholder": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Choose your editor..."]);
        },
        "customPathPlaceholder": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["/path/to/editor"]);
        }
      },
      "notifications": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Desktop notifications"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress can notify you about Cloud test runs for your branch."]);
        },
        "notifyMeWhenRunStarts": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Notify me when a run starts"]);
        },
        "notifyMeWhenRunIsFailing": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Notify me when a run begins to fail"]);
        },
        "notifyMeWhenRunCompletes": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Notify me when a run completes"]);
        },
        "passed": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Passed"]);
        },
        "failed": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Failed"]);
        },
        "canceled": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Canceled"]);
        },
        "errored": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Errored"]);
        },
        "sendTestNotification": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Send a test notification"]);
        },
        "notReceivingNotifications": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["Not receiving notifications? You might need to allow notifications from Cypress in your computer's system preferences. ", _interpolate(_list(0))]);
        },
        "testNotificationTitle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Hello From Cypress"]);
        },
        "testNotificationBody": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["This is a test notification"]);
        },
        "troubleshoot": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Troubleshoot"]);
        },
        "enableNotificationsLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["To modify notification settings, enable desktop notifications"]);
        }
      },
      "projectId": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Project ID"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["The Project ID configured for this project inside of Cypress Cloud. ", _interpolate(_list(0))]);
        }
      },
      "specPattern": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Spec patterns"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["The globs pointing Cypress to your spec files configured for this project. ", _interpolate(_list(0))]);
        }
      },
      "recordKey": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Record key"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["The Record Key configured for this project inside of Cypress Cloud. ", _interpolate(_list(0))]);
        },
        "manageKeys": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Manage keys"]);
        },
        "errorEmpty": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["You do not have permission to record on this project"]);
        },
        "errorEmptyButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Request record rights"]);
        },
        "errorAccess": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["You do not have permission to view this project"]);
        },
        "errorAccessPending": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Your request for access to this project is pending approval"]);
        },
        "errorAccessButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Request access"]);
        },
        "errorNotFound": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Project not found"]);
        },
        "errorNotFoundButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Connect it again"]);
        },
        "errorNotLoggedIn": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["You are not connected to Cypress Cloud"]);
        },
        "errorNotLoggedInButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Log in to Cypress Cloud"]);
        }
      },
      "project": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Project settings"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Review the configuration settings currently in use for this project."]);
        }
      },
      "cloud": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress Cloud settings"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Review the configuration settings for recording to Cypress Cloud."]);
        }
      },
      "experiments": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Experiments"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["If you'd like to try out new features that we're working on, you can enable beta features for your project by turning on the experimental features you'd like to try. ", _interpolate(_list(0))]);
        },
        "experimentalCspAllowList": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["CSP Allow List"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Enables Cypress to selectively permit Content-Security-Policy and Content-Security-Policy-Report-Only header directives, including those that might otherwise block Cypress from running."]);
          }
        },
        "experimentalFetchPolyfill": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Fetch polyfill"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Automatically replaces `window.fetch` with a polyfill that Cypress can spy on and stub. Note: `experimentalFetchPolyfill` has been deprecated in Cypress 6.0.0 and will be removed in a future release. Consider using [`cy.intercept()`](https://on.cypress.io/intercept) to intercept `fetch` requests instead."]);
          }
        },
        "experimentalInteractiveRunEvents": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Interactive run events"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Allows listening to the [`before:run`](https://on.cypress.io/before-run), [`after:run`](https://on.cypress.io/after-run), [`before:spec`](https://on.cypress.io/before-spec), and [`after:spec`](https://on.cypress.io/after-spec) events in plugins during interactive mode."]);
          }
        },
        "experimentalModifyObstructiveThirdPartyCode": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Modify obstructive third party code"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Applies `modifyObstructiveCode` to third party `.html` and `.js`, removes subresource integrity, and modifies the user agent in Electron."]);
          }
        },
        "experimentalSingleTabRunMode": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Single tab run mode"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Runs all component specs in a single tab, trading spec isolation for faster run mode execution."]);
          }
        },
        "experimentalSourceRewriting": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Source rewriting"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Enables AST-based JS/HTML rewriting. This may fix issues caused by the existing regex-based JS/HTML replacement algorithm. See [#5273](https://github.com/cypress-io/cypress/issues/5273) for details."]);
          }
        },
        "experimentalStudio": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Studio"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Generate and save commands directly to your test suite by interacting with your app as an end user would."]);
          }
        },
        "experimentalWebKitSupport": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["WebKit Support"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Adds support for testing in the WebKit browser engine used by Safari. See https://on.cypress.io/webkit-experiment for more information."]);
          }
        },
        "experimentalRunAllSpecs": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Run All Specs"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(['Enables the "Run All Specs" UI feature, allowing the execution of multiple specs sequentially.']);
          }
        },
        "experimentalOriginDependencies": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Origin Dependencies"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Enables support for `Cypress.require()` for including dependencies within the `cy.origin()` callback."]);
          }
        },
        "experimentalMemoryManagement": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Memory Management"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Enables support for improved memory management within Chromium-based browsers."]);
          }
        },
        "experimentalSkipDomainInjection": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Skip Domain Injection"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Disables setting `document.domain` to the application's super domain on injection."]);
          }
        }
      },
      "device": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Device settings"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Review the configuration settings currently in use for this device."]);
        }
      },
      "testingPreferences": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Testing preferences"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Configure your testing environment with these flags"]);
        },
        "autoScrollingEnabled": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Auto scrolling enabled"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Scroll behavior when running tests."]);
          }
        }
      },
      "footer": {
        "text": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["You can reconfigure the ", _interpolate(_named("testingType")), " testing settings for this project if you're experiencing issues with your Cypress configuration."]);
        },
        "button": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Configuration guide"]);
        },
        "buttonLink": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["https://docs.cypress.io/guides/references/configuration"]);
        }
      }
    },
    "runs": {
      "slideshow": {
        "tour": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Record your first test run to Cypress Cloud"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["You're almost there! Start recording your test runs to Cypress Cloud by running the command above in your local or CI terminal."]);
          }
        },
        "step1": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Monitor test failures in real time"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Uncover high-risk failed and flaky tests in CI before they become a problem in production."]);
          }
        },
        "step2": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Check if failed CI test runs also fail locally"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Use the Test Runner to run only the tests that failed in your last recorded run."]);
          }
        },
        "step3": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Build, test, and ship with confidence ðŸš€"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["With Cypress Cloud, you can proactively identify, investigate, and resolve failures, and be a quality champion."]);
          }
        },
        "controls": {
          "step": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize([_interpolate(_list(0)), " of ", _interpolate(_list(1))]);
          },
          "next": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Next"]);
          },
          "reset": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Reset"]);
          },
          "view": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["View Tour"]);
          }
        }
      },
      "connect": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Connect to view your recorded runs"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress Cloud is built for teams who need to do testing at scale."]);
        },
        "buttonUser": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Connect to Cypress Cloud"]);
        },
        "buttonProject": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Connect a Cypress Cloud project"]);
        },
        "modal": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Connect project"]);
          },
          "cancel": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Cancel"]);
          },
          "createOrg": {
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["You need to create an organization in Cypress Cloud to continue."]);
            },
            "button": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Create organization"]);
            },
            "waitingButton": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Waiting for you to create an organization..."]);
            },
            "refreshButton": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Refresh organizations list"]);
            }
          },
          "selectProject": {
            "organization": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Organization"]);
            },
            "noOrganizationSelectedError": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["required when creating a new project"]);
            },
            "manageOrgs": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Manage organizations"]);
            },
            "project": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Project"]);
            },
            "projectName": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Project name"]);
            },
            "projectNameDisclaimer": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["(You can change this later)"]);
            },
            "createNewProject": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Create new"]);
            },
            "chooseExistingProject": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Choose an existing project"]);
            },
            "newProjectAccess": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Project access"]);
            },
            "privateLabel": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Private"]);
            },
            "privateDescription": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Only invited users can view recorded test results."]);
            },
            "publicLabel": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Public"]);
            },
            "publicDescription": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Anyone can view recorded test results."]);
            },
            "connectProject": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Connect project"]);
            },
            "createProject": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Create project"]);
            },
            "placeholderOrganizations": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Pick an organization"]);
            },
            "placeholderProjects": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Pick a project"]);
            },
            "placeholderProjectsPending": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Pick an organization first"]);
            }
          },
          "connectManually": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Connect project manually"]);
            },
            "warning": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["We couldn't add the projectId to your cypress.config.js file automatically."]);
            },
            "mainMessage": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
              return _normalize(["Manually add the ", _interpolate(_named("projectId")), " to the root of the config object in your ", _interpolate(_named("configFile")), " file."]);
            },
            "waitingButton": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Waiting for you to add the projectId..."]);
            }
          }
        },
        "errors": {
          "baseError": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Cypress Cloud error"]);
            }
          },
          "internalServerError": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Cannot connect to Cypress Cloud"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize(["The request times out when trying to retrieve the info from Cypress Cloud. Please refresh the page to try again and visit our ", _interpolate(_list(0)), " if this behavior continues."]);
            },
            "link": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Support Page"]);
            }
          }
        }
      },
      "connectSuccessAlert": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["This project is now connected to Cypress Cloud!"]);
        },
        "item1": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["We automatically added the ", _interpolate(_named("projectId")), " to your ", _interpolate(_named("configFile")), " file."]);
        },
        "item2": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["Please ensure that your ", _interpolate(_list(0)), " file is checked into source control."]);
        }
      },
      "empty": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Copy the command below to record your first run"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["Review the ", _interpolate(_list(0)), " to Cypress Cloud"]);
        },
        "link": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["guide on recording runs"]);
        },
        "gitRepositoryNotDetected": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Git repository not detected"]);
        },
        "ensureGitSetupCorrectly": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress uses Git to associate runs with your local state. As a fallback, all runs for your project are shown. Please ensure that version control is set up correctly."]);
        },
        "noRunsFoundForBranch": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["No runs found for your branch"]);
        },
        "noRunsForBranchMessage": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress uses Git to show runs for your branch. As a fallback, all runs for your project are shown. Ensure that version control is properly configured and that you are sending Git information to Cypress Cloud."]);
        }
      },
      "results": {
        "skipped": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["skipped"]);
        },
        "pending": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["pending"]);
        },
        "passed": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["passed"]);
        },
        "failed": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["failed"]);
        }
      },
      "errors": {
        "notFound": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Couldn't find your project"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["We were unable to find an existing project matching the ", _interpolate(_list(0)), " set in your Cypress config file. You can reconnect with an existing project or create a new project."]);
          },
          "button": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Reconnect your project"]);
          }
        },
        "unauthorized": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Request access to view the recorded runs"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["This is a private project that you do not currently have access to. Please request access from the project owner in order to view the list of runs."]);
          },
          "button": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Request access"]);
          }
        },
        "unauthorizedRequested": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Your access request for this project has been sent."]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["The owner of this project has been notified of your request. We'll notify you via email when your access request has been granted."]);
          },
          "button": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Request Sent"]);
          }
        },
        "connectionFailed": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Cannot connect to Cypress Cloud"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["The request times out when trying to retrieve the recorded runs from Cypress Cloud. Please refresh the page to try again and visit out ", _interpolate(_list(0)), " if this behavior continues."]);
          },
          "link": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Support page"]);
          },
          "button": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Try again"]);
          }
        }
      }
    },
    "debugPage": {
      "openFile": {
        "openInIDE": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Open in IDE"]);
        },
        "notFoundLocally": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Opening in IDE is disabled because the spec is not found in this project"]);
        }
      },
      "limit": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress renders up to 100 failed test results"]);
        },
        "message": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["This run has ", _interpolate(_named("n")), " failed tests"]), _normalize(["This run has ", _interpolate(_named("n")), " failed test"]), _normalize(["This run has ", _interpolate(_named("n")), " failed tests"])]);
        },
        "link": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["See all test results in Cypress Cloud"]);
        }
      },
      "runFailures": {
        "btn": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Run Failures"]);
        },
        "notFoundLocally": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Spec was not found locally"]);
        },
        "switchTestingTypeInfo": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["There is ", _interpolate(_named("n")), " ", _interpolate(_named("testingType")), " test failing in this spec. To run it locally switch to ", _interpolate(_named("testingType")), " testing."]), _normalize(["There are ", _interpolate(_named("n")), " ", _interpolate(_named("testingType")), " tests failing in this spec. To run them locally switch to ", _interpolate(_named("testingType")), " testing."])]);
        },
        "switchTestingTypeAction": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["Switch to ", _interpolate(_named("testingType")), " testing"]);
        }
      },
      "switchToRun": (ctx) => {
        const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
        return _normalize(["Switch to run number ", _interpolate(_named("runNumber"))]);
      },
      "overLimit": {
        "usageExceededTitle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["You've reached your monthly test result limit"]);
        },
        "usageExceededUserMessage": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["Your Free Cypress Cloud plan includes ", _interpolate(_named("numberTests")), " monthly recorded test results. Contact your Cypress Cloud admin to upgrade your plan and view more test results."]);
        },
        "usageExceededAdminMessage": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["Your Free Cypress Cloud plan includes ", _interpolate(_named("numberTests")), " monthly recorded test results. Upgrade your plan now to view more test results."]);
        },
        "retentionExceededTitle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Beyond data retention"]);
        },
        "retentionExceededMessage": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["Your data retention limit is ", _interpolate(_named("limitDays")), " days and these tests ran ", _interpolate(_named("runAgeDays")), " days ago. Upgrade your plan to increase your data retention limit."]);
        },
        "upgradePlan": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Upgrade plan"]);
        },
        "contactAdmin": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Contact admin"]);
        }
      },
      "wellDone": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Well Done!"]);
      },
      "allYourTestsPassed": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["All your tests passed."]);
      },
      "incomplete": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Incomplete"]);
      },
      "specsSkipped": (ctx) => {
        const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
        return _plural([_normalize([_interpolate(_named("totalSkippedSpecs")), " of ", _interpolate(_named("n")), " spec skipped"]), _normalize([_interpolate(_named("totalSkippedSpecs")), " of ", _interpolate(_named("n")), " specs skipped"])]);
      },
      "runHasNoTests": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Run has no tests"]);
      },
      "theRunStartedButNeverCompleted": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["The run started but never completed. This can happen when the run is cancelled from CI or when Cypress crashes while running tests."]);
      },
      "checkYourCiLogs": (ctx) => {
        const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
        return _normalize(["Check your ", _interpolate(_list(0)), " logs for more information."]);
      },
      "archiveThisRun": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Archive this run to remove it from the runs list and analytics."]);
      },
      "manuallyCancelled": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Manually cancelled"]);
      },
      "mostRecentRun": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["You are on the most recent run"]);
      },
      "switchToLatestRun": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Switch to latest run"]);
      },
      "switchRun": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Switch run"]);
      },
      "foundMoreThan100Runs": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["We found more than 100 runs."]);
      },
      "goToCypressCloud": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Go to Cypress Cloud to see all runs"]);
      },
      "emptyStates": {
        "debugDirectlyInCypress": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Debug failed CI runs directly in Cypress"]);
        },
        "reviewRerunAndDebug": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Review, rerun, and debug failed CI test runs that are recorded to Cypress Cloud â€“ all from within your local Cypress app."]);
        },
        "connectToCypressCloud": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Connect to Cypress Cloud"]);
        },
        "connect": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Connect to debug your tests"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Cypress Cloud is built for teams who need to do testing at scale."]);
          }
        },
        "noProjectTestMessage": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Connect a Cypress Cloud project to locally debug failed CI test runs"]);
        },
        "noRuns": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Copy the command below to record your first run"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["Review the ", _interpolate(_list(0)), " to Cypress Cloud"]);
          },
          "link": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["guide on recording runs"]);
          }
        },
        "gitRepositoryNotDetected": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Git repository not detected"]);
        },
        "ensureGitSetupCorrectly": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress uses Git to associate runs with your local state. Please ensure that Git is properly configured for your project."]);
        },
        "learnAboutRecordingSrText": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["about recording a run to Cypress Cloud"]);
        },
        "learnAboutDebuggingSrText": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["about debugging CI failures in Cypress"]);
        },
        "learnAboutProjectSetupSrText": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["about project setup in Cypress"]);
        },
        "noRunsFoundForBranch": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["No runs found for your branch"]);
        },
        "noRunsForBranchMessage": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress uses Git to show runs for your branch. Ensure that version control is properly configured and that you are sending Git information to Cypress Cloud."]);
        },
        "slideshow": {
          "tour": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Record your first test run to Cypress Cloud"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["You're almost there! Start recording your test runs to Cypress Cloud by running the command below in your local or CI terminal."]);
            }
          },
          "step1": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Review how many tests failed during a CI test run"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["The Debug page shows the latest completed test run for your current checked out commit."]);
            }
          },
          "step2": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Check if failed CI test runs also fail locally"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Use the Test Runner to run only the tests that failed in your last recorded run."]);
            }
          },
          "step3": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Locally debug failed test runs with visual artifacts"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Easily review screenshots, videos and logs from your tests."]);
            }
          },
          "controls": {
            "step": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize([_interpolate(_list(0)), " of ", _interpolate(_list(1))]);
            },
            "next": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Next"]);
            },
            "reset": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Reset"]);
            },
            "view": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["View Tour"]);
            }
          }
        }
      },
      "pending": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Testing in progress..."]);
        },
        "titleCompletionScheduled": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Scheduled to complete..."]);
        },
        "scheduledTime": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["Scheduled to complete in ", _interpolate(_named("time"))]);
        },
        "scheduledCompletionExpired": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Scheduled to complete soon"]);
        },
        "failuresHere": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Failures will be displayed here"]);
        }
      },
      "specCounts": {
        "whenRunning": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize([_interpolate(_named("completed")), " of ", _interpolate(_named("total")), " specs completed"]), _normalize([_interpolate(_named("completed")), " of ", _interpolate(_named("total")), " spec completed"]), _normalize([_interpolate(_named("completed")), " of ", _interpolate(_named("total")), " specs completed"])]);
        },
        "whenCompleted": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize([_interpolate(_named("n")), " specs"]), _normalize([_interpolate(_named("n")), " spec"]), _normalize([_interpolate(_named("n")), " specs"])]);
        }
      },
      "header": {
        "runUrl": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["View in Cypress Cloud"]);
        },
        "commitsAhead": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["You are ", _interpolate(_named("n")), " commit ahead"]), _normalize(["You are ", _interpolate(_named("n")), " commits ahead"])]);
        }
      },
      "stats": {
        "groups": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize([_interpolate(_named("n")), " group"]), _normalize([_interpolate(_named("n")), " groups"])]);
        },
        "operatingSystems": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize([_interpolate(_named("n")), " operating system"]), _normalize([_interpolate(_named("n")), " operating systems"])]);
        },
        "browsers": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize([_interpolate(_named("n")), " browser"]), _normalize([_interpolate(_named("n")), " browsers"])]);
        }
      },
      "artifacts": {
        "stdout": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["View Log"]);
        },
        "screenshots": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["View Screenshots"]);
        },
        "video": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["View Video"]);
        }
      }
    },
    "testingType": {
      "modalTitle": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Choose a testing type"]);
      },
      "e2e": {
        "name": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["E2E Testing"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Build and test the entire experience of your application from end-to-end to ensure each flow matches your expectations."]);
        }
      },
      "component": {
        "name": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Component Testing"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Build and test your components from your design system in isolation in order to ensure each state matches your expectations."]);
        }
      },
      "componentDisabled": {
        "description": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["To test your components you must ", _interpolate(_list(0)), " as an NPM dependency for this project."]);
        },
        "link": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["install Cypress"]);
        }
      }
    },
    "migration": {
      "before": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Before"]);
      },
      "after": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["After"]);
      },
      "heresWhy": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["here's why:"]);
      },
      "renameAuto": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We recommend automatically renaming your specs in this step"]);
        },
        "changeButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["change"]);
        },
        "changedSpecFolder": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We've changed the default spec folder from:"]);
        },
        "changedSpecExt": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We've changed the default spec file extension from:"]);
        },
        "changedSpecPatternExplain": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["We've changed the default spec file extension to ", _interpolate(_list(0)), " in order to avoid conflicts with any existing testing frameworks."]);
        },
        "optedOutMessage": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["You've opted not to rename your spec file extension. You may need to change your specPattern later so we can still find your spec files."]);
        },
        "folderRenameMessage": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["You've opted not to rename your spec file extension, we'll only rename the folder"]);
        },
        "modal": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Change the existing spec file extension"]);
          },
          "warning": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["We recommend using the default extension to avoid inconsistencies, framework conflicts, and confusion with your team."]);
          },
          "line1": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Cypress now supports the ability to create new spec files from within the UI for both E2E and component specs."]);
          },
          "line2": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["All new spec files created within Cypress will use the default pattern of: "]);
          },
          "line3": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["We want to rename your existing specs so that they have a consistent filename pattern for both E2E and component testing."]);
          },
          "line4": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["All documentation and example code will be using: "]);
          },
          "line5": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["We've changed the placement of component specs to be next to their source files (e.g. src/Button.jsx and src/Button.cy.jsx)"]);
          },
          "line6": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["The new default pattern of ", _interpolate(_list(0)), " prevents targeting conflicts with other testing frameworks. (e.g. Jest)"]);
          },
          "label": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Choose from the following filename patterns:"]);
          },
          "option1": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize([_interpolate(_list(0)), " (recommended)"]);
          },
          "option2": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Don't rename anything â€” keep what I have."]);
          },
          "option3": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Rename folder only."]);
          },
          "optOutAdditional": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["I may need to change my ", _interpolate(_list(0)), " later if I don't use the recommended filename extension."]);
          },
          "buttonSave": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Save changes"]);
          },
          "buttonCancel": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Cancel"]);
          }
        }
      },
      "renameManual": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We need you to move your component specs manually"]);
        },
        "componentFolderRemoved": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["We've removed the ", _interpolate(_list(0)), " options from the Cypress config."]);
        },
        "addedSpecPattern": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["We've added a new ", _interpolate(_list(0)), " option in the Cypress config that tells us where to find your component specs."]);
        },
        "cannotAuto": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["We can't automatically migrate your existing component spec files. We recommend that you move the following component spec files next to your source component files (e.g. ", _interpolate(_list(0)), ")"]);
        },
        "ifSkipNote": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["If you skip this step, Cypress will still be able to find them, but any new specs that you create will automatically be created next to your component files."]);
        }
      },
      "renameSupport": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We'll automatically rename your existing E2E support file in this step"]);
        },
        "serveDifferentTypes": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We now serve different support files for E2E and Component Testing."]);
        },
        "changedSupportFile": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We've renamed the E2E support file from:"]);
        }
      },
      "configFile": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We need to migrate to the new Cypress configuration file"]);
        },
        "changedDefault": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We've changed the default Cypress config file from:"]);
        },
        "customOptions": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["We've set a custom ", _interpolate(_named("specPattern")), " option based on your ", _interpolate(_named("options")), "."]);
        },
        "willConvert": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["We'll automatically create a new ", _interpolate(_named("jsFile")), " file and seed it with your options from your existing ", _interpolate(_named("jsonFile")), "."]);
        }
      },
      "setupComponent": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["You need to reconfigure Cypress for component testing"]);
        },
        "line1": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We've detected that you are currently using the experimental version of component testing."]);
        },
        "line2": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Your existing configuration is no longer compatible with new component testing configuration options."]);
        },
        "line3": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["In a previous step, we renamed your component specs, but can't automatically migrate your existing component testing configuration."]);
        },
        "line4": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["In the next screen, you'll be able to reconfigure component testing in a new guided configuration wizard."]);
        }
      },
      "wizard": {
        "title": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["Migrating to Cypress ", _interpolate(_named("version"))]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Your project requires updates to work with this version."]);
        },
        "typicalMigrationLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Typical migration:"]);
        },
        "typicalMigrationTime": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["5-10 minutes"]);
        },
        "step1": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Migrate existing specs"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["In this step, we'll automatically rename and/or move your existing spec files as needed."]);
          },
          "button": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Rename these specs for me"]);
          },
          "buttonSkip": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Skip renaming specs"]);
          },
          "buttonRenameFolder": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Rename the folder for me"]);
          }
        },
        "step2": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Move your existing component specs"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["In this step, you'll manually move your existing component specs to their new default location."]);
          },
          "buttonWait": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Waiting for you to move your component specs..."]);
          },
          "buttonDone": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Continue to next step"]);
          },
          "button": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["I'll do this later"]);
          }
        },
        "step3": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Rename the Cypress support file"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["In this step, we'll automatically rename your existing support file."]);
          },
          "button": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Rename the support file for me"]);
          }
        },
        "step4": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Migrate to the new Cypress configuration file"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["In this step, we'll automatically migrate your existing Cypress configuration to the new Cypress configuration file."]);
          },
          "button": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Migrate the configuration for me"]);
          }
        },
        "step5": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Reconfigure component testing"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["In this step, we'll explain how you will reconfigure Cypress for component testing."]);
          },
          "button": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Finish migration and continue"]);
          }
        }
      }
    },
    "majorVersionWelcome": {
      "title": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["What's New in Cypress"]);
      },
      "actionContinue": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Continue"]);
      },
      "linkReleaseNotes": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["View full changelog"]);
      }
    },
    "setupWizard": {
      "selectFramework": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Project setup"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Confirm the front-end framework and bundler used in your project."]);
        }
      },
      "installDependencies": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Install dev dependencies"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Based on your previous selection, the following dependencies are required."]);
        },
        "pasteCommand": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Paste this command into your terminal to install the following packages:"]);
        },
        "waitForInstall": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Waiting for you to install the dependencies..."]);
        },
        "installed": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["installed"]);
        },
        "pendingInstall": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["pending installation"]);
        },
        "installationAlertSuccess": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["You've successfully installed all required dependencies."]);
        }
      },
      "configFiles": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Configuration files"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We added the following files to your project:"]);
        }
      },
      "chooseBrowser": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Choose a browser"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["Choose your preferred browser for ", _interpolate(_named("testingType")), " testing."]);
        }
      }
    },
    "e2eProjectSetup": {
      "title": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Project setup"]);
      },
      "description": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Confirm your project's preferred language."]);
      }
    },
    "openBrowser": {
      "startComponent": (ctx) => {
        const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
        return _normalize(["Start Component Testing in ", _interpolate(_named("browser"))]);
      },
      "startE2E": (ctx) => {
        const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
        return _normalize(["Start E2E Testing in ", _interpolate(_named("browser"))]);
      },
      "openingComponent": (ctx) => {
        const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
        return _normalize(["Opening Component Testing in ", _interpolate(_named("browser"))]);
      },
      "openingE2E": (ctx) => {
        const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
        return _normalize(["Opening E2E Testing in ", _interpolate(_named("browser"))]);
      },
      "running": (ctx) => {
        const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
        return _normalize(["Running ", _interpolate(_named("browser"))]);
      },
      "focus": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Focus"]);
      },
      "close": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Close"]);
      },
      "switchTestingType": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Switch testing type"]);
      }
    },
    "runner": {
      "header": {
        "reviewDocs": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Review the docs"]);
        },
        "troubleRendering": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["if you're having trouble rendering your components properly."]);
        }
      },
      "snapshot": {
        "highlightsLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Highlights"]);
        },
        "testsRunningError": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cannot show snapshot while tests are running"]);
        },
        "snapshotMissingError": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["The snapshot is missing. Displaying current state of the DOM."]);
        },
        "defaultTitle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["DOM snapshot"]);
        },
        "pinnedTitle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Pinned"]);
        },
        "studioActiveError": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cannot show snapshot while creating commands in Studio"]);
        }
      },
      "selectorPlayground": {
        "matches": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["No matches"]), _normalize([_interpolate(_named("n")), " match"]), _normalize([_interpolate(_named("n")), " matches"])]);
        },
        "playgroundTooltip": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Click an element to see a suggested selector"]);
        },
        "copyTooltip": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Copy to clipboard"]);
        },
        "copyTooltipAction": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Copied!"]);
        },
        "printTooltip": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Print to console"]);
        },
        "printTooltipAction": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Printed!"]);
        },
        "invalidSelector": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Invalid"]);
        },
        "selectorMethodsLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Selector methods"]);
        },
        "toggle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Toggle playground"]);
        }
      },
      "automation": {
        "disconnected": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["The Cypress extension has disconnected."]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Cypress cannot run tests without this extension."]);
          },
          "reload": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Reload the browser"]);
          }
        },
        "missing": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["The Cypress extension is missing."]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Cypress cannot run tests without this extension. Please choose another browser."]);
          }
        },
        "shared": {
          "link": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Read more about browser management"]);
          }
        }
      },
      "viewportTooltip": {
        "buttonText": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Review the guide on viewports"]);
        },
        "buttonHref": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["https://on.cypress.io/viewport"]);
        },
        "infoText": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["The viewport determines the width and height of your application under test. By default the viewport will be ", _interpolate(_list(0)), " by ", _interpolate(_list(1)), " for ", _interpolate(_list(2)), " testing."]);
        },
        "configText": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["Additionally, you can override this value in your ", _interpolate(_named("configFile")), " or via the ", _interpolate(_named("viewportCommand")), " command."]);
        }
      },
      "studio": {
        "studio": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Studio"]);
        },
        "studioDescription": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Generate Cypress commands by interacting with your site as an end user would. Then, save these commands directly to your test file."]);
        },
        "studioDetailedDescription": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Generate and save commands directly to your test suite by interacting with your app as an end user would. Right click on an element to add an assertion. Studio will track events that generate the following commands:"]);
        },
        "getStartedButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Get started"]);
        },
        "feedbackPrompt": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["Your ", _interpolate(_list(0)), " will be highly influential to our team."]);
        },
        "experimentalMessage": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["This feature is currently experimental and we will be adding more commands and abilities in the future."]);
        },
        "feedbackLink": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["feedback"]);
        },
        "saveTest": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Save test"]);
        },
        "testName": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Test name"]);
        },
        "saveTestButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Save"]);
        },
        "closeStudio": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Close Studio"]);
        },
        "restartStudio": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Restart Studio"]);
        },
        "copyCommands": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Copy commands to clipboard"]);
        },
        "commandsCopied": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Commands copied!"]);
        },
        "availableCommands": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Available commands"]);
        },
        "giveFeedback": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Give feedback"]);
        },
        "enterValidUrl": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Enter a valid URL to visit"]);
        },
        "continue": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Continue"]);
        },
        "actionCancel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cancel"]);
        }
      }
    },
    "warnings": {
      "retry": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Try again"]);
      }
    },
    "versions": {
      "alpha": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Alpha"]);
      },
      "community": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Community"]);
      },
      "beta": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Beta"]);
      },
      "new": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["New"]);
      },
      "communityNote": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["This is a community provided definition."]);
      }
    }
  }
};
const rawJsonMessages = `{
  "links": {
    "learnMore": "Learn more.",
    "learnMoreButton": "Learn more",
    "needHelp": "Need help"
  },
  "components": {
    "modal": {
      "dismiss": "Dismiss"
    },
    "fileSearch": {
      "noMatchesForExtension": "No files found when searching for the file extension",
      "noMatchesForFileName": "",
      "byFilenameInput": "Search by filename...",
      "byExtensionInput": "Extensions to include e.g. *.tsx, *.vue",
      "matchesIndicatorEmptyFileSearch": "No matches | 1 match | { denominator } matches",
      "matchesIndicator": "No matches | {numerator} of {denominator} matches | {numerator} of {denominator} matches"
    },
    "button": {
      "cancel": "Cancel",
      "back": "Back"
    },
    "loading": {
      "config": {
        "title": "Initializing config...",
        "description": "Please wait while we load your project and find browsers installed on your system"
      }
    },
    "select": {
      "placeholder": "Choose an option..."
    },
    "alert": {
      "dismissAriaLabel": "Dismiss"
    },
    "specPattern": {
      "matches": "No matches | {n} match | {n} matches"
    },
    "specPatternModal": {
      "title": "Spec pattern settings"
    }
  },
  "clipboard": {
    "copy": "Copy",
    "copied": "Copied!"
  },
  "actions": {
    "close": "Close"
  },
  "file": {
    "edit": "Edit",
    "git": {
      "modified": "Modified",
      "created": "Created"
    }
  },
  "status": {
    "enabled": "Enabled",
    "disabled": "Disabled"
  },
  "createSpec": {
    "newSpec": "New spec",
    "createSpec": "Create spec",
    "done": "Done!",
    "noComponentsFound": "No components found",
    "unableToParseFile": "Unable to parse file",
    "updateSpecPattern": "Update spec pattern",
    "newSpecModalTitle": "Create new spec",
    "successPage": {
      "header": "Great! The spec was successfully added",
      "runSpecButton": "Okay, run the spec",
      "createAnotherSpecButton": "Create another spec"
    },
    "page": {
      "defaultPatternNoSpecs": {
        "title": "Create your first spec",
        "component": {
          "description": "Since this project looks new, we recommend that you get started by creating a spec for one of your components."
        },
        "e2e": {
          "description": "Since this project looks new, we recommend that you use the specs and tests that we've written for you to get started."
        }
      },
      "customPatternNoSpecs": {
        "title": "No specs found",
        "description": "We couldn't find any files matching the following spec patterns. You may need to move your specs or update your {0} to find them."
      }
    },
    "noSpecsMessage": "If you feel that you're seeing this screen in error, and there should be specs listed here, you likely need to update the spec pattern.",
    "viewSpecPatternButton": "View spec pattern",
    "e2e": {
      "importFromScaffold": {
        "header": "Scaffold example specs",
        "description": "We'll generate several example specs to help guide you on how to write tests in Cypress.",
        "specsAddedHeader": "Great! We added the following files to your project:",
        "specsAddedButton": "Okay, I got it!",
        "specsAddingHeader": "Adding specs..."
      },
      "importTemplateSpec": {
        "header": "Create new spec",
        "description": "We'll generate a template spec file which can be used to start testing your application.",
        "chooseFilenameHeader": "Enter the path for your new spec",
        "inputPlaceholder": "Enter a relative path...",
        "invalidSpecWarning": "This path is invalid because it doesn't match the following ",
        "specExtensionWarning": "We recommend naming your spec to match the following pattern: "
      }
    },
    "component": {
      "importFromComponent": {
        "header": "Create from component",
        "description": "Generate a basic component test for any of the components in this project.",
        "chooseAComponentHeader": "Choose a component"
      },
      "importTemplateSpec": {
        "header": "Create new spec",
        "description": "We'll generate a template spec file which can be used to start testing your components.",
        "invalidComponentWarning": "We couldn't generate a valid path matching your custom "
      }
    }
  },
  "specPage": {
    "pageTitle": "Specs",
    "newSpecButton": "New spec",
    "searchPlaceholder": "Search specs",
    "clearSearch": "Clear search field",
    "componentSpecsHeader": "Component specs",
    "e2eSpecsHeader": "E2E specs",
    "componentSpecsHeaderShort": "Component",
    "e2eSpecsHeaderShort": "E2E",
    "lastUpdated": {
      "header": "Last updated",
      "tooltip": {
        "gitStatus": "Git status",
        "gitInfo": "git info",
        "gitInfoAvailable": "{0} of the spec files within this project",
        "gitInfoUnavailable": "Cypress is unable to detect {0} for this project and has defaulted to showing file system data instead"
      }
    },
    "latestRuns": {
      "header": "Latest runs",
      "headerShort": "Runs",
      "tooltip": {
        "connected": "The {0} in Cypress Cloud",
        "notConnected": "Connect to Cypress Cloud to see the {0}",
        "noAccess": "Request access to this project in Cypress Cloud to view the {0}",
        "linkText": "status of your latest runs"
      }
    },
    "averageDuration": {
      "header": "Average duration",
      "headerShort": "Duration",
      "tooltip": {
        "connected": "The {0} of your latest runs in Cypress Cloud",
        "notConnected": "Connect to Cypress Cloud to see the {0} of your latest runs",
        "noAccess": "Request access to this project in Cypress Cloud to view the {0} of your latest runs",
        "linkText": "average spec durations"
      }
    },
    "flaky": {
      "badgeLabel": "Flaky",
      "severityLow": "Low",
      "severityMedium": "Medium",
      "severityHigh": "High",
      "flakyRate": "{0}% flaky rate",
      "flakyRuns": "{flakyRuns} flaky runs / {totalRuns} total | {flakyRuns} flaky run / {totalRuns} total | {flakyRuns} flaky runs / {totalRuns} total",
      "lastFlaky": "Last run flaky | Last flaky {runsSinceLastFlake} run ago | Last flaky {runsSinceLastFlake} runs ago"
    },
    "hoverButton": {
      "connect": "Connect",
      "connectProject": "Connect project",
      "connectProjectShort": "Connect",
      "requestAccess": "Request access",
      "requestAccessShort": "Request",
      "requestSent": "Request sent",
      "requestSentShort": "Sent"
    },
    "connectProjectButton": "Connect your project",
    "cloudLoginButton": "Log in to Cypress Cloud",
    "reconnectProjectButton": "Reconnect your project",
    "unauthorizedBannerTitle": "Request access to project",
    "requestAccessButton": "Request access",
    "requestSentButton": "Request sent",
    "rows": {
      "gitTooltipSubtext": "{shortHash} by {author}"
    },
    "noResultsMessage": "No specs matched your search:",
    "noSpecError": {
      "title": "Spec not found",
      "intro": "There is no spec matching the following location:",
      "explainer": "It is possible that the file has been moved or deleted. Please choose from the list of specs below."
    },
    "offlineWarning": {
      "title": "No internet connection",
      "explainer": "Please check your internet connection to resolve this issue. When your internet connection is fixed, we will automatically attempt to fetch the run metrics from Cypress Cloud."
    },
    "fetchFailedWarning": {
      "title": "Lost connection",
      "explainer1": "The request timed out or failed when trying to retrieve the recorded run metrics from Cypress Cloud. The information that you're seeing in the table below may be incomplete as a result.",
      "explainer2": "Please refresh the page to try again and visit our {0} if this behavior continues.",
      "refreshButton": "Try again"
    },
    "banners": {
      "login": {
        "title": "Optimize and record your CI test runs with Cypress Cloud",
        "content": "When you configure Cypress to record tests to Cypress Cloud, you'll see data from your latest recorded runs in the Cypress app. This increased visibility into your test history allows you to debug your tests faster and more effectively, all within your local workflow.",
        "buttonLabel": "Get started with Cypress Cloud"
      },
      "createOrganization": {
        "title": "Finish setting up Cypress Cloud",
        "content": "Join or create an organization in Cypress Cloud to access your projects and recorded test runs.",
        "buttonLabel": "Set up your organization"
      },
      "connectProject": {
        "title": "Connect your project to Cypress Cloud",
        "content": "Bring your recorded test results into your local development workflow to monitor, run, and fix tests all in the Cypress app.",
        "buttonLabel": "Connect your project"
      },
      "record": {
        "title": "Record your first run",
        "content": "Record a run to see your test results in Cypress Cloud. You can then optimize your test suite, debug failing and flaky tests, and integrate with your favorite tools."
      },
      "ct": {
        "title": "{0} component testing is available for this project",
        "content": "You can now use Cypress to develop and test individual components without running your whole application. Generate the config in just a few clicks.",
        "primaryAction": "Quick setup",
        "secondaryAction": "Read our guide",
        "dismissAction": "Give feedback"
      },
      "enableNotifications": {
        "title": "Start debugging as soon as your first tests fail",
        "subtitle": "Cypress can notify you about Cloud test runs for your branch.",
        "enableDesktopNotifications": "Enable desktop notifications",
        "remindMeLater": "Remind me later",
        "notificationsEnabledTitle": "Notifications Enabled",
        "notificationsEnabledBody": "Nice, notifications are enabled!",
        "dismissBanner": "Dismiss banner"
      }
    },
    "runSelectedSpecs": "Run {n} spec | Run {n} specs",
    "testingTypePromo": {
      "e2e": {
        "header": {
          "title": "End-to-end testing is not set up for this project",
          "description": "Try it out now, or {0} to learn more",
          "link": "read our guides",
          "control": "Quick setup"
        },
        "body": {
          "title": "What is end-to-end testing?",
          "description": "End-to-end tests are perfect for testing your entire application from a user's perspective. Visit any URL and test full user journeys across pages and domains.",
          "listItem1": "Test full user journeys across multiple pages using {0} to load up a web page for your test.",
          "listItem1Command": "cy.visit()",
          "listItem2": "Work with live API calls or mock them with {0} to test all possible states of your app.",
          "listItem2Command": "cy.intercept()",
          "listItem3": "Use {0} to maintain consistent browser sessions in your tests, and work with features like cookies and local storage, all while keeping your tests properly isolated.",
          "listItem3Command": "cy.session()"
        }
      },
      "ct": {
        "header": {
          "title": "Component testing is not set up for this project",
          "description": "Try it out now, or {0} to learn more",
          "link": "read our guides",
          "control": "Quick setup"
        },
        "body": {
          "title": "What is Component Testing?",
          "description": "Cypress Component Testing is a technique for developers to write, test, and debug components in isolation without ever leaving the browser - and without having to run your entire application.",
          "listItem1": "Instead of visiting a page, use {0} to render your components directly in the browser.",
          "listItem1Command": "cy.mount()",
          "listItem2": "Test from a user's perspective with all the same Cypress commands that are available in end-to-end testing.",
          "listItem3": "To get started, you can generate the config for {0}, {1}, and {2} (and {3}!).",
          "listItem3Link": "more",
          "link": "Give feedback"
        }
      }
    }
  },
  "noResults": {
    "defaultMessage": "No results matched your search:",
    "clearSearch": "Clear search"
  },
  "sidebar": {
    "keyboardShortcuts": {
      "title": "Keyboard shortcuts",
      "rerun": "Re-run tests",
      "stop": "Stop tests",
      "toggle": "Toggle specs list"
    },
    "toggleLabel": {
      "expanded": "Collapse sidebar",
      "collapsed": "Expand sidebar"
    },
    "nav": {
      "ariaLabel": "Pages"
    },
    "debug": {
      "debugFeature": "New Debug feature",
      "passed": "Relevant run passed",
      "failed": "Relevant run had {n} test failure | Relevant run had {n} test failures",
      "errored": "Relevant run had an error",
      "erroredWithFailures": "Relevant run had an error with {n} test failure | Relevant run had an error with {n} test failures",
      "passing": "Relevant run is passing",
      "failing": "Relevant run is failing with {n} test failure | Relevant run is failing with {n} test failures"
    }
  },
  "topNav": {
    "released": "Released",
    "version": "Version",
    "versionUnsupported": "Unsupported",
    "installed": "Installed",
    "latest": "Latest",
    "seeAllReleases": "See all releases",
    "runningOldVersion": "You're currently running an old version of Cypress. Update to the latest version for the best experience.",
    "docsMenu": {
      "docsHeading": "Docs",
      "gettingStartedTitle": "Getting started",
      "firstTest": "Write your first test",
      "testingApp": "Testing your app",
      "organizingTests": "Organizing tests",
      "referencesTitle": "References",
      "bestPractices": "Best practices",
      "configuration": "Configuration",
      "api": "API",
      "ciTitle": "Run in CI/CD",
      "ciSetup": "Set up CI",
      "fasterTests": "Run tests faster",
      "prompts": {
        "ci1": {
          "title": "Configure CI",
          "description": "Optimize your tests in CI by following these guides.",
          "seeOtherGuides": "See other guides",
          "intro": "Introduction to CI",
          "learnTheBasics": "Learn the basics of running Cypress in CI."
        },
        "orchestration1": {
          "title": "Run tests faster in CI",
          "parallelTime": "5 mins",
          "noParallelTime": "12 mins",
          "withParallelization": "with Parallelization",
          "withoutParallelization": "without Parallelization",
          "intro": "With Smart Orchestration, you'll be able to:",
          "bullet1": "Run spec files in parallel",
          "bullet2": "Prioritize failed specs to run first",
          "bullet3": "Cancel CI runs on test failure",
          "learnMore": "Learn more"
        }
      }
    },
    "login": {
      "bodyInitial": "Logging in gives you access to {0}. You can set up projects to be recorded and see test data from your project.",
      "bodySuccess": "You are now logged in as {0}.",
      "bodyError": "An error occurred while attempting to log in:",
      "bodyBrowserError": "The browser could not be opened.",
      "bodyBrowserErrorDetails": "Cypress was unable to open your installed browser. To continue logging in, please paste this URL into your web browser:",
      "cloud": "Cypress Cloud",
      "titleInitial": "Log in to Cypress",
      "titleSuccess": "Login successful",
      "titleFailed": "Login failed",
      "titleBrowserError": "Browser error",
      "actionLogin": "Log in",
      "profileMenuLabel": "Profile and logout",
      "actionLogout": "Log out",
      "actionContinue": "Continue",
      "actionOpening": "Opening browser",
      "actionWaiting": "Waiting for you to log in",
      "actionTryAgain": "Try again",
      "actionCancel": "Cancel"
    },
    "updateCypress": {
      "title": "Upgrade to Cypress",
      "currentlyRunning": "You are currently running Version {0} of Cypress. ",
      "pasteToUpgradeProject": "To upgrade to the latest version for your project, first {0}, then paste the command below into your terminal:",
      "pasteToUpgradeGlobal": "To upgrade to the latest version, first {0}, then paste the command below into your terminal:",
      "rememberToCloseInsert": "close this app"
    },
    "upgradeText": "Upgrade",
    "global": {
      "projects": "Projects"
    }
  },
  "launchpadErrors": {
    "generic": {
      "configErrorTitle": "Cypress configuration error",
      "retryButton": "Try again",
      "stackTraceLabel": "Stack trace",
      "docsButton": {
        "configGuide": {
          "text": "Configuration guide",
          "link": "https://docs.cypress.io/guides/references/configuration"
        },
        "cloudGuide": {
          "text": "Cypress Cloud guide",
          "link": "https://on.cypress.io/features-dashboard"
        },
        "docsHomepage": {
          "text": "Cypress docs",
          "link": "https://docs.cypress.io"
        }
      }
    },
    "noInternet": {
      "header": "You have no internet connection",
      "message": "Check your internet connection to pull the latest data from Cypress Cloud.",
      "connectProject": "Please check your internet connection to resolve this issue. When your internet connection is fixed, we will automatically attempt to fetch your latest runs for this project."
    }
  },
  "setupPage": {
    "projectSetup": {
      "frameworkLabel": "Front-end framework",
      "frameworkPlaceholder": "Pick a framework",
      "bundlerLabel": "Bundler",
      "bundlerPlaceholder": "Pick a bundler",
      "languageLabel": "Language",
      "configFileLanguageLabel": "Cypress config file",
      "detected": "(detected)",
      "browseIntegrations": "Browse our list of third-party framework integrations",
      "communityFrameworkDefinitionProblem": "Community framework definition problem",
      "communityDependenciesCouldNotBeParsed": "This project has a community framework definition installed that could not be loaded. It is located at the following path: | This project has some community framework definitions installed that could not be loaded. They are located at the following paths:",
      "seeFrameworkDefinitionDocumentation": "See the {0} for more information about creating, installing, and troubleshooting third party definitions.",
      "frameworkDefinitionDocumentation": "framework definition documentation"
    },
    "step": {
      "continue": "Continue",
      "next": "Next step",
      "back": "Back",
      "skip": "Skip"
    },
    "configFile": {
      "createManually": "Create file manually",
      "skippedLabel": "Skipped",
      "changesRequiredLabel": "Changes required",
      "changesRequiredBadge": "Changes required",
      "changesRequiredDescription": "Please merge the code below with your existing {0}"
    },
    "testingCard": {
      "configured": "Configured",
      "notConfigured": "Not Configured",
      "running": "Running",
      "chooseABrowser": "Choose a browser",
      "reconfigure": "Reconfigure",
      "disabled": "Disabled"
    }
  },
  "globalPage": {
    "empty": {
      "title": "Add project",
      "helper": "Get started by adding your first project below.",
      "dropText": "Drag your project directory here or {0}",
      "browseManually": "browse manually."
    },
    "settings": "Settings",
    "saveChanges": "Save changes",
    "cancel": "Cancel",
    "externalEditorPreferences": "External editor preferences",
    "externalEditorPreferencesDescription1": "Select your preference for opening files on your system.",
    "externalEditorPreferencesDescription2": "You can change this later in the {0} page.",
    "recentProjectsHeader": "Recent projects",
    "searchPlaceholder": "Search projects",
    "addProjectButton": "Add project",
    "projectActions": "Project actions",
    "removeProject": "Remove project",
    "openInIDE": "Open in IDE",
    "openInFinder": "Open in Finder",
    "noResultsMessage": "No projects matched your search:"
  },
  "welcomePage": {
    "review": "Review the differences between each testing type",
    "codeExample": "Code example",
    "compareTypes": {
      "content": {
        "e2eTitle": "End-to-end tests",
        "e2eBullet1": "Visit URLs via",
        "e2eBullet2": "Test flows and functionality across multiple pages",
        "e2eBullet3": "Ideal for testing integrated flows in CD workflows",
        "componentTitle": "Component tests",
        "ctBullet1": "Import components via",
        "ctBullet2": "Test individual components of a design system in isolation",
        "ctBullet3": "Ideal for testing isolated flows and components in CI"
      },
      "modalTitle": "Key differences"
    },
    "title": "Welcome to Cypress!"
  },
  "settingsPage": {
    "config": {
      "title": "Resolved configuration",
      "description": "Since the options in the {0} can be set dynamically by your development environment, please refer to the legend below to understand how the configuration options are resolved.",
      "legend": {
        "env": {
          "label": "env",
          "description": "Set from environment variables"
        },
        "default": {
          "label": "default",
          "description": "Default values"
        },
        "dynamic": {
          "label": "dynamic",
          "description": "Set by the {0} function"
        },
        "cli": {
          "label": "cli",
          "description": "Set from CLI arguments"
        },
        "config": {
          "label": "config",
          "description": "Set from {0}"
        }
      }
    },
    "proxy": {
      "title": "Proxy settings",
      "description": "Cypress auto-detected the following proxy settings from your operating system.",
      "bypassList": "Proxy bypass list",
      "proxyServer": "Proxy server"
    },
    "editor": {
      "title": "External editor",
      "description": "External editor to use for editing code opened when using Cypress.",
      "noEditorSelectedPlaceholder": "Choose your editor...",
      "customPathPlaceholder": "/path/to/editor"
    },
    "notifications": {
      "title": "Desktop notifications",
      "description": "Cypress can notify you about Cloud test runs for your branch.",
      "notifyMeWhenRunStarts": "Notify me when a run starts",
      "notifyMeWhenRunIsFailing": "Notify me when a run begins to fail",
      "notifyMeWhenRunCompletes": "Notify me when a run completes",
      "passed": "Passed",
      "failed": "Failed",
      "canceled": "Canceled",
      "errored": "Errored",
      "sendTestNotification": "Send a test notification",
      "notReceivingNotifications": "Not receiving notifications? You might need to allow notifications from Cypress in your computer's system preferences. {0}",
      "testNotificationTitle": "Hello From Cypress",
      "testNotificationBody": "This is a test notification",
      "troubleshoot": "Troubleshoot",
      "enableNotificationsLabel": "To modify notification settings, enable desktop notifications"
    },
    "projectId": {
      "title": "Project ID",
      "description": "The Project ID configured for this project inside of Cypress Cloud. {0}"
    },
    "specPattern": {
      "title": "Spec patterns",
      "description": "The globs pointing Cypress to your spec files configured for this project. {0}"
    },
    "recordKey": {
      "title": "Record key",
      "description": "The Record Key configured for this project inside of Cypress Cloud. {0}",
      "manageKeys": "Manage keys",
      "errorEmpty": "You do not have permission to record on this project",
      "errorEmptyButton": "Request record rights",
      "errorAccess": "You do not have permission to view this project",
      "errorAccessPending": "Your request for access to this project is pending approval",
      "errorAccessButton": "Request access",
      "errorNotFound": "Project not found",
      "errorNotFoundButton": "Connect it again",
      "errorNotLoggedIn": "You are not connected to Cypress Cloud",
      "errorNotLoggedInButton": "Log in to Cypress Cloud"
    },
    "project": {
      "title": "Project settings",
      "description": "Review the configuration settings currently in use for this project."
    },
    "cloud": {
      "title": "Cypress Cloud settings",
      "description": "Review the configuration settings for recording to Cypress Cloud."
    },
    "experiments": {
      "title": "Experiments",
      "description": "If you'd like to try out new features that we're working on, you can enable beta features for your project by turning on the experimental features you'd like to try. {0}",
      "experimentalCspAllowList": {
        "name": "CSP Allow List",
        "description": "Enables Cypress to selectively permit Content-Security-Policy and Content-Security-Policy-Report-Only header directives, including those that might otherwise block Cypress from running."
      },
      "experimentalFetchPolyfill": {
        "name": "Fetch polyfill",
        "description": "Automatically replaces \`window.fetch\` with a polyfill that Cypress can spy on and stub. Note: \`experimentalFetchPolyfill\` has been deprecated in Cypress 6.0.0 and will be removed in a future release. Consider using [\`cy.intercept()\`](https://on.cypress.io/intercept) to intercept \`fetch\` requests instead."
      },
      "experimentalInteractiveRunEvents": {
        "name": "Interactive run events",
        "description": "Allows listening to the [\`before:run\`](https://on.cypress.io/before-run), [\`after:run\`](https://on.cypress.io/after-run), [\`before:spec\`](https://on.cypress.io/before-spec), and [\`after:spec\`](https://on.cypress.io/after-spec) events in plugins during interactive mode."
      },
      "experimentalModifyObstructiveThirdPartyCode": {
        "name": "Modify obstructive third party code",
        "description": "Applies \`modifyObstructiveCode\` to third party \`.html\` and \`.js\`, removes subresource integrity, and modifies the user agent in Electron."
      },
      "experimentalSingleTabRunMode": {
        "name": "Single tab run mode",
        "description": "Runs all component specs in a single tab, trading spec isolation for faster run mode execution."
      },
      "experimentalSourceRewriting": {
        "name": "Source rewriting",
        "description": "Enables AST-based JS/HTML rewriting. This may fix issues caused by the existing regex-based JS/HTML replacement algorithm. See [#5273](https://github.com/cypress-io/cypress/issues/5273) for details."
      },
      "experimentalStudio": {
        "name": "Studio",
        "description": "Generate and save commands directly to your test suite by interacting with your app as an end user would."
      },
      "experimentalWebKitSupport": {
        "name": "WebKit Support",
        "description": "Adds support for testing in the WebKit browser engine used by Safari. See https://on.cypress.io/webkit-experiment for more information."
      },
      "experimentalRunAllSpecs": {
        "name": "Run All Specs",
        "description": "Enables the \\"Run All Specs\\" UI feature, allowing the execution of multiple specs sequentially."
      },
      "experimentalOriginDependencies": {
        "name": "Origin Dependencies",
        "description": "Enables support for \`Cypress.require()\` for including dependencies within the \`cy.origin()\` callback."
      },
      "experimentalMemoryManagement": {
        "name": "Memory Management",
        "description": "Enables support for improved memory management within Chromium-based browsers."
      },
      "experimentalSkipDomainInjection": {
        "name": "Skip Domain Injection",
        "description": "Disables setting \`document.domain\` to the application's super domain on injection."
      }
    },
    "device": {
      "title": "Device settings",
      "description": "Review the configuration settings currently in use for this device."
    },
    "testingPreferences": {
      "title": "Testing preferences",
      "description": "Configure your testing environment with these flags",
      "autoScrollingEnabled": {
        "title": "Auto scrolling enabled",
        "description": "Scroll behavior when running tests."
      }
    },
    "footer": {
      "text": "You can reconfigure the {testingType} testing settings for this project if you're experiencing issues with your Cypress configuration.",
      "button": "Configuration guide",
      "buttonLink": "https://docs.cypress.io/guides/references/configuration"
    }
  },
  "runs": {
    "slideshow": {
      "tour": {
        "title": "Record your first test run to Cypress Cloud",
        "description": "You're almost there! Start recording your test runs to Cypress Cloud by running the command above in your local or CI terminal."
      },
      "step1": {
        "title": "Monitor test failures in real time",
        "description": "Uncover high-risk failed and flaky tests in CI before they become a problem in production."
      },
      "step2": {
        "title": "Check if failed CI test runs also fail locally",
        "description": "Use the Test Runner to run only the tests that failed in your last recorded run."
      },
      "step3": {
        "title": "Build, test, and ship with confidence ðŸš€",
        "description": "With Cypress Cloud, you can proactively identify, investigate, and resolve failures, and be a quality champion."
      },
      "controls": {
        "step": "{0} of {1}",
        "next": "Next",
        "reset": "Reset",
        "view": "View Tour"
      }
    },
    "connect": {
      "title": "Connect to view your recorded runs",
      "description": "Cypress Cloud is built for teams who need to do testing at scale.",
      "buttonUser": "Connect to Cypress Cloud",
      "buttonProject": "Connect a Cypress Cloud project",
      "modal": {
        "title": "Connect project",
        "cancel": "Cancel",
        "createOrg": {
          "description": "You need to create an organization in Cypress Cloud to continue.",
          "button": "Create organization",
          "waitingButton": "Waiting for you to create an organization...",
          "refreshButton": "Refresh organizations list"
        },
        "selectProject": {
          "organization": "Organization",
          "noOrganizationSelectedError": "required when creating a new project",
          "manageOrgs": "Manage organizations",
          "project": "Project",
          "projectName": "Project name",
          "projectNameDisclaimer": "(You can change this later)",
          "createNewProject": "Create new",
          "chooseExistingProject": "Choose an existing project",
          "newProjectAccess": "Project access",
          "privateLabel": "Private",
          "privateDescription": "Only invited users can view recorded test results.",
          "publicLabel": "Public",
          "publicDescription": "Anyone can view recorded test results.",
          "connectProject": "Connect project",
          "createProject": "Create project",
          "placeholderOrganizations": "Pick an organization",
          "placeholderProjects": "Pick a project",
          "placeholderProjectsPending": "Pick an organization first"
        },
        "connectManually": {
          "title": "Connect project manually",
          "warning": "We couldn't add the projectId to your cypress.config.js file automatically.",
          "mainMessage": "Manually add the {projectId} to the root of the config object in your {configFile} file.",
          "waitingButton": "Waiting for you to add the projectId..."
        }
      },
      "errors": {
        "baseError": {
          "title": "Cypress Cloud error"
        },
        "internalServerError": {
          "title": "Cannot connect to Cypress Cloud",
          "description": "The request times out when trying to retrieve the info from Cypress Cloud. Please refresh the page to try again and visit our {0} if this behavior continues.",
          "link": "Support Page"
        }
      }
    },
    "connectSuccessAlert": {
      "title": "This project is now connected to Cypress Cloud!",
      "item1": "We automatically added the {projectId} to your {configFile} file.",
      "item2": "Please ensure that your {0} file is checked into source control."
    },
    "empty": {
      "title": "Copy the command below to record your first run",
      "description": "Review the {0} to Cypress Cloud",
      "link": "guide on recording runs",
      "gitRepositoryNotDetected": "Git repository not detected",
      "ensureGitSetupCorrectly": "Cypress uses Git to associate runs with your local state. As a fallback, all runs for your project are shown. Please ensure that version control is set up correctly.",
      "noRunsFoundForBranch": "No runs found for your branch",
      "noRunsForBranchMessage": "Cypress uses Git to show runs for your branch. As a fallback, all runs for your project are shown. Ensure that version control is properly configured and that you are sending Git information to Cypress Cloud."
    },
    "results": {
      "skipped": "skipped",
      "pending": "pending",
      "passed": "passed",
      "failed": "failed"
    },
    "errors": {
      "notFound": {
        "title": "Couldn't find your project",
        "description": "We were unable to find an existing project matching the {0} set in your Cypress config file. You can reconnect with an existing project or create a new project.",
        "button": "Reconnect your project"
      },
      "unauthorized": {
        "title": "Request access to view the recorded runs",
        "description": "This is a private project that you do not currently have access to. Please request access from the project owner in order to view the list of runs.",
        "button": "Request access"
      },
      "unauthorizedRequested": {
        "title": "Your access request for this project has been sent.",
        "description": "The owner of this project has been notified of your request. We'll notify you via email when your access request has been granted.",
        "button": "Request Sent"
      },
      "connectionFailed": {
        "title": "Cannot connect to Cypress Cloud",
        "description": "The request times out when trying to retrieve the recorded runs from Cypress Cloud. Please refresh the page to try again and visit out {0} if this behavior continues.",
        "link": "Support page",
        "button": "Try again"
      }
    }
  },
  "debugPage": {
    "openFile": {
      "openInIDE": "Open in IDE",
      "notFoundLocally": "Opening in IDE is disabled because the spec is not found in this project"
    },
    "limit": {
      "title": "Cypress renders up to 100 failed test results",
      "message": "This run has {n} failed tests | This run has {n} failed test | This run has {n} failed tests",
      "link": "See all test results in Cypress Cloud"
    },
    "runFailures": {
      "btn": "Run Failures",
      "notFoundLocally": "Spec was not found locally",
      "switchTestingTypeInfo": "There is {n} {testingType} test failing in this spec. To run it locally switch to {testingType} testing. | There are {n} {testingType} tests failing in this spec. To run them locally switch to {testingType} testing.",
      "switchTestingTypeAction": "Switch to {testingType} testing"
    },
    "switchToRun": "Switch to run number {runNumber}",
    "overLimit": {
      "usageExceededTitle": "You've reached your monthly test result limit",
      "usageExceededUserMessage": "Your Free Cypress Cloud plan includes {numberTests} monthly recorded test results. Contact your Cypress Cloud admin to upgrade your plan and view more test results.",
      "usageExceededAdminMessage": "Your Free Cypress Cloud plan includes {numberTests} monthly recorded test results. Upgrade your plan now to view more test results.",
      "retentionExceededTitle": "Beyond data retention",
      "retentionExceededMessage": "Your data retention limit is {limitDays} days and these tests ran {runAgeDays} days ago. Upgrade your plan to increase your data retention limit.",
      "upgradePlan": "Upgrade plan",
      "contactAdmin": "Contact admin"
    },
    "wellDone": "Well Done!",
    "allYourTestsPassed": "All your tests passed.",
    "incomplete": "Incomplete",
    "specsSkipped": "{totalSkippedSpecs} of {n} spec skipped | {totalSkippedSpecs} of {n} specs skipped",
    "runHasNoTests": "Run has no tests",
    "theRunStartedButNeverCompleted": "The run started but never completed. This can happen when the run is cancelled from CI or when Cypress crashes while running tests.",
    "checkYourCiLogs": "Check your {0} logs for more information.",
    "archiveThisRun": "Archive this run to remove it from the runs list and analytics.",
    "manuallyCancelled": "Manually cancelled",
    "mostRecentRun": "You are on the most recent run",
    "switchToLatestRun": "Switch to latest run",
    "switchRun": "Switch run",
    "foundMoreThan100Runs": "We found more than 100 runs.",
    "goToCypressCloud": "Go to Cypress Cloud to see all runs",
    "emptyStates": {
      "debugDirectlyInCypress": "Debug failed CI runs directly in Cypress",
      "reviewRerunAndDebug": "Review, rerun, and debug failed CI test runs that are recorded to Cypress Cloud â€“ all from within your local Cypress app.",
      "connectToCypressCloud": "Connect to Cypress Cloud",
      "connect": {
        "title": "Connect to debug your tests",
        "description": "Cypress Cloud is built for teams who need to do testing at scale."
      },
      "noProjectTestMessage": "Connect a Cypress Cloud project to locally debug failed CI test runs",
      "noRuns": {
        "title": "Copy the command below to record your first run",
        "description": "Review the {0} to Cypress Cloud",
        "link": "guide on recording runs"
      },
      "gitRepositoryNotDetected": "Git repository not detected",
      "ensureGitSetupCorrectly": "Cypress uses Git to associate runs with your local state. Please ensure that Git is properly configured for your project.",
      "learnAboutRecordingSrText": "about recording a run to Cypress Cloud",
      "learnAboutDebuggingSrText": "about debugging CI failures in Cypress",
      "learnAboutProjectSetupSrText": "about project setup in Cypress",
      "noRunsFoundForBranch": "No runs found for your branch",
      "noRunsForBranchMessage": "Cypress uses Git to show runs for your branch. Ensure that version control is properly configured and that you are sending Git information to Cypress Cloud.",
      "slideshow": {
        "tour": {
          "title": "Record your first test run to Cypress Cloud",
          "description": "You're almost there! Start recording your test runs to Cypress Cloud by running the command below in your local or CI terminal."
        },
        "step1": {
          "title": "Review how many tests failed during a CI test run",
          "description": "The Debug page shows the latest completed test run for your current checked out commit."
        },
        "step2": {
          "title": "Check if failed CI test runs also fail locally",
          "description": "Use the Test Runner to run only the tests that failed in your last recorded run."
        },
        "step3": {
          "title": "Locally debug failed test runs with visual artifacts",
          "description": "Easily review screenshots, videos and logs from your tests."
        },
        "controls": {
          "step": "{0} of {1}",
          "next": "Next",
          "reset": "Reset",
          "view": "View Tour"
        }
      }
    },
    "pending": {
      "title": "Testing in progress...",
      "titleCompletionScheduled": "Scheduled to complete...",
      "scheduledTime": "Scheduled to complete in {time}",
      "scheduledCompletionExpired": "Scheduled to complete soon",
      "failuresHere": "Failures will be displayed here"
    },
    "specCounts": {
      "whenRunning": "{completed} of {total} specs completed | {completed} of {total} spec completed | {completed} of {total} specs completed",
      "whenCompleted": "{n} specs | {n} spec | {n} specs"
    },
    "header": {
      "runUrl": "View in Cypress Cloud",
      "commitsAhead": "You are {n} commit ahead | You are {n} commits ahead"
    },
    "stats": {
      "groups": "{n} group | {n} groups",
      "operatingSystems": "{n} operating system | {n} operating systems",
      "browsers": "{n} browser | {n} browsers"
    },
    "artifacts": {
      "stdout": "View Log",
      "screenshots": "View Screenshots",
      "video": "View Video"
    }
  },
  "testingType": {
    "modalTitle": "Choose a testing type",
    "e2e": {
      "name": "E2E Testing",
      "description": "Build and test the entire experience of your application from end-to-end to ensure each flow matches your expectations."
    },
    "component": {
      "name": "Component Testing",
      "description": "Build and test your components from your design system in isolation in order to ensure each state matches your expectations."
    },
    "componentDisabled": {
      "description": "To test your components you must {0} as an NPM dependency for this project.",
      "link": "install Cypress"
    }
  },
  "migration": {
    "before": "Before",
    "after": "After",
    "heresWhy": "here's why:",
    "renameAuto": {
      "title": "We recommend automatically renaming your specs in this step",
      "changeButton": "change",
      "changedSpecFolder": "We've changed the default spec folder from:",
      "changedSpecExt": "We've changed the default spec file extension from:",
      "changedSpecPatternExplain": "We've changed the default spec file extension to {0} in order to avoid conflicts with any existing testing frameworks.",
      "optedOutMessage": "You've opted not to rename your spec file extension. You may need to change your specPattern later so we can still find your spec files.",
      "folderRenameMessage": "You've opted not to rename your spec file extension, we'll only rename the folder",
      "modal": {
        "title": "Change the existing spec file extension",
        "warning": "We recommend using the default extension to avoid inconsistencies, framework conflicts, and confusion with your team.",
        "line1": "Cypress now supports the ability to create new spec files from within the UI for both E2E and component specs.",
        "line2": "All new spec files created within Cypress will use the default pattern of: ",
        "line3": "We want to rename your existing specs so that they have a consistent filename pattern for both E2E and component testing.",
        "line4": "All documentation and example code will be using: ",
        "line5": "We've changed the placement of component specs to be next to their source files (e.g. src/Button.jsx and src/Button.cy.jsx)",
        "line6": "The new default pattern of {0} prevents targeting conflicts with other testing frameworks. (e.g. Jest)",
        "label": "Choose from the following filename patterns:",
        "option1": "{0} (recommended)",
        "option2": "Don't rename anything â€” keep what I have.",
        "option3": "Rename folder only.",
        "optOutAdditional": "I may need to change my {0} later if I don't use the recommended filename extension.",
        "buttonSave": "Save changes",
        "buttonCancel": "Cancel"
      }
    },
    "renameManual": {
      "title": "We need you to move your component specs manually",
      "componentFolderRemoved": "We've removed the {0} options from the Cypress config.",
      "addedSpecPattern": "We've added a new {0} option in the Cypress config that tells us where to find your component specs.",
      "cannotAuto": "We can't automatically migrate your existing component spec files. We recommend that you move the following component spec files next to your source component files (e.g. {0})",
      "ifSkipNote": "If you skip this step, Cypress will still be able to find them, but any new specs that you create will automatically be created next to your component files."
    },
    "renameSupport": {
      "title": "We'll automatically rename your existing E2E support file in this step",
      "serveDifferentTypes": "We now serve different support files for E2E and Component Testing.",
      "changedSupportFile": "We've renamed the E2E support file from:"
    },
    "configFile": {
      "title": "We need to migrate to the new Cypress configuration file",
      "changedDefault": "We've changed the default Cypress config file from:",
      "customOptions": "We've set a custom {specPattern} option based on your {options}.",
      "willConvert": "We'll automatically create a new {jsFile} file and seed it with your options from your existing {jsonFile}."
    },
    "setupComponent": {
      "title": "You need to reconfigure Cypress for component testing",
      "line1": "We've detected that you are currently using the experimental version of component testing.",
      "line2": "Your existing configuration is no longer compatible with new component testing configuration options.",
      "line3": "In a previous step, we renamed your component specs, but can't automatically migrate your existing component testing configuration.",
      "line4": "In the next screen, you'll be able to reconfigure component testing in a new guided configuration wizard."
    },
    "wizard": {
      "title": "Migrating to Cypress {version}",
      "description": "Your project requires updates to work with this version.",
      "typicalMigrationLabel": "Typical migration:",
      "typicalMigrationTime": "5-10 minutes",
      "step1": {
        "title": "Migrate existing specs",
        "description": "In this step, we'll automatically rename and/or move your existing spec files as needed.",
        "button": "Rename these specs for me",
        "buttonSkip": "Skip renaming specs",
        "buttonRenameFolder": "Rename the folder for me"
      },
      "step2": {
        "title": "Move your existing component specs",
        "description": "In this step, you'll manually move your existing component specs to their new default location.",
        "buttonWait": "Waiting for you to move your component specs...",
        "buttonDone": "Continue to next step",
        "button": "I'll do this later"
      },
      "step3": {
        "title": "Rename the Cypress support file",
        "description": "In this step, we'll automatically rename your existing support file.",
        "button": "Rename the support file for me"
      },
      "step4": {
        "title": "Migrate to the new Cypress configuration file",
        "description": "In this step, we'll automatically migrate your existing Cypress configuration to the new Cypress configuration file.",
        "button": "Migrate the configuration for me"
      },
      "step5": {
        "title": "Reconfigure component testing",
        "description": "In this step, we'll explain how you will reconfigure Cypress for component testing.",
        "button": "Finish migration and continue"
      }
    }
  },
  "majorVersionWelcome": {
    "title": "What's New in Cypress",
    "actionContinue": "Continue",
    "linkReleaseNotes": "View full changelog"
  },
  "setupWizard": {
    "selectFramework": {
      "title": "Project setup",
      "description": "Confirm the front-end framework and bundler used in your project."
    },
    "installDependencies": {
      "title": "Install dev dependencies",
      "description": "Based on your previous selection, the following dependencies are required.",
      "pasteCommand": "Paste this command into your terminal to install the following packages:",
      "waitForInstall": "Waiting for you to install the dependencies...",
      "installed": "installed",
      "pendingInstall": "pending installation",
      "installationAlertSuccess": "You've successfully installed all required dependencies."
    },
    "configFiles": {
      "title": "Configuration files",
      "description": "We added the following files to your project:"
    },
    "chooseBrowser": {
      "title": "Choose a browser",
      "description": "Choose your preferred browser for {testingType} testing."
    }
  },
  "e2eProjectSetup": {
    "title": "Project setup",
    "description": "Confirm your project's preferred language."
  },
  "openBrowser": {
    "startComponent": "Start Component Testing in {browser}",
    "startE2E": "Start E2E Testing in {browser}",
    "openingComponent": "Opening Component Testing in {browser}",
    "openingE2E": "Opening E2E Testing in {browser}",
    "running": "Running {browser}",
    "focus": "Focus",
    "close": "Close",
    "switchTestingType": "Switch testing type"
  },
  "runner": {
    "header": {
      "reviewDocs": "Review the docs",
      "troubleRendering": "if you're having trouble rendering your components properly."
    },
    "snapshot": {
      "highlightsLabel": "Highlights",
      "testsRunningError": "Cannot show snapshot while tests are running",
      "snapshotMissingError": "The snapshot is missing. Displaying current state of the DOM.",
      "defaultTitle": "DOM snapshot",
      "pinnedTitle": "Pinned",
      "studioActiveError": "Cannot show snapshot while creating commands in Studio"
    },
    "selectorPlayground": {
      "matches": "No matches | {n} match | {n} matches",
      "playgroundTooltip": "Click an element to see a suggested selector",
      "copyTooltip": "Copy to clipboard",
      "copyTooltipAction": "Copied!",
      "printTooltip": "Print to console",
      "printTooltipAction": "Printed!",
      "invalidSelector": "Invalid",
      "selectorMethodsLabel": "Selector methods",
      "toggle": "Toggle playground"
    },
    "automation": {
      "disconnected": {
        "title": "The Cypress extension has disconnected.",
        "description": "Cypress cannot run tests without this extension.",
        "reload": "Reload the browser"
      },
      "missing": {
        "title": "The Cypress extension is missing.",
        "description": "Cypress cannot run tests without this extension. Please choose another browser."
      },
      "shared": {
        "link": "Read more about browser management"
      }
    },
    "viewportTooltip": {
      "buttonText": "Review the guide on viewports",
      "buttonHref": "https://on.cypress.io/viewport",
      "infoText": "The viewport determines the width and height of your application under test. By default the viewport will be {0} by {1} for {2} testing.",
      "configText": "Additionally, you can override this value in your {configFile} or via the {viewportCommand} command."
    },
    "studio": {
      "studio": "Studio",
      "studioDescription": "Generate Cypress commands by interacting with your site as an end user would. Then, save these commands directly to your test file.",
      "studioDetailedDescription": "Generate and save commands directly to your test suite by interacting with your app as an end user would. Right click on an element to add an assertion. Studio will track events that generate the following commands:",
      "getStartedButton": "Get started",
      "feedbackPrompt": "Your {0} will be highly influential to our team.",
      "experimentalMessage": "This feature is currently experimental and we will be adding more commands and abilities in the future.",
      "feedbackLink": "feedback",
      "saveTest": "Save test",
      "testName": "Test name",
      "saveTestButton": "Save",
      "closeStudio": "Close Studio",
      "restartStudio": "Restart Studio",
      "copyCommands": "Copy commands to clipboard",
      "commandsCopied": "Commands copied!",
      "availableCommands": "Available commands",
      "giveFeedback": "Give feedback",
      "enterValidUrl": "Enter a valid URL to visit",
      "continue": "Continue",
      "actionCancel": "Cancel"
    }
  },
  "warnings": {
    "retry": "Try again"
  },
  "versions": {
    "alpha": "Alpha",
    "community": "Community",
    "beta": "Beta",
    "new": "New",
    "communityNote": "This is a community provided definition."
  }
}
`;
const defaultMessages = JSON.parse(rawJsonMessages);
createI18n();
function createI18n(opts = {}) {
  return createI18n$1({
    locale: "en-US",
    messages: compiledMessages,
    ...opts
  });
}
function useI18n() {
  return useI18n$1({ useScope: "global" });
}
const _hoisted_1$1y = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1p = /* @__PURE__ */ createBaseVNode("circle", {
  id: "Circle",
  cx: "8",
  cy: "8",
  r: "6",
  stroke: "#E1E3ED",
  class: "icon-light",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$1c = /* @__PURE__ */ createBaseVNode("path", {
  id: "Progress",
  d: "M14 8C14 4.68629 11.3137 2 8 2",
  stroke: "#6470F3",
  class: "icon-dark",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_4$I = [
  _hoisted_2$1p,
  _hoisted_3$1c
];
function render$Q(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1y, _hoisted_4$I);
}
const __unplugin_components_0$d = { name: "cy-loading_x16", render: render$Q };
const _hoisted_1$1x = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1o = /* @__PURE__ */ createBaseVNode("path", {
  d: "M13 8C13 10.7614 10.7614 13 8 13C5.23858 13 3 10.7614 3 8C3 5.23858 5.23858 3 8 3H11M11 3L9 5M11 3L9 1",
  stroke: "currentColor",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-light"
}, null, -1);
const _hoisted_3$1b = [
  _hoisted_2$1o
];
function render$P(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1x, _hoisted_3$1b);
}
const RefreshIcon = { name: "cy-action-restart_x16", render: render$P };
var isVue2 = false;
function tryOnScopeDispose(fn2) {
  if (getCurrentScope()) {
    onScopeDispose(fn2);
    return true;
  }
  return false;
}
const isClient = typeof window !== "undefined";
const isString$2 = (val) => typeof val === "string";
const noop$4 = () => {
};
function createFilterWrapper(filter, fn2) {
  function wrapper(...args) {
    filter(() => fn2.apply(this, args), { fn: fn2, thisArg: this, args });
  }
  return wrapper;
}
const bypassFilter = (invoke) => {
  return invoke();
};
function debounceFilter(ms2, options2 = {}) {
  let timer;
  let maxTimer;
  const filter = (invoke) => {
    const duration2 = unref(ms2);
    const maxDuration = unref(options2.maxWait);
    if (timer)
      clearTimeout(timer);
    if (duration2 <= 0 || maxDuration !== void 0 && maxDuration <= 0) {
      if (maxTimer) {
        clearTimeout(maxTimer);
        maxTimer = null;
      }
      return invoke();
    }
    if (maxDuration && !maxTimer) {
      maxTimer = setTimeout(() => {
        if (timer)
          clearTimeout(timer);
        maxTimer = null;
        invoke();
      }, maxDuration);
    }
    timer = setTimeout(() => {
      if (maxTimer)
        clearTimeout(maxTimer);
      maxTimer = null;
      invoke();
    }, duration2);
  };
  return filter;
}
function promiseTimeout(ms2, throwOnTimeout = false, reason = "Timeout") {
  return new Promise((resolve3, reject) => {
    if (throwOnTimeout)
      setTimeout(() => reject(reason), ms2);
    else
      setTimeout(resolve3, ms2);
  });
}
function useDebounceFn(fn2, ms2 = 200, options2 = {}) {
  return createFilterWrapper(debounceFilter(ms2, options2), fn2);
}
function useDebounce(value, ms2 = 200, options2 = {}) {
  if (ms2 <= 0)
    return value;
  const debounced = ref(value.value);
  const updater = useDebounceFn(() => {
    debounced.value = value.value;
  }, ms2, options2);
  watch(value, () => updater());
  return debounced;
}
var __getOwnPropSymbols$9$1 = Object.getOwnPropertySymbols;
var __hasOwnProp$9$1 = Object.prototype.hasOwnProperty;
var __propIsEnum$9$1 = Object.prototype.propertyIsEnumerable;
var __objRest$5 = (source, exclude) => {
  var target2 = {};
  for (var prop2 in source)
    if (__hasOwnProp$9$1.call(source, prop2) && exclude.indexOf(prop2) < 0)
      target2[prop2] = source[prop2];
  if (source != null && __getOwnPropSymbols$9$1)
    for (var prop2 of __getOwnPropSymbols$9$1(source)) {
      if (exclude.indexOf(prop2) < 0 && __propIsEnum$9$1.call(source, prop2))
        target2[prop2] = source[prop2];
    }
  return target2;
};
function watchWithFilter(source, cb, options2 = {}) {
  const _a3 = options2, {
    eventFilter = bypassFilter
  } = _a3, watchOptions = __objRest$5(_a3, [
    "eventFilter"
  ]);
  return watch(source, createFilterWrapper(eventFilter, cb), watchOptions);
}
var __defProp$7 = Object.defineProperty;
var __defProps$4 = Object.defineProperties;
var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;
var __hasOwnProp$8 = Object.prototype.hasOwnProperty;
var __propIsEnum$8 = Object.prototype.propertyIsEnumerable;
var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues$7 = (a2, b2) => {
  for (var prop2 in b2 || (b2 = {}))
    if (__hasOwnProp$8.call(b2, prop2))
      __defNormalProp$7(a2, prop2, b2[prop2]);
  if (__getOwnPropSymbols$8)
    for (var prop2 of __getOwnPropSymbols$8(b2)) {
      if (__propIsEnum$8.call(b2, prop2))
        __defNormalProp$7(a2, prop2, b2[prop2]);
    }
  return a2;
};
var __spreadProps$4 = (a2, b2) => __defProps$4(a2, __getOwnPropDescs$4(b2));
var __objRest$4 = (source, exclude) => {
  var target2 = {};
  for (var prop2 in source)
    if (__hasOwnProp$8.call(source, prop2) && exclude.indexOf(prop2) < 0)
      target2[prop2] = source[prop2];
  if (source != null && __getOwnPropSymbols$8)
    for (var prop2 of __getOwnPropSymbols$8(source)) {
      if (exclude.indexOf(prop2) < 0 && __propIsEnum$8.call(source, prop2))
        target2[prop2] = source[prop2];
    }
  return target2;
};
function debouncedWatch(source, cb, options2 = {}) {
  const _a3 = options2, {
    debounce: debounce2 = 0
  } = _a3, watchOptions = __objRest$4(_a3, [
    "debounce"
  ]);
  return watchWithFilter(source, cb, __spreadProps$4(__spreadValues$7({}, watchOptions), {
    eventFilter: debounceFilter(debounce2)
  }));
}
function not$1(v2) {
  return computed(() => !unref(v2));
}
function tryOnMounted(fn2, sync = true) {
  if (getCurrentInstance())
    onMounted(fn2);
  else if (sync)
    fn2();
  else
    nextTick(fn2);
}
function useIntervalFn(cb, interval = 1e3, options2 = {}) {
  const {
    immediate = true,
    immediateCallback = false
  } = options2;
  let timer = null;
  const isActive = ref(false);
  function clean() {
    if (timer) {
      clearInterval(timer);
      timer = null;
    }
  }
  function pause() {
    isActive.value = false;
    clean();
  }
  function resume() {
    if (interval <= 0)
      return;
    isActive.value = true;
    if (immediateCallback)
      cb();
    clean();
    timer = setInterval(cb, interval);
  }
  if (immediate && isClient)
    resume();
  tryOnScopeDispose(pause);
  return {
    isActive,
    pause,
    resume
  };
}
function useTimeoutFn(cb, interval, options2 = {}) {
  const {
    immediate = true
  } = options2;
  const isPending = ref(false);
  let timer = null;
  function clear2() {
    if (timer) {
      clearTimeout(timer);
      timer = null;
    }
  }
  function stop() {
    isPending.value = false;
    clear2();
  }
  function start2(...args) {
    clear2();
    isPending.value = true;
    timer = setTimeout(() => {
      isPending.value = false;
      timer = null;
      cb(...args);
    }, unref(interval));
  }
  if (immediate) {
    isPending.value = true;
    if (isClient)
      start2();
  }
  tryOnScopeDispose(stop);
  return {
    isPending,
    start: start2,
    stop
  };
}
var __defProp$2 = Object.defineProperty;
var __getOwnPropSymbols$1$1 = Object.getOwnPropertySymbols;
var __hasOwnProp$1$1 = Object.prototype.hasOwnProperty;
var __propIsEnum$1$1 = Object.prototype.propertyIsEnumerable;
var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues$2 = (a2, b2) => {
  for (var prop2 in b2 || (b2 = {}))
    if (__hasOwnProp$1$1.call(b2, prop2))
      __defNormalProp$2(a2, prop2, b2[prop2]);
  if (__getOwnPropSymbols$1$1)
    for (var prop2 of __getOwnPropSymbols$1$1(b2)) {
      if (__propIsEnum$1$1.call(b2, prop2))
        __defNormalProp$2(a2, prop2, b2[prop2]);
    }
  return a2;
};
function useTimeout(interval = 1e3, options2 = {}) {
  const {
    controls: exposeControls = false
  } = options2;
  const controls = useTimeoutFn(noop$4, interval, options2);
  const ready = computed(() => !controls.isPending.value);
  if (exposeControls) {
    return __spreadValues$2({
      ready
    }, controls);
  } else {
    return ready;
  }
}
function useToggle(initialValue = false) {
  if (isRef(initialValue)) {
    return (value) => {
      initialValue.value = typeof value === "boolean" ? value : !initialValue.value;
    };
  } else {
    const boolean = ref(initialValue);
    const toggle = (value) => {
      boolean.value = typeof value === "boolean" ? value : !boolean.value;
    };
    return [boolean, toggle];
  }
}
function whenever(source, cb, options2) {
  return watch(source, (v2, ov, onInvalidate) => {
    if (v2)
      cb(v2, ov, onInvalidate);
  }, options2);
}
function unrefElement(elRef) {
  var _a3;
  const plain = unref(elRef);
  return (_a3 = plain == null ? void 0 : plain.$el) != null ? _a3 : plain;
}
const defaultWindow = isClient ? window : void 0;
function useEventListener(...args) {
  let target2;
  let event;
  let listener;
  let options2;
  if (isString$2(args[0])) {
    [event, listener, options2] = args;
    target2 = defaultWindow;
  } else {
    [target2, event, listener, options2] = args;
  }
  if (!target2)
    return noop$4;
  let cleanup = noop$4;
  const stopWatch = watch(() => unref(target2), (el2) => {
    cleanup();
    if (!el2)
      return;
    el2.addEventListener(event, listener, options2);
    cleanup = () => {
      el2.removeEventListener(event, listener, options2);
      cleanup = noop$4;
    };
  }, { immediate: true, flush: "post" });
  const stop = () => {
    stopWatch();
    cleanup();
  };
  tryOnScopeDispose(stop);
  return stop;
}
function onClickOutside(target2, handler, options2 = {}) {
  const { window: window2 = defaultWindow } = options2;
  if (!window2)
    return;
  const shouldListen = ref(true);
  const listener = (event) => {
    const el2 = unrefElement(target2);
    if (!el2 || el2 === event.target || event.composedPath().includes(el2) || !shouldListen.value)
      return;
    handler(event);
  };
  const cleanup = [
    useEventListener(window2, "click", listener, { passive: true, capture: true }),
    useEventListener(window2, "pointerdown", (e) => {
      const el2 = unrefElement(target2);
      shouldListen.value = !!el2 && !e.composedPath().includes(el2);
    }, { passive: true })
  ];
  const stop = () => cleanup.forEach((fn2) => fn2());
  return stop;
}
const createKeyPredicate = (keyFilter) => {
  if (typeof keyFilter === "function")
    return keyFilter;
  else if (typeof keyFilter === "string")
    return (event) => event.key === keyFilter;
  else if (Array.isArray(keyFilter))
    return (event) => keyFilter.includes(event.key);
  else if (keyFilter)
    return () => true;
  else
    return () => false;
};
function onKeyStroke(key, handler, options2 = {}) {
  const { target: target2 = defaultWindow, eventName = "keydown", passive: passive2 = false } = options2;
  const predicate = createKeyPredicate(key);
  const listener = (e) => {
    if (predicate(e))
      handler(e);
  };
  return useEventListener(target2, eventName, listener, passive2);
}
var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;
var __hasOwnProp$9 = Object.prototype.hasOwnProperty;
var __propIsEnum$9 = Object.prototype.propertyIsEnumerable;
var __objRest$2 = (source, exclude) => {
  var target2 = {};
  for (var prop2 in source)
    if (__hasOwnProp$9.call(source, prop2) && exclude.indexOf(prop2) < 0)
      target2[prop2] = source[prop2];
  if (source != null && __getOwnPropSymbols$9)
    for (var prop2 of __getOwnPropSymbols$9(source)) {
      if (exclude.indexOf(prop2) < 0 && __propIsEnum$9.call(source, prop2))
        target2[prop2] = source[prop2];
    }
  return target2;
};
function useResizeObserver(target2, callback, options2 = {}) {
  const _a3 = options2, { window: window2 = defaultWindow } = _a3, observerOptions = __objRest$2(_a3, ["window"]);
  let observer;
  const isSupported = window2 && "ResizeObserver" in window2;
  const cleanup = () => {
    if (observer) {
      observer.disconnect();
      observer = void 0;
    }
  };
  const stopWatch = watch(() => unrefElement(target2), (el2) => {
    cleanup();
    if (isSupported && window2 && el2) {
      observer = new window2.ResizeObserver(callback);
      observer.observe(el2, observerOptions);
    }
  }, { immediate: true, flush: "post" });
  const stop = () => {
    cleanup();
    stopWatch();
  };
  tryOnScopeDispose(stop);
  return {
    isSupported,
    stop
  };
}
function useElementSize(target2, initialSize = { width: 0, height: 0 }, options2 = {}) {
  const width = ref(initialSize.width);
  const height = ref(initialSize.height);
  useResizeObserver(target2, ([entry]) => {
    width.value = entry.contentRect.width;
    height.value = entry.contentRect.height;
  }, options2);
  return {
    width,
    height
  };
}
function useRafFn(fn2, options2 = {}) {
  const {
    immediate = true,
    window: window2 = defaultWindow
  } = options2;
  const isActive = ref(false);
  function loop() {
    if (!isActive.value)
      return;
    fn2();
    if (window2)
      window2.requestAnimationFrame(loop);
  }
  function resume() {
    if (!isActive.value) {
      isActive.value = true;
      loop();
    }
  }
  function pause() {
    isActive.value = false;
  }
  if (immediate)
    resume();
  tryOnScopeDispose(pause);
  return {
    isActive,
    pause,
    resume
  };
}
function useNetwork(options2 = {}) {
  const { window: window2 = defaultWindow } = options2;
  const navigator2 = window2 == null ? void 0 : window2.navigator;
  const isSupported = Boolean(navigator2 && "connection" in navigator2);
  const isOnline = ref(true);
  const saveData = ref(false);
  const offlineAt = ref(void 0);
  const downlink = ref(void 0);
  const downlinkMax = ref(void 0);
  const rtt = ref(void 0);
  const effectiveType = ref(void 0);
  const type2 = ref("unknown");
  const connection = isSupported && navigator2.connection;
  function updateNetworkInformation() {
    if (!navigator2)
      return;
    isOnline.value = navigator2.onLine;
    offlineAt.value = isOnline.value ? void 0 : Date.now();
    if (connection) {
      downlink.value = connection.downlink;
      downlinkMax.value = connection.downlinkMax;
      effectiveType.value = connection.effectiveType;
      rtt.value = connection.rtt;
      saveData.value = connection.saveData;
      type2.value = connection.type;
    }
  }
  if (window2) {
    useEventListener(window2, "offline", () => {
      isOnline.value = false;
      offlineAt.value = Date.now();
    });
    useEventListener(window2, "online", () => {
      isOnline.value = true;
    });
  }
  if (connection)
    useEventListener(connection, "change", updateNetworkInformation, false);
  updateNetworkInformation();
  return {
    isSupported,
    isOnline,
    saveData,
    offlineAt,
    downlink,
    downlinkMax,
    effectiveType,
    rtt,
    type: type2
  };
}
var __defProp$5 = Object.defineProperty;
var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;
var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
var __propIsEnum$5 = Object.prototype.propertyIsEnumerable;
var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues$5 = (a2, b2) => {
  for (var prop2 in b2 || (b2 = {}))
    if (__hasOwnProp$5.call(b2, prop2))
      __defNormalProp$5(a2, prop2, b2[prop2]);
  if (__getOwnPropSymbols$5)
    for (var prop2 of __getOwnPropSymbols$5(b2)) {
      if (__propIsEnum$5.call(b2, prop2))
        __defNormalProp$5(a2, prop2, b2[prop2]);
    }
  return a2;
};
function useNow(options2 = {}) {
  const {
    controls: exposeControls = false,
    interval = "requestAnimationFrame"
  } = options2;
  const now2 = ref(/* @__PURE__ */ new Date());
  const update = () => now2.value = /* @__PURE__ */ new Date();
  const controls = interval === "requestAnimationFrame" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });
  if (exposeControls) {
    return __spreadValues$5({
      now: now2
    }, controls);
  } else {
    return now2;
  }
}
function useOnline(options2 = {}) {
  const { isOnline } = useNetwork(options2);
  return isOnline;
}
var SwipeDirection;
(function(SwipeDirection2) {
  SwipeDirection2["UP"] = "UP";
  SwipeDirection2["RIGHT"] = "RIGHT";
  SwipeDirection2["DOWN"] = "DOWN";
  SwipeDirection2["LEFT"] = "LEFT";
  SwipeDirection2["NONE"] = "NONE";
})(SwipeDirection || (SwipeDirection = {}));
var _a$2, _b;
isClient && (window == null ? void 0 : window.navigator) && ((_a$2 = window == null ? void 0 : window.navigator) == null ? void 0 : _a$2.platform) && /iP(ad|hone|od)/.test((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.platform);
var __defProp$1$1 = Object.defineProperty;
var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues$1 = (a2, b2) => {
  for (var prop2 in b2 || (b2 = {}))
    if (__hasOwnProp$1.call(b2, prop2))
      __defNormalProp$1(a2, prop2, b2[prop2]);
  if (__getOwnPropSymbols$1)
    for (var prop2 of __getOwnPropSymbols$1(b2)) {
      if (__propIsEnum$1.call(b2, prop2))
        __defNormalProp$1(a2, prop2, b2[prop2]);
    }
  return a2;
};
var __objRest = (source, exclude) => {
  var target2 = {};
  for (var prop2 in source)
    if (__hasOwnProp$1.call(source, prop2) && exclude.indexOf(prop2) < 0)
      target2[prop2] = source[prop2];
  if (source != null && __getOwnPropSymbols$1)
    for (var prop2 of __getOwnPropSymbols$1(source)) {
      if (exclude.indexOf(prop2) < 0 && __propIsEnum$1.call(source, prop2))
        target2[prop2] = source[prop2];
    }
  return target2;
};
const UNITS = [
  { max: 6e4, value: 1e3, name: "second" },
  { max: 276e4, value: 6e4, name: "minute" },
  { max: 72e6, value: 36e5, name: "hour" },
  { max: 5184e5, value: 864e5, name: "day" },
  { max: 24192e5, value: 6048e5, name: "week" },
  { max: 28512e6, value: 2592e6, name: "month" },
  { max: Infinity, value: 31536e6, name: "year" }
];
const DEFAULT_MESSAGES = {
  justNow: "just now",
  past: (n) => n.match(/\d/) ? `${n} ago` : n,
  future: (n) => n.match(/\d/) ? `in ${n}` : n,
  month: (n, past) => n === 1 ? past ? "last month" : "next month" : `${n} month${n > 1 ? "s" : ""}`,
  year: (n, past) => n === 1 ? past ? "last year" : "next year" : `${n} year${n > 1 ? "s" : ""}`,
  day: (n, past) => n === 1 ? past ? "yesterday" : "tomorrow" : `${n} day${n > 1 ? "s" : ""}`,
  week: (n, past) => n === 1 ? past ? "last week" : "next week" : `${n} week${n > 1 ? "s" : ""}`,
  hour: (n) => `${n} hour${n > 1 ? "s" : ""}`,
  minute: (n) => `${n} minute${n > 1 ? "s" : ""}`,
  second: (n) => `${n} second${n > 1 ? "s" : ""}`
};
const DEFAULT_FORMATTER = (date) => date.toISOString().slice(0, 10);
function useTimeAgo(time, options2 = {}) {
  const {
    controls: exposeControls = false,
    max: max2,
    updateInterval = 3e4,
    messages = DEFAULT_MESSAGES,
    fullDateFormatter = DEFAULT_FORMATTER
  } = options2;
  const { abs, round: round2 } = Math;
  const _a3 = useNow({ interval: updateInterval, controls: true }), { now: now2 } = _a3, controls = __objRest(_a3, ["now"]);
  function getTimeago(from, now22) {
    var _a22;
    const diff = +now22 - +from;
    const absDiff = abs(diff);
    if (absDiff < 6e4)
      return messages.justNow;
    if (typeof max2 === "number" && absDiff > max2)
      return fullDateFormatter(new Date(from));
    if (typeof max2 === "string") {
      const unitMax = (_a22 = UNITS.find((i) => i.name === max2)) == null ? void 0 : _a22.max;
      if (unitMax && absDiff > unitMax)
        return fullDateFormatter(new Date(from));
    }
    for (const unit of UNITS) {
      if (absDiff < unit.max)
        return format3(diff, unit);
    }
  }
  function applyFormat(name2, val, isPast) {
    const formatter = messages[name2];
    if (typeof formatter === "function")
      return formatter(val, isPast);
    return formatter.replace("{0}", val.toString());
  }
  function format3(diff, unit) {
    const val = round2(abs(diff) / unit.value);
    const past = diff > 0;
    const str = applyFormat(unit.name, val, past);
    return applyFormat(past ? "past" : "future", str, past);
  }
  const timeAgo = computed(() => getTimeago(new Date(unref(time)), unref(now2.value)));
  if (exposeControls) {
    return __spreadValues$1({
      timeAgo
    }, controls);
  } else {
    return timeAgo;
  }
}
function useVModel(props, key, emit3, options2 = {}) {
  var _a3;
  const {
    passive: passive2 = false,
    eventName,
    deep = false
  } = options2;
  const vm = getCurrentInstance();
  const _emit = emit3 || (vm == null ? void 0 : vm.emit) || ((_a3 = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a3.bind(vm));
  let event = eventName;
  if (!key) {
    {
      key = "modelValue";
    }
  }
  event = eventName || event || `update:${key}`;
  if (passive2) {
    const proxy = ref(props[key]);
    watch(() => props[key], (v2) => proxy.value = v2);
    watch(proxy, (v2) => {
      if (v2 !== props[key] || deep)
        _emit(event, v2);
    }, {
      deep
    });
    return proxy;
  } else {
    return computed({
      get() {
        return props[key];
      },
      set(value) {
        _emit(event, value);
      }
    });
  }
}
function useVModels(props, emit3, options2 = {}) {
  const ret = {};
  for (const key in props)
    ret[key] = useVModel(props, key, emit3, options2);
  return ret;
}
function useWindowSize({ window: window2 = defaultWindow, initialWidth = Infinity, initialHeight = Infinity } = {}) {
  const width = ref(initialWidth);
  const height = ref(initialHeight);
  const update = () => {
    if (window2) {
      width.value = window2.innerWidth;
      height.value = window2.innerHeight;
    }
  };
  update();
  tryOnMounted(update);
  useEventListener("resize", update, { passive: true });
  return { width, height };
}
function getUtmSource() {
  return window.__CYPRESS_MODE__ ? "Binary: App" : "Binary: Launchpad";
}
const _hoisted_1$1w = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1n = /* @__PURE__ */ createBaseVNode("path", {
  d: "M10 3C9.44771 3 9 3.44772 9 4C9 4.55228 9.44771 5 10 5V3ZM10 11C9.44771 11 9 11.4477 9 12C9 12.5523 9.44771 13 10 13V11ZM6 5C6.55228 5 7 4.55228 7 4C7 3.44772 6.55228 3 6 3V5ZM6 13C6.55228 13 7 12.5523 7 12C7 11.4477 6.55228 11 6 11V13ZM5 7C4.44772 7 4 7.44772 4 8C4 8.55228 4.44772 9 5 9V7ZM11 9C11.5523 9 12 8.55228 12 8C12 7.44772 11.5523 7 11 7V9ZM10 5H11V3H10V5ZM11 11H10V13H11V11ZM5 5H6V3H5V5ZM6 11H5V13H6V11ZM5 9H11V7H5V9ZM2 8C2 6.34315 3.34315 5 5 5V3C2.23858 3 0 5.23858 0 8H2ZM0 8C0 10.7614 2.23858 13 5 13V11C3.34315 11 2 9.65685 2 8H0ZM14 8C14 9.65685 12.6569 11 11 11V13C13.7614 13 16 10.7614 16 8H14ZM16 8C16 5.23858 13.7614 3 11 3V5C12.6569 5 14 6.34315 14 8H16Z",
  fill: "currentColor",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$1a = [
  _hoisted_2$1n
];
function render$O(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1w, _hoisted_3$1a);
}
const ConnectIcon = { name: "cy-chain-link_x16", render: render$O };
const Auth_LogoutDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "Auth_Logout" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "logout" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudOrganizationsUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "slug" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "authState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "browserOpened" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "message" } }] } }] } }] } }] };
const Auth_LoginDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "Auth_Login" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "utmSource" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "utmMedium" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "utmContent" } }, "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "login" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "utmSource" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "utmSource" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "utmContent" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "utmContent" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "utmMedium" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "utmMedium" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudOrganizationsUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "slug" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "authState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "browserOpened" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "message" } }] } }] } }] } }] };
const Auth_ResetAuthStateDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "Auth_ResetAuthState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "resetAuthState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudOrganizationsUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "slug" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "authState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "browserOpened" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "message" } }] } }] } }] } }] };
const ChooseExternalEditorModal_SetPreferredEditorBinaryDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "ChooseExternalEditorModal_SetPreferredEditorBinary" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setPreferences" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "value" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "type" }, "value": { "kind": "EnumValue", "value": "global" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferredEditorBinary" } }] } }] } }] } }] } }] };
const CloudViewerAndProject_RequiredDataDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "CloudViewerAndProject_RequiredData" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cachedUser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "authState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "config" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isFullConfigReady" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCTConfigured" } }, { "kind": "Field", "name": { "kind": "Name", "value": "hasNonExampleSpec" } }, { "kind": "Field", "name": { "kind": "Name", "value": "savedState" } }, { "kind": "Field", "name": { "kind": "Name", "value": "branch" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "runs" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "10" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "url" } }] } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "wizard" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "framework" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "icon" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }] } }] } }] };
const CloudViewerAndProject_CheckCloudOrgMembershipDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "CloudViewerAndProject_CheckCloudOrgMembership" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewerChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cachedUser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "authState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "config" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isFullConfigReady" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCTConfigured" } }, { "kind": "Field", "name": { "kind": "Name", "value": "hasNonExampleSpec" } }, { "kind": "Field", "name": { "kind": "Name", "value": "savedState" } }, { "kind": "Field", "name": { "kind": "Name", "value": "branch" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "runs" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "10" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "url" } }] } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "wizard" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "framework" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "icon" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }] } }] } }] } }] };
const CloudViewerAndProject_DetectCtFrameworksDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "CloudViewerAndProject_DetectCtFrameworks" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "initializeCtFrameworks" } }] } }] };
const HeaderBar_HeaderBarQueryDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "HeaderBar_HeaderBarQuery" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "config" } }, { "kind": "Field", "name": { "kind": "Name", "value": "savedState" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "branch" } }, { "kind": "Field", "name": { "kind": "Name", "value": "packageManager" } }, { "kind": "Field", "name": { "kind": "Name", "value": "activeBrowser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "displayName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "majorVersion" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "browsers" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isSelected" } }, { "kind": "Field", "name": { "kind": "Name", "value": "displayName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "version" } }, { "kind": "Field", "name": { "kind": "Name", "value": "majorVersion" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isVersionSupported" } }, { "kind": "Field", "name": { "kind": "Name", "value": "warning" } }, { "kind": "Field", "name": { "kind": "Name", "value": "disabled" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "isGlobalMode" } }, { "kind": "Field", "name": { "kind": "Name", "value": "versions" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "current" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "version" } }, { "kind": "Field", "name": { "kind": "Name", "value": "released" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "latest" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "version" } }, { "kind": "Field", "name": { "kind": "Name", "value": "released" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudOrganizationsUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "slug" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "authState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "browserOpened" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "message" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cachedUser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }] } }] } }] };
const HeaderBarContent_AuthChangeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "HeaderBarContent_authChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "authChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudOrganizationsUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "slug" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "authState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "browserOpened" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "message" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cachedUser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }] } }] } }] } }] };
const GlobalPageHeader_ClearCurrentProjectDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "GlobalPageHeader_clearCurrentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "clearCurrentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "baseError" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorStack" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorMessage" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isUserCodeError" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeFrame" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "line" } }, { "kind": "Field", "name": { "kind": "Name", "value": "column" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeBlock" } }, { "kind": "Field", "name": { "kind": "Name", "value": "file" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "warnings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "migration" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "configFileNameBefore" } }] } }] } }] } }] };
const LoginConnectModals_LoginConnectModalsQueryDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "LoginConnectModals_LoginConnectModalsQuery" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudOrganizationsUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "slug" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "createCloudOrganizationUrl" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "authState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "browserOpened" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "message" } }] } }] } }] };
const OpenFileInIdeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "OpenFileInIDE" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferredEditorBinary" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "availableEditors" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "binary" } }] } }] } }] } }] };
const OpenFileInIde_MutationDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "OpenFileInIDE_Mutation" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "input" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "FileDetailsInput" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "openFileInIDE" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "input" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "input" } } }] }] } }] };
const RecordPromptAdapterDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "RecordPromptAdapter" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "recordKeys" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "key" } }] } }] } }] } }] } }] } }] };
const UseCohorts_DetermineCohortDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "UseCohorts_DetermineCohort" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "name" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "cohorts" } }, "type": { "kind": "NonNullType", "type": { "kind": "ListType", "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "determineCohort" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "cohortConfig" }, "value": { "kind": "ObjectValue", "fields": [{ "kind": "ObjectField", "name": { "kind": "Name", "value": "name" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "name" } } }, { "kind": "ObjectField", "name": { "kind": "Name", "value": "cohorts" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "cohorts" } } }] } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cohort" } }] } }] } }] };
const UsePromptManager_SetProjectPreferencesDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "UsePromptManager_SetProjectPreferences" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setPreferences" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "type" }, "value": { "kind": "EnumValue", "value": "project" } }, { "kind": "Argument", "name": { "kind": "Name", "value": "value" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "savedState" } }] } }] } }] } }] };
const UsePromptManager_SetGlobalPreferencesDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "UsePromptManager_SetGlobalPreferences" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setPreferences" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "type" }, "value": { "kind": "EnumValue", "value": "global" } }, { "kind": "Argument", "name": { "kind": "Name", "value": "value" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "majorVersionWelcomeDismissed" } }] } }] } }] } }] } }] };
const CloudConnectModals_MonitorCloudViewerDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "CloudConnectModals_MonitorCloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewerChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudOrganizationsUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "slug" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "createCloudOrganizationUrl" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }] } }] } }] } }] };
const CreateCloudOrgModal_CloudOrganizationsCheckDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "CreateCloudOrgModal_CloudOrganizationsCheck" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "refreshCloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudOrganizationsUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "slug" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "createCloudOrganizationUrl" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }] } }] } }] } }] };
const SelectCloudProjectModal_SetProjectIdDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "SelectCloudProjectModal_SetProjectId" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "projectId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setProjectIdInConfigFile" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "projectId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "projectId" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "runs" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "10" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "createdAt" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalDuration" } }, { "kind": "Field", "name": { "kind": "Name", "value": "url" } }, { "kind": "Field", "name": { "kind": "Name", "value": "tags" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPassed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFailed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPending" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalSkipped" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFlakyTests" } }, { "kind": "Field", "name": { "kind": "Name", "value": "commitInfo" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "authorName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "authorEmail" } }, { "kind": "Field", "name": { "kind": "Name", "value": "summary" } }, { "kind": "Field", "name": { "kind": "Name", "value": "branch" } }] } }] } }] } }] } }] } }] } }] } }] } }] };
const SelectCloudProjectModal_CreateCloudProjectDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "SelectCloudProjectModal_CreateCloudProject" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "name" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "orgId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "ID" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "public" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "Boolean" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "campaign" } }, "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "cohort" } }, "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "medium" } }, "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "source" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudProjectCreate" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "name" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "name" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "orgId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "orgId" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "public" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "public" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "campaign" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "campaign" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "cohort" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "cohort" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "medium" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "medium" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "source" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "source" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "slug" } }] } }] } }] };
const TopNav_SetPromptShownDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "TopNav_SetPromptShown" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "slug" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setPromptShown" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "slug" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "slug" } } }] }] } }] };
const VerticalBrowserListItems_SetBrowserDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "VerticalBrowserListItems_SetBrowser" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "ID" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "specPath" } }, "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "launchpadSetBrowser" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "id" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "browsers" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isSelected" } }, { "kind": "Field", "name": { "kind": "Name", "value": "displayName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "version" } }, { "kind": "Field", "name": { "kind": "Name", "value": "majorVersion" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isVersionSupported" } }, { "kind": "Field", "name": { "kind": "Name", "value": "warning" } }, { "kind": "Field", "name": { "kind": "Name", "value": "disabled" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "launchOpenProject" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "specPath" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "specPath" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] };
const Clipboard_CopyToClipboardDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "Clipboard_CopyToClipboard" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "text" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "copyTextToClipboard" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "text" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "text" } } }] }] } }] };
const ExternalLink_OpenExternalDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "ExternalLink_OpenExternal" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "url" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "includeGraphqlPort" } }, "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "Boolean" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "openExternal" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "url" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "url" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "includeGraphqlPort" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "includeGraphqlPort" } } }] }] } }] };
const GlobalSubscriptions_PushFragmentDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "GlobalSubscriptions_PushFragment" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "pushFragment" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "target" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fragment" } }, { "kind": "Field", "name": { "kind": "Name", "value": "data" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errors" } }, { "kind": "Field", "name": { "kind": "Name", "value": "variables" } }, { "kind": "Field", "name": { "kind": "Name", "value": "invalidateCache" } }] } }] } }] };
const GlobalSubscriptions_ErrorWarningChangeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "GlobalSubscriptions_ErrorWarningChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "errorWarningChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "baseError" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorStack" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorMessage" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isUserCodeError" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeFrame" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "line" } }, { "kind": "Field", "name": { "kind": "Name", "value": "column" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeBlock" } }, { "kind": "Field", "name": { "kind": "Name", "value": "file" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "warnings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorMessage" } }] } }] } }] } }] };
/*!
  * vue-router v4.0.11
  * (c) 2021 Eduardo San Martin Morote
  * @license MIT
  */
const hasSymbol = typeof Symbol === "function" && typeof Symbol.toStringTag === "symbol";
const PolySymbol = (name2) => (
  // vr = vue router
  hasSymbol ? Symbol(name2) : "_vr_" + name2
);
const matchedRouteKey = /* @__PURE__ */ PolySymbol("rvlm");
const viewDepthKey = /* @__PURE__ */ PolySymbol("rvd");
const routerKey = /* @__PURE__ */ PolySymbol("r");
const routeLocationKey = /* @__PURE__ */ PolySymbol("rl");
const routerViewLocationKey = /* @__PURE__ */ PolySymbol("rvl");
const isBrowser$2 = typeof window !== "undefined";
function isESModule(obj) {
  return obj.__esModule || hasSymbol && obj[Symbol.toStringTag] === "Module";
}
const assign$3 = Object.assign;
function applyToParams(fn2, params2) {
  const newParams = {};
  for (const key in params2) {
    const value = params2[key];
    newParams[key] = Array.isArray(value) ? value.map(fn2) : fn2(value);
  }
  return newParams;
}
const noop$3 = () => {
};
const TRAILING_SLASH_RE = /\/$/;
const removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, "");
function parseURL(parseQuery2, location2, currentLocation = "/") {
  let path, query2 = {}, searchString = "", hash2 = "";
  const searchPos = location2.indexOf("?");
  const hashPos = location2.indexOf("#", searchPos > -1 ? searchPos : 0);
  if (searchPos > -1) {
    path = location2.slice(0, searchPos);
    searchString = location2.slice(searchPos + 1, hashPos > -1 ? hashPos : location2.length);
    query2 = parseQuery2(searchString);
  }
  if (hashPos > -1) {
    path = path || location2.slice(0, hashPos);
    hash2 = location2.slice(hashPos, location2.length);
  }
  path = resolveRelativePath(path != null ? path : location2, currentLocation);
  return {
    fullPath: path + (searchString && "?") + searchString + hash2,
    path,
    query: query2,
    hash: hash2
  };
}
function stringifyURL(stringifyQuery2, location2) {
  const query2 = location2.query ? stringifyQuery2(location2.query) : "";
  return location2.path + (query2 && "?") + query2 + (location2.hash || "");
}
function stripBase(pathname, base2) {
  if (!base2 || !pathname.toLowerCase().startsWith(base2.toLowerCase()))
    return pathname;
  return pathname.slice(base2.length) || "/";
}
function isSameRouteLocation(stringifyQuery2, a2, b2) {
  const aLastIndex = a2.matched.length - 1;
  const bLastIndex = b2.matched.length - 1;
  return aLastIndex > -1 && aLastIndex === bLastIndex && isSameRouteRecord(a2.matched[aLastIndex], b2.matched[bLastIndex]) && isSameRouteLocationParams(a2.params, b2.params) && stringifyQuery2(a2.query) === stringifyQuery2(b2.query) && a2.hash === b2.hash;
}
function isSameRouteRecord(a2, b2) {
  return (a2.aliasOf || a2) === (b2.aliasOf || b2);
}
function isSameRouteLocationParams(a2, b2) {
  if (Object.keys(a2).length !== Object.keys(b2).length)
    return false;
  for (const key in a2) {
    if (!isSameRouteLocationParamsValue(a2[key], b2[key]))
      return false;
  }
  return true;
}
function isSameRouteLocationParamsValue(a2, b2) {
  return Array.isArray(a2) ? isEquivalentArray(a2, b2) : Array.isArray(b2) ? isEquivalentArray(b2, a2) : a2 === b2;
}
function isEquivalentArray(a2, b2) {
  return Array.isArray(b2) ? a2.length === b2.length && a2.every((value, i) => value === b2[i]) : a2.length === 1 && a2[0] === b2;
}
function resolveRelativePath(to2, from) {
  if (to2.startsWith("/"))
    return to2;
  if (!to2)
    return from;
  const fromSegments = from.split("/");
  const toSegments = to2.split("/");
  let position = fromSegments.length - 1;
  let toPosition;
  let segment;
  for (toPosition = 0; toPosition < toSegments.length; toPosition++) {
    segment = toSegments[toPosition];
    if (position === 1 || segment === ".")
      continue;
    if (segment === "..")
      position--;
    else
      break;
  }
  return fromSegments.slice(0, position).join("/") + "/" + toSegments.slice(toPosition - (toPosition === toSegments.length ? 1 : 0)).join("/");
}
var NavigationType;
(function(NavigationType2) {
  NavigationType2["pop"] = "pop";
  NavigationType2["push"] = "push";
})(NavigationType || (NavigationType = {}));
var NavigationDirection;
(function(NavigationDirection2) {
  NavigationDirection2["back"] = "back";
  NavigationDirection2["forward"] = "forward";
  NavigationDirection2["unknown"] = "";
})(NavigationDirection || (NavigationDirection = {}));
function normalizeBase(base2) {
  if (!base2) {
    if (isBrowser$2) {
      const baseEl = document.querySelector("base");
      base2 = baseEl && baseEl.getAttribute("href") || "/";
      base2 = base2.replace(/^\w+:\/\/[^\/]+/, "");
    } else {
      base2 = "/";
    }
  }
  if (base2[0] !== "/" && base2[0] !== "#")
    base2 = "/" + base2;
  return removeTrailingSlash(base2);
}
const BEFORE_HASH_RE = /^[^#]+#/;
function createHref(base2, location2) {
  return base2.replace(BEFORE_HASH_RE, "#") + location2;
}
function getElementPosition(el2, offset2) {
  const docRect = document.documentElement.getBoundingClientRect();
  const elRect = el2.getBoundingClientRect();
  return {
    behavior: offset2.behavior,
    left: elRect.left - docRect.left - (offset2.left || 0),
    top: elRect.top - docRect.top - (offset2.top || 0)
  };
}
const computeScrollPosition = () => ({
  left: window.pageXOffset,
  top: window.pageYOffset
});
function scrollToPosition(position) {
  let scrollToOptions;
  if ("el" in position) {
    const positionEl = position.el;
    const isIdSelector = typeof positionEl === "string" && positionEl.startsWith("#");
    const el2 = typeof positionEl === "string" ? isIdSelector ? document.getElementById(positionEl.slice(1)) : document.querySelector(positionEl) : positionEl;
    if (!el2) {
      return;
    }
    scrollToOptions = getElementPosition(el2, position);
  } else {
    scrollToOptions = position;
  }
  if ("scrollBehavior" in document.documentElement.style)
    window.scrollTo(scrollToOptions);
  else {
    window.scrollTo(scrollToOptions.left != null ? scrollToOptions.left : window.pageXOffset, scrollToOptions.top != null ? scrollToOptions.top : window.pageYOffset);
  }
}
function getScrollKey(path, delta2) {
  const position = history.state ? history.state.position - delta2 : -1;
  return position + path;
}
const scrollPositions = /* @__PURE__ */ new Map();
function saveScrollPosition(key, scrollPosition) {
  scrollPositions.set(key, scrollPosition);
}
function getSavedScrollPosition(key) {
  const scroll = scrollPositions.get(key);
  scrollPositions.delete(key);
  return scroll;
}
let createBaseLocation = () => location.protocol + "//" + location.host;
function createCurrentLocation(base2, location2) {
  const { pathname, search, hash: hash2 } = location2;
  const hashPos = base2.indexOf("#");
  if (hashPos > -1) {
    let slicePos = hash2.includes(base2.slice(hashPos)) ? base2.slice(hashPos).length : 1;
    let pathFromHash = hash2.slice(slicePos);
    if (pathFromHash[0] !== "/")
      pathFromHash = "/" + pathFromHash;
    return stripBase(pathFromHash, "");
  }
  const path = stripBase(pathname, base2);
  return path + search + hash2;
}
function useHistoryListeners(base2, historyState, currentLocation, replace2) {
  let listeners2 = [];
  let teardowns = [];
  let pauseState = null;
  const popStateHandler = ({ state }) => {
    const to2 = createCurrentLocation(base2, location);
    const from = currentLocation.value;
    const fromState = historyState.value;
    let delta2 = 0;
    if (state) {
      currentLocation.value = to2;
      historyState.value = state;
      if (pauseState && pauseState === from) {
        pauseState = null;
        return;
      }
      delta2 = fromState ? state.position - fromState.position : 0;
    } else {
      replace2(to2);
    }
    listeners2.forEach((listener) => {
      listener(currentLocation.value, from, {
        delta: delta2,
        type: NavigationType.pop,
        direction: delta2 ? delta2 > 0 ? NavigationDirection.forward : NavigationDirection.back : NavigationDirection.unknown
      });
    });
  };
  function pauseListeners() {
    pauseState = currentLocation.value;
  }
  function listen(callback) {
    listeners2.push(callback);
    const teardown2 = () => {
      const index2 = listeners2.indexOf(callback);
      if (index2 > -1)
        listeners2.splice(index2, 1);
    };
    teardowns.push(teardown2);
    return teardown2;
  }
  function beforeUnloadListener() {
    const { history: history2 } = window;
    if (!history2.state)
      return;
    history2.replaceState(assign$3({}, history2.state, { scroll: computeScrollPosition() }), "");
  }
  function destroy() {
    for (const teardown2 of teardowns)
      teardown2();
    teardowns = [];
    window.removeEventListener("popstate", popStateHandler);
    window.removeEventListener("beforeunload", beforeUnloadListener);
  }
  window.addEventListener("popstate", popStateHandler);
  window.addEventListener("beforeunload", beforeUnloadListener);
  return {
    pauseListeners,
    listen,
    destroy
  };
}
function buildState(back, current, forward, replaced = false, computeScroll = false) {
  return {
    back,
    current,
    forward,
    replaced,
    position: window.history.length,
    scroll: computeScroll ? computeScrollPosition() : null
  };
}
function useHistoryStateNavigation(base2) {
  const { history: history2, location: location2 } = window;
  const currentLocation = {
    value: createCurrentLocation(base2, location2)
  };
  const historyState = { value: history2.state };
  if (!historyState.value) {
    changeLocation(currentLocation.value, {
      back: null,
      current: currentLocation.value,
      forward: null,
      // the length is off by one, we need to decrease it
      position: history2.length - 1,
      replaced: true,
      // don't add a scroll as the user may have an anchor and we want
      // scrollBehavior to be triggered without a saved position
      scroll: null
    }, true);
  }
  function changeLocation(to2, state, replace3) {
    const hashIndex = base2.indexOf("#");
    const url2 = hashIndex > -1 ? (location2.host && document.querySelector("base") ? base2 : base2.slice(hashIndex)) + to2 : createBaseLocation() + base2 + to2;
    try {
      history2[replace3 ? "replaceState" : "pushState"](state, "", url2);
      historyState.value = state;
    } catch (err) {
      {
        console.error(err);
      }
      location2[replace3 ? "replace" : "assign"](url2);
    }
  }
  function replace2(to2, data) {
    const state = assign$3({}, history2.state, buildState(
      historyState.value.back,
      // keep back and forward entries but override current position
      to2,
      historyState.value.forward,
      true
    ), data, { position: historyState.value.position });
    changeLocation(to2, state, true);
    currentLocation.value = to2;
  }
  function push2(to2, data) {
    const currentState = assign$3(
      {},
      // use current history state to gracefully handle a wrong call to
      // history.replaceState
      // https://github.com/vuejs/vue-router-next/issues/366
      historyState.value,
      history2.state,
      {
        forward: to2,
        scroll: computeScrollPosition()
      }
    );
    changeLocation(currentState.current, currentState, true);
    const state = assign$3({}, buildState(currentLocation.value, to2, null), { position: currentState.position + 1 }, data);
    changeLocation(to2, state, false);
    currentLocation.value = to2;
  }
  return {
    location: currentLocation,
    state: historyState,
    push: push2,
    replace: replace2
  };
}
function createWebHistory(base2) {
  base2 = normalizeBase(base2);
  const historyNavigation = useHistoryStateNavigation(base2);
  const historyListeners = useHistoryListeners(base2, historyNavigation.state, historyNavigation.location, historyNavigation.replace);
  function go(delta2, triggerListeners = true) {
    if (!triggerListeners)
      historyListeners.pauseListeners();
    history.go(delta2);
  }
  const routerHistory = assign$3({
    // it's overridden right after
    location: "",
    base: base2,
    go,
    createHref: createHref.bind(null, base2)
  }, historyNavigation, historyListeners);
  Object.defineProperty(routerHistory, "location", {
    enumerable: true,
    get: () => historyNavigation.location.value
  });
  Object.defineProperty(routerHistory, "state", {
    enumerable: true,
    get: () => historyNavigation.state.value
  });
  return routerHistory;
}
function createWebHashHistory(base2) {
  base2 = location.host ? base2 || location.pathname + location.search : "";
  if (!base2.includes("#"))
    base2 += "#";
  return createWebHistory(base2);
}
function isRouteLocation(route) {
  return typeof route === "string" || route && typeof route === "object";
}
function isRouteName(name2) {
  return typeof name2 === "string" || typeof name2 === "symbol";
}
const START_LOCATION_NORMALIZED = {
  path: "/",
  name: void 0,
  params: {},
  query: {},
  hash: "",
  fullPath: "/",
  matched: [],
  meta: {},
  redirectedFrom: void 0
};
const NavigationFailureSymbol = /* @__PURE__ */ PolySymbol("nf");
var NavigationFailureType;
(function(NavigationFailureType2) {
  NavigationFailureType2[NavigationFailureType2["aborted"] = 4] = "aborted";
  NavigationFailureType2[NavigationFailureType2["cancelled"] = 8] = "cancelled";
  NavigationFailureType2[NavigationFailureType2["duplicated"] = 16] = "duplicated";
})(NavigationFailureType || (NavigationFailureType = {}));
function createRouterError(type2, params2) {
  {
    return assign$3(new Error(), {
      type: type2,
      [NavigationFailureSymbol]: true
    }, params2);
  }
}
function isNavigationFailure(error2, type2) {
  return error2 instanceof Error && NavigationFailureSymbol in error2 && (type2 == null || !!(error2.type & type2));
}
const BASE_PARAM_PATTERN = "[^/]+?";
const BASE_PATH_PARSER_OPTIONS = {
  sensitive: false,
  strict: false,
  start: true,
  end: true
};
const REGEX_CHARS_RE = /[.+*?^${}()[\]/\\]/g;
function tokensToParser(segments, extraOptions) {
  const options2 = assign$3({}, BASE_PATH_PARSER_OPTIONS, extraOptions);
  const score = [];
  let pattern = options2.start ? "^" : "";
  const keys = [];
  for (const segment of segments) {
    const segmentScores = segment.length ? [] : [
      90
      /* Root */
    ];
    if (options2.strict && !segment.length)
      pattern += "/";
    for (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) {
      const token2 = segment[tokenIndex];
      let subSegmentScore = 40 + (options2.sensitive ? 0.25 : 0);
      if (token2.type === 0) {
        if (!tokenIndex)
          pattern += "/";
        pattern += token2.value.replace(REGEX_CHARS_RE, "\\$&");
        subSegmentScore += 40;
      } else if (token2.type === 1) {
        const { value, repeatable, optional, regexp } = token2;
        keys.push({
          name: value,
          repeatable,
          optional
        });
        const re3 = regexp ? regexp : BASE_PARAM_PATTERN;
        if (re3 !== BASE_PARAM_PATTERN) {
          subSegmentScore += 10;
          try {
            new RegExp(`(${re3})`);
          } catch (err) {
            throw new Error(`Invalid custom RegExp for param "${value}" (${re3}): ` + err.message);
          }
        }
        let subPattern = repeatable ? `((?:${re3})(?:/(?:${re3}))*)` : `(${re3})`;
        if (!tokenIndex)
          subPattern = // avoid an optional / if there are more segments e.g. /:p?-static
          // or /:p?-:p2
          optional && segment.length < 2 ? `(?:/${subPattern})` : "/" + subPattern;
        if (optional)
          subPattern += "?";
        pattern += subPattern;
        subSegmentScore += 20;
        if (optional)
          subSegmentScore += -8;
        if (repeatable)
          subSegmentScore += -20;
        if (re3 === ".*")
          subSegmentScore += -50;
      }
      segmentScores.push(subSegmentScore);
    }
    score.push(segmentScores);
  }
  if (options2.strict && options2.end) {
    const i = score.length - 1;
    score[i][score[i].length - 1] += 0.7000000000000001;
  }
  if (!options2.strict)
    pattern += "/?";
  if (options2.end)
    pattern += "$";
  else if (options2.strict)
    pattern += "(?:/|$)";
  const re2 = new RegExp(pattern, options2.sensitive ? "" : "i");
  function parse3(path) {
    const match3 = path.match(re2);
    const params2 = {};
    if (!match3)
      return null;
    for (let i = 1; i < match3.length; i++) {
      const value = match3[i] || "";
      const key = keys[i - 1];
      params2[key.name] = value && key.repeatable ? value.split("/") : value;
    }
    return params2;
  }
  function stringify3(params2) {
    let path = "";
    let avoidDuplicatedSlash = false;
    for (const segment of segments) {
      if (!avoidDuplicatedSlash || !path.endsWith("/"))
        path += "/";
      avoidDuplicatedSlash = false;
      for (const token2 of segment) {
        if (token2.type === 0) {
          path += token2.value;
        } else if (token2.type === 1) {
          const { value, repeatable, optional } = token2;
          const param = value in params2 ? params2[value] : "";
          if (Array.isArray(param) && !repeatable)
            throw new Error(`Provided param "${value}" is an array but it is not repeatable (* or + modifiers)`);
          const text3 = Array.isArray(param) ? param.join("/") : param;
          if (!text3) {
            if (optional) {
              if (segment.length < 2) {
                if (path.endsWith("/"))
                  path = path.slice(0, -1);
                else
                  avoidDuplicatedSlash = true;
              }
            } else
              throw new Error(`Missing required param "${value}"`);
          }
          path += text3;
        }
      }
    }
    return path;
  }
  return {
    re: re2,
    score,
    keys,
    parse: parse3,
    stringify: stringify3
  };
}
function compareScoreArray(a2, b2) {
  let i = 0;
  while (i < a2.length && i < b2.length) {
    const diff = b2[i] - a2[i];
    if (diff)
      return diff;
    i++;
  }
  if (a2.length < b2.length) {
    return a2.length === 1 && a2[0] === 40 + 40 ? -1 : 1;
  } else if (a2.length > b2.length) {
    return b2.length === 1 && b2[0] === 40 + 40 ? 1 : -1;
  }
  return 0;
}
function comparePathParserScore(a2, b2) {
  let i = 0;
  const aScore = a2.score;
  const bScore = b2.score;
  while (i < aScore.length && i < bScore.length) {
    const comp2 = compareScoreArray(aScore[i], bScore[i]);
    if (comp2)
      return comp2;
    i++;
  }
  return bScore.length - aScore.length;
}
const ROOT_TOKEN = {
  type: 0,
  value: ""
};
const VALID_PARAM_RE = /[a-zA-Z0-9_]/;
function tokenizePath(path) {
  if (!path)
    return [[]];
  if (path === "/")
    return [[ROOT_TOKEN]];
  if (!path.startsWith("/")) {
    throw new Error(`Invalid path "${path}"`);
  }
  function crash(message) {
    throw new Error(`ERR (${state})/"${buffer}": ${message}`);
  }
  let state = 0;
  let previousState = state;
  const tokens = [];
  let segment;
  function finalizeSegment() {
    if (segment)
      tokens.push(segment);
    segment = [];
  }
  let i = 0;
  let char;
  let buffer = "";
  let customRe = "";
  function consumeBuffer() {
    if (!buffer)
      return;
    if (state === 0) {
      segment.push({
        type: 0,
        value: buffer
      });
    } else if (state === 1 || state === 2 || state === 3) {
      if (segment.length > 1 && (char === "*" || char === "+"))
        crash(`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`);
      segment.push({
        type: 1,
        value: buffer,
        regexp: customRe,
        repeatable: char === "*" || char === "+",
        optional: char === "*" || char === "?"
      });
    } else {
      crash("Invalid state to consume buffer");
    }
    buffer = "";
  }
  function addCharToBuffer() {
    buffer += char;
  }
  while (i < path.length) {
    char = path[i++];
    if (char === "\\" && state !== 2) {
      previousState = state;
      state = 4;
      continue;
    }
    switch (state) {
      case 0:
        if (char === "/") {
          if (buffer) {
            consumeBuffer();
          }
          finalizeSegment();
        } else if (char === ":") {
          consumeBuffer();
          state = 1;
        } else {
          addCharToBuffer();
        }
        break;
      case 4:
        addCharToBuffer();
        state = previousState;
        break;
      case 1:
        if (char === "(") {
          state = 2;
        } else if (VALID_PARAM_RE.test(char)) {
          addCharToBuffer();
        } else {
          consumeBuffer();
          state = 0;
          if (char !== "*" && char !== "?" && char !== "+")
            i--;
        }
        break;
      case 2:
        if (char === ")") {
          if (customRe[customRe.length - 1] == "\\")
            customRe = customRe.slice(0, -1) + char;
          else
            state = 3;
        } else {
          customRe += char;
        }
        break;
      case 3:
        consumeBuffer();
        state = 0;
        if (char !== "*" && char !== "?" && char !== "+")
          i--;
        customRe = "";
        break;
      default:
        crash("Unknown state");
        break;
    }
  }
  if (state === 2)
    crash(`Unfinished custom RegExp for param "${buffer}"`);
  consumeBuffer();
  finalizeSegment();
  return tokens;
}
function createRouteRecordMatcher(record, parent, options2) {
  const parser2 = tokensToParser(tokenizePath(record.path), options2);
  const matcher = assign$3(parser2, {
    record,
    parent,
    // these needs to be populated by the parent
    children: [],
    alias: []
  });
  if (parent) {
    if (!matcher.record.aliasOf === !parent.record.aliasOf)
      parent.children.push(matcher);
  }
  return matcher;
}
function createRouterMatcher(routes2, globalOptions) {
  const matchers = [];
  const matcherMap = /* @__PURE__ */ new Map();
  globalOptions = mergeOptions({ strict: false, end: true, sensitive: false }, globalOptions);
  function getRecordMatcher(name2) {
    return matcherMap.get(name2);
  }
  function addRoute(record, parent, originalRecord) {
    const isRootAdd = !originalRecord;
    const mainNormalizedRecord = normalizeRouteRecord(record);
    mainNormalizedRecord.aliasOf = originalRecord && originalRecord.record;
    const options2 = mergeOptions(globalOptions, record);
    const normalizedRecords = [
      mainNormalizedRecord
    ];
    if ("alias" in record) {
      const aliases = typeof record.alias === "string" ? [record.alias] : record.alias;
      for (const alias of aliases) {
        normalizedRecords.push(assign$3({}, mainNormalizedRecord, {
          // this allows us to hold a copy of the `components` option
          // so that async components cache is hold on the original record
          components: originalRecord ? originalRecord.record.components : mainNormalizedRecord.components,
          path: alias,
          // we might be the child of an alias
          aliasOf: originalRecord ? originalRecord.record : mainNormalizedRecord
          // the aliases are always of the same kind as the original since they
          // are defined on the same record
        }));
      }
    }
    let matcher;
    let originalMatcher;
    for (const normalizedRecord of normalizedRecords) {
      const { path } = normalizedRecord;
      if (parent && path[0] !== "/") {
        const parentPath = parent.record.path;
        const connectingSlash = parentPath[parentPath.length - 1] === "/" ? "" : "/";
        normalizedRecord.path = parent.record.path + (path && connectingSlash + path);
      }
      matcher = createRouteRecordMatcher(normalizedRecord, parent, options2);
      if (originalRecord) {
        originalRecord.alias.push(matcher);
      } else {
        originalMatcher = originalMatcher || matcher;
        if (originalMatcher !== matcher)
          originalMatcher.alias.push(matcher);
        if (isRootAdd && record.name && !isAliasRecord(matcher))
          removeRoute(record.name);
      }
      if ("children" in mainNormalizedRecord) {
        const children = mainNormalizedRecord.children;
        for (let i = 0; i < children.length; i++) {
          addRoute(children[i], matcher, originalRecord && originalRecord.children[i]);
        }
      }
      originalRecord = originalRecord || matcher;
      insertMatcher(matcher);
    }
    return originalMatcher ? () => {
      removeRoute(originalMatcher);
    } : noop$3;
  }
  function removeRoute(matcherRef) {
    if (isRouteName(matcherRef)) {
      const matcher = matcherMap.get(matcherRef);
      if (matcher) {
        matcherMap.delete(matcherRef);
        matchers.splice(matchers.indexOf(matcher), 1);
        matcher.children.forEach(removeRoute);
        matcher.alias.forEach(removeRoute);
      }
    } else {
      const index2 = matchers.indexOf(matcherRef);
      if (index2 > -1) {
        matchers.splice(index2, 1);
        if (matcherRef.record.name)
          matcherMap.delete(matcherRef.record.name);
        matcherRef.children.forEach(removeRoute);
        matcherRef.alias.forEach(removeRoute);
      }
    }
  }
  function getRoutes() {
    return matchers;
  }
  function insertMatcher(matcher) {
    let i = 0;
    while (i < matchers.length && comparePathParserScore(matcher, matchers[i]) >= 0)
      i++;
    matchers.splice(i, 0, matcher);
    if (matcher.record.name && !isAliasRecord(matcher))
      matcherMap.set(matcher.record.name, matcher);
  }
  function resolve3(location2, currentLocation) {
    let matcher;
    let params2 = {};
    let path;
    let name2;
    if ("name" in location2 && location2.name) {
      matcher = matcherMap.get(location2.name);
      if (!matcher)
        throw createRouterError(1, {
          location: location2
        });
      name2 = matcher.record.name;
      params2 = assign$3(
        // paramsFromLocation is a new object
        paramsFromLocation(
          currentLocation.params,
          // only keep params that exist in the resolved location
          // TODO: only keep optional params coming from a parent record
          matcher.keys.filter((k2) => !k2.optional).map((k2) => k2.name)
        ),
        location2.params
      );
      path = matcher.stringify(params2);
    } else if ("path" in location2) {
      path = location2.path;
      matcher = matchers.find((m2) => m2.re.test(path));
      if (matcher) {
        params2 = matcher.parse(path);
        name2 = matcher.record.name;
      }
    } else {
      matcher = currentLocation.name ? matcherMap.get(currentLocation.name) : matchers.find((m2) => m2.re.test(currentLocation.path));
      if (!matcher)
        throw createRouterError(1, {
          location: location2,
          currentLocation
        });
      name2 = matcher.record.name;
      params2 = assign$3({}, currentLocation.params, location2.params);
      path = matcher.stringify(params2);
    }
    const matched = [];
    let parentMatcher = matcher;
    while (parentMatcher) {
      matched.unshift(parentMatcher.record);
      parentMatcher = parentMatcher.parent;
    }
    return {
      name: name2,
      path,
      params: params2,
      matched,
      meta: mergeMetaFields(matched)
    };
  }
  routes2.forEach((route) => addRoute(route));
  return { addRoute, resolve: resolve3, removeRoute, getRoutes, getRecordMatcher };
}
function paramsFromLocation(params2, keys) {
  const newParams = {};
  for (const key of keys) {
    if (key in params2)
      newParams[key] = params2[key];
  }
  return newParams;
}
function normalizeRouteRecord(record) {
  return {
    path: record.path,
    redirect: record.redirect,
    name: record.name,
    meta: record.meta || {},
    aliasOf: void 0,
    beforeEnter: record.beforeEnter,
    props: normalizeRecordProps(record),
    children: record.children || [],
    instances: {},
    leaveGuards: /* @__PURE__ */ new Set(),
    updateGuards: /* @__PURE__ */ new Set(),
    enterCallbacks: {},
    components: "components" in record ? record.components || {} : { default: record.component }
  };
}
function normalizeRecordProps(record) {
  const propsObject = {};
  const props = record.props || false;
  if ("component" in record) {
    propsObject.default = props;
  } else {
    for (const name2 in record.components)
      propsObject[name2] = typeof props === "boolean" ? props : props[name2];
  }
  return propsObject;
}
function isAliasRecord(record) {
  while (record) {
    if (record.record.aliasOf)
      return true;
    record = record.parent;
  }
  return false;
}
function mergeMetaFields(matched) {
  return matched.reduce((meta, record) => assign$3(meta, record.meta), {});
}
function mergeOptions(defaults2, partialOptions) {
  const options2 = {};
  for (const key in defaults2) {
    options2[key] = key in partialOptions ? partialOptions[key] : defaults2[key];
  }
  return options2;
}
const HASH_RE = /#/g;
const AMPERSAND_RE = /&/g;
const SLASH_RE = /\//g;
const EQUAL_RE = /=/g;
const IM_RE = /\?/g;
const PLUS_RE = /\+/g;
const ENC_BRACKET_OPEN_RE = /%5B/g;
const ENC_BRACKET_CLOSE_RE = /%5D/g;
const ENC_CARET_RE = /%5E/g;
const ENC_BACKTICK_RE = /%60/g;
const ENC_CURLY_OPEN_RE = /%7B/g;
const ENC_PIPE_RE = /%7C/g;
const ENC_CURLY_CLOSE_RE = /%7D/g;
const ENC_SPACE_RE = /%20/g;
function commonEncode(text3) {
  return encodeURI("" + text3).replace(ENC_PIPE_RE, "|").replace(ENC_BRACKET_OPEN_RE, "[").replace(ENC_BRACKET_CLOSE_RE, "]");
}
function encodeHash(text3) {
  return commonEncode(text3).replace(ENC_CURLY_OPEN_RE, "{").replace(ENC_CURLY_CLOSE_RE, "}").replace(ENC_CARET_RE, "^");
}
function encodeQueryValue(text3) {
  return commonEncode(text3).replace(PLUS_RE, "%2B").replace(ENC_SPACE_RE, "+").replace(HASH_RE, "%23").replace(AMPERSAND_RE, "%26").replace(ENC_BACKTICK_RE, "`").replace(ENC_CURLY_OPEN_RE, "{").replace(ENC_CURLY_CLOSE_RE, "}").replace(ENC_CARET_RE, "^");
}
function encodeQueryKey(text3) {
  return encodeQueryValue(text3).replace(EQUAL_RE, "%3D");
}
function encodePath(text3) {
  return commonEncode(text3).replace(HASH_RE, "%23").replace(IM_RE, "%3F");
}
function encodeParam(text3) {
  return text3 == null ? "" : encodePath(text3).replace(SLASH_RE, "%2F");
}
function decode$4(text3) {
  try {
    return decodeURIComponent("" + text3);
  } catch (err) {
  }
  return "" + text3;
}
function parseQuery(search) {
  const query2 = {};
  if (search === "" || search === "?")
    return query2;
  const hasLeadingIM = search[0] === "?";
  const searchParams = (hasLeadingIM ? search.slice(1) : search).split("&");
  for (let i = 0; i < searchParams.length; ++i) {
    const searchParam = searchParams[i].replace(PLUS_RE, " ");
    const eqPos = searchParam.indexOf("=");
    const key = decode$4(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));
    const value = eqPos < 0 ? null : decode$4(searchParam.slice(eqPos + 1));
    if (key in query2) {
      let currentValue = query2[key];
      if (!Array.isArray(currentValue)) {
        currentValue = query2[key] = [currentValue];
      }
      currentValue.push(value);
    } else {
      query2[key] = value;
    }
  }
  return query2;
}
function stringifyQuery(query2) {
  let search = "";
  for (let key in query2) {
    const value = query2[key];
    key = encodeQueryKey(key);
    if (value == null) {
      if (value !== void 0) {
        search += (search.length ? "&" : "") + key;
      }
      continue;
    }
    const values = Array.isArray(value) ? value.map((v2) => v2 && encodeQueryValue(v2)) : [value && encodeQueryValue(value)];
    values.forEach((value2) => {
      if (value2 !== void 0) {
        search += (search.length ? "&" : "") + key;
        if (value2 != null)
          search += "=" + value2;
      }
    });
  }
  return search;
}
function normalizeQuery(query2) {
  const normalizedQuery = {};
  for (const key in query2) {
    const value = query2[key];
    if (value !== void 0) {
      normalizedQuery[key] = Array.isArray(value) ? value.map((v2) => v2 == null ? null : "" + v2) : value == null ? value : "" + value;
    }
  }
  return normalizedQuery;
}
function useCallbacks() {
  let handlers = [];
  function add3(handler) {
    handlers.push(handler);
    return () => {
      const i = handlers.indexOf(handler);
      if (i > -1)
        handlers.splice(i, 1);
    };
  }
  function reset() {
    handlers = [];
  }
  return {
    add: add3,
    list: () => handlers,
    reset
  };
}
function guardToPromiseFn(guard, to2, from, record, name2) {
  const enterCallbackArray = record && // name is defined if record is because of the function overload
  (record.enterCallbacks[name2] = record.enterCallbacks[name2] || []);
  return () => new Promise((resolve3, reject) => {
    const next = (valid) => {
      if (valid === false)
        reject(createRouterError(4, {
          from,
          to: to2
        }));
      else if (valid instanceof Error) {
        reject(valid);
      } else if (isRouteLocation(valid)) {
        reject(createRouterError(2, {
          from: to2,
          to: valid
        }));
      } else {
        if (enterCallbackArray && // since enterCallbackArray is truthy, both record and name also are
        record.enterCallbacks[name2] === enterCallbackArray && typeof valid === "function")
          enterCallbackArray.push(valid);
        resolve3();
      }
    };
    const guardReturn = guard.call(record && record.instances[name2], to2, from, next);
    let guardCall = Promise.resolve(guardReturn);
    if (guard.length < 3)
      guardCall = guardCall.then(next);
    guardCall.catch((err) => reject(err));
  });
}
function extractComponentsGuards(matched, guardType, to2, from) {
  const guards = [];
  for (const record of matched) {
    for (const name2 in record.components) {
      let rawComponent = record.components[name2];
      if (guardType !== "beforeRouteEnter" && !record.instances[name2])
        continue;
      if (isRouteComponent(rawComponent)) {
        const options2 = rawComponent.__vccOpts || rawComponent;
        const guard = options2[guardType];
        guard && guards.push(guardToPromiseFn(guard, to2, from, record, name2));
      } else {
        let componentPromise = rawComponent();
        guards.push(() => componentPromise.then((resolved) => {
          if (!resolved)
            return Promise.reject(new Error(`Couldn't resolve component "${name2}" at "${record.path}"`));
          const resolvedComponent = isESModule(resolved) ? resolved.default : resolved;
          record.components[name2] = resolvedComponent;
          const options2 = resolvedComponent.__vccOpts || resolvedComponent;
          const guard = options2[guardType];
          return guard && guardToPromiseFn(guard, to2, from, record, name2)();
        }));
      }
    }
  }
  return guards;
}
function isRouteComponent(component) {
  return typeof component === "object" || "displayName" in component || "props" in component || "__vccOpts" in component;
}
function useLink(props) {
  const router = inject(routerKey);
  const currentRoute = inject(routeLocationKey);
  const route = computed(() => router.resolve(unref(props.to)));
  const activeRecordIndex = computed(() => {
    const { matched } = route.value;
    const { length: length2 } = matched;
    const routeMatched = matched[length2 - 1];
    const currentMatched = currentRoute.matched;
    if (!routeMatched || !currentMatched.length)
      return -1;
    const index2 = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched));
    if (index2 > -1)
      return index2;
    const parentRecordPath = getOriginalPath(matched[length2 - 2]);
    return (
      // we are dealing with nested routes
      length2 > 1 && // if the parent and matched route have the same path, this link is
      // referring to the empty child. Or we currently are on a different
      // child of the same parent
      getOriginalPath(routeMatched) === parentRecordPath && // avoid comparing the child with its parent
      currentMatched[currentMatched.length - 1].path !== parentRecordPath ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length2 - 2])) : index2
    );
  });
  const isActive = computed(() => activeRecordIndex.value > -1 && includesParams(currentRoute.params, route.value.params));
  const isExactActive = computed(() => activeRecordIndex.value > -1 && activeRecordIndex.value === currentRoute.matched.length - 1 && isSameRouteLocationParams(currentRoute.params, route.value.params));
  function navigate(e = {}) {
    if (guardEvent(e)) {
      return router[unref(props.replace) ? "replace" : "push"](
        unref(props.to)
        // avoid uncaught errors are they are logged anyway
      ).catch(noop$3);
    }
    return Promise.resolve();
  }
  return {
    route,
    href: computed(() => route.value.href),
    isActive,
    isExactActive,
    navigate
  };
}
const RouterLinkImpl = /* @__PURE__ */ defineComponent({
  name: "RouterLink",
  props: {
    to: {
      type: [String, Object],
      required: true
    },
    replace: Boolean,
    activeClass: String,
    // inactiveClass: String,
    exactActiveClass: String,
    custom: Boolean,
    ariaCurrentValue: {
      type: String,
      default: "page"
    }
  },
  useLink,
  setup(props, { slots }) {
    const link4 = reactive(useLink(props));
    const { options: options2 } = inject(routerKey);
    const elClass = computed(() => ({
      [getLinkClass(props.activeClass, options2.linkActiveClass, "router-link-active")]: link4.isActive,
      // [getLinkClass(
      //   props.inactiveClass,
      //   options.linkInactiveClass,
      //   'router-link-inactive'
      // )]: !link.isExactActive,
      [getLinkClass(props.exactActiveClass, options2.linkExactActiveClass, "router-link-exact-active")]: link4.isExactActive
    }));
    return () => {
      const children = slots.default && slots.default(link4);
      return props.custom ? children : h$1("a", {
        "aria-current": link4.isExactActive ? props.ariaCurrentValue : null,
        href: link4.href,
        // this would override user added attrs but Vue will still add
        // the listener so we end up triggering both
        onClick: link4.navigate,
        class: elClass.value
      }, children);
    };
  }
});
const RouterLink = RouterLinkImpl;
function guardEvent(e) {
  if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)
    return;
  if (e.defaultPrevented)
    return;
  if (e.button !== void 0 && e.button !== 0)
    return;
  if (e.currentTarget && e.currentTarget.getAttribute) {
    const target2 = e.currentTarget.getAttribute("target");
    if (/\b_blank\b/i.test(target2))
      return;
  }
  if (e.preventDefault)
    e.preventDefault();
  return true;
}
function includesParams(outer, inner) {
  for (const key in inner) {
    const innerValue = inner[key];
    const outerValue = outer[key];
    if (typeof innerValue === "string") {
      if (innerValue !== outerValue)
        return false;
    } else {
      if (!Array.isArray(outerValue) || outerValue.length !== innerValue.length || innerValue.some((value, i) => value !== outerValue[i]))
        return false;
    }
  }
  return true;
}
function getOriginalPath(record) {
  return record ? record.aliasOf ? record.aliasOf.path : record.path : "";
}
const getLinkClass = (propClass, globalClass, defaultClass) => propClass != null ? propClass : globalClass != null ? globalClass : defaultClass;
const RouterViewImpl = /* @__PURE__ */ defineComponent({
  name: "RouterView",
  // #674 we manually inherit them
  inheritAttrs: false,
  props: {
    name: {
      type: String,
      default: "default"
    },
    route: Object
  },
  setup(props, { attrs, slots }) {
    const injectedRoute = inject(routerViewLocationKey);
    const routeToDisplay = computed(() => props.route || injectedRoute.value);
    const depth = inject(viewDepthKey, 0);
    const matchedRouteRef = computed(() => routeToDisplay.value.matched[depth]);
    provide(viewDepthKey, depth + 1);
    provide(matchedRouteKey, matchedRouteRef);
    provide(routerViewLocationKey, routeToDisplay);
    const viewRef = ref();
    watch(() => [viewRef.value, matchedRouteRef.value, props.name], ([instance, to2, name2], [oldInstance, from, oldName]) => {
      if (to2) {
        to2.instances[name2] = instance;
        if (from && from !== to2 && instance && instance === oldInstance) {
          if (!to2.leaveGuards.size) {
            to2.leaveGuards = from.leaveGuards;
          }
          if (!to2.updateGuards.size) {
            to2.updateGuards = from.updateGuards;
          }
        }
      }
      if (instance && to2 && // if there is no instance but to and from are the same this might be
      // the first visit
      (!from || !isSameRouteRecord(to2, from) || !oldInstance)) {
        (to2.enterCallbacks[name2] || []).forEach((callback) => callback(instance));
      }
    }, { flush: "post" });
    return () => {
      const route = routeToDisplay.value;
      const matchedRoute = matchedRouteRef.value;
      const ViewComponent = matchedRoute && matchedRoute.components[props.name];
      const currentName = props.name;
      if (!ViewComponent) {
        return normalizeSlot(slots.default, { Component: ViewComponent, route });
      }
      const routePropsOption = matchedRoute.props[props.name];
      const routeProps = routePropsOption ? routePropsOption === true ? route.params : typeof routePropsOption === "function" ? routePropsOption(route) : routePropsOption : null;
      const onVnodeUnmounted = (vnode) => {
        if (vnode.component.isUnmounted) {
          matchedRoute.instances[currentName] = null;
        }
      };
      const component = h$1(ViewComponent, assign$3({}, routeProps, attrs, {
        onVnodeUnmounted,
        ref: viewRef
      }));
      return (
        // pass the vnode to the slot as a prop.
        // h and <component :is="..."> both accept vnodes
        normalizeSlot(slots.default, { Component: component, route }) || component
      );
    };
  }
});
function normalizeSlot(slot, data) {
  if (!slot)
    return null;
  const slotContent = slot(data);
  return slotContent.length === 1 ? slotContent[0] : slotContent;
}
const RouterView = RouterViewImpl;
function createRouter$1(options2) {
  const matcher = createRouterMatcher(options2.routes, options2);
  const parseQuery$1 = options2.parseQuery || parseQuery;
  const stringifyQuery$1 = options2.stringifyQuery || stringifyQuery;
  const routerHistory = options2.history;
  const beforeGuards = useCallbacks();
  const beforeResolveGuards = useCallbacks();
  const afterGuards = useCallbacks();
  const currentRoute = shallowRef(START_LOCATION_NORMALIZED);
  let pendingLocation = START_LOCATION_NORMALIZED;
  if (isBrowser$2 && options2.scrollBehavior && "scrollRestoration" in history) {
    history.scrollRestoration = "manual";
  }
  const normalizeParams = applyToParams.bind(null, (paramValue) => "" + paramValue);
  const encodeParams = applyToParams.bind(null, encodeParam);
  const decodeParams = (
    // @ts-expect-error: intentionally avoid the type check
    applyToParams.bind(null, decode$4)
  );
  function addRoute(parentOrRoute, route) {
    let parent;
    let record;
    if (isRouteName(parentOrRoute)) {
      parent = matcher.getRecordMatcher(parentOrRoute);
      record = route;
    } else {
      record = parentOrRoute;
    }
    return matcher.addRoute(record, parent);
  }
  function removeRoute(name2) {
    const recordMatcher = matcher.getRecordMatcher(name2);
    if (recordMatcher) {
      matcher.removeRoute(recordMatcher);
    }
  }
  function getRoutes() {
    return matcher.getRoutes().map((routeMatcher) => routeMatcher.record);
  }
  function hasRoute(name2) {
    return !!matcher.getRecordMatcher(name2);
  }
  function resolve3(rawLocation, currentLocation) {
    currentLocation = assign$3({}, currentLocation || currentRoute.value);
    if (typeof rawLocation === "string") {
      const locationNormalized = parseURL(parseQuery$1, rawLocation, currentLocation.path);
      const matchedRoute2 = matcher.resolve({ path: locationNormalized.path }, currentLocation);
      const href2 = routerHistory.createHref(locationNormalized.fullPath);
      return assign$3(locationNormalized, matchedRoute2, {
        params: decodeParams(matchedRoute2.params),
        hash: decode$4(locationNormalized.hash),
        redirectedFrom: void 0,
        href: href2
      });
    }
    let matcherLocation;
    if ("path" in rawLocation) {
      matcherLocation = assign$3({}, rawLocation, {
        path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path).path
      });
    } else {
      const targetParams = assign$3({}, rawLocation.params);
      for (const key in targetParams) {
        if (targetParams[key] == null) {
          delete targetParams[key];
        }
      }
      matcherLocation = assign$3({}, rawLocation, {
        params: encodeParams(rawLocation.params)
      });
      currentLocation.params = encodeParams(currentLocation.params);
    }
    const matchedRoute = matcher.resolve(matcherLocation, currentLocation);
    const hash2 = rawLocation.hash || "";
    matchedRoute.params = normalizeParams(decodeParams(matchedRoute.params));
    const fullPath = stringifyURL(stringifyQuery$1, assign$3({}, rawLocation, {
      hash: encodeHash(hash2),
      path: matchedRoute.path
    }));
    const href = routerHistory.createHref(fullPath);
    return assign$3({
      fullPath,
      // keep the hash encoded so fullPath is effectively path + encodedQuery +
      // hash
      hash: hash2,
      query: (
        // if the user is using a custom query lib like qs, we might have
        // nested objects, so we keep the query as is, meaning it can contain
        // numbers at `$route.query`, but at the point, the user will have to
        // use their own type anyway.
        // https://github.com/vuejs/vue-router-next/issues/328#issuecomment-649481567
        stringifyQuery$1 === stringifyQuery ? normalizeQuery(rawLocation.query) : rawLocation.query || {}
      )
    }, matchedRoute, {
      redirectedFrom: void 0,
      href
    });
  }
  function locationAsObject(to2) {
    return typeof to2 === "string" ? parseURL(parseQuery$1, to2, currentRoute.value.path) : assign$3({}, to2);
  }
  function checkCanceledNavigation(to2, from) {
    if (pendingLocation !== to2) {
      return createRouterError(8, {
        from,
        to: to2
      });
    }
  }
  function push2(to2) {
    return pushWithRedirect(to2);
  }
  function replace2(to2) {
    return push2(assign$3(locationAsObject(to2), { replace: true }));
  }
  function handleRedirectRecord(to2) {
    const lastMatched = to2.matched[to2.matched.length - 1];
    if (lastMatched && lastMatched.redirect) {
      const { redirect } = lastMatched;
      let newTargetLocation = typeof redirect === "function" ? redirect(to2) : redirect;
      if (typeof newTargetLocation === "string") {
        newTargetLocation = newTargetLocation.includes("?") || newTargetLocation.includes("#") ? newTargetLocation = locationAsObject(newTargetLocation) : (
          // force empty params
          { path: newTargetLocation }
        );
        newTargetLocation.params = {};
      }
      return assign$3({
        query: to2.query,
        hash: to2.hash,
        params: to2.params
      }, newTargetLocation);
    }
  }
  function pushWithRedirect(to2, redirectedFrom) {
    const targetLocation = pendingLocation = resolve3(to2);
    const from = currentRoute.value;
    const data = to2.state;
    const force = to2.force;
    const replace3 = to2.replace === true;
    const shouldRedirect = handleRedirectRecord(targetLocation);
    if (shouldRedirect)
      return pushWithRedirect(
        assign$3(locationAsObject(shouldRedirect), {
          state: data,
          force,
          replace: replace3
        }),
        // keep original redirectedFrom if it exists
        redirectedFrom || targetLocation
      );
    const toLocation = targetLocation;
    toLocation.redirectedFrom = redirectedFrom;
    let failure;
    if (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) {
      failure = createRouterError(16, { to: toLocation, from });
      handleScroll(
        from,
        from,
        // this is a push, the only way for it to be triggered from a
        // history.listen is with a redirect, which makes it become a push
        true,
        // This cannot be the first navigation because the initial location
        // cannot be manually navigated to
        false
      );
    }
    return (failure ? Promise.resolve(failure) : navigate(toLocation, from)).catch((error2) => isNavigationFailure(error2) ? error2 : (
      // reject any unknown error
      triggerError(error2, toLocation, from)
    )).then((failure2) => {
      if (failure2) {
        if (isNavigationFailure(
          failure2,
          2
          /* NAVIGATION_GUARD_REDIRECT */
        )) {
          return pushWithRedirect(
            // keep options
            assign$3(locationAsObject(failure2.to), {
              state: data,
              force,
              replace: replace3
            }),
            // preserve the original redirectedFrom if any
            redirectedFrom || toLocation
          );
        }
      } else {
        failure2 = finalizeNavigation(toLocation, from, true, replace3, data);
      }
      triggerAfterEach(toLocation, from, failure2);
      return failure2;
    });
  }
  function checkCanceledNavigationAndReject(to2, from) {
    const error2 = checkCanceledNavigation(to2, from);
    return error2 ? Promise.reject(error2) : Promise.resolve();
  }
  function navigate(to2, from) {
    let guards;
    const [leavingRecords, updatingRecords, enteringRecords] = extractChangingRecords(to2, from);
    guards = extractComponentsGuards(leavingRecords.reverse(), "beforeRouteLeave", to2, from);
    for (const record of leavingRecords) {
      record.leaveGuards.forEach((guard) => {
        guards.push(guardToPromiseFn(guard, to2, from));
      });
    }
    const canceledNavigationCheck = checkCanceledNavigationAndReject.bind(null, to2, from);
    guards.push(canceledNavigationCheck);
    return runGuardQueue(guards).then(() => {
      guards = [];
      for (const guard of beforeGuards.list()) {
        guards.push(guardToPromiseFn(guard, to2, from));
      }
      guards.push(canceledNavigationCheck);
      return runGuardQueue(guards);
    }).then(() => {
      guards = extractComponentsGuards(updatingRecords, "beforeRouteUpdate", to2, from);
      for (const record of updatingRecords) {
        record.updateGuards.forEach((guard) => {
          guards.push(guardToPromiseFn(guard, to2, from));
        });
      }
      guards.push(canceledNavigationCheck);
      return runGuardQueue(guards);
    }).then(() => {
      guards = [];
      for (const record of to2.matched) {
        if (record.beforeEnter && !from.matched.includes(record)) {
          if (Array.isArray(record.beforeEnter)) {
            for (const beforeEnter of record.beforeEnter)
              guards.push(guardToPromiseFn(beforeEnter, to2, from));
          } else {
            guards.push(guardToPromiseFn(record.beforeEnter, to2, from));
          }
        }
      }
      guards.push(canceledNavigationCheck);
      return runGuardQueue(guards);
    }).then(() => {
      to2.matched.forEach((record) => record.enterCallbacks = {});
      guards = extractComponentsGuards(enteringRecords, "beforeRouteEnter", to2, from);
      guards.push(canceledNavigationCheck);
      return runGuardQueue(guards);
    }).then(() => {
      guards = [];
      for (const guard of beforeResolveGuards.list()) {
        guards.push(guardToPromiseFn(guard, to2, from));
      }
      guards.push(canceledNavigationCheck);
      return runGuardQueue(guards);
    }).catch((err) => isNavigationFailure(
      err,
      8
      /* NAVIGATION_CANCELLED */
    ) ? err : Promise.reject(err));
  }
  function triggerAfterEach(to2, from, failure) {
    for (const guard of afterGuards.list())
      guard(to2, from, failure);
  }
  function finalizeNavigation(toLocation, from, isPush, replace3, data) {
    const error2 = checkCanceledNavigation(toLocation, from);
    if (error2)
      return error2;
    const isFirstNavigation = from === START_LOCATION_NORMALIZED;
    const state = !isBrowser$2 ? {} : history.state;
    if (isPush) {
      if (replace3 || isFirstNavigation)
        routerHistory.replace(toLocation.fullPath, assign$3({
          scroll: isFirstNavigation && state && state.scroll
        }, data));
      else
        routerHistory.push(toLocation.fullPath, data);
    }
    currentRoute.value = toLocation;
    handleScroll(toLocation, from, isPush, isFirstNavigation);
    markAsReady();
  }
  let removeHistoryListener;
  function setupListeners() {
    removeHistoryListener = routerHistory.listen((to2, _from, info) => {
      const toLocation = resolve3(to2);
      const shouldRedirect = handleRedirectRecord(toLocation);
      if (shouldRedirect) {
        pushWithRedirect(assign$3(shouldRedirect, { replace: true }), toLocation).catch(noop$3);
        return;
      }
      pendingLocation = toLocation;
      const from = currentRoute.value;
      if (isBrowser$2) {
        saveScrollPosition(getScrollKey(from.fullPath, info.delta), computeScrollPosition());
      }
      navigate(toLocation, from).catch((error2) => {
        if (isNavigationFailure(
          error2,
          4 | 8
          /* NAVIGATION_CANCELLED */
        )) {
          return error2;
        }
        if (isNavigationFailure(
          error2,
          2
          /* NAVIGATION_GUARD_REDIRECT */
        )) {
          pushWithRedirect(
            error2.to,
            toLocation
            // avoid an uncaught rejection, let push call triggerError
          ).then((failure) => {
            if (isNavigationFailure(
              failure,
              4 | 16
              /* NAVIGATION_DUPLICATED */
            ) && !info.delta && info.type === NavigationType.pop) {
              routerHistory.go(-1, false);
            }
          }).catch(noop$3);
          return Promise.reject();
        }
        if (info.delta)
          routerHistory.go(-info.delta, false);
        return triggerError(error2, toLocation, from);
      }).then((failure) => {
        failure = failure || finalizeNavigation(
          // after navigation, all matched components are resolved
          toLocation,
          from,
          false
        );
        if (failure) {
          if (info.delta) {
            routerHistory.go(-info.delta, false);
          } else if (info.type === NavigationType.pop && isNavigationFailure(
            failure,
            4 | 16
            /* NAVIGATION_DUPLICATED */
          )) {
            routerHistory.go(-1, false);
          }
        }
        triggerAfterEach(toLocation, from, failure);
      }).catch(noop$3);
    });
  }
  let readyHandlers = useCallbacks();
  let errorHandlers = useCallbacks();
  let ready;
  function triggerError(error2, to2, from) {
    markAsReady(error2);
    const list3 = errorHandlers.list();
    if (list3.length) {
      list3.forEach((handler) => handler(error2, to2, from));
    } else {
      console.error(error2);
    }
    return Promise.reject(error2);
  }
  function isReady() {
    if (ready && currentRoute.value !== START_LOCATION_NORMALIZED)
      return Promise.resolve();
    return new Promise((resolve4, reject) => {
      readyHandlers.add([resolve4, reject]);
    });
  }
  function markAsReady(err) {
    if (ready)
      return;
    ready = true;
    setupListeners();
    readyHandlers.list().forEach(([resolve4, reject]) => err ? reject(err) : resolve4());
    readyHandlers.reset();
  }
  function handleScroll(to2, from, isPush, isFirstNavigation) {
    const { scrollBehavior } = options2;
    if (!isBrowser$2 || !scrollBehavior)
      return Promise.resolve();
    const scrollPosition = !isPush && getSavedScrollPosition(getScrollKey(to2.fullPath, 0)) || (isFirstNavigation || !isPush) && history.state && history.state.scroll || null;
    return nextTick().then(() => scrollBehavior(to2, from, scrollPosition)).then((position) => position && scrollToPosition(position)).catch((err) => triggerError(err, to2, from));
  }
  const go = (delta2) => routerHistory.go(delta2);
  let started;
  const installedApps = /* @__PURE__ */ new Set();
  const router = {
    currentRoute,
    addRoute,
    removeRoute,
    hasRoute,
    getRoutes,
    resolve: resolve3,
    options: options2,
    push: push2,
    replace: replace2,
    go,
    back: () => go(-1),
    forward: () => go(1),
    beforeEach: beforeGuards.add,
    beforeResolve: beforeResolveGuards.add,
    afterEach: afterGuards.add,
    onError: errorHandlers.add,
    isReady,
    install(app2) {
      const router2 = this;
      app2.component("RouterLink", RouterLink);
      app2.component("RouterView", RouterView);
      app2.config.globalProperties.$router = router2;
      Object.defineProperty(app2.config.globalProperties, "$route", {
        enumerable: true,
        get: () => unref(currentRoute)
      });
      if (isBrowser$2 && // used for the initial navigation client side to avoid pushing
      // multiple times when the router is used in multiple apps
      !started && currentRoute.value === START_LOCATION_NORMALIZED) {
        started = true;
        push2(routerHistory.location).catch((err) => {
        });
      }
      const reactiveRoute = {};
      for (const key in START_LOCATION_NORMALIZED) {
        reactiveRoute[key] = computed(() => currentRoute.value[key]);
      }
      app2.provide(routerKey, router2);
      app2.provide(routeLocationKey, reactive(reactiveRoute));
      app2.provide(routerViewLocationKey, currentRoute);
      const unmountApp = app2.unmount;
      installedApps.add(app2);
      app2.unmount = function() {
        installedApps.delete(app2);
        if (installedApps.size < 1) {
          pendingLocation = START_LOCATION_NORMALIZED;
          removeHistoryListener && removeHistoryListener();
          currentRoute.value = START_LOCATION_NORMALIZED;
          started = false;
          ready = false;
        }
        unmountApp();
      };
    }
  };
  return router;
}
function runGuardQueue(guards) {
  return guards.reduce((promise, guard) => promise.then(() => guard()), Promise.resolve());
}
function extractChangingRecords(to2, from) {
  const leavingRecords = [];
  const updatingRecords = [];
  const enteringRecords = [];
  const len = Math.max(from.matched.length, to2.matched.length);
  for (let i = 0; i < len; i++) {
    const recordFrom = from.matched[i];
    if (recordFrom) {
      if (to2.matched.find((record) => isSameRouteRecord(record, recordFrom)))
        updatingRecords.push(recordFrom);
      else
        leavingRecords.push(recordFrom);
    }
    const recordTo = to2.matched[i];
    if (recordTo) {
      if (!from.matched.find((record) => isSameRouteRecord(record, recordTo))) {
        enteringRecords.push(recordTo);
      }
    }
  }
  return [leavingRecords, updatingRecords, enteringRecords];
}
function useRouter() {
  return inject(routerKey);
}
function useRoute() {
  return inject(routeLocationKey);
}
const _hoisted_1$1v = {
  key: 0,
  class: "flex justify-self-start items-center"
};
const _hoisted_2$1m = { class: "grow" };
const _hoisted_3$19 = {
  key: 1,
  class: "flex justify-self-start items-center"
};
const __default__$5 = defineComponent({
  inheritAttrs: true
});
const _sfc_main$13 = /* @__PURE__ */ defineComponent({
  ...__default__$5,
  __name: "ButtonInternals",
  props: {
    prefixIcon: null,
    suffixIcon: null,
    prefixIconClass: null,
    suffixIconClass: null
  },
  setup(__props) {
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock(Fragment, null, [
        __props.prefixIcon || _ctx.$slots.prefix ? (openBlock(), createElementBlock("span", _hoisted_1$1v, [
          renderSlot(_ctx.$slots, "prefix", {}, () => [
            (openBlock(), createBlock(resolveDynamicComponent(__props.prefixIcon), {
              class: normalizeClass(__props.prefixIconClass)
            }, null, 8, ["class"]))
          ])
        ])) : createCommentVNode("", true),
        createBaseVNode("span", _hoisted_2$1m, [
          renderSlot(_ctx.$slots, "default")
        ]),
        __props.suffixIcon || _ctx.$slots.suffix ? (openBlock(), createElementBlock("span", _hoisted_3$19, [
          renderSlot(_ctx.$slots, "suffix", {}, () => [
            (openBlock(), createBlock(resolveDynamicComponent(__props.suffixIcon), {
              class: normalizeClass(__props.suffixIconClass)
            }, null, 8, ["class"]))
          ])
        ])) : createCommentVNode("", true)
      ], 64);
    };
  }
});
const _hoisted_1$1u = ["href"];
const _sfc_main$12 = /* @__PURE__ */ defineComponent({
  __name: "BaseLink",
  props: {
    href: { default: "" },
    useDefaultHocus: { type: Boolean, default: true }
  },
  setup(__props) {
    const props = __props;
    const attrs = useAttrs();
    const classes = computed(() => {
      const hocus = props.useDefaultHocus ? "hocus-link-default" : "";
      return `${attrs.class ?? "text-indigo-500"} ${hocus}`;
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("a", {
        href: props.href,
        class: normalizeClass(unref(classes))
      }, [
        renderSlot(_ctx.$slots, "default")
      ], 10, _hoisted_1$1u);
    };
  }
});
gql`
mutation ExternalLink_OpenExternal ($url: String!, $includeGraphqlPort: Boolean) {
  openExternal(url: $url, includeGraphqlPort: $includeGraphqlPort)
}
`;
const useExternalLink = ($href, includeGraphqlPort = false) => {
  const openExternalMutation = useMutation(ExternalLink_OpenExternalDocument);
  return (href) => {
    const resolvedHref = unref(typeof href === "string" ? href : $href);
    if (!resolvedHref) {
      return new Error(`Cannot open external link. Possible urls passed in were ${{ localHref: href, initialHref: unref($href) }}`);
    }
    return openExternalMutation.executeMutation({ url: resolvedHref, includeGraphqlPort });
  };
};
const __default__$4 = defineComponent({
  inheritAttrs: true
});
const _sfc_main$11 = /* @__PURE__ */ defineComponent({
  ...__default__$4,
  __name: "ExternalLink",
  props: {
    href: { default: "" },
    useDefaultHocus: { type: Boolean, default: true },
    includeGraphqlPort: { type: Boolean, default: false }
  },
  setup(__props) {
    const props = __props;
    const open = useExternalLink(props.href, props.includeGraphqlPort);
    return (_ctx, _cache) => {
      return openBlock(), createBlock(_sfc_main$12, {
        "data-cy": "external",
        href: props.href,
        "use-default-hocus": props.useDefaultHocus,
        onClick: withModifiers(unref(open), ["prevent"]),
        onKeypress: withKeys(withModifiers(unref(open), ["prevent"]), ["enter"])
      }, {
        default: withCtx(() => [
          renderSlot(_ctx.$slots, "default")
        ]),
        _: 3
      }, 8, ["href", "use-default-hocus", "onClick", "onKeypress"]);
    };
  }
});
const _hoisted_1$1t = ["disabled"];
const VariantClassesTable = {
  primary: "border-indigo-500 bg-indigo-500 focus:bg-indigo-600 text-white hocus-default",
  outline: "border-gray-100 text-indigo-600 hocus-default",
  tertiary: "text-indigo-500 bg-indigo-50 border-transparent hocus-default",
  pending: "bg-gray-500 text-white",
  link: "border-transparent text-indigo-600 hocus-default",
  linkBold: "border-transparent text-indigo-500 font-medium",
  text: "border-0",
  secondary: "bg-jade-500 text-white hocus-secondary",
  white: "bg-white text-indigo-500 font-medium hocus-default"
};
const SizeClassesTable = {
  sm: "px-[6px] py-[2px] text-[14px] h-[24px]",
  md: "px-[12px] py-[8px] text-[14px] h-[32px]",
  lg: "px-[16px] py-[11px] max-h-[40px]",
  "lg-wide": "px-[32px] py-[8px]"
};
const _sfc_main$10 = /* @__PURE__ */ defineComponent({
  __name: "Button",
  props: {
    prefixIcon: null,
    suffixIcon: null,
    size: null,
    variant: null,
    prefixIconClass: null,
    suffixIconClass: null,
    href: null,
    to: null,
    internalLink: { type: Boolean },
    disabled: { type: Boolean }
  },
  setup(__props) {
    const props = __props;
    const attrs = useAttrs();
    function filterHocus(classes2) {
      return classes2.split(" ").filter((css) => !(css.startsWith("hocus") && props.disabled)).join(" ");
    }
    const variantClasses = computed(() => {
      const variantClasses2 = VariantClassesTable[props.variant || "primary"];
      return props.disabled ? filterHocus(variantClasses2) : variantClasses2;
    });
    const sizeClasses = computed(() => SizeClassesTable[props.size || "md"]);
    const classes = computed(() => {
      return [
        variantClasses.value,
        sizeClasses.value,
        attrs.class,
        props.disabled && props.variant !== "pending" ? "opacity-50" : "",
        props.disabled ? "cursor-default" : ""
      ];
    });
    const linkVersion = computed(() => {
      if (!props.to) {
        return props.internalLink ? _sfc_main$12 : _sfc_main$11;
      }
      if (props.disabled) {
        return _sfc_main$12;
      }
      return RouterLink;
    });
    const linkProps = computed(() => {
      if (props.disabled) {
        return {
          role: "link",
          ariaDisabled: "disabled",
          href: null
        };
      }
      if (props.to)
        return { to: props.to };
      if (props.href)
        return { href: props.href };
      return {};
    });
    return (_ctx, _cache) => {
      return !props.href && !props.to ? (openBlock(), createElementBlock("button", {
        key: 0,
        style: { "width": "fit-content" },
        class: normalizeClass(["border rounded flex outline-none leading-tight gap-[8px] items-center", unref(classes)]),
        disabled: __props.disabled
      }, [
        createVNode(_sfc_main$13, null, createSlots({
          default: withCtx(() => [
            renderSlot(_ctx.$slots, "default")
          ]),
          _: 2
        }, [
          __props.prefixIcon || _ctx.$slots.prefix ? {
            name: "prefix",
            fn: withCtx(() => [
              renderSlot(_ctx.$slots, "prefix", {}, () => [
                (openBlock(), createBlock(resolveDynamicComponent(__props.prefixIcon), {
                  class: normalizeClass(__props.prefixIconClass)
                }, null, 8, ["class"]))
              ])
            ]),
            key: "0"
          } : void 0,
          __props.suffixIcon || _ctx.$slots.suffix ? {
            name: "suffix",
            fn: withCtx(() => [
              renderSlot(_ctx.$slots, "suffix", {}, () => [
                (openBlock(), createBlock(resolveDynamicComponent(__props.suffixIcon), {
                  class: normalizeClass(__props.suffixIconClass)
                }, null, 8, ["class"]))
              ])
            ]),
            key: "1"
          } : void 0
        ]), 1024)
      ], 10, _hoisted_1$1t)) : (openBlock(), createBlock(resolveDynamicComponent(unref(linkVersion)), mergeProps({ key: 1 }, unref(linkProps), {
        style: { "width": "fit-content" },
        class: ["border rounded flex outline-none gap-[8px] items-center select-none", unref(classes)],
        "use-default-hocus": false
      }), {
        default: withCtx(() => [
          createVNode(_sfc_main$13, null, createSlots({
            default: withCtx(() => [
              renderSlot(_ctx.$slots, "default")
            ]),
            _: 2
          }, [
            __props.prefixIcon || _ctx.$slots.prefix ? {
              name: "prefix",
              fn: withCtx(() => [
                renderSlot(_ctx.$slots, "prefix", {}, () => [
                  (openBlock(), createBlock(resolveDynamicComponent(__props.prefixIcon), {
                    class: normalizeClass(__props.prefixIconClass)
                  }, null, 8, ["class"]))
                ])
              ]),
              key: "0"
            } : void 0,
            __props.suffixIcon || _ctx.$slots.suffix ? {
              name: "suffix",
              fn: withCtx(() => [
                renderSlot(_ctx.$slots, "suffix", {}, () => [
                  (openBlock(), createBlock(resolveDynamicComponent(__props.suffixIcon), {
                    class: normalizeClass(__props.suffixIconClass)
                  }, null, 8, ["class"]))
                ])
              ]),
              key: "1"
            } : void 0
          ]), 1024)
        ]),
        _: 3
      }, 16, ["class"]));
    };
  }
});
/*!
  * pinia v2.0.0-rc.14
  * (c) 2021 Eduardo San Martin Morote
  * @license MIT
  */
let activePinia;
const setActivePinia = (pinia) => activePinia = pinia;
const piniaSymbol = (
  /* istanbul ignore next */
  Symbol()
);
function isPlainObject$2(o2) {
  return o2 && typeof o2 === "object" && Object.prototype.toString.call(o2) === "[object Object]" && typeof o2.toJSON !== "function";
}
var MutationType;
(function(MutationType2) {
  MutationType2["direct"] = "direct";
  MutationType2["patchObject"] = "patch object";
  MutationType2["patchFunction"] = "patch function";
})(MutationType || (MutationType = {}));
function createPinia$1() {
  const scope = effectScope(true);
  const state = scope.run(() => ref({}));
  let _p = [];
  const toBeInstalled = [];
  const pinia = markRaw({
    install(app2) {
      setActivePinia(pinia);
      {
        pinia._a = app2;
        app2.provide(piniaSymbol, pinia);
        app2.config.globalProperties.$pinia = pinia;
        toBeInstalled.forEach((plugin) => _p.push(plugin));
      }
    },
    use(plugin) {
      if (!this._a && !isVue2) {
        toBeInstalled.push(plugin);
      } else {
        _p.push(plugin);
      }
      return this;
    },
    _p,
    // it's actually undefined here
    // @ts-expect-error
    _a: null,
    _e: scope,
    _s: /* @__PURE__ */ new Map(),
    state
  });
  return pinia;
}
function addSubscription(subscriptions, callback, detached) {
  subscriptions.push(callback);
  const removeSubscription = () => {
    const idx = subscriptions.indexOf(callback);
    if (idx > -1) {
      subscriptions.splice(idx, 1);
    }
  };
  if (!detached && getCurrentInstance()) {
    onUnmounted(removeSubscription);
  }
  return removeSubscription;
}
function triggerSubscriptions(subscriptions, ...args) {
  subscriptions.forEach((callback) => {
    callback(...args);
  });
}
function innerPatch(target2, patchToApply) {
  for (const key in patchToApply) {
    const subPatch = patchToApply[key];
    const targetValue = target2[key];
    if (isPlainObject$2(targetValue) && isPlainObject$2(subPatch) && !isRef(subPatch) && !isReactive(subPatch)) {
      target2[key] = innerPatch(targetValue, subPatch);
    } else {
      target2[key] = subPatch;
    }
  }
  return target2;
}
const { assign: assign$2 } = Object;
function isComputed$1(o2) {
  return !!(isRef(o2) && o2.effect);
}
function createOptionsStore(id2, options2, pinia, hot) {
  const { state, actions, getters } = options2;
  const initialState = pinia.state.value[id2];
  let store;
  function setup21() {
    if (!initialState && true) {
      {
        pinia.state.value[id2] = state ? state() : {};
      }
    }
    const localState = toRefs(pinia.state.value[id2]);
    return assign$2(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name2) => {
      computedGetters[name2] = markRaw(computed(() => {
        setActivePinia(pinia);
        const store2 = pinia._s.get(id2);
        return getters[name2].call(store2, store2);
      }));
      return computedGetters;
    }, {}));
  }
  store = createSetupStore(id2, setup21, options2, pinia);
  store.$reset = function $reset() {
    const newState = state ? state() : {};
    this.$patch(($state) => {
      assign$2($state, newState);
    });
  };
  return store;
}
const noop$2 = () => {
};
function createSetupStore($id, setup21, options2 = {}, pinia, hot) {
  let scope;
  const buildState2 = options2.state;
  const optionsForPlugin = {
    actions: {},
    ...options2
  };
  const $subscribeOptions = {
    deep: true
    // flush: 'post',
  };
  let isListening;
  let subscriptions = markRaw([]);
  let actionSubscriptions = markRaw([]);
  let debuggerEvents;
  const initialState = pinia.state.value[$id];
  if (!buildState2 && !initialState && true) {
    {
      pinia.state.value[$id] = {};
    }
  }
  ref({});
  function $patch(partialStateOrMutator) {
    let subscriptionMutation;
    isListening = false;
    if (typeof partialStateOrMutator === "function") {
      partialStateOrMutator(pinia.state.value[$id]);
      subscriptionMutation = {
        type: MutationType.patchFunction,
        storeId: $id,
        events: debuggerEvents
      };
    } else {
      innerPatch(pinia.state.value[$id], partialStateOrMutator);
      subscriptionMutation = {
        type: MutationType.patchObject,
        payload: partialStateOrMutator,
        storeId: $id,
        events: debuggerEvents
      };
    }
    isListening = true;
    triggerSubscriptions(subscriptions, subscriptionMutation, pinia.state.value[$id]);
  }
  const $reset = noop$2;
  function $dispose() {
    scope.stop();
    subscriptions = [];
    actionSubscriptions = [];
    pinia._s.delete($id);
  }
  function wrapAction(name2, action3) {
    return function() {
      setActivePinia(pinia);
      const args = Array.from(arguments);
      let afterCallback = noop$2;
      let onErrorCallback = noop$2;
      function after(callback) {
        afterCallback = callback;
      }
      function onError(callback) {
        onErrorCallback = callback;
      }
      triggerSubscriptions(actionSubscriptions, {
        args,
        name: name2,
        store,
        after,
        onError
      });
      let ret;
      try {
        ret = action3.apply(this && this.$id === $id ? this : store, args);
      } catch (error2) {
        if (onErrorCallback(error2) !== false) {
          throw error2;
        }
      }
      if (ret instanceof Promise) {
        return ret.then((value) => {
          const newRet2 = afterCallback(value);
          return newRet2 === void 0 ? value : newRet2;
        }).catch((error2) => {
          if (onErrorCallback(error2) !== false) {
            return Promise.reject(error2);
          }
        });
      }
      const newRet = afterCallback(ret);
      return newRet === void 0 ? ret : newRet;
    };
  }
  const partialStore = {
    _p: pinia,
    // _s: scope,
    $id,
    $onAction: addSubscription.bind(null, actionSubscriptions),
    $patch,
    $reset,
    $subscribe(callback, options3 = {}) {
      const _removeSubscription = addSubscription(
        subscriptions,
        callback,
        // @ts-expect-error: until the deprecation is removed
        options3.detached
      );
      const stopWatcher = scope.run(() => watch(() => pinia.state.value[$id], (state, oldState) => {
        if (isListening) {
          callback({
            storeId: $id,
            type: MutationType.direct,
            events: debuggerEvents
          }, state);
        }
      }, assign$2({}, $subscribeOptions, options3)));
      const removeSubscription = () => {
        stopWatcher();
        _removeSubscription();
      };
      return removeSubscription;
    },
    $dispose
  };
  const store = reactive(assign$2(
    {},
    partialStore
    // must be added later
    // setupStore
  ));
  pinia._s.set($id, store);
  const setupStore = pinia._e.run(() => {
    scope = effectScope();
    return scope.run(() => setup21());
  });
  for (const key in setupStore) {
    const prop2 = setupStore[key];
    if (isRef(prop2) && !isComputed$1(prop2) || isReactive(prop2)) {
      if (!buildState2) {
        if (initialState) {
          if (isRef(prop2)) {
            prop2.value = initialState[key];
          } else {
            innerPatch(prop2, initialState[key]);
          }
        }
        {
          pinia.state.value[$id][key] = prop2;
        }
      }
    } else if (typeof prop2 === "function") {
      const actionValue = wrapAction(key, prop2);
      {
        setupStore[key] = actionValue;
      }
      optionsForPlugin.actions[key] = prop2;
    } else
      ;
  }
  {
    assign$2(store, setupStore);
  }
  Object.defineProperty(store, "$state", {
    get: () => pinia.state.value[$id],
    set: (state) => {
      $patch(($state) => {
        assign$2($state, state);
      });
    }
  });
  pinia._p.forEach((extender) => {
    {
      assign$2(store, scope.run(() => extender({
        store,
        app: pinia._a,
        pinia,
        // @ts-expect-error
        options: optionsForPlugin
      })));
    }
  });
  if (initialState && buildState2) {
    (options2.hydrate || innerPatch)(store, initialState);
  }
  isListening = true;
  return store;
}
function defineStore(idOrOptions, setup21, setupOptions) {
  let id2;
  let options2;
  const isSetupStore = typeof setup21 === "function";
  if (typeof idOrOptions === "string") {
    id2 = idOrOptions;
    options2 = isSetupStore ? setupOptions : setup21;
  } else {
    options2 = idOrOptions;
    id2 = idOrOptions.id;
  }
  function useStore(pinia, hot) {
    const currentInstance2 = getCurrentInstance();
    pinia = // in test mode, ignore the argument provided as we can always retrieve a
    // pinia instance with getActivePinia()
    pinia || currentInstance2 && inject(piniaSymbol);
    if (pinia)
      setActivePinia(pinia);
    pinia = activePinia;
    if (!pinia._s.has(id2)) {
      if (isSetupStore) {
        createSetupStore(id2, setup21, options2, pinia);
      } else {
        createOptionsStore(id2, options2, pinia);
      }
    }
    const store = pinia._s.get(id2);
    return store;
  }
  useStore.$id = id2;
  return useStore;
}
const useUserProjectStatusStore = defineStore({
  id: "userProjectStatus",
  state() {
    return {
      hasInitiallyLoaded: false,
      utmMedium: "",
      utmContent: void 0,
      isLoginConnectOpen: false,
      cypressFirstOpened: void 0,
      userData: void 0,
      testingType: void 0,
      projectId: void 0,
      user: {
        isLoggedIn: false,
        loginError: false,
        isOrganizationLoaded: false,
        isMemberOfOrganization: false
      },
      project: {
        isProjectConnected: false,
        isConfigLoaded: false,
        hasNoRecordedRuns: false,
        hasNonExampleSpec: false,
        isNotAuthorized: false,
        isNotFound: false,
        isCTConfigured: false,
        hasDetectedCtFramework: false,
        isUsingGit: false
      },
      promptsShown: {},
      bannersState: {},
      _latestBannerShownTimeForTesting: void 0
    };
  },
  actions: {
    setHasInitiallyLoaded() {
      this.hasInitiallyLoaded = true;
    },
    openLoginConnectModal({ utmMedium, utmContent }) {
      this.isLoginConnectOpen = true;
      this.utmMedium = utmMedium;
      this.utmContent = utmContent;
    },
    closeLoginConnectModal() {
      this.isLoginConnectOpen = false;
      this.utmMedium = "";
      this.utmContent = void 0;
    },
    setUserFlag(name2, newVal) {
      this.user[name2] = newVal;
    },
    setProjectFlag(name2, newVal) {
      this.project[name2] = newVal;
    },
    setLoginError(error2) {
      this.user.loginError = error2;
    },
    setUserData(userData) {
      this.userData = userData;
    },
    setPromptShown(slug, timestamp) {
      this.promptsShown[slug] = timestamp;
    },
    setCypressFirstOpened(timestamp) {
      this.cypressFirstOpened = timestamp;
    },
    setTestingType(testingType) {
      this.testingType = testingType;
    },
    setProjectId(projectId) {
      this.projectId = projectId;
    },
    setBannersState(banners) {
      this.bannersState = banners;
    },
    setLatestBannerShownTime(timestamp) {
      this._latestBannerShownTimeForTesting = timestamp;
    }
  },
  getters: {
    cloudStatus(state) {
      const { user, project } = state;
      switch (true) {
        case !user.isLoggedIn:
          return "isLoggedOut";
        case (user.isLoggedIn && user.isOrganizationLoaded && !user.isMemberOfOrganization):
          return "needsOrgConnect";
        case (user.isLoggedIn && user.isMemberOfOrganization && !project.isProjectConnected && project.isConfigLoaded):
          return "needsProjectConnect";
        case (user.isLoggedIn && user.isMemberOfOrganization && project.isProjectConnected && project.hasNoRecordedRuns && project.hasNonExampleSpec && project.isConfigLoaded):
          return "needsRecordedRun";
        default:
          return "allTasksCompleted";
      }
    },
    projectStatus(state) {
      const { project } = state;
      if (state.testingType === "e2e" && !project.isCTConfigured && project.hasDetectedCtFramework) {
        return "isComponentTestingCandidate";
      }
      return "allTasksCompleted";
    },
    cloudStatusMatches() {
      return (status) => this.cloudStatus === status;
    },
    projectStatusMatches() {
      return (status) => this.projectStatus === status;
    },
    latestBannerShownTime(state) {
      return state._latestBannerShownTimeForTesting;
    }
  }
});
const _hoisted_1$1s = {
  key: 0,
  class: "flex gap-[16px]"
};
const _hoisted_2$1l = { key: 1 };
const _hoisted_3$18 = { key: 2 };
const _sfc_main$$ = /* @__PURE__ */ defineComponent({
  __name: "Auth",
  props: {
    gql: null,
    showRetry: { type: Boolean },
    showLogout: { type: Boolean },
    utmMedium: null,
    utmContent: null
  },
  emits: ["close", "cancel"],
  setup(__props, { emit: emit3 }) {
    const props = __props;
    const userProjectStatusStore = useUserProjectStatusStore();
    const { t: t2 } = useI18n();
    const isOnline = useOnline();
    gql`
fragment Auth on Query {
  ...SelectCloudProjectModal
  cloudViewer {
    id
    email
    fullName
    firstOrganization: organizations(first: 1) {
      nodes {
        id
      }
    }
  }
  authState {
    browserOpened
    name
    message
  }
  currentProject {
    id
    cloudProject {
      __typename
      ... on CloudProject {
        id
      }
    }
  }
}
`;
    gql`
mutation Auth_Logout {
  logout {
    ...Auth
  }
}
`;
    gql`
mutation Auth_Login ($utmSource: String!, $utmMedium: String!, $utmContent: String) {
  login (utmSource: $utmSource, utmContent: $utmContent, utmMedium: $utmMedium) {
    ...Auth
  }
}
`;
    gql`
mutation Auth_ResetAuthState {
  resetAuthState {
    ...Auth
  }
}
`;
    const login = useMutation(Auth_LoginDocument);
    const logout = useMutation(Auth_LogoutDocument);
    const reset = useMutation(Auth_ResetAuthStateDocument);
    const loginButtonRef = ref(_sfc_main$10);
    const loginInitiated = ref(false);
    onMounted(() => {
      var _a3, _b2;
      (_b2 = (_a3 = loginButtonRef == null ? void 0 : loginButtonRef.value) == null ? void 0 : _a3.$el) == null ? void 0 : _b2.focus();
    });
    onBeforeUnmount(() => {
      if (loginInitiated.value) {
        reset.executeMutation({});
      }
    });
    const showConnectButton = computed(() => {
      return userProjectStatusStore.project.isConfigLoaded && userProjectStatusStore.cloudStatusMatches("needsProjectConnect");
    });
    const cloudViewer = computed(() => {
      return props.gql.cloudViewer;
    });
    const browserOpened = computed(() => {
      return props.gql.authState.browserOpened;
    });
    const loginMutationIsPending = computed(() => {
      return !cloudViewer.value && (loginInitiated.value || browserOpened.value);
    });
    const handleLoginOrContinue = async () => {
      if (userProjectStatusStore.user.isLoggedIn) {
        emit3("close");
        return;
      }
      loginInitiated.value = true;
      login.executeMutation({ utmMedium: props.utmMedium, utmContent: props.utmContent || null, utmSource: getUtmSource() });
    };
    const handleCancel = () => {
      emit3("cancel");
    };
    const handleLogout = () => {
      logout.executeMutation({});
    };
    const handleTryAgain = async () => {
      await reset.executeMutation({});
      login.executeMutation({ utmMedium: props.utmMedium, utmContent: props.utmContent || null, utmSource: getUtmSource() });
    };
    const buttonText = computed(() => {
      const strings = {
        login: t2("topNav.login.actionLogin"),
        connectProject: t2("runs.connect.modal.selectProject.connectProject"),
        continue: t2("topNav.login.actionContinue")
      };
      if (showConnectButton.value) {
        return strings.connectProject;
      }
      if (userProjectStatusStore.user.isLoggedIn) {
        return strings.continue;
      }
      return strings.login;
    });
    const buttonPrefixIcon = computed(() => {
      return showConnectButton.value ? ConnectIcon : void 0;
    });
    return (_ctx, _cache) => {
      const _component_i_cy_action_restart_x16 = RefreshIcon;
      const _component_i_cy_loading_x16 = __unplugin_components_0$d;
      return props.showRetry ? (openBlock(), createElementBlock("div", _hoisted_1$1s, [
        createVNode(_sfc_main$10, {
          size: "lg",
          onClick: handleTryAgain
        }, {
          prefix: withCtx(() => [
            createVNode(_component_i_cy_action_restart_x16, { class: "icon-light-white" })
          ]),
          default: withCtx(() => [
            createTextVNode(" " + toDisplayString$1(unref(t2)("topNav.login.actionTryAgain")), 1)
          ]),
          _: 1
        }),
        createVNode(_sfc_main$10, {
          variant: "outline",
          size: "lg",
          onClick: handleCancel
        }, {
          default: withCtx(() => [
            createTextVNode(toDisplayString$1(unref(t2)("topNav.login.actionCancel")), 1)
          ]),
          _: 1
        })
      ])) : props.showLogout ? (openBlock(), createElementBlock("div", _hoisted_2$1l, [
        createBaseVNode("button", {
          class: "bg-white border-rounded outline-transparent border-gray-100 border w-full py-[8px] text-[14px] text-indigo-500 block whitespace-nowrap hocus:border-gray-200 hover:no-underline",
          onClick: handleLogout
        }, toDisplayString$1(unref(t2)("topNav.login.actionLogout")), 1)
      ])) : (openBlock(), createElementBlock("div", _hoisted_3$18, [
        unref(loginMutationIsPending) ? (openBlock(), createBlock(_sfc_main$10, {
          key: 0,
          size: "lg",
          variant: "pending",
          "aria-live": "polite",
          disabled: true
        }, {
          prefix: withCtx(() => [
            createVNode(_component_i_cy_loading_x16, { class: "animate-spin icon-dark-white icon-light-gray-400" })
          ]),
          default: withCtx(() => [
            createTextVNode(" " + toDisplayString$1(unref(browserOpened) ? unref(t2)("topNav.login.actionWaiting") : unref(t2)("topNav.login.actionOpening")), 1)
          ]),
          _: 1
        })) : (openBlock(), createBlock(_sfc_main$10, {
          key: 1,
          ref_key: "loginButtonRef",
          ref: loginButtonRef,
          size: "lg",
          variant: "primary",
          "aria-live": "polite",
          disabled: !unref(cloudViewer) && !unref(isOnline),
          "prefix-icon": unref(buttonPrefixIcon),
          onClick: handleLoginOrContinue
        }, {
          default: withCtx(() => [
            createTextVNode(toDisplayString$1(unref(buttonText)), 1)
          ]),
          _: 1
        }, 8, ["disabled", "prefix-icon"]))
      ]));
    };
  }
});
const _hoisted_1$1r = {
  height: "1em",
  width: "1em",
  style: { "min-width": "48px", "min-height": "48px" },
  viewBox: "0 0 48 48",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1k = /* @__PURE__ */ createStaticVNode('<path d="M40 8H8C6.34315 8 5 9.34315 5 11V16H43V11C43 9.34315 41.6569 8 40 8Z" fill="#E1E3ED"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M8 8C6.34315 8 5 9.34315 5 11V16H43V11C43 9.34315 41.6569 8 40 8H8Z" fill="#E1E3ED"></path><path d="M19 30L14 28L9 31V36H38C38.5523 36 39 35.5523 39 35V23L34 24L29 27L24 25L19 30Z" fill="#E1E3ED"></path><path d="M5 16H4C4 16.5523 4.44772 17 5 17V16ZM43 16V17C43.5523 17 44 16.5523 44 16H43ZM19 11C18.4477 11 18 11.4477 18 12C18 12.5523 18.4477 13 19 13V11ZM39 13C39.5523 13 40 12.5523 40 12C40 11.4477 39.5523 11 39 11V13ZM14 28L14.3714 27.0715C14.0812 26.9555 13.7535 26.9817 13.4855 27.1425L14 28ZM19 30L18.6286 30.9285C19 31.077 19.4242 30.99 19.7071 30.7071L19 30ZM24 25L24.3714 24.0715C24 23.923 23.5758 24.01 23.2929 24.2929L24 25ZM29 27L28.6286 27.9285C28.9188 28.0445 29.2465 28.0183 29.5145 27.8575L29 27ZM9 31L8.4855 30.1425C8.1843 30.3232 8 30.6487 8 31H9ZM34 24L33.8039 23.0194C33.6915 23.0419 33.5838 23.0835 33.4855 23.1425L34 24ZM9 36H8C8 36.5523 8.44772 37 9 37V36ZM8 9H40V7H8V9ZM42 11V37H44V11H42ZM6 37V11H4V37H6ZM5 17H43V15H5V17ZM19 13H39V11H19V13ZM8 39C6.89543 39 6 38.1046 6 37H4C4 39.2091 5.79086 41 8 41V39ZM42 37C42 38.1046 41.1046 39 40 39V41C42.2091 41 44 39.2091 44 37H42ZM40 9C41.1046 9 42 9.89543 42 11H44C44 8.79086 42.2091 7 40 7V9ZM8 7C5.79086 7 4 8.79086 4 11H6C6 9.89543 6.89543 9 8 9V7ZM4 11V16H6V11H4ZM44 16V11H42V16H44ZM38 19H10V21H38V19ZM13.6286 28.9285L18.6286 30.9285L19.3714 29.0715L14.3714 27.0715L13.6286 28.9285ZM19.7071 30.7071L24.7071 25.7071L23.2929 24.2929L18.2929 29.2929L19.7071 30.7071ZM23.6286 25.9285L28.6286 27.9285L29.3714 26.0715L24.3714 24.0715L23.6286 25.9285ZM40 35V23H38V35H40ZM40 23V21H38V23H40ZM40 39H24V41H40V39ZM24 39H16V41H24V39ZM16 39H8V41H16V39ZM9.5145 31.8575L14.5145 28.8575L13.4855 27.1425L8.4855 30.1425L9.5145 31.8575ZM29.5145 27.8575L34.5145 24.8575L33.4855 23.1425L28.4855 26.1425L29.5145 27.8575ZM34.1961 24.9806L39.1961 23.9806L38.8039 22.0194L33.8039 23.0194L34.1961 24.9806ZM38 35H9V37H38V35ZM10 36V21H8V36H10ZM8 31V36H10V31H8ZM38 21H40C40 19.8954 39.1046 19 38 19V21ZM38 35V37C39.1046 37 40 36.1046 40 35H38ZM10 19C8.89543 19 8 19.8954 8 21H10H10V19Z" fill="#9095AD"></path><path d="M10 12C10 12.5523 9.55228 13 9 13C8.44772 13 8 12.5523 8 12C8 11.4477 8.44772 11 9 11C9.55228 11 10 11.4477 10 12Z" fill="#9095AD"></path><path d="M13 12C13 12.5523 12.5523 13 12 13C11.4477 13 11 12.5523 11 12C11 11.4477 11.4477 11 12 11C12.5523 11 13 11.4477 13 12Z" fill="#9095AD"></path><path d="M16 12C16 12.5523 15.5523 13 15 13C14.4477 13 14 12.5523 14 12C14 11.4477 14.4477 11 15 11C15.5523 11 16 11.4477 16 12Z" fill="#9095AD"></path><path d="M35.2426 41.2426C32.8995 43.5858 29.1005 43.5858 26.7574 41.2426C24.4142 38.8995 24.4142 35.1005 26.7574 32.7574C29.1005 30.4142 32.8995 30.4142 35.2426 32.7574C37.5858 35.1005 37.5858 38.8995 35.2426 41.2426Z" fill="#F59AA9"></path><path d="M32.5 35.5L29.5 38.5M32.5 38.5L29.5 35.5M35.2426 41.2426C32.8995 43.5858 29.1005 43.5858 26.7574 41.2426C24.4142 38.8995 24.4142 35.1005 26.7574 32.7574C29.1005 30.4142 32.8995 30.4142 35.2426 32.7574C37.5858 35.1005 37.5858 38.8995 35.2426 41.2426Z" stroke="#C62B49" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>', 9);
const _hoisted_11$6 = [
  _hoisted_2$1k
];
function render$N(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1r, _hoisted_11$6);
}
const __unplugin_components_0$c = { name: "cy-no-internet_x48", render: render$N };
const _hoisted_1$1q = { class: "flex flex-col h-full text-center justify-center items-center" };
const _hoisted_2$1j = { class: "mt-[24px] mb-[4px] text-gray-900 text-[18px] leading-[24px] w-[640px]" };
const _hoisted_3$17 = { class: "font-normal mt-[8px] mb-[24px] text-gray-600 text-[16px] leading-[24px] w-[672px]" };
const _sfc_main$_ = /* @__PURE__ */ defineComponent({
  __name: "NoInternetConnection",
  setup(__props) {
    const { t: t2 } = useI18n();
    return (_ctx, _cache) => {
      const _component_i_cy_no_internet_x48 = __unplugin_components_0$c;
      return openBlock(), createElementBlock("div", _hoisted_1$1q, [
        createVNode(_component_i_cy_no_internet_x48, {
          "data-cy": "no-connection-icon",
          "aria-hidden": "",
          class: "h-[48px] w-[48px] icon-dark-gray-500 icon-light-gray-100 icon-dark-secondary-jade-400 icon-light-secondary-jade-200"
        }),
        createBaseVNode("h2", _hoisted_2$1j, toDisplayString$1(unref(t2)("launchpadErrors.noInternet.header")), 1),
        createBaseVNode("p", _hoisted_3$17, [
          renderSlot(_ctx.$slots, "default")
        ])
      ]);
    };
  }
});
const _hoisted_1$1p = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1i = /* @__PURE__ */ createBaseVNode("path", {
  d: "M6.82489 6.84375C7.20878 7.37466 6.80705 7.64512 6.2982 7.98769C5.83364 8.30045 5.27979 8.67332 5.15302 9.35938C5.00805 10.1439 5.28125 10.9219 6.32812 11.4375C6.56597 11.5546 6.50949 12.7308 6.45832 13.7964C6.44049 14.1678 6.4233 14.5258 6.41944 14.8208C6.48106 14.835 6.54298 14.8484 6.60521 14.861C8.64877 14.0046 10.0688 12.7787 10.7969 11.1406C11.2188 9.98438 10.3906 8.64062 9.48438 8.1875C9.03125 6.25 11.1094 6.70312 11.6719 6.84375C11.8387 6.84375 11.7942 6.65067 11.7265 6.35632C11.6166 5.87867 11.4452 5.13434 12.0156 4.51562C12.4404 4.05487 13.0142 3.5235 13.2197 3.33573C11.9379 1.90225 10.0743 1 8 1C7.18411 1 6.40082 1.13959 5.67271 1.39618C4.4022 4.78576 5.05965 5.34405 6.57478 6.63067C6.65575 6.69944 6.73918 6.77028 6.82489 6.84375Z",
  fill: "#D0D2E0",
  class: "icon-light"
}, null, -1);
const _hoisted_3$16 = /* @__PURE__ */ createBaseVNode("path", {
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M6.60521 14.861C6.54298 14.8484 6.48106 14.835 6.41944 14.8208C6.4233 14.5258 6.44049 14.1678 6.45832 13.7964C6.50949 12.7308 6.56597 11.5546 6.32812 11.4375C5.28125 10.9219 5.00805 10.1439 5.15302 9.35938C5.27979 8.67332 5.83364 8.30045 6.2982 7.98769C6.80705 7.64512 7.20878 7.37466 6.82489 6.84375C6.73918 6.77028 6.65575 6.69944 6.57478 6.63067C5.05965 5.34405 4.4022 4.78576 5.67271 1.39618C6.40082 1.13959 7.18411 1 8 1C10.0743 1 11.9379 1.90225 13.2197 3.33573C13.0142 3.5235 12.4404 4.05487 12.0156 4.51562C11.4452 5.13434 11.6166 5.87867 11.7265 6.35632C11.7942 6.65067 11.8387 6.84375 11.6719 6.84375C11.1094 6.70312 9.03125 6.25 9.48438 8.1875C10.3906 8.64062 11.2188 9.98438 10.7969 11.1406C10.0688 12.7787 8.64877 14.0046 6.60521 14.861Z",
  fill: "#D0D2E0",
  class: "icon-light"
}, null, -1);
const _hoisted_4$H = /* @__PURE__ */ createBaseVNode("path", {
  d: "M5.67271 1.39618C2.95077 2.35543 1 4.9499 1 8C1 11.3224 3.31469 14.1043 6.41944 14.8208M5.67271 1.39618C6.40082 1.13959 7.18411 1 8 1C10.0743 1 11.9379 1.90225 13.2197 3.33573M5.67271 1.39618C4.4022 4.78576 5.05965 5.34405 6.57478 6.63067C6.65575 6.69944 6.73918 6.77028 6.82489 6.84375C7.20878 7.37466 6.80705 7.64512 6.2982 7.98769C5.83364 8.30045 5.27979 8.67332 5.15302 9.35938C5.00805 10.1439 5.28125 10.9219 6.32812 11.4375C6.56597 11.5546 6.50949 12.7308 6.45832 13.7964C6.44049 14.1678 6.4233 14.5258 6.41944 14.8208M13.2197 3.33573C13.0142 3.5235 12.4404 4.05487 12.0156 4.51562C11.4452 5.13434 11.6166 5.87867 11.7265 6.35632C11.7942 6.65067 11.8387 6.84375 11.6719 6.84375C11.1094 6.70312 9.03125 6.25 9.48438 8.1875C10.3906 8.64062 11.2188 9.98438 10.7969 11.1406C10.0688 12.7787 8.64877 14.0046 6.60521 14.861M13.2197 3.33573C14.3269 4.57387 15 6.20833 15 8C15 11.866 11.866 15 8 15C7.52239 15 7.05595 14.9522 6.60521 14.861M6.60521 14.861C6.54298 14.8484 6.48106 14.835 6.41944 14.8208",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  class: "icon-dark"
}, null, -1);
const _hoisted_5$r = [
  _hoisted_2$1i,
  _hoisted_3$16,
  _hoisted_4$H
];
function render$M(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1p, _hoisted_5$r);
}
const __unplugin_components_0$b = { name: "cy-globe_x16", render: render$M };
const _hoisted_1$1o = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1h = /* @__PURE__ */ createBaseVNode("path", {
  class: "icon-dark",
  d: "M19.5 18.5854C18.9174 18.7913 18.5 19.3469 18.5 20V29.5C18.5 30.3284 19.1716 31 20 31H28C28.8284 31 29.5 30.3284 29.5 29.5V20C29.5 19.3469 29.0826 18.7913 28.5 18.5854M23 20H25C25.5523 20 26 19.5523 26 19V18C26 17.4477 25.5523 17 25 17H23C22.4477 17 22 17.4477 22 18V19C22 19.5523 22.4477 20 23 20Z",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  style: { "transform": "translate(-16px, -16px)" }
}, null, -1);
const _hoisted_3$15 = [
  _hoisted_2$1h
];
function render$L(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1o, _hoisted_3$15);
}
const __unplugin_components_2$1 = { name: "cy-copy-clipboard_x16", render: render$L };
gql`
mutation Clipboard_CopyToClipboard($text: String!) {
  copyTextToClipboard(text: $text)
}
`;
function useClipboard(options2 = {}) {
  const copyMutation = useMutation(Clipboard_CopyToClipboardDocument);
  const copied = ref(false);
  let timer;
  const copy2 = async (text3) => {
    const { data } = await copyMutation.executeMutation({ text: text3 });
    copied.value = (data == null ? void 0 : data.copyTextToClipboard) ?? false;
    if (timer) {
      clearTimeout(timer);
    }
    timer = setTimeout(() => {
      copied.value = false;
      timer = void 0;
    }, options2.copiedDuring || 2e3);
  };
  return { copy: copy2, copied };
}
const _export_sfc$1 = (sfc, props) => {
  const target2 = sfc.__vccOpts || sfc;
  for (const [key, val] of props) {
    target2[key] = val;
  }
  return target2;
};
const _sfc_main$Z = {};
function _sfc_render$4(_ctx, _cache) {
  return openBlock(), createBlock(Transition, {
    "enter-active-class": "transition duration-200 ease-out",
    "enter-from-class": "translate-y-1 opacity-0",
    "enter-to-class": "translate-y-0 opacity-100",
    "leave-active-class": "transition duration-150 ease-in",
    "leave-from-class": "translate-y-0 opacity-100",
    "leave-to-class": "translate-y-1 opacity-0"
  }, {
    default: withCtx(() => [
      renderSlot(_ctx.$slots, "default")
    ]),
    _: 3
  });
}
const TransitionQuickFade = /* @__PURE__ */ _export_sfc$1(_sfc_main$Z, [["render", _sfc_render$4]]);
const _hoisted_1$1n = { key: 0 };
const _hoisted_2$1g = { key: 1 };
const _sfc_main$Y = /* @__PURE__ */ defineComponent({
  __name: "CopyButton",
  props: {
    text: null,
    noIcon: { type: Boolean, default: false },
    variant: { default: "tertiary" },
    size: { default: "md" }
  },
  setup(__props) {
    const props = __props;
    const { copy: copy2, copied } = useClipboard({ copiedDuring: 2e3 });
    const copyToClipboard = () => {
      if (props.text) {
        copy2(props.text);
      }
    };
    const { t: t2 } = useI18n();
    return (_ctx, _cache) => {
      const _component_i_cy_copy_clipboard_x16 = __unplugin_components_2$1;
      return openBlock(), createBlock(_sfc_main$10, {
        size: __props.size,
        variant: __props.variant,
        "data-cy": "copy-button",
        onClick: copyToClipboard
      }, createSlots({
        default: withCtx(() => [
          createVNode(TransitionQuickFade, { mode: "out-in" }, {
            default: withCtx(() => [
              !unref(copied) ? (openBlock(), createElementBlock("span", _hoisted_1$1n, toDisplayString$1(unref(t2)("clipboard.copy")), 1)) : (openBlock(), createElementBlock("span", _hoisted_2$1g, toDisplayString$1(unref(t2)("clipboard.copied")), 1))
            ]),
            _: 1
          })
        ]),
        _: 2
      }, [
        !__props.noIcon ? {
          name: "prefix",
          fn: withCtx(() => [
            createVNode(_component_i_cy_copy_clipboard_x16, {
              class: normalizeClass(["h-[16px] w-[16px]", {
                "icon-dark-indigo-500": __props.variant === "tertiary",
                "icon-dark-gray-500": __props.variant === "outline"
              }])
            }, null, 8, ["class"])
          ]),
          key: "0"
        } : void 0
      ]), 1032, ["size", "variant"]);
    };
  }
});
const _hoisted_1$1m = { class: "border rounded flex font-light bg-gray-50 border-gray-100 px-[16px] text-gray-600 text-[14px] leading-[40px] relative items-center whitespace-nowrap overflow-hidden" };
const _hoisted_2$1f = { class: "font-sans opacity-gradient p-[4px] pl-[32px] top-0 right-0 bottom-0 absolute" };
const _sfc_main$X = /* @__PURE__ */ defineComponent({
  __name: "CopyText",
  props: {
    text: null
  },
  setup(__props) {
    const props = __props;
    return (_ctx, _cache) => {
      const _component_i_cy_globe_x16 = __unplugin_components_0$b;
      return openBlock(), createElementBlock("code", _hoisted_1$1m, [
        createVNode(_component_i_cy_globe_x16, { class: "shrink-0 h-[16px] mr-[8px] w-[16px] icon-dark-gray-500 icon-light-gray-100" }),
        createTextVNode(" " + toDisplayString$1(props.text) + " ", 1),
        createBaseVNode("div", _hoisted_2$1f, [
          createVNode(_sfc_main$Y, {
            class: "bg-indigo-100",
            text: __props.text
          }, null, 8, ["text"])
        ])
      ]);
    };
  }
});
const CopyText_vue_vue_type_style_index_0_scoped_18d56591_lang = "";
const CopyText = /* @__PURE__ */ _export_sfc$1(_sfc_main$X, [["__scopeId", "data-v-18d56591"]]);
const _hoisted_1$1l = {
  height: "1em",
  width: "1em",
  style: { "min-width": "12px", "min-height": "12px" },
  viewBox: "0 0 12 12",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1e = /* @__PURE__ */ createBaseVNode("path", {
  d: "M1 11L11 1M1 1L11 11",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$14 = [
  _hoisted_2$1e
];
function render$K(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1l, _hoisted_3$14);
}
const __unplugin_components_0$a = { name: "cy-delete_x12", render: render$K };
const _hoisted_1$1k = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1d = /* @__PURE__ */ createBaseVNode("path", {
  d: "M13.6569 13.6569C10.5327 16.781 5.46734 16.781 2.34315 13.6569C-0.781048 10.5327 -0.781048 5.46734 2.34315 2.34315C5.46734 -0.781048 10.5327 -0.781048 13.6569 2.34315C16.781 5.46734 16.781 10.5327 13.6569 13.6569Z",
  fill: "currentColor",
  class: "icon-light"
}, null, -1);
const _hoisted_3$13 = /* @__PURE__ */ createBaseVNode("path", {
  "fill-rule": "evenodd",
  style: { "transform": "translate(5px, 2.8px)" },
  "clip-rule": "evenodd",
  d: "M1.84477 2.53525L1.84393 2.53644C1.55247 2.99535 0.945841 3.13804 0.479622 2.85394C0.00800347 2.56655 -0.141341 1.95125 0.146051 1.47963L0.999992 2C0.146051 1.47963 0.146312 1.4792 0.146575 1.47877L0.147114 1.47789L0.148242 1.47605L0.150693 1.47208L0.15638 1.463L0.170928 1.44042C0.182042 1.42347 0.196048 1.40275 0.213011 1.37881C0.246877 1.33103 0.292902 1.2699 0.351663 1.20004C0.468602 1.06102 0.639738 0.88294 0.870176 0.706317C1.33799 0.347756 2.04656 0 2.99999 0C4.09902 0 4.91097 0.431523 5.41403 1.1133C5.87907 1.74355 5.99999 2.47764 5.99999 3C5.99999 3.62988 5.82686 4.14716 5.53741 4.57449C5.26535 4.97613 4.9179 5.25422 4.6658 5.44689C4.05784 5.9115 4.01123 5.9631 3.99314 6.11684C3.92861 6.66534 3.43165 7.05768 2.88315 6.99315C2.33465 6.92862 1.94231 6.43166 2.00684 5.88316C2.1317 4.8219 2.92228 4.24504 3.33392 3.94468C3.3778 3.91266 3.41737 3.88379 3.45138 3.8578C3.67974 3.68328 3.80299 3.56879 3.88152 3.45286C3.94266 3.3626 3.99999 3.23731 3.99999 3C3.99999 2.74111 3.93342 2.4752 3.8047 2.30076C3.71401 2.17785 3.52597 2 2.99999 2C2.5628 2 2.27137 2.15224 2.08684 2.29368C1.99111 2.36706 1.92298 2.43898 1.88221 2.48746C1.86211 2.51135 1.84967 2.52835 1.84477 2.53525ZM2.99999 10C3.55228 10 3.99999 9.55229 3.99999 9C3.99999 8.44771 3.55228 8 2.99999 8C2.44771 8 1.99999 8.44771 1.99999 9C1.99999 9.55229 2.44771 10 2.99999 10Z",
  fill: "white",
  class: "icon-dark"
}, null, -1);
const _hoisted_4$G = [
  _hoisted_2$1d,
  _hoisted_3$13
];
function render$J(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1k, _hoisted_4$G);
}
const __unplugin_components_0$9 = { name: "cy-circle-bg-question-mark_x16", render: render$J };
function _extends$1() {
  _extends$1 = Object.assign || function(target2) {
    for (var i = 1; i < arguments.length; i++) {
      var source = arguments[i];
      for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target2[key] = source[key];
        }
      }
    }
    return target2;
  };
  return _extends$1.apply(this, arguments);
}
function _objectWithoutPropertiesLoose(source, excluded) {
  if (source == null)
    return {};
  var target2 = {};
  var sourceKeys = Object.keys(source);
  var key, i;
  for (i = 0; i < sourceKeys.length; i++) {
    key = sourceKeys[i];
    if (excluded.indexOf(key) >= 0)
      continue;
    target2[key] = source[key];
  }
  return target2;
}
function _unsupportedIterableToArray(o2, minLen) {
  if (!o2)
    return;
  if (typeof o2 === "string")
    return _arrayLikeToArray(o2, minLen);
  var n = Object.prototype.toString.call(o2).slice(8, -1);
  if (n === "Object" && o2.constructor)
    n = o2.constructor.name;
  if (n === "Map" || n === "Set")
    return Array.from(o2);
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
    return _arrayLikeToArray(o2, minLen);
}
function _arrayLikeToArray(arr, len) {
  if (len == null || len > arr.length)
    len = arr.length;
  for (var i = 0, arr2 = new Array(len); i < len; i++)
    arr2[i] = arr[i];
  return arr2;
}
function _createForOfIteratorHelperLoose(o2, allowArrayLike) {
  var it2;
  if (typeof Symbol === "undefined" || o2[Symbol.iterator] == null) {
    if (Array.isArray(o2) || (it2 = _unsupportedIterableToArray(o2)) || allowArrayLike && o2 && typeof o2.length === "number") {
      if (it2)
        o2 = it2;
      var i = 0;
      return function() {
        if (i >= o2.length)
          return {
            done: true
          };
        return {
          done: false,
          value: o2[i++]
        };
      };
    }
    throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }
  it2 = o2[Symbol.iterator]();
  return it2.next.bind(it2);
}
function match(value, lookup) {
  if (value in lookup) {
    var returnValue = lookup[value];
    for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
      args[_key - 2] = arguments[_key];
    }
    return typeof returnValue === "function" ? returnValue.apply(void 0, args) : returnValue;
  }
  var error2 = new Error('Tried to handle "' + value + '" but there is no handler defined. Only defined handlers are: ' + Object.keys(lookup).map(function(key) {
    return '"' + key + '"';
  }).join(", ") + ".");
  if (Error.captureStackTrace)
    Error.captureStackTrace(error2, match);
  throw error2;
}
var Features;
(function(Features2) {
  Features2[Features2["None"] = 0] = "None";
  Features2[Features2["RenderStrategy"] = 1] = "RenderStrategy";
  Features2[Features2["Static"] = 2] = "Static";
})(Features || (Features = {}));
var RenderStrategy;
(function(RenderStrategy2) {
  RenderStrategy2[RenderStrategy2["Unmount"] = 0] = "Unmount";
  RenderStrategy2[RenderStrategy2["Hidden"] = 1] = "Hidden";
})(RenderStrategy || (RenderStrategy = {}));
function render$I(_ref) {
  var _ref$visible = _ref.visible, visible = _ref$visible === void 0 ? true : _ref$visible, _ref$features = _ref.features, features = _ref$features === void 0 ? Features.None : _ref$features, main2 = _objectWithoutPropertiesLoose(_ref, ["visible", "features"]);
  if (visible)
    return _render(main2);
  if (features & Features.Static) {
    if (main2.props["static"])
      return _render(main2);
  }
  if (features & Features.RenderStrategy) {
    var _main$props$unmount, _match;
    var strategy = ((_main$props$unmount = main2.props.unmount) != null ? _main$props$unmount : true) ? RenderStrategy.Unmount : RenderStrategy.Hidden;
    return match(strategy, (_match = {}, _match[RenderStrategy.Unmount] = function() {
      return null;
    }, _match[RenderStrategy.Hidden] = function() {
      return _render(_extends$1({}, main2, {
        props: _extends$1({}, main2.props, {
          hidden: true,
          style: {
            display: "none"
          }
        })
      }));
    }, _match));
  }
  return _render(main2);
}
function _render(_ref2) {
  var props = _ref2.props, attrs = _ref2.attrs, slots = _ref2.slots, slot = _ref2.slot, name2 = _ref2.name;
  var _omit = omit(props, ["unmount", "static"]), as = _omit.as, passThroughProps = _objectWithoutPropertiesLoose(_omit, ["as"]);
  var children = slots["default"] == null ? void 0 : slots["default"](slot);
  if (as === "template") {
    if (Object.keys(passThroughProps).length > 0 || Object.keys(attrs).length > 0) {
      var _ref3 = children != null ? children : [], firstChild = _ref3[0], other = _ref3.slice(1);
      if (!isValidElement(firstChild) || other.length > 0) {
        throw new Error(['Passing props on "template"!', "", "The current component <" + name2 + ' /> is rendering a "template".', "However we need to passthrough the following props:", Object.keys(passThroughProps).concat(Object.keys(attrs)).map(function(line) {
          return "  - " + line;
        }).join("\n"), "", "You can apply a few solutions:", ['Add an `as="..."` prop, to ensure that we render an actual element instead of a "template".', "Render a single element as the child so that we can forward the props onto that element."].map(function(line) {
          return "  - " + line;
        }).join("\n")].join("\n"));
      }
      return cloneVNode(firstChild, passThroughProps);
    }
    if (Array.isArray(children) && children.length === 1) {
      return children[0];
    }
    return children;
  }
  return h$1(as, passThroughProps, children);
}
function omit(object, keysToOmit) {
  if (keysToOmit === void 0) {
    keysToOmit = [];
  }
  var clone2 = Object.assign({}, object);
  for (var _iterator = _createForOfIteratorHelperLoose(keysToOmit), _step; !(_step = _iterator()).done; ) {
    var key = _step.value;
    if (key in clone2)
      delete clone2[key];
  }
  return clone2;
}
function isValidElement(input) {
  if (input == null)
    return false;
  if (typeof input.type === "string")
    return true;
  if (typeof input.type === "object")
    return true;
  if (typeof input.type === "function")
    return true;
  return false;
}
var Keys;
(function(Keys2) {
  Keys2["Space"] = " ";
  Keys2["Enter"] = "Enter";
  Keys2["Escape"] = "Escape";
  Keys2["Backspace"] = "Backspace";
  Keys2["ArrowLeft"] = "ArrowLeft";
  Keys2["ArrowUp"] = "ArrowUp";
  Keys2["ArrowRight"] = "ArrowRight";
  Keys2["ArrowDown"] = "ArrowDown";
  Keys2["Home"] = "Home";
  Keys2["End"] = "End";
  Keys2["PageUp"] = "PageUp";
  Keys2["PageDown"] = "PageDown";
  Keys2["Tab"] = "Tab";
})(Keys || (Keys = {}));
var id = 0;
function generateId() {
  return ++id;
}
function useId() {
  return generateId();
}
var focusableSelector = /* @__PURE__ */ ["[contentEditable=true]", "[tabindex]", "a[href]", "area[href]", "button:not([disabled])", "iframe", "input:not([disabled])", "select:not([disabled])", "textarea:not([disabled])"].map(function(selector) {
  return selector + ":not([tabindex='-1'])";
}).join(",");
var Focus;
(function(Focus2) {
  Focus2[Focus2["First"] = 1] = "First";
  Focus2[Focus2["Previous"] = 2] = "Previous";
  Focus2[Focus2["Next"] = 4] = "Next";
  Focus2[Focus2["Last"] = 8] = "Last";
  Focus2[Focus2["WrapAround"] = 16] = "WrapAround";
  Focus2[Focus2["NoScroll"] = 32] = "NoScroll";
})(Focus || (Focus = {}));
var FocusResult;
(function(FocusResult2) {
  FocusResult2[FocusResult2["Error"] = 0] = "Error";
  FocusResult2[FocusResult2["Overflow"] = 1] = "Overflow";
  FocusResult2[FocusResult2["Success"] = 2] = "Success";
  FocusResult2[FocusResult2["Underflow"] = 3] = "Underflow";
})(FocusResult || (FocusResult = {}));
var Direction;
(function(Direction2) {
  Direction2[Direction2["Previous"] = -1] = "Previous";
  Direction2[Direction2["Next"] = 1] = "Next";
})(Direction || (Direction = {}));
function getFocusableElements(container) {
  if (container === void 0) {
    container = document.body;
  }
  if (container == null)
    return [];
  return Array.from(container.querySelectorAll(focusableSelector));
}
var FocusableMode;
(function(FocusableMode2) {
  FocusableMode2[FocusableMode2["Strict"] = 0] = "Strict";
  FocusableMode2[FocusableMode2["Loose"] = 1] = "Loose";
})(FocusableMode || (FocusableMode = {}));
function isFocusableElement(element, mode) {
  var _match;
  if (mode === void 0) {
    mode = FocusableMode.Strict;
  }
  if (element === document.body)
    return false;
  return match(mode, (_match = {}, _match[FocusableMode.Strict] = function() {
    return element.matches(focusableSelector);
  }, _match[FocusableMode.Loose] = function() {
    var next = element;
    while (next !== null) {
      if (next.matches(focusableSelector))
        return true;
      next = next.parentElement;
    }
    return false;
  }, _match));
}
function focusElement(element) {
  element == null ? void 0 : element.focus({
    preventScroll: true
  });
}
function focusIn(container, focus) {
  var elements = Array.isArray(container) ? container : getFocusableElements(container);
  var active = document.activeElement;
  var direction = function() {
    if (focus & (Focus.First | Focus.Next))
      return Direction.Next;
    if (focus & (Focus.Previous | Focus.Last))
      return Direction.Previous;
    throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last");
  }();
  var startIndex = function() {
    if (focus & Focus.First)
      return 0;
    if (focus & Focus.Previous)
      return Math.max(0, elements.indexOf(active)) - 1;
    if (focus & Focus.Next)
      return Math.max(0, elements.indexOf(active)) + 1;
    if (focus & Focus.Last)
      return elements.length - 1;
    throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last");
  }();
  var focusOptions = focus & Focus.NoScroll ? {
    preventScroll: true
  } : {};
  var offset2 = 0;
  var total = elements.length;
  var next = void 0;
  do {
    var _next;
    if (offset2 >= total || offset2 + total <= 0)
      return FocusResult.Error;
    var nextIdx = startIndex + offset2;
    if (focus & Focus.WrapAround) {
      nextIdx = (nextIdx + total) % total;
    } else {
      if (nextIdx < 0)
        return FocusResult.Underflow;
      if (nextIdx >= total)
        return FocusResult.Overflow;
    }
    next = elements[nextIdx];
    (_next = next) == null ? void 0 : _next.focus(focusOptions);
    offset2 += direction;
  } while (next !== document.activeElement);
  if (!next.hasAttribute("tabindex"))
    next.setAttribute("tabindex", "0");
  return FocusResult.Success;
}
function useWindowEvent(type2, listener, options2) {
  window.addEventListener(type2, listener, options2);
  onUnmounted(function() {
    return window.removeEventListener(type2, listener, options2);
  });
}
function contains$2(containers, element) {
  for (var _iterator = _createForOfIteratorHelperLoose(containers), _step; !(_step = _iterator()).done; ) {
    var container = _step.value;
    if (container.contains(element))
      return true;
  }
  return false;
}
function useFocusTrap(containers, enabled, options2) {
  if (enabled === void 0) {
    enabled = ref(true);
  }
  if (options2 === void 0) {
    options2 = ref({});
  }
  var restoreElement = ref(typeof window !== "undefined" ? document.activeElement : null);
  var previousActiveElement = ref(null);
  function handleFocus() {
    if (!enabled.value)
      return;
    if (containers.value.size !== 1)
      return;
    var initialFocus = options2.value.initialFocus;
    var activeElement = document.activeElement;
    if (initialFocus) {
      if (initialFocus === activeElement) {
        return;
      }
    } else if (contains$2(containers.value, activeElement)) {
      return;
    }
    restoreElement.value = activeElement;
    if (initialFocus) {
      focusElement(initialFocus);
    } else {
      var couldFocus = false;
      for (var _iterator = _createForOfIteratorHelperLoose(containers.value), _step; !(_step = _iterator()).done; ) {
        var container = _step.value;
        var result = focusIn(container, Focus.First);
        if (result === FocusResult.Success) {
          couldFocus = true;
          break;
        }
      }
      if (!couldFocus)
        throw new Error("There are no focusable elements inside the <FocusTrap />");
    }
    previousActiveElement.value = document.activeElement;
  }
  function restore2() {
    focusElement(restoreElement.value);
    restoreElement.value = null;
    previousActiveElement.value = null;
  }
  watchEffect(handleFocus);
  onUpdated(function() {
    enabled.value ? handleFocus() : restore2();
  });
  onUnmounted(restore2);
  useWindowEvent("keydown", function(event) {
    if (!enabled.value)
      return;
    if (event.key !== Keys.Tab)
      return;
    if (!document.activeElement)
      return;
    if (containers.value.size !== 1)
      return;
    event.preventDefault();
    for (var _iterator2 = _createForOfIteratorHelperLoose(containers.value), _step2; !(_step2 = _iterator2()).done; ) {
      var element = _step2.value;
      var result = focusIn(element, (event.shiftKey ? Focus.Previous : Focus.Next) | Focus.WrapAround);
      if (result === FocusResult.Success) {
        previousActiveElement.value = document.activeElement;
        break;
      }
    }
  });
  useWindowEvent("focus", function(event) {
    if (!enabled.value)
      return;
    if (containers.value.size !== 1)
      return;
    var previous = previousActiveElement.value;
    if (!previous)
      return;
    var toElement = event.target;
    if (toElement && toElement instanceof HTMLElement) {
      if (!contains$2(containers.value, toElement)) {
        event.preventDefault();
        event.stopPropagation();
        focusElement(previous);
      } else {
        previousActiveElement.value = toElement;
        focusElement(toElement);
      }
    } else {
      focusElement(previousActiveElement.value);
    }
  }, true);
}
var CHILDREN_SELECTOR = "body > *";
var interactables = /* @__PURE__ */ new Set();
var originals = /* @__PURE__ */ new Map();
function inert(element) {
  element.setAttribute("aria-hidden", "true");
  element.inert = true;
}
function restore(element) {
  var original = originals.get(element);
  if (!original)
    return;
  if (original["aria-hidden"] === null)
    element.removeAttribute("aria-hidden");
  else
    element.setAttribute("aria-hidden", original["aria-hidden"]);
  element.inert = original.inert;
}
function useInertOthers(container, enabled) {
  if (enabled === void 0) {
    enabled = ref(true);
  }
  watchEffect(function(onInvalidate) {
    if (!enabled.value)
      return;
    if (!container.value)
      return;
    var element = container.value;
    interactables.add(element);
    for (var _iterator = _createForOfIteratorHelperLoose(originals.keys()), _step; !(_step = _iterator()).done; ) {
      var original = _step.value;
      if (original.contains(element)) {
        restore(original);
        originals["delete"](original);
      }
    }
    document.querySelectorAll(CHILDREN_SELECTOR).forEach(function(child) {
      if (!(child instanceof HTMLElement))
        return;
      for (var _iterator2 = _createForOfIteratorHelperLoose(interactables), _step2; !(_step2 = _iterator2()).done; ) {
        var interactable = _step2.value;
        if (child.contains(interactable))
          return;
      }
      if (interactables.size === 1) {
        originals.set(child, {
          "aria-hidden": child.getAttribute("aria-hidden"),
          // @ts-expect-error `inert` does not exist on HTMLElement (yet!)
          inert: child.inert
        });
        inert(child);
      }
    });
    onInvalidate(function() {
      interactables["delete"](element);
      if (interactables.size > 0) {
        document.querySelectorAll(CHILDREN_SELECTOR).forEach(function(child) {
          if (!(child instanceof HTMLElement))
            return;
          if (originals.has(child))
            return;
          for (var _iterator3 = _createForOfIteratorHelperLoose(interactables), _step3; !(_step3 = _iterator3()).done; ) {
            var interactable = _step3.value;
            if (child.contains(interactable))
              return;
          }
          originals.set(child, {
            "aria-hidden": child.getAttribute("aria-hidden"),
            // @ts-expect-error `inert` does not exist on HTMLElement (yet!)
            inert: child.inert
          });
          inert(child);
        });
      } else {
        for (var _iterator4 = _createForOfIteratorHelperLoose(originals.keys()), _step4; !(_step4 = _iterator4()).done; ) {
          var _element = _step4.value;
          restore(_element);
          originals["delete"](_element);
        }
      }
    });
  });
}
var StackContext = /* @__PURE__ */ Symbol("StackContext");
var StackMessage;
(function(StackMessage2) {
  StackMessage2[StackMessage2["AddElement"] = 0] = "AddElement";
  StackMessage2[StackMessage2["RemoveElement"] = 1] = "RemoveElement";
})(StackMessage || (StackMessage = {}));
function useStackContext() {
  return inject(StackContext, function() {
  });
}
function useElemenStack(element) {
  var notify = useStackContext();
  watchEffect(function(onInvalidate) {
    var domElement = element == null ? void 0 : element.value;
    if (!domElement)
      return;
    notify(StackMessage.AddElement, domElement);
    onInvalidate(function() {
      return notify(StackMessage.RemoveElement, domElement);
    });
  });
}
function useStackProvider(onUpdate) {
  var parentUpdate = useStackContext();
  function notify() {
    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }
    onUpdate == null ? void 0 : onUpdate.apply(void 0, args);
    parentUpdate.apply(void 0, args);
  }
  provide(StackContext, notify);
}
var ForcePortalRootContext = /* @__PURE__ */ Symbol("ForcePortalRootContext");
function usePortalRoot() {
  return inject(ForcePortalRootContext, false);
}
var ForcePortalRoot = /* @__PURE__ */ defineComponent({
  name: "ForcePortalRoot",
  props: {
    as: {
      type: [Object, String],
      "default": "template"
    },
    force: {
      type: Boolean,
      "default": false
    }
  },
  setup: function setup(props, _ref) {
    var slots = _ref.slots, attrs = _ref.attrs;
    provide(ForcePortalRootContext, props.force);
    return function() {
      var passThroughProps = _objectWithoutPropertiesLoose(props, ["force"]);
      return render$I({
        props: passThroughProps,
        slot: {},
        slots,
        attrs,
        name: "ForcePortalRoot"
      });
    };
  }
});
function getPortalRoot() {
  var existingRoot = document.getElementById("headlessui-portal-root");
  if (existingRoot)
    return existingRoot;
  var root2 = document.createElement("div");
  root2.setAttribute("id", "headlessui-portal-root");
  return document.body.appendChild(root2);
}
var Portal = /* @__PURE__ */ defineComponent({
  name: "Portal",
  props: {
    as: {
      type: [Object, String],
      "default": "div"
    }
  },
  setup: function setup2(props, _ref) {
    var slots = _ref.slots, attrs = _ref.attrs;
    var forcePortalRoot = usePortalRoot();
    var groupContext = inject(PortalGroupContext, null);
    var myTarget = ref(forcePortalRoot === true ? getPortalRoot() : groupContext === null ? getPortalRoot() : groupContext.resolveTarget());
    watchEffect(function() {
      if (forcePortalRoot)
        return;
      if (groupContext === null)
        return;
      myTarget.value = groupContext.resolveTarget();
    });
    var element = ref(null);
    useElemenStack(element);
    onUnmounted(function() {
      var root2 = document.getElementById("headlessui-portal-root");
      if (!root2)
        return;
      if (myTarget.value !== root2)
        return;
      if (myTarget.value.children.length <= 0) {
        var _myTarget$value$paren;
        (_myTarget$value$paren = myTarget.value.parentElement) == null ? void 0 : _myTarget$value$paren.removeChild(myTarget.value);
      }
    });
    useStackProvider();
    return function() {
      if (myTarget.value === null)
        return null;
      var propsWeControl = {
        ref: element
      };
      return h$1(
        // @ts-expect-error Children can be an object, but TypeScript is not happy
        // with it. Once this is fixed upstream we can remove this assertion.
        Teleport,
        {
          to: myTarget.value
        },
        render$I({
          props: _extends$1({}, props, propsWeControl),
          slot: {},
          attrs,
          slots,
          name: "Portal"
        })
      );
    };
  }
});
var PortalGroupContext = /* @__PURE__ */ Symbol("PortalGroupContext");
var PortalGroup = /* @__PURE__ */ defineComponent({
  name: "PortalGroup",
  props: {
    as: {
      type: [Object, String],
      "default": "template"
    },
    target: {
      type: Object,
      "default": null
    }
  },
  setup: function setup3(props, _ref2) {
    var attrs = _ref2.attrs, slots = _ref2.slots;
    var api = reactive({
      resolveTarget: function resolveTarget2() {
        return props.target;
      }
    });
    provide(PortalGroupContext, api);
    return function() {
      var passThroughProps = _objectWithoutPropertiesLoose(props, ["target"]);
      return render$I({
        props: passThroughProps,
        slot: {},
        attrs,
        slots,
        name: "PortalGroup"
      });
    };
  }
});
var DescriptionContext = /* @__PURE__ */ Symbol("DescriptionContext");
function useDescriptionContext() {
  var context2 = inject(DescriptionContext, null);
  if (context2 === null) {
    throw new Error("Missing parent");
  }
  return context2;
}
function useDescriptions(_temp) {
  var _ref = _temp === void 0 ? {} : _temp, _ref$slot = _ref.slot, slot = _ref$slot === void 0 ? ref({}) : _ref$slot, _ref$name = _ref.name, name2 = _ref$name === void 0 ? "Description" : _ref$name, _ref$props = _ref.props, props = _ref$props === void 0 ? {} : _ref$props;
  var descriptionIds = ref([]);
  function register(value) {
    descriptionIds.value.push(value);
    return function() {
      var idx = descriptionIds.value.indexOf(value);
      if (idx === -1)
        return;
      descriptionIds.value.splice(idx, 1);
    };
  }
  provide(DescriptionContext, {
    register,
    slot,
    name: name2,
    props
  });
  return computed(function() {
    return descriptionIds.value.length > 0 ? descriptionIds.value.join(" ") : void 0;
  });
}
var Description = /* @__PURE__ */ defineComponent({
  name: "Description",
  props: {
    as: {
      type: [Object, String],
      "default": "p"
    }
  },
  render: function render$1() {
    var _this$context = this.context, _this$context$name = _this$context.name, name2 = _this$context$name === void 0 ? "Description" : _this$context$name, _this$context$slot = _this$context.slot, slot = _this$context$slot === void 0 ? ref({}) : _this$context$slot, _this$context$props = _this$context.props, props = _this$context$props === void 0 ? {} : _this$context$props;
    var passThroughProps = this.$props;
    var propsWeControl = _extends$1({}, Object.entries(props).reduce(function(acc, _ref2) {
      var _Object$assign;
      var key = _ref2[0], value = _ref2[1];
      return Object.assign(acc, (_Object$assign = {}, _Object$assign[key] = unref(value), _Object$assign));
    }, {}), {
      id: this.id
    });
    return render$I({
      props: _extends$1({}, passThroughProps, propsWeControl),
      slot: slot.value,
      attrs: this.$attrs,
      slots: this.$slots,
      name: name2
    });
  },
  setup: function setup4() {
    var context2 = useDescriptionContext();
    var id2 = "headlessui-description-" + useId();
    onMounted(function() {
      return onUnmounted(context2.register(id2));
    });
    return {
      id: id2,
      context: context2
    };
  }
});
function dom(ref2) {
  var _ref$value$$el;
  if (ref2 == null)
    return null;
  if (ref2.value == null)
    return null;
  return (_ref$value$$el = ref2.value.$el) != null ? _ref$value$$el : ref2.value;
}
var Context = /* @__PURE__ */ Symbol("Context");
var State;
(function(State2) {
  State2[State2["Open"] = 0] = "Open";
  State2[State2["Closed"] = 1] = "Closed";
})(State || (State = {}));
function useOpenClosed() {
  return inject(Context, null);
}
function useOpenClosedProvider(value) {
  provide(Context, value);
}
var DialogStates;
(function(DialogStates2) {
  DialogStates2[DialogStates2["Open"] = 0] = "Open";
  DialogStates2[DialogStates2["Closed"] = 1] = "Closed";
})(DialogStates || (DialogStates = {}));
var DialogContext = /* @__PURE__ */ Symbol("DialogContext");
function useDialogContext(component) {
  var context2 = inject(DialogContext, null);
  if (context2 === null) {
    var err = new Error("<" + component + " /> is missing a parent <Dialog /> component.");
    if (Error.captureStackTrace)
      Error.captureStackTrace(err, useDialogContext);
    throw err;
  }
  return context2;
}
var Missing = "DC8F892D-2EBD-447C-A4C8-A03058436FF4";
var Dialog = /* @__PURE__ */ defineComponent({
  name: "Dialog",
  inheritAttrs: false,
  props: {
    as: {
      type: [Object, String],
      "default": "div"
    },
    "static": {
      type: Boolean,
      "default": false
    },
    unmount: {
      type: Boolean,
      "default": true
    },
    open: {
      type: [Boolean, String],
      "default": Missing
    },
    initialFocus: {
      type: Object,
      "default": null
    }
  },
  emits: ["close"],
  render: function render$12() {
    var _this = this;
    var propsWeControl = _extends$1({}, this.$attrs, {
      ref: "el",
      id: this.id,
      role: "dialog",
      "aria-modal": this.dialogState === DialogStates.Open ? true : void 0,
      "aria-labelledby": this.titleId,
      "aria-describedby": this.describedby,
      onClick: this.handleClick,
      onKeydown: this.handleKeyDown
    });
    var _this$$props = this.$props, passThroughProps = _objectWithoutPropertiesLoose(_this$$props, ["open", "initialFocus"]);
    var slot = {
      open: this.dialogState === DialogStates.Open
    };
    return h$1(ForcePortalRoot, {
      force: true
    }, function() {
      return h$1(Portal, function() {
        return h$1(PortalGroup, {
          target: _this.dialogRef
        }, function() {
          return h$1(ForcePortalRoot, {
            force: false
          }, function() {
            return render$I({
              props: _extends$1({}, passThroughProps, propsWeControl),
              slot,
              attrs: _this.$attrs,
              slots: _this.$slots,
              visible: _this.visible,
              features: Features.RenderStrategy | Features.Static,
              name: "Dialog"
            });
          });
        });
      });
    });
  },
  setup: function setup5(props, _ref) {
    var emit3 = _ref.emit;
    var containers = ref(/* @__PURE__ */ new Set());
    var usesOpenClosedState = useOpenClosed();
    var open = computed(function() {
      if (props.open === Missing && usesOpenClosedState !== null) {
        var _match;
        return match(usesOpenClosedState.value, (_match = {}, _match[State.Open] = true, _match[State.Closed] = false, _match));
      }
      return props.open;
    });
    var hasOpen = props.open !== Missing || usesOpenClosedState !== null;
    if (!hasOpen) {
      throw new Error("You forgot to provide an `open` prop to the `Dialog`.");
    }
    if (typeof open.value !== "boolean") {
      throw new Error("You provided an `open` prop to the `Dialog`, but the value is not a boolean. Received: " + (open.value === Missing ? void 0 : props.open));
    }
    var dialogState = computed(function() {
      return props.open ? DialogStates.Open : DialogStates.Closed;
    });
    var visible = computed(function() {
      if (usesOpenClosedState !== null) {
        return usesOpenClosedState.value === State.Open;
      }
      return dialogState.value === DialogStates.Open;
    });
    var internalDialogRef = ref(null);
    var enabled = ref(dialogState.value === DialogStates.Open);
    onUpdated(function() {
      enabled.value = dialogState.value === DialogStates.Open;
    });
    var id2 = "headlessui-dialog-" + useId();
    var focusTrapOptions = computed(function() {
      return {
        initialFocus: props.initialFocus
      };
    });
    useFocusTrap(containers, enabled, focusTrapOptions);
    useInertOthers(internalDialogRef, enabled);
    useStackProvider(function(message, element) {
      var _match2;
      return match(message, (_match2 = {}, _match2[StackMessage.AddElement] = function() {
        containers.value.add(element);
      }, _match2[StackMessage.RemoveElement] = function() {
        containers.value["delete"](element);
      }, _match2));
    });
    var describedby = useDescriptions({
      name: "DialogDescription",
      slot: computed(function() {
        return {
          open: open.value
        };
      })
    });
    var titleId = ref(null);
    var api = {
      titleId,
      dialogState,
      setTitleId: function setTitleId(id3) {
        if (titleId.value === id3)
          return;
        titleId.value = id3;
      },
      close: function close() {
        emit3("close", false);
      }
    };
    provide(DialogContext, api);
    useWindowEvent("mousedown", function(event) {
      var target2 = event.target;
      if (dialogState.value !== DialogStates.Open)
        return;
      if (containers.value.size !== 1)
        return;
      if (contains$2(containers.value, target2))
        return;
      api.close();
      nextTick(function() {
        return target2 == null ? void 0 : target2.focus();
      });
    });
    watchEffect(function(onInvalidate) {
      if (dialogState.value !== DialogStates.Open)
        return;
      var overflow = document.documentElement.style.overflow;
      var paddingRight = document.documentElement.style.paddingRight;
      var scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
      document.documentElement.style.overflow = "hidden";
      document.documentElement.style.paddingRight = scrollbarWidth + "px";
      onInvalidate(function() {
        document.documentElement.style.overflow = overflow;
        document.documentElement.style.paddingRight = paddingRight;
      });
    });
    watchEffect(function(onInvalidate) {
      if (dialogState.value !== DialogStates.Open)
        return;
      var container = dom(internalDialogRef);
      if (!container)
        return;
      var observer = new IntersectionObserver(function(entries) {
        for (var _iterator = _createForOfIteratorHelperLoose(entries), _step; !(_step = _iterator()).done; ) {
          var entry = _step.value;
          if (entry.boundingClientRect.x === 0 && entry.boundingClientRect.y === 0 && entry.boundingClientRect.width === 0 && entry.boundingClientRect.height === 0) {
            api.close();
          }
        }
      });
      observer.observe(container);
      onInvalidate(function() {
        return observer.disconnect();
      });
    });
    return {
      id: id2,
      el: internalDialogRef,
      dialogRef: internalDialogRef,
      containers,
      dialogState,
      titleId,
      describedby,
      visible,
      open,
      handleClick: function handleClick(event) {
        event.stopPropagation();
      },
      // Handle `Escape` to close
      handleKeyDown: function handleKeyDown(event) {
        if (event.key !== Keys.Escape)
          return;
        if (dialogState.value !== DialogStates.Open)
          return;
        if (containers.value.size > 1)
          return;
        event.preventDefault();
        event.stopPropagation();
        api.close();
      }
    };
  }
});
var DialogOverlay = /* @__PURE__ */ defineComponent({
  name: "DialogOverlay",
  props: {
    as: {
      type: [Object, String],
      "default": "div"
    }
  },
  render: function render$13() {
    var api = useDialogContext("DialogOverlay");
    var propsWeControl = {
      ref: "el",
      id: this.id,
      "aria-hidden": true,
      onClick: this.handleClick
    };
    var passThroughProps = this.$props;
    return render$I({
      props: _extends$1({}, passThroughProps, propsWeControl),
      slot: {
        open: api.dialogState.value === DialogStates.Open
      },
      attrs: this.$attrs,
      slots: this.$slots,
      name: "DialogOverlay"
    });
  },
  setup: function setup6() {
    var api = useDialogContext("DialogOverlay");
    var id2 = "headlessui-dialog-overlay-" + useId();
    return {
      id: id2,
      handleClick: function handleClick(event) {
        event.preventDefault();
        event.stopPropagation();
        api.close();
      }
    };
  }
});
var DialogTitle = /* @__PURE__ */ defineComponent({
  name: "DialogTitle",
  props: {
    as: {
      type: [Object, String],
      "default": "h2"
    }
  },
  render: function render$14() {
    var api = useDialogContext("DialogTitle");
    var propsWeControl = {
      id: this.id
    };
    var passThroughProps = this.$props;
    return render$I({
      props: _extends$1({}, passThroughProps, propsWeControl),
      slot: {
        open: api.dialogState.value === DialogStates.Open
      },
      attrs: this.$attrs,
      slots: this.$slots,
      name: "DialogTitle"
    });
  },
  setup: function setup7() {
    var api = useDialogContext("DialogTitle");
    var id2 = "headlessui-dialog-title-" + useId();
    onMounted(function() {
      api.setTitleId(id2);
      onUnmounted(function() {
        return api.setTitleId(null);
      });
    });
    return {
      id: id2
    };
  }
});
var DialogDescription = Description;
var DisclosureStates;
(function(DisclosureStates2) {
  DisclosureStates2[DisclosureStates2["Open"] = 0] = "Open";
  DisclosureStates2[DisclosureStates2["Closed"] = 1] = "Closed";
})(DisclosureStates || (DisclosureStates = {}));
function assertNever(x2) {
  throw new Error("Unexpected object: " + x2);
}
var Focus$1;
(function(Focus2) {
  Focus2[Focus2["First"] = 0] = "First";
  Focus2[Focus2["Previous"] = 1] = "Previous";
  Focus2[Focus2["Next"] = 2] = "Next";
  Focus2[Focus2["Last"] = 3] = "Last";
  Focus2[Focus2["Specific"] = 4] = "Specific";
  Focus2[Focus2["Nothing"] = 5] = "Nothing";
})(Focus$1 || (Focus$1 = {}));
function calculateActiveIndex(action3, resolvers) {
  var items = resolvers.resolveItems();
  if (items.length <= 0)
    return null;
  var currentActiveIndex = resolvers.resolveActiveIndex();
  var activeIndex = currentActiveIndex != null ? currentActiveIndex : -1;
  var nextActiveIndex = function() {
    switch (action3.focus) {
      case Focus$1.First:
        return items.findIndex(function(item) {
          return !resolvers.resolveDisabled(item);
        });
      case Focus$1.Previous: {
        var idx = items.slice().reverse().findIndex(function(item, idx2, all) {
          if (activeIndex !== -1 && all.length - idx2 - 1 >= activeIndex)
            return false;
          return !resolvers.resolveDisabled(item);
        });
        if (idx === -1)
          return idx;
        return items.length - 1 - idx;
      }
      case Focus$1.Next:
        return items.findIndex(function(item, idx2) {
          if (idx2 <= activeIndex)
            return false;
          return !resolvers.resolveDisabled(item);
        });
      case Focus$1.Last: {
        var _idx = items.slice().reverse().findIndex(function(item) {
          return !resolvers.resolveDisabled(item);
        });
        if (_idx === -1)
          return _idx;
        return items.length - 1 - _idx;
      }
      case Focus$1.Specific:
        return items.findIndex(function(item) {
          return resolvers.resolveId(item) === action3.id;
        });
      case Focus$1.Nothing:
        return null;
      default:
        assertNever(action3);
    }
  }();
  return nextActiveIndex === -1 ? currentActiveIndex : nextActiveIndex;
}
var ListboxStates;
(function(ListboxStates2) {
  ListboxStates2[ListboxStates2["Open"] = 0] = "Open";
  ListboxStates2[ListboxStates2["Closed"] = 1] = "Closed";
})(ListboxStates || (ListboxStates = {}));
function nextFrame$1(cb) {
  requestAnimationFrame(function() {
    return requestAnimationFrame(cb);
  });
}
var ListboxContext = /* @__PURE__ */ Symbol("ListboxContext");
function useListboxContext(component) {
  var context2 = inject(ListboxContext, null);
  if (context2 === null) {
    var err = new Error("<" + component + " /> is missing a parent <Listbox /> component.");
    if (Error.captureStackTrace)
      Error.captureStackTrace(err, useListboxContext);
    throw err;
  }
  return context2;
}
var Listbox = /* @__PURE__ */ defineComponent({
  name: "Listbox",
  emits: ["update:modelValue"],
  props: {
    as: {
      type: [Object, String],
      "default": "template"
    },
    disabled: {
      type: [Boolean],
      "default": false
    },
    horizontal: {
      type: [Boolean],
      "default": false
    },
    modelValue: {
      type: [Object, String, Number, Boolean]
    }
  },
  setup: function setup8(props, _ref) {
    var slots = _ref.slots, attrs = _ref.attrs, emit3 = _ref.emit;
    var listboxState = ref(ListboxStates.Closed);
    var labelRef = ref(null);
    var buttonRef = ref(null);
    var optionsRef = ref(null);
    var options2 = ref([]);
    var searchQuery = ref("");
    var activeOptionIndex = ref(null);
    var value = computed(function() {
      return props.modelValue;
    });
    var api = {
      listboxState,
      value,
      orientation: computed(function() {
        return props.horizontal ? "horizontal" : "vertical";
      }),
      labelRef,
      buttonRef,
      optionsRef,
      disabled: computed(function() {
        return props.disabled;
      }),
      options: options2,
      searchQuery,
      activeOptionIndex,
      closeListbox: function closeListbox() {
        if (props.disabled)
          return;
        if (listboxState.value === ListboxStates.Closed)
          return;
        listboxState.value = ListboxStates.Closed;
        activeOptionIndex.value = null;
      },
      openListbox: function openListbox() {
        if (props.disabled)
          return;
        if (listboxState.value === ListboxStates.Open)
          return;
        listboxState.value = ListboxStates.Open;
      },
      goToOption: function goToOption(focus, id2) {
        if (props.disabled)
          return;
        if (listboxState.value === ListboxStates.Closed)
          return;
        var nextActiveOptionIndex = calculateActiveIndex(focus === Focus$1.Specific ? {
          focus: Focus$1.Specific,
          id: id2
        } : {
          focus
        }, {
          resolveItems: function resolveItems() {
            return options2.value;
          },
          resolveActiveIndex: function resolveActiveIndex() {
            return activeOptionIndex.value;
          },
          resolveId: function resolveId(option) {
            return option.id;
          },
          resolveDisabled: function resolveDisabled(option) {
            return option.dataRef.disabled;
          }
        });
        if (searchQuery.value === "" && activeOptionIndex.value === nextActiveOptionIndex)
          return;
        searchQuery.value = "";
        activeOptionIndex.value = nextActiveOptionIndex;
      },
      search: function search(value2) {
        if (props.disabled)
          return;
        if (listboxState.value === ListboxStates.Closed)
          return;
        searchQuery.value += value2.toLowerCase();
        var match3 = options2.value.findIndex(function(option) {
          return !option.dataRef.disabled && option.dataRef.textValue.startsWith(searchQuery.value);
        });
        if (match3 === -1 || match3 === activeOptionIndex.value)
          return;
        activeOptionIndex.value = match3;
      },
      clearSearch: function clearSearch() {
        if (props.disabled)
          return;
        if (listboxState.value === ListboxStates.Closed)
          return;
        if (searchQuery.value === "")
          return;
        searchQuery.value = "";
      },
      registerOption: function registerOption(id2, dataRef) {
        options2.value.push({
          id: id2,
          dataRef
        });
      },
      unregisterOption: function unregisterOption(id2) {
        var nextOptions = options2.value.slice();
        var currentActiveOption = activeOptionIndex.value !== null ? nextOptions[activeOptionIndex.value] : null;
        var idx = nextOptions.findIndex(function(a2) {
          return a2.id === id2;
        });
        if (idx !== -1)
          nextOptions.splice(idx, 1);
        options2.value = nextOptions;
        activeOptionIndex.value = function() {
          if (idx === activeOptionIndex.value)
            return null;
          if (currentActiveOption === null)
            return null;
          return nextOptions.indexOf(currentActiveOption);
        }();
      },
      select: function select(value2) {
        if (props.disabled)
          return;
        emit3("update:modelValue", value2);
      }
    };
    useWindowEvent("mousedown", function(event) {
      var _dom, _dom2, _dom3;
      var target2 = event.target;
      var active = document.activeElement;
      if (listboxState.value !== ListboxStates.Open)
        return;
      if ((_dom = dom(buttonRef)) == null ? void 0 : _dom.contains(target2))
        return;
      if (!((_dom2 = dom(optionsRef)) == null ? void 0 : _dom2.contains(target2)))
        api.closeListbox();
      if (active !== document.body && (active == null ? void 0 : active.contains(target2)))
        return;
      if (!event.defaultPrevented)
        (_dom3 = dom(buttonRef)) == null ? void 0 : _dom3.focus({
          preventScroll: true
        });
    });
    provide(ListboxContext, api);
    useOpenClosedProvider(computed(function() {
      var _match;
      return match(listboxState.value, (_match = {}, _match[ListboxStates.Open] = State.Open, _match[ListboxStates.Closed] = State.Closed, _match));
    }));
    return function() {
      var slot = {
        open: listboxState.value === ListboxStates.Open,
        disabled: props.disabled
      };
      return render$I({
        props: omit(props, ["modelValue", "onUpdate:modelValue", "disabled", "horizontal"]),
        slot,
        slots,
        attrs,
        name: "Listbox"
      });
    };
  }
});
var ListboxLabel = /* @__PURE__ */ defineComponent({
  name: "ListboxLabel",
  props: {
    as: {
      type: [Object, String],
      "default": "label"
    }
  },
  render: function render$15() {
    var api = useListboxContext("ListboxLabel");
    var slot = {
      open: api.listboxState.value === ListboxStates.Open,
      disabled: api.disabled.value
    };
    var propsWeControl = {
      id: this.id,
      ref: "el",
      onClick: this.handleClick
    };
    return render$I({
      props: _extends$1({}, this.$props, propsWeControl),
      slot,
      attrs: this.$attrs,
      slots: this.$slots,
      name: "ListboxLabel"
    });
  },
  setup: function setup9() {
    var api = useListboxContext("ListboxLabel");
    var id2 = "headlessui-listbox-label-" + useId();
    return {
      id: id2,
      el: api.labelRef,
      handleClick: function handleClick() {
        var _dom4;
        (_dom4 = dom(api.buttonRef)) == null ? void 0 : _dom4.focus({
          preventScroll: true
        });
      }
    };
  }
});
var ListboxButton = /* @__PURE__ */ defineComponent({
  name: "ListboxButton",
  props: {
    as: {
      type: [Object, String],
      "default": "button"
    }
  },
  render: function render$16() {
    var _dom5, _dom6;
    var api = useListboxContext("ListboxButton");
    var slot = {
      open: api.listboxState.value === ListboxStates.Open,
      disabled: api.disabled.value
    };
    var propsWeControl = {
      ref: "el",
      id: this.id,
      type: "button",
      "aria-haspopup": true,
      "aria-controls": (_dom5 = dom(api.optionsRef)) == null ? void 0 : _dom5.id,
      "aria-expanded": api.disabled.value ? void 0 : api.listboxState.value === ListboxStates.Open,
      "aria-labelledby": api.labelRef.value ? [(_dom6 = dom(api.labelRef)) == null ? void 0 : _dom6.id, this.id].join(" ") : void 0,
      disabled: api.disabled.value === true ? true : void 0,
      onKeydown: this.handleKeyDown,
      onKeyup: this.handleKeyUp,
      onClick: this.handleClick
    };
    return render$I({
      props: _extends$1({}, this.$props, propsWeControl),
      slot,
      attrs: this.$attrs,
      slots: this.$slots,
      name: "ListboxButton"
    });
  },
  setup: function setup10() {
    var api = useListboxContext("ListboxButton");
    var id2 = "headlessui-listbox-button-" + useId();
    function handleKeyDown(event) {
      switch (event.key) {
        case Keys.Space:
        case Keys.Enter:
        case Keys.ArrowDown:
          event.preventDefault();
          api.openListbox();
          nextTick(function() {
            var _dom7;
            (_dom7 = dom(api.optionsRef)) == null ? void 0 : _dom7.focus({
              preventScroll: true
            });
            if (!api.value.value)
              api.goToOption(Focus$1.First);
          });
          break;
        case Keys.ArrowUp:
          event.preventDefault();
          api.openListbox();
          nextTick(function() {
            var _dom8;
            (_dom8 = dom(api.optionsRef)) == null ? void 0 : _dom8.focus({
              preventScroll: true
            });
            if (!api.value.value)
              api.goToOption(Focus$1.Last);
          });
          break;
      }
    }
    function handleKeyUp(event) {
      switch (event.key) {
        case Keys.Space:
          event.preventDefault();
          break;
      }
    }
    function handleClick(event) {
      if (api.disabled.value)
        return;
      if (api.listboxState.value === ListboxStates.Open) {
        api.closeListbox();
        nextTick(function() {
          var _dom9;
          return (_dom9 = dom(api.buttonRef)) == null ? void 0 : _dom9.focus({
            preventScroll: true
          });
        });
      } else {
        event.preventDefault();
        api.openListbox();
        nextFrame$1(function() {
          var _dom10;
          return (_dom10 = dom(api.optionsRef)) == null ? void 0 : _dom10.focus({
            preventScroll: true
          });
        });
      }
    }
    return {
      id: id2,
      el: api.buttonRef,
      handleKeyDown,
      handleKeyUp,
      handleClick
    };
  }
});
var ListboxOptions = /* @__PURE__ */ defineComponent({
  name: "ListboxOptions",
  props: {
    as: {
      type: [Object, String],
      "default": "ul"
    },
    "static": {
      type: Boolean,
      "default": false
    },
    unmount: {
      type: Boolean,
      "default": true
    }
  },
  render: function render$17() {
    var _api$options$value$ap, _dom$id, _dom11, _dom12;
    var api = useListboxContext("ListboxOptions");
    var slot = {
      open: api.listboxState.value === ListboxStates.Open
    };
    var propsWeControl = {
      "aria-activedescendant": api.activeOptionIndex.value === null ? void 0 : (_api$options$value$ap = api.options.value[api.activeOptionIndex.value]) == null ? void 0 : _api$options$value$ap.id,
      "aria-labelledby": (_dom$id = (_dom11 = dom(api.labelRef)) == null ? void 0 : _dom11.id) != null ? _dom$id : (_dom12 = dom(api.buttonRef)) == null ? void 0 : _dom12.id,
      "aria-orientation": api.orientation.value,
      id: this.id,
      onKeydown: this.handleKeyDown,
      role: "listbox",
      tabIndex: 0,
      ref: "el"
    };
    var passThroughProps = this.$props;
    return render$I({
      props: _extends$1({}, passThroughProps, propsWeControl),
      slot,
      attrs: this.$attrs,
      slots: this.$slots,
      features: Features.RenderStrategy | Features.Static,
      visible: this.visible,
      name: "ListboxOptions"
    });
  },
  setup: function setup11() {
    var api = useListboxContext("ListboxOptions");
    var id2 = "headlessui-listbox-options-" + useId();
    var searchDebounce = ref(null);
    function handleKeyDown(event) {
      if (searchDebounce.value)
        clearTimeout(searchDebounce.value);
      switch (event.key) {
        case Keys.Space:
          if (api.searchQuery.value !== "") {
            event.preventDefault();
            event.stopPropagation();
            return api.search(event.key);
          }
        case Keys.Enter:
          event.preventDefault();
          event.stopPropagation();
          if (api.activeOptionIndex.value !== null) {
            var dataRef = api.options.value[api.activeOptionIndex.value].dataRef;
            api.select(dataRef.value);
          }
          api.closeListbox();
          nextTick(function() {
            var _dom13;
            return (_dom13 = dom(api.buttonRef)) == null ? void 0 : _dom13.focus({
              preventScroll: true
            });
          });
          break;
        case match(api.orientation.value, {
          vertical: Keys.ArrowDown,
          horizontal: Keys.ArrowRight
        }):
          event.preventDefault();
          event.stopPropagation();
          return api.goToOption(Focus$1.Next);
        case match(api.orientation.value, {
          vertical: Keys.ArrowUp,
          horizontal: Keys.ArrowLeft
        }):
          event.preventDefault();
          event.stopPropagation();
          return api.goToOption(Focus$1.Previous);
        case Keys.Home:
        case Keys.PageUp:
          event.preventDefault();
          event.stopPropagation();
          return api.goToOption(Focus$1.First);
        case Keys.End:
        case Keys.PageDown:
          event.preventDefault();
          event.stopPropagation();
          return api.goToOption(Focus$1.Last);
        case Keys.Escape:
          event.preventDefault();
          event.stopPropagation();
          api.closeListbox();
          nextTick(function() {
            var _dom14;
            return (_dom14 = dom(api.buttonRef)) == null ? void 0 : _dom14.focus({
              preventScroll: true
            });
          });
          break;
        case Keys.Tab:
          event.preventDefault();
          event.stopPropagation();
          break;
        default:
          if (event.key.length === 1) {
            api.search(event.key);
            searchDebounce.value = setTimeout(function() {
              return api.clearSearch();
            }, 350);
          }
          break;
      }
    }
    var usesOpenClosedState = useOpenClosed();
    var visible = computed(function() {
      if (usesOpenClosedState !== null) {
        return usesOpenClosedState.value === State.Open;
      }
      return api.listboxState.value === ListboxStates.Open;
    });
    return {
      id: id2,
      el: api.optionsRef,
      handleKeyDown,
      visible
    };
  }
});
var ListboxOption = /* @__PURE__ */ defineComponent({
  name: "ListboxOption",
  props: {
    as: {
      type: [Object, String],
      "default": "li"
    },
    value: {
      type: [Object, String, Number, Boolean]
    },
    disabled: {
      type: Boolean,
      "default": false
    }
  },
  setup: function setup12(props, _ref2) {
    var slots = _ref2.slots, attrs = _ref2.attrs;
    var api = useListboxContext("ListboxOption");
    var id2 = "headlessui-listbox-option-" + useId();
    var active = computed(function() {
      return api.activeOptionIndex.value !== null ? api.options.value[api.activeOptionIndex.value].id === id2 : false;
    });
    var selected = computed(function() {
      return toRaw(api.value.value) === toRaw(props.value);
    });
    var dataRef = ref({
      disabled: props.disabled,
      value: props.value,
      textValue: ""
    });
    onMounted(function() {
      var _document$getElementB, _document$getElementB2;
      var textValue = (_document$getElementB = document.getElementById(id2)) == null ? void 0 : (_document$getElementB2 = _document$getElementB.textContent) == null ? void 0 : _document$getElementB2.toLowerCase().trim();
      if (textValue !== void 0)
        dataRef.value.textValue = textValue;
    });
    onMounted(function() {
      return api.registerOption(id2, dataRef);
    });
    onUnmounted(function() {
      return api.unregisterOption(id2);
    });
    onMounted(function() {
      watch([api.listboxState, selected], function() {
        var _document$getElementB3;
        if (api.listboxState.value !== ListboxStates.Open)
          return;
        if (!selected.value)
          return;
        api.goToOption(Focus$1.Specific, id2);
        (_document$getElementB3 = document.getElementById(id2)) == null ? void 0 : _document$getElementB3.focus == null ? void 0 : _document$getElementB3.focus();
      }, {
        immediate: true
      });
    });
    watchEffect(function() {
      if (api.listboxState.value !== ListboxStates.Open)
        return;
      if (!active.value)
        return;
      nextTick(function() {
        var _document$getElementB4;
        return (_document$getElementB4 = document.getElementById(id2)) == null ? void 0 : _document$getElementB4.scrollIntoView == null ? void 0 : _document$getElementB4.scrollIntoView({
          block: "nearest"
        });
      });
    });
    function handleClick(event) {
      if (props.disabled)
        return event.preventDefault();
      api.select(props.value);
      api.closeListbox();
      nextTick(function() {
        var _dom15;
        return (_dom15 = dom(api.buttonRef)) == null ? void 0 : _dom15.focus({
          preventScroll: true
        });
      });
    }
    function handleFocus() {
      if (props.disabled)
        return api.goToOption(Focus$1.Nothing);
      api.goToOption(Focus$1.Specific, id2);
    }
    function handleMove() {
      if (props.disabled)
        return;
      if (active.value)
        return;
      api.goToOption(Focus$1.Specific, id2);
    }
    function handleLeave() {
      if (props.disabled)
        return;
      if (!active.value)
        return;
      api.goToOption(Focus$1.Nothing);
    }
    return function() {
      var disabled = props.disabled;
      var slot = {
        active: active.value,
        selected: selected.value,
        disabled
      };
      var propsWeControl = {
        id: id2,
        role: "option",
        tabIndex: disabled === true ? void 0 : -1,
        "aria-disabled": disabled === true ? true : void 0,
        "aria-selected": selected.value === true ? selected.value : void 0,
        disabled: void 0,
        onClick: handleClick,
        onFocus: handleFocus,
        onPointermove: handleMove,
        onMousemove: handleMove,
        onPointerleave: handleLeave,
        onMouseleave: handleLeave
      };
      return render$I({
        props: _extends$1({}, props, propsWeControl),
        slot,
        attrs,
        slots,
        name: "ListboxOption"
      });
    };
  }
});
function useTreeWalker(_ref) {
  var container = _ref.container, accept = _ref.accept, walk = _ref.walk, enabled = _ref.enabled;
  watchEffect(function() {
    var root2 = container.value;
    if (!root2)
      return;
    if (enabled !== void 0 && !enabled.value)
      return;
    var acceptNode = Object.assign(function(node) {
      return accept(node);
    }, {
      acceptNode: accept
    });
    var walker = document.createTreeWalker(root2, NodeFilter.SHOW_ELEMENT, acceptNode, false);
    while (walker.nextNode()) {
      walk(walker.currentNode);
    }
  });
}
var MenuStates;
(function(MenuStates2) {
  MenuStates2[MenuStates2["Open"] = 0] = "Open";
  MenuStates2[MenuStates2["Closed"] = 1] = "Closed";
})(MenuStates || (MenuStates = {}));
function nextFrame$1$1(cb) {
  requestAnimationFrame(function() {
    return requestAnimationFrame(cb);
  });
}
var MenuContext = /* @__PURE__ */ Symbol("MenuContext");
function useMenuContext(component) {
  var context2 = inject(MenuContext, null);
  if (context2 === null) {
    var err = new Error("<" + component + " /> is missing a parent <Menu /> component.");
    if (Error.captureStackTrace)
      Error.captureStackTrace(err, useMenuContext);
    throw err;
  }
  return context2;
}
var Menu$1 = /* @__PURE__ */ defineComponent({
  name: "Menu",
  props: {
    as: {
      type: [Object, String],
      "default": "template"
    }
  },
  setup: function setup13(props, _ref) {
    var slots = _ref.slots, attrs = _ref.attrs;
    var menuState = ref(MenuStates.Closed);
    var buttonRef = ref(null);
    var itemsRef = ref(null);
    var items = ref([]);
    var searchQuery = ref("");
    var activeItemIndex = ref(null);
    var api = {
      menuState,
      buttonRef,
      itemsRef,
      items,
      searchQuery,
      activeItemIndex,
      closeMenu: function closeMenu() {
        menuState.value = MenuStates.Closed;
        activeItemIndex.value = null;
      },
      openMenu: function openMenu() {
        return menuState.value = MenuStates.Open;
      },
      goToItem: function goToItem(focus, id2) {
        var nextActiveItemIndex = calculateActiveIndex(focus === Focus$1.Specific ? {
          focus: Focus$1.Specific,
          id: id2
        } : {
          focus
        }, {
          resolveItems: function resolveItems() {
            return items.value;
          },
          resolveActiveIndex: function resolveActiveIndex() {
            return activeItemIndex.value;
          },
          resolveId: function resolveId(item) {
            return item.id;
          },
          resolveDisabled: function resolveDisabled(item) {
            return item.dataRef.disabled;
          }
        });
        if (searchQuery.value === "" && activeItemIndex.value === nextActiveItemIndex)
          return;
        searchQuery.value = "";
        activeItemIndex.value = nextActiveItemIndex;
      },
      search: function search(value) {
        searchQuery.value += value.toLowerCase();
        var match3 = items.value.findIndex(function(item) {
          return item.dataRef.textValue.startsWith(searchQuery.value) && !item.dataRef.disabled;
        });
        if (match3 === -1 || match3 === activeItemIndex.value)
          return;
        activeItemIndex.value = match3;
      },
      clearSearch: function clearSearch() {
        searchQuery.value = "";
      },
      registerItem: function registerItem(id2, dataRef) {
        items.value.push({
          id: id2,
          dataRef
        });
      },
      unregisterItem: function unregisterItem(id2) {
        var nextItems = items.value.slice();
        var currentActiveItem = activeItemIndex.value !== null ? nextItems[activeItemIndex.value] : null;
        var idx = nextItems.findIndex(function(a2) {
          return a2.id === id2;
        });
        if (idx !== -1)
          nextItems.splice(idx, 1);
        items.value = nextItems;
        activeItemIndex.value = function() {
          if (idx === activeItemIndex.value)
            return null;
          if (currentActiveItem === null)
            return null;
          return nextItems.indexOf(currentActiveItem);
        }();
      }
    };
    useWindowEvent("mousedown", function(event) {
      var _dom, _dom2, _dom3;
      var target2 = event.target;
      var active = document.activeElement;
      if (menuState.value !== MenuStates.Open)
        return;
      if ((_dom = dom(buttonRef)) == null ? void 0 : _dom.contains(target2))
        return;
      if (!((_dom2 = dom(itemsRef)) == null ? void 0 : _dom2.contains(target2)))
        api.closeMenu();
      if (active !== document.body && (active == null ? void 0 : active.contains(target2)))
        return;
      if (!event.defaultPrevented)
        (_dom3 = dom(buttonRef)) == null ? void 0 : _dom3.focus({
          preventScroll: true
        });
    });
    provide(MenuContext, api);
    useOpenClosedProvider(computed(function() {
      var _match;
      return match(menuState.value, (_match = {}, _match[MenuStates.Open] = State.Open, _match[MenuStates.Closed] = State.Closed, _match));
    }));
    return function() {
      var slot = {
        open: menuState.value === MenuStates.Open
      };
      return render$I({
        props,
        slot,
        slots,
        attrs,
        name: "Menu"
      });
    };
  }
});
var MenuButton = /* @__PURE__ */ defineComponent({
  name: "MenuButton",
  props: {
    disabled: {
      type: Boolean,
      "default": false
    },
    as: {
      type: [Object, String],
      "default": "button"
    }
  },
  render: function render$18() {
    var _dom4;
    var api = useMenuContext("MenuButton");
    var slot = {
      open: api.menuState.value === MenuStates.Open
    };
    var propsWeControl = {
      ref: "el",
      id: this.id,
      type: "button",
      "aria-haspopup": true,
      "aria-controls": (_dom4 = dom(api.itemsRef)) == null ? void 0 : _dom4.id,
      "aria-expanded": this.$props.disabled ? void 0 : api.menuState.value === MenuStates.Open,
      onKeydown: this.handleKeyDown,
      onKeyup: this.handleKeyUp,
      onClick: this.handleClick
    };
    return render$I({
      props: _extends$1({}, this.$props, propsWeControl),
      slot,
      attrs: this.$attrs,
      slots: this.$slots,
      name: "MenuButton"
    });
  },
  setup: function setup14(props) {
    var api = useMenuContext("MenuButton");
    var id2 = "headlessui-menu-button-" + useId();
    function handleKeyDown(event) {
      switch (event.key) {
        case Keys.Space:
        case Keys.Enter:
        case Keys.ArrowDown:
          event.preventDefault();
          event.stopPropagation();
          api.openMenu();
          nextTick(function() {
            var _dom5;
            (_dom5 = dom(api.itemsRef)) == null ? void 0 : _dom5.focus({
              preventScroll: true
            });
            api.goToItem(Focus$1.First);
          });
          break;
        case Keys.ArrowUp:
          event.preventDefault();
          event.stopPropagation();
          api.openMenu();
          nextTick(function() {
            var _dom6;
            (_dom6 = dom(api.itemsRef)) == null ? void 0 : _dom6.focus({
              preventScroll: true
            });
            api.goToItem(Focus$1.Last);
          });
          break;
      }
    }
    function handleKeyUp(event) {
      switch (event.key) {
        case Keys.Space:
          event.preventDefault();
          break;
      }
    }
    function handleClick(event) {
      if (props.disabled)
        return;
      if (api.menuState.value === MenuStates.Open) {
        api.closeMenu();
        nextTick(function() {
          var _dom7;
          return (_dom7 = dom(api.buttonRef)) == null ? void 0 : _dom7.focus({
            preventScroll: true
          });
        });
      } else {
        event.preventDefault();
        event.stopPropagation();
        api.openMenu();
        nextFrame$1$1(function() {
          var _dom8;
          return (_dom8 = dom(api.itemsRef)) == null ? void 0 : _dom8.focus({
            preventScroll: true
          });
        });
      }
    }
    return {
      id: id2,
      el: api.buttonRef,
      handleKeyDown,
      handleKeyUp,
      handleClick
    };
  }
});
var MenuItems = /* @__PURE__ */ defineComponent({
  name: "MenuItems",
  props: {
    as: {
      type: [Object, String],
      "default": "div"
    },
    "static": {
      type: Boolean,
      "default": false
    },
    unmount: {
      type: Boolean,
      "default": true
    }
  },
  render: function render$19() {
    var _api$items$value$api$, _dom9;
    var api = useMenuContext("MenuItems");
    var slot = {
      open: api.menuState.value === MenuStates.Open
    };
    var propsWeControl = {
      "aria-activedescendant": api.activeItemIndex.value === null ? void 0 : (_api$items$value$api$ = api.items.value[api.activeItemIndex.value]) == null ? void 0 : _api$items$value$api$.id,
      "aria-labelledby": (_dom9 = dom(api.buttonRef)) == null ? void 0 : _dom9.id,
      id: this.id,
      onKeydown: this.handleKeyDown,
      onKeyup: this.handleKeyUp,
      role: "menu",
      tabIndex: 0,
      ref: "el"
    };
    var passThroughProps = this.$props;
    return render$I({
      props: _extends$1({}, passThroughProps, propsWeControl),
      slot,
      attrs: this.$attrs,
      slots: this.$slots,
      features: Features.RenderStrategy | Features.Static,
      visible: this.visible,
      name: "MenuItems"
    });
  },
  setup: function setup15() {
    var api = useMenuContext("MenuItems");
    var id2 = "headlessui-menu-items-" + useId();
    var searchDebounce = ref(null);
    useTreeWalker({
      container: computed(function() {
        return dom(api.itemsRef);
      }),
      enabled: computed(function() {
        return api.menuState.value === MenuStates.Open;
      }),
      accept: function accept(node) {
        if (node.getAttribute("role") === "menuitem")
          return NodeFilter.FILTER_REJECT;
        if (node.hasAttribute("role"))
          return NodeFilter.FILTER_SKIP;
        return NodeFilter.FILTER_ACCEPT;
      },
      walk: function walk(node) {
        node.setAttribute("role", "none");
      }
    });
    function handleKeyDown(event) {
      if (searchDebounce.value)
        clearTimeout(searchDebounce.value);
      switch (event.key) {
        case Keys.Space:
          if (api.searchQuery.value !== "") {
            event.preventDefault();
            event.stopPropagation();
            return api.search(event.key);
          }
        case Keys.Enter:
          event.preventDefault();
          event.stopPropagation();
          if (api.activeItemIndex.value !== null) {
            var _document$getElementB;
            var _id = api.items.value[api.activeItemIndex.value].id;
            (_document$getElementB = document.getElementById(_id)) == null ? void 0 : _document$getElementB.click();
          }
          api.closeMenu();
          nextTick(function() {
            var _dom10;
            return (_dom10 = dom(api.buttonRef)) == null ? void 0 : _dom10.focus({
              preventScroll: true
            });
          });
          break;
        case Keys.ArrowDown:
          event.preventDefault();
          event.stopPropagation();
          return api.goToItem(Focus$1.Next);
        case Keys.ArrowUp:
          event.preventDefault();
          event.stopPropagation();
          return api.goToItem(Focus$1.Previous);
        case Keys.Home:
        case Keys.PageUp:
          event.preventDefault();
          event.stopPropagation();
          return api.goToItem(Focus$1.First);
        case Keys.End:
        case Keys.PageDown:
          event.preventDefault();
          event.stopPropagation();
          return api.goToItem(Focus$1.Last);
        case Keys.Escape:
          event.preventDefault();
          event.stopPropagation();
          api.closeMenu();
          nextTick(function() {
            var _dom11;
            return (_dom11 = dom(api.buttonRef)) == null ? void 0 : _dom11.focus({
              preventScroll: true
            });
          });
          break;
        case Keys.Tab:
          event.preventDefault();
          event.stopPropagation();
          break;
        default:
          if (event.key.length === 1) {
            api.search(event.key);
            searchDebounce.value = setTimeout(function() {
              return api.clearSearch();
            }, 350);
          }
          break;
      }
    }
    function handleKeyUp(event) {
      switch (event.key) {
        case Keys.Space:
          event.preventDefault();
          break;
      }
    }
    var usesOpenClosedState = useOpenClosed();
    var visible = computed(function() {
      if (usesOpenClosedState !== null) {
        return usesOpenClosedState.value === State.Open;
      }
      return api.menuState.value === MenuStates.Open;
    });
    return {
      id: id2,
      el: api.itemsRef,
      handleKeyDown,
      handleKeyUp,
      visible
    };
  }
});
var MenuItem = /* @__PURE__ */ defineComponent({
  name: "MenuItem",
  props: {
    as: {
      type: [Object, String],
      "default": "template"
    },
    disabled: {
      type: Boolean,
      "default": false
    }
  },
  setup: function setup16(props, _ref2) {
    var slots = _ref2.slots, attrs = _ref2.attrs;
    var api = useMenuContext("MenuItem");
    var id2 = "headlessui-menu-item-" + useId();
    var active = computed(function() {
      return api.activeItemIndex.value !== null ? api.items.value[api.activeItemIndex.value].id === id2 : false;
    });
    var dataRef = ref({
      disabled: props.disabled,
      textValue: ""
    });
    onMounted(function() {
      var _document$getElementB2, _document$getElementB3;
      var textValue = (_document$getElementB2 = document.getElementById(id2)) == null ? void 0 : (_document$getElementB3 = _document$getElementB2.textContent) == null ? void 0 : _document$getElementB3.toLowerCase().trim();
      if (textValue !== void 0)
        dataRef.value.textValue = textValue;
    });
    onMounted(function() {
      return api.registerItem(id2, dataRef);
    });
    onUnmounted(function() {
      return api.unregisterItem(id2);
    });
    watchEffect(function() {
      if (api.menuState.value !== MenuStates.Open)
        return;
      if (!active.value)
        return;
      nextTick(function() {
        var _document$getElementB4;
        return (_document$getElementB4 = document.getElementById(id2)) == null ? void 0 : _document$getElementB4.scrollIntoView == null ? void 0 : _document$getElementB4.scrollIntoView({
          block: "nearest"
        });
      });
    });
    function handleClick(event) {
      if (props.disabled)
        return event.preventDefault();
      api.closeMenu();
      nextTick(function() {
        var _dom12;
        return (_dom12 = dom(api.buttonRef)) == null ? void 0 : _dom12.focus({
          preventScroll: true
        });
      });
    }
    function handleFocus() {
      if (props.disabled)
        return api.goToItem(Focus$1.Nothing);
      api.goToItem(Focus$1.Specific, id2);
    }
    function handleMove() {
      if (props.disabled)
        return;
      if (active.value)
        return;
      api.goToItem(Focus$1.Specific, id2);
    }
    function handleLeave() {
      if (props.disabled)
        return;
      if (!active.value)
        return;
      api.goToItem(Focus$1.Nothing);
    }
    return function() {
      var disabled = props.disabled;
      var slot = {
        active: active.value,
        disabled
      };
      var propsWeControl = {
        id: id2,
        role: "menuitem",
        tabIndex: disabled === true ? void 0 : -1,
        "aria-disabled": disabled === true ? true : void 0,
        onClick: handleClick,
        onFocus: handleFocus,
        onPointermove: handleMove,
        onMousemove: handleMove,
        onPointerleave: handleLeave,
        onMouseleave: handleLeave
      };
      return render$I({
        props: _extends$1({}, props, propsWeControl),
        slot,
        attrs,
        slots,
        name: "MenuItem"
      });
    };
  }
});
var PopoverStates;
(function(PopoverStates2) {
  PopoverStates2[PopoverStates2["Open"] = 0] = "Open";
  PopoverStates2[PopoverStates2["Closed"] = 1] = "Closed";
})(PopoverStates || (PopoverStates = {}));
var PopoverContext = /* @__PURE__ */ Symbol("PopoverContext");
function usePopoverContext(component) {
  var context2 = inject(PopoverContext, null);
  if (context2 === null) {
    var err = new Error("<" + component + " /> is missing a parent <" + Popover.name + " /> component.");
    if (Error.captureStackTrace)
      Error.captureStackTrace(err, usePopoverContext);
    throw err;
  }
  return context2;
}
var PopoverGroupContext = /* @__PURE__ */ Symbol("PopoverGroupContext");
function usePopoverGroupContext() {
  return inject(PopoverGroupContext, null);
}
var PopoverPanelContext = /* @__PURE__ */ Symbol("PopoverPanelContext");
function usePopoverPanelContext() {
  return inject(PopoverPanelContext, null);
}
var Popover = /* @__PURE__ */ defineComponent({
  name: "Popover",
  props: {
    as: {
      type: [Object, String],
      "default": "div"
    }
  },
  setup: function setup17(props, _ref) {
    var slots = _ref.slots, attrs = _ref.attrs;
    var buttonId = "headlessui-popover-button-" + useId();
    var panelId = "headlessui-popover-panel-" + useId();
    var popoverState = ref(PopoverStates.Closed);
    var button = ref(null);
    var panel = ref(null);
    var api = {
      popoverState,
      buttonId,
      panelId,
      panel,
      button,
      togglePopover: function togglePopover() {
        var _match;
        popoverState.value = match(popoverState.value, (_match = {}, _match[PopoverStates.Open] = PopoverStates.Closed, _match[PopoverStates.Closed] = PopoverStates.Open, _match));
      },
      closePopover: function closePopover() {
        if (popoverState.value === PopoverStates.Closed)
          return;
        popoverState.value = PopoverStates.Closed;
      },
      close: function close(focusableElement) {
        api.closePopover();
        var restoreElement = function() {
          if (!focusableElement)
            return dom(api.button);
          if (focusableElement instanceof HTMLElement)
            return focusableElement;
          if (focusableElement.value instanceof HTMLElement)
            return dom(focusableElement);
          return dom(api.button);
        }();
        restoreElement == null ? void 0 : restoreElement.focus();
      }
    };
    provide(PopoverContext, api);
    useOpenClosedProvider(computed(function() {
      var _match2;
      return match(popoverState.value, (_match2 = {}, _match2[PopoverStates.Open] = State.Open, _match2[PopoverStates.Closed] = State.Closed, _match2));
    }));
    var registerBag = {
      buttonId,
      panelId,
      close: function close() {
        api.closePopover();
      }
    };
    var groupContext = usePopoverGroupContext();
    var registerPopover = groupContext == null ? void 0 : groupContext.registerPopover;
    function isFocusWithinPopoverGroup() {
      var _groupContext$isFocus, _dom, _dom2;
      return (_groupContext$isFocus = groupContext == null ? void 0 : groupContext.isFocusWithinPopoverGroup()) != null ? _groupContext$isFocus : ((_dom = dom(button)) == null ? void 0 : _dom.contains(document.activeElement)) || ((_dom2 = dom(panel)) == null ? void 0 : _dom2.contains(document.activeElement));
    }
    watchEffect(function() {
      return registerPopover == null ? void 0 : registerPopover(registerBag);
    });
    useWindowEvent("focus", function() {
      if (popoverState.value !== PopoverStates.Open)
        return;
      if (isFocusWithinPopoverGroup())
        return;
      if (!button)
        return;
      if (!panel)
        return;
      api.closePopover();
    }, true);
    useWindowEvent("mousedown", function(event) {
      var _dom3, _dom4;
      var target2 = event.target;
      if (popoverState.value !== PopoverStates.Open)
        return;
      if ((_dom3 = dom(button)) == null ? void 0 : _dom3.contains(target2))
        return;
      if ((_dom4 = dom(panel)) == null ? void 0 : _dom4.contains(target2))
        return;
      api.closePopover();
      if (!isFocusableElement(target2, FocusableMode.Loose)) {
        var _dom5;
        event.preventDefault();
        (_dom5 = dom(button)) == null ? void 0 : _dom5.focus();
      }
    });
    return function() {
      var slot = {
        open: popoverState.value === PopoverStates.Open,
        close: api.close
      };
      return render$I({
        props,
        slot,
        slots,
        attrs,
        name: "Popover"
      });
    };
  }
});
var PopoverButton = /* @__PURE__ */ defineComponent({
  name: "PopoverButton",
  props: {
    as: {
      type: [Object, String],
      "default": "button"
    },
    disabled: {
      type: [Boolean],
      "default": false
    }
  },
  render: function render$110() {
    var api = usePopoverContext("PopoverButton");
    var slot = {
      open: api.popoverState.value === PopoverStates.Open
    };
    var propsWeControl = this.isWithinPanel ? {
      type: "button",
      onKeydown: this.handleKeyDown,
      onClick: this.handleClick
    } : {
      ref: "el",
      id: api.buttonId,
      type: "button",
      "aria-expanded": this.$props.disabled ? void 0 : api.popoverState.value === PopoverStates.Open,
      "aria-controls": dom(api.panel) ? api.panelId : void 0,
      disabled: this.$props.disabled ? true : void 0,
      onKeydown: this.handleKeyDown,
      onKeyup: this.handleKeyUp,
      onClick: this.handleClick
    };
    return render$I({
      props: _extends$1({}, this.$props, propsWeControl),
      slot,
      attrs: this.$attrs,
      slots: this.$slots,
      name: "PopoverButton"
    });
  },
  setup: function setup18(props) {
    var api = usePopoverContext("PopoverButton");
    var groupContext = usePopoverGroupContext();
    var closeOthers = groupContext == null ? void 0 : groupContext.closeOthers;
    var panelContext = usePopoverPanelContext();
    var isWithinPanel = panelContext === null ? false : panelContext === api.panelId;
    var activeElementRef = ref(null);
    var previousActiveElementRef = ref(typeof window === "undefined" ? null : document.activeElement);
    useWindowEvent("focus", function() {
      previousActiveElementRef.value = activeElementRef.value;
      activeElementRef.value = document.activeElement;
    }, true);
    return {
      isWithinPanel,
      el: isWithinPanel ? null : api.button,
      handleKeyDown: function handleKeyDown(event) {
        var _dom6, _dom7;
        if (isWithinPanel) {
          if (api.popoverState.value === PopoverStates.Closed)
            return;
          switch (event.key) {
            case Keys.Space:
            case Keys.Enter:
              event.preventDefault();
              event.stopPropagation();
              api.closePopover();
              (_dom6 = dom(api.button)) == null ? void 0 : _dom6.focus();
              break;
          }
        } else {
          switch (event.key) {
            case Keys.Space:
            case Keys.Enter:
              event.preventDefault();
              event.stopPropagation();
              if (api.popoverState.value === PopoverStates.Closed)
                closeOthers == null ? void 0 : closeOthers(api.buttonId);
              api.togglePopover();
              break;
            case Keys.Escape:
              if (api.popoverState.value !== PopoverStates.Open)
                return closeOthers == null ? void 0 : closeOthers(api.buttonId);
              if (!dom(api.button))
                return;
              if (!((_dom7 = dom(api.button)) == null ? void 0 : _dom7.contains(document.activeElement)))
                return;
              api.closePopover();
              break;
            case Keys.Tab:
              if (api.popoverState.value !== PopoverStates.Open)
                return;
              if (!api.panel)
                return;
              if (!api.button)
                return;
              if (event.shiftKey) {
                var _dom8, _dom9;
                if (!previousActiveElementRef.value)
                  return;
                if ((_dom8 = dom(api.button)) == null ? void 0 : _dom8.contains(previousActiveElementRef.value))
                  return;
                if ((_dom9 = dom(api.panel)) == null ? void 0 : _dom9.contains(previousActiveElementRef.value))
                  return;
                var focusableElements = getFocusableElements();
                var previousIdx = focusableElements.indexOf(previousActiveElementRef.value);
                var buttonIdx = focusableElements.indexOf(dom(api.button));
                if (buttonIdx > previousIdx)
                  return;
                event.preventDefault();
                event.stopPropagation();
                focusIn(dom(api.panel), Focus.Last);
              } else {
                event.preventDefault();
                event.stopPropagation();
                focusIn(dom(api.panel), Focus.First);
              }
              break;
          }
        }
      },
      handleKeyUp: function handleKeyUp(event) {
        var _dom10, _dom11;
        if (isWithinPanel)
          return;
        if (event.key === Keys.Space) {
          event.preventDefault();
        }
        if (api.popoverState.value !== PopoverStates.Open)
          return;
        if (!api.panel)
          return;
        if (!api.button)
          return;
        switch (event.key) {
          case Keys.Tab:
            if (!previousActiveElementRef.value)
              return;
            if ((_dom10 = dom(api.button)) == null ? void 0 : _dom10.contains(previousActiveElementRef.value))
              return;
            if ((_dom11 = dom(api.panel)) == null ? void 0 : _dom11.contains(previousActiveElementRef.value))
              return;
            var focusableElements = getFocusableElements();
            var previousIdx = focusableElements.indexOf(previousActiveElementRef.value);
            var buttonIdx = focusableElements.indexOf(dom(api.button));
            if (buttonIdx > previousIdx)
              return;
            event.preventDefault();
            event.stopPropagation();
            focusIn(dom(api.panel), Focus.Last);
            break;
        }
      },
      handleClick: function handleClick() {
        if (props.disabled)
          return;
        if (isWithinPanel) {
          var _dom12;
          api.closePopover();
          (_dom12 = dom(api.button)) == null ? void 0 : _dom12.focus();
        } else {
          var _dom13;
          if (api.popoverState.value === PopoverStates.Closed)
            closeOthers == null ? void 0 : closeOthers(api.buttonId);
          (_dom13 = dom(api.button)) == null ? void 0 : _dom13.focus();
          api.togglePopover();
        }
      },
      handleFocus: function handleFocus() {
      }
    };
  }
});
var PopoverPanel = /* @__PURE__ */ defineComponent({
  name: "PopoverPanel",
  props: {
    as: {
      type: [Object, String],
      "default": "div"
    },
    "static": {
      type: Boolean,
      "default": false
    },
    unmount: {
      type: Boolean,
      "default": true
    },
    focus: {
      type: Boolean,
      "default": false
    }
  },
  render: function render$111() {
    var api = usePopoverContext("PopoverPanel");
    var slot = {
      open: api.popoverState.value === PopoverStates.Open,
      close: api.close
    };
    var propsWeControl = {
      ref: "el",
      id: this.id,
      onKeydown: this.handleKeyDown
    };
    return render$I({
      props: _extends$1({}, this.$props, propsWeControl),
      slot,
      attrs: this.$attrs,
      slots: this.$slots,
      features: Features.RenderStrategy | Features.Static,
      visible: this.visible,
      name: "PopoverPanel"
    });
  },
  setup: function setup19(props) {
    var focus = props.focus;
    var api = usePopoverContext("PopoverPanel");
    provide(PopoverPanelContext, api.panelId);
    onUnmounted(function() {
      api.panel.value = null;
    });
    watchEffect(function() {
      var _dom14;
      if (!focus)
        return;
      if (api.popoverState.value !== PopoverStates.Open)
        return;
      if (!api.panel)
        return;
      var activeElement = document.activeElement;
      if ((_dom14 = dom(api.panel)) == null ? void 0 : _dom14.contains(activeElement))
        return;
      focusIn(dom(api.panel), Focus.First);
    });
    useWindowEvent("keydown", function(event) {
      var _dom15;
      if (api.popoverState.value !== PopoverStates.Open)
        return;
      if (!dom(api.panel))
        return;
      if (event.key !== Keys.Tab)
        return;
      if (!document.activeElement)
        return;
      if (!((_dom15 = dom(api.panel)) == null ? void 0 : _dom15.contains(document.activeElement)))
        return;
      event.preventDefault();
      var result = focusIn(dom(api.panel), event.shiftKey ? Focus.Previous : Focus.Next);
      if (result === FocusResult.Underflow) {
        var _dom16;
        return (_dom16 = dom(api.button)) == null ? void 0 : _dom16.focus();
      } else if (result === FocusResult.Overflow) {
        if (!dom(api.button))
          return;
        var elements = getFocusableElements();
        var buttonIdx = elements.indexOf(dom(api.button));
        var nextElements = elements.splice(buttonIdx + 1).filter(function(element) {
          var _dom17;
          return !((_dom17 = dom(api.panel)) == null ? void 0 : _dom17.contains(element));
        });
        if (focusIn(nextElements, Focus.First) === FocusResult.Error) {
          focusIn(document.body, Focus.First);
        }
      }
    });
    useWindowEvent("focus", function() {
      var _dom18;
      if (!focus)
        return;
      if (api.popoverState.value !== PopoverStates.Open)
        return;
      if (!dom(api.panel))
        return;
      if ((_dom18 = dom(api.panel)) == null ? void 0 : _dom18.contains(document.activeElement))
        return;
      api.closePopover();
    }, true);
    var usesOpenClosedState = useOpenClosed();
    var visible = computed(function() {
      if (usesOpenClosedState !== null) {
        return usesOpenClosedState.value === State.Open;
      }
      return api.popoverState.value === PopoverStates.Open;
    });
    return {
      id: api.panelId,
      el: api.panel,
      handleKeyDown: function handleKeyDown(event) {
        var _dom19, _dom20;
        switch (event.key) {
          case Keys.Escape:
            if (api.popoverState.value !== PopoverStates.Open)
              return;
            if (!dom(api.panel))
              return;
            if (!((_dom19 = dom(api.panel)) == null ? void 0 : _dom19.contains(document.activeElement)))
              return;
            event.preventDefault();
            api.closePopover();
            (_dom20 = dom(api.button)) == null ? void 0 : _dom20.focus();
            break;
        }
      },
      visible
    };
  }
});
var OptionState;
(function(OptionState2) {
  OptionState2[OptionState2["Empty"] = 1] = "Empty";
  OptionState2[OptionState2["Active"] = 2] = "Active";
})(OptionState || (OptionState = {}));
var Reason;
(function(Reason2) {
  Reason2["Finished"] = "finished";
  Reason2["Cancelled"] = "cancelled";
})(Reason || (Reason = {}));
var TreeStates;
(function(TreeStates2) {
  TreeStates2["Visible"] = "visible";
  TreeStates2["Hidden"] = "hidden";
})(TreeStates || (TreeStates = {}));
Features.RenderStrategy;
const _hoisted_1$1j = { class: "bg-white rounded-t flex border-b-[1px] border-b-gray-100 min-h-[56px] px-[24px] top-0 z-1 sticky items-center justify-between" };
const _hoisted_2$1c = /* @__PURE__ */ createBaseVNode("span", { class: "border-t border-t-gray-100 h-[6px] mx-[8px] w-[32px] inline-block" }, null, -1);
const _hoisted_3$12 = { class: "group-hocus:underline" };
const _hoisted_4$F = ["aria-label"];
const _sfc_main$W = /* @__PURE__ */ defineComponent({
  __name: "StandardModalHeader",
  props: {
    helpLink: null,
    helpText: null,
    noHelp: { type: Boolean, default: false }
  },
  emits: ["close"],
  setup(__props) {
    const { t: t2 } = useI18n();
    return (_ctx, _cache) => {
      const _component_i_cy_circle_bg_question_mark_x16 = __unplugin_components_0$9;
      const _component_i_cy_delete_x12 = __unplugin_components_0$a;
      return openBlock(), createElementBlock("div", _hoisted_1$1j, [
        createBaseVNode("div", null, [
          createVNode(unref(DialogTitle), { class: "text-gray-900 text-[18px] inline-block" }, {
            default: withCtx(() => [
              renderSlot(_ctx.$slots, "default")
            ]),
            _: 3
          }),
          !__props.noHelp ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
            _hoisted_2$1c,
            createVNode(_sfc_main$11, {
              href: __props.helpLink,
              class: "outline-transparent text-indigo-500 text-[16px] group"
            }, {
              default: withCtx(() => [
                createBaseVNode("span", _hoisted_3$12, toDisplayString$1(__props.helpText), 1)
              ]),
              _: 1
            }, 8, ["href"]),
            createVNode(_component_i_cy_circle_bg_question_mark_x16, { class: "ml-[8px] -top-[2px] relative inline-block icon-dark-indigo-500 icon-light-indigo-100" })
          ], 64)) : createCommentVNode("", true)
        ]),
        createBaseVNode("button", {
          "aria-label": unref(t2)(`actions.close`),
          class: "border-transparent rounded-full outline-none border group",
          onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("close"))
        }, [
          createVNode(_component_i_cy_delete_x12, { class: "h-[12px] w-[12px] icon-dark-gray-400 group-hocus:icon-dark-indigo-400 children:transition-all" })
        ], 8, _hoisted_4$F)
      ]);
    };
  }
});
function getBasePlacement$1(placement) {
  return placement.split("-")[0];
}
function getAlignment(placement) {
  return placement.split("-")[1];
}
function getMainAxisFromPlacement$1(placement) {
  return ["top", "bottom"].includes(getBasePlacement$1(placement)) ? "x" : "y";
}
function getLengthFromAxis(axis) {
  return axis === "y" ? "height" : "width";
}
function computeCoordsFromPlacement(_ref) {
  let {
    reference: reference3,
    floating,
    placement
  } = _ref;
  const commonX = reference3.x + reference3.width / 2 - floating.width / 2;
  const commonY = reference3.y + reference3.height / 2 - floating.height / 2;
  let coords;
  switch (getBasePlacement$1(placement)) {
    case "top":
      coords = {
        x: commonX,
        y: reference3.y - floating.height
      };
      break;
    case "bottom":
      coords = {
        x: commonX,
        y: reference3.y + reference3.height
      };
      break;
    case "right":
      coords = {
        x: reference3.x + reference3.width,
        y: commonY
      };
      break;
    case "left":
      coords = {
        x: reference3.x - floating.width,
        y: commonY
      };
      break;
    default:
      coords = {
        x: reference3.x,
        y: reference3.y
      };
  }
  const mainAxis = getMainAxisFromPlacement$1(placement);
  const length2 = getLengthFromAxis(mainAxis);
  switch (getAlignment(placement)) {
    case "start":
      coords[mainAxis] = coords[mainAxis] - (reference3[length2] / 2 - floating[length2] / 2);
      break;
    case "end":
      coords[mainAxis] = coords[mainAxis] + (reference3[length2] / 2 - floating[length2] / 2);
      break;
  }
  return coords;
}
const computePosition$1 = async (reference3, floating, config2) => {
  const {
    placement = "bottom",
    strategy = "absolute",
    middleware = [],
    platform: platform2
  } = config2;
  let rects = await platform2.getElementRects({
    reference: reference3,
    floating,
    strategy
  });
  let {
    x: x2,
    y: y2
  } = computeCoordsFromPlacement({
    ...rects,
    placement
  });
  let statefulPlacement = placement;
  let middlewareData = {};
  for (let i = 0; i < middleware.length; i++) {
    const {
      name: name2,
      fn: fn2
    } = middleware[i];
    const {
      x: nextX,
      y: nextY,
      data,
      reset
    } = await fn2({
      x: x2,
      y: y2,
      initialPlacement: placement,
      placement: statefulPlacement,
      strategy,
      middlewareData,
      rects,
      platform: platform2,
      elements: {
        reference: reference3,
        floating
      }
    });
    x2 = nextX != null ? nextX : x2;
    y2 = nextY != null ? nextY : y2;
    middlewareData = {
      ...middlewareData,
      [name2]: data != null ? data : {}
    };
    if (reset) {
      if (typeof reset === "object") {
        if (reset.placement) {
          statefulPlacement = reset.placement;
        }
        if (reset.rects) {
          rects = reset.rects === true ? await platform2.getElementRects({
            reference: reference3,
            floating,
            strategy
          }) : reset.rects;
        }
        ({
          x: x2,
          y: y2
        } = computeCoordsFromPlacement({
          ...rects,
          placement: statefulPlacement
        }));
      }
      i = -1;
      continue;
    }
  }
  return {
    x: x2,
    y: y2,
    placement: statefulPlacement,
    strategy,
    middlewareData
  };
};
function expandPaddingObject(padding) {
  return {
    top: 0,
    right: 0,
    bottom: 0,
    left: 0,
    ...padding
  };
}
function getSideObjectFromPadding(padding) {
  return typeof padding !== "number" ? expandPaddingObject(padding) : {
    top: padding,
    right: padding,
    bottom: padding,
    left: padding
  };
}
function rectToClientRect$1(rect2) {
  return {
    ...rect2,
    top: rect2.y,
    left: rect2.x,
    right: rect2.x + rect2.width,
    bottom: rect2.y + rect2.height
  };
}
async function detectOverflow$1(middlewareArguments, options2) {
  if (options2 === void 0) {
    options2 = {};
  }
  const {
    x: x2,
    y: y2,
    platform: platform2,
    rects,
    elements,
    strategy
  } = middlewareArguments;
  const {
    boundary = "clippingParents",
    rootBoundary = "viewport",
    elementContext = "floating",
    altBoundary = false,
    padding = 0
  } = options2;
  const paddingObject = getSideObjectFromPadding(padding);
  const altContext = elementContext === "floating" ? "reference" : "floating";
  const element = elements[altBoundary ? altContext : elementContext];
  const clippingClientRect = await platform2.getClippingClientRect({
    element: await platform2.isElement(element) ? element : element.contextElement || await platform2.getDocumentElement({
      element: elements.floating
    }),
    boundary,
    rootBoundary
  });
  const elementClientRect = rectToClientRect$1(await platform2.convertOffsetParentRelativeRectToViewportRelativeRect({
    rect: elementContext === "floating" ? {
      ...rects.floating,
      x: x2,
      y: y2
    } : rects.reference,
    offsetParent: await platform2.getOffsetParent({
      element: elements.floating
    }),
    strategy
  }));
  return {
    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
    right: elementClientRect.right - clippingClientRect.right + paddingObject.right
  };
}
const min$2 = Math.min;
const max$2 = Math.max;
function within$1(min$12, value, max$12) {
  return max$2(min$12, min$2(value, max$12));
}
const arrow$2 = (options2) => ({
  name: "arrow",
  options: options2,
  async fn(middlewareArguments) {
    const {
      element,
      padding = 0
    } = options2 != null ? options2 : {};
    const {
      x: x2,
      y: y2,
      placement,
      rects,
      platform: platform2
    } = middlewareArguments;
    if (element == null) {
      return {};
    }
    const paddingObject = getSideObjectFromPadding(padding);
    const coords = {
      x: x2,
      y: y2
    };
    const basePlacement = getBasePlacement$1(placement);
    const axis = getMainAxisFromPlacement$1(basePlacement);
    const length2 = getLengthFromAxis(axis);
    const arrowDimensions = await platform2.getDimensions({
      element
    });
    const minProp = axis === "y" ? "top" : "left";
    const maxProp = axis === "y" ? "bottom" : "right";
    const endDiff = rects.reference[length2] + rects.reference[axis] - coords[axis] - rects.floating[length2];
    const startDiff = coords[axis] - rects.reference[axis];
    const arrowOffsetParent = await platform2.getOffsetParent({
      element
    });
    const clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
    const centerToReference = endDiff / 2 - startDiff / 2;
    const min2 = paddingObject[minProp];
    const max2 = clientSize - arrowDimensions[length2] - paddingObject[maxProp];
    const center = clientSize / 2 - arrowDimensions[length2] / 2 + centerToReference;
    const offset2 = within$1(min2, center, max2);
    return {
      data: {
        [axis]: offset2,
        centerOffset: center - offset2
      }
    };
  }
});
const hash$1$1 = {
  left: "right",
  right: "left",
  bottom: "top",
  top: "bottom"
};
function getOppositePlacement$1(placement) {
  return placement.replace(/left|right|bottom|top/g, (matched) => hash$1$1[matched]);
}
function getAlignmentSides(placement, rects) {
  const isStart = getAlignment(placement) === "start";
  const mainAxis = getMainAxisFromPlacement$1(placement);
  const length2 = getLengthFromAxis(mainAxis);
  let mainAlignmentSide = mainAxis === "x" ? isStart ? "right" : "left" : isStart ? "bottom" : "top";
  if (rects.reference[length2] > rects.floating[length2]) {
    mainAlignmentSide = getOppositePlacement$1(mainAlignmentSide);
  }
  return {
    main: mainAlignmentSide,
    cross: getOppositePlacement$1(mainAlignmentSide)
  };
}
const hash$2 = {
  start: "end",
  end: "start"
};
function getOppositeAlignmentPlacement(placement) {
  return placement.replace(/start|end/g, (matched) => hash$2[matched]);
}
const basePlacements$1 = ["top", "right", "bottom", "left"];
const allPlacements = /* @__PURE__ */ basePlacements$1.reduce((acc, basePlacement) => acc.concat(basePlacement, basePlacement + "-start", basePlacement + "-end"), []);
function getPlacementList(alignment, autoAlignment, allowedPlacements) {
  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter((placement) => getAlignment(placement) === alignment), ...allowedPlacements.filter((placement) => getAlignment(placement) !== alignment)] : allowedPlacements.filter((placement) => getBasePlacement$1(placement) === placement);
  return allowedPlacementsSortedByAlignment.filter((placement) => {
    if (alignment) {
      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);
    }
    return true;
  });
}
const autoPlacement = function(options2) {
  if (options2 === void 0) {
    options2 = {};
  }
  return {
    name: "autoPlacement",
    options: options2,
    async fn(middlewareArguments) {
      var _middlewareData$autoP, _middlewareData$autoP2, _middlewareData$autoP3, _middlewareData$autoP4, _middlewareData$autoP5, _placementsSortedByLe;
      const {
        x: x2,
        y: y2,
        rects,
        middlewareData,
        placement
      } = middlewareArguments;
      const {
        alignment = null,
        allowedPlacements = allPlacements,
        autoAlignment = true,
        ...detectOverflowOptions
      } = options2;
      if ((_middlewareData$autoP = middlewareData.autoPlacement) != null && _middlewareData$autoP.skip) {
        return {};
      }
      const placements2 = getPlacementList(alignment, autoAlignment, allowedPlacements);
      const overflow = await detectOverflow$1(middlewareArguments, detectOverflowOptions);
      const currentIndex = (_middlewareData$autoP2 = (_middlewareData$autoP3 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP3.index) != null ? _middlewareData$autoP2 : 0;
      const currentPlacement = placements2[currentIndex];
      const {
        main: main2,
        cross: cross2
      } = getAlignmentSides(currentPlacement, rects);
      if (placement !== currentPlacement) {
        return {
          x: x2,
          y: y2,
          reset: {
            placement: placements2[0]
          }
        };
      }
      const currentOverflows = [overflow[getBasePlacement$1(currentPlacement)], overflow[main2], overflow[cross2]];
      const allOverflows = [...(_middlewareData$autoP4 = (_middlewareData$autoP5 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP5.overflows) != null ? _middlewareData$autoP4 : [], {
        placement: currentPlacement,
        overflows: currentOverflows
      }];
      const nextPlacement = placements2[currentIndex + 1];
      if (nextPlacement) {
        return {
          data: {
            index: currentIndex + 1,
            overflows: allOverflows
          },
          reset: {
            placement: nextPlacement
          }
        };
      }
      const placementsSortedByLeastOverflow = allOverflows.slice().sort((a2, b2) => a2.overflows[0] - b2.overflows[0]);
      const placementThatFitsOnAllSides = (_placementsSortedByLe = placementsSortedByLeastOverflow.find((_ref) => {
        let {
          overflows
        } = _ref;
        return overflows.every((overflow2) => overflow2 <= 0);
      })) == null ? void 0 : _placementsSortedByLe.placement;
      return {
        data: {
          skip: true
        },
        reset: {
          placement: placementThatFitsOnAllSides != null ? placementThatFitsOnAllSides : placementsSortedByLeastOverflow[0].placement
        }
      };
    }
  };
};
function getExpandedPlacements(placement) {
  const oppositePlacement = getOppositePlacement$1(placement);
  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
}
const flip$2 = function(options2) {
  if (options2 === void 0) {
    options2 = {};
  }
  return {
    name: "flip",
    options: options2,
    async fn(middlewareArguments) {
      var _middlewareData$flip, _middlewareData$flip2;
      const {
        placement,
        middlewareData,
        rects,
        initialPlacement
      } = middlewareArguments;
      if ((_middlewareData$flip = middlewareData.flip) != null && _middlewareData$flip.skip) {
        return {};
      }
      const {
        mainAxis: checkMainAxis = true,
        crossAxis: checkCrossAxis = true,
        fallbackPlacements: specifiedFallbackPlacements,
        fallbackStrategy = "bestFit",
        flipAlignment = true,
        ...detectOverflowOptions
      } = options2;
      const basePlacement = getBasePlacement$1(placement);
      const isBasePlacement = basePlacement === initialPlacement;
      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement$1(initialPlacement)] : getExpandedPlacements(initialPlacement));
      const placements2 = [initialPlacement, ...fallbackPlacements];
      const overflow = await detectOverflow$1(middlewareArguments, detectOverflowOptions);
      const overflows = [];
      let overflowsData = ((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.overflows) || [];
      if (checkMainAxis) {
        overflows.push(overflow[basePlacement]);
      }
      if (checkCrossAxis) {
        const {
          main: main2,
          cross: cross2
        } = getAlignmentSides(placement, rects);
        overflows.push(overflow[main2], overflow[cross2]);
      }
      overflowsData = [...overflowsData, {
        placement,
        overflows
      }];
      if (!overflows.every((side) => side <= 0)) {
        var _middlewareData$flip$, _middlewareData$flip3;
        const nextIndex = ((_middlewareData$flip$ = (_middlewareData$flip3 = middlewareData.flip) == null ? void 0 : _middlewareData$flip3.index) != null ? _middlewareData$flip$ : 0) + 1;
        const nextPlacement = placements2[nextIndex];
        if (nextPlacement) {
          return {
            data: {
              index: nextIndex,
              overflows: overflowsData
            },
            reset: {
              placement: nextPlacement
            }
          };
        }
        let resetPlacement = "bottom";
        switch (fallbackStrategy) {
          case "bestFit": {
            var _overflowsData$slice$;
            const placement2 = (_overflowsData$slice$ = overflowsData.slice().sort((a2, b2) => a2.overflows.filter((overflow2) => overflow2 > 0).reduce((acc, overflow2) => acc + overflow2, 0) - b2.overflows.filter((overflow2) => overflow2 > 0).reduce((acc, overflow2) => acc + overflow2, 0))[0]) == null ? void 0 : _overflowsData$slice$.placement;
            if (placement2) {
              resetPlacement = placement2;
            }
            break;
          }
          case "initialPlacement":
            resetPlacement = initialPlacement;
            break;
        }
        return {
          data: {
            skip: true
          },
          reset: {
            placement: resetPlacement
          }
        };
      }
      return {};
    }
  };
};
function convertValueToCoords(_ref) {
  let {
    placement,
    rects,
    value
  } = _ref;
  const basePlacement = getBasePlacement$1(placement);
  const multiplier = ["left", "top"].includes(basePlacement) ? -1 : 1;
  const rawValue = typeof value === "function" ? value({
    ...rects,
    placement
  }) : value;
  const {
    mainAxis,
    crossAxis
  } = typeof rawValue === "number" ? {
    mainAxis: rawValue,
    crossAxis: 0
  } : {
    mainAxis: 0,
    crossAxis: 0,
    ...rawValue
  };
  return getMainAxisFromPlacement$1(basePlacement) === "x" ? {
    x: crossAxis,
    y: mainAxis * multiplier
  } : {
    x: mainAxis * multiplier,
    y: crossAxis
  };
}
const offset$2 = function(value) {
  if (value === void 0) {
    value = 0;
  }
  return {
    name: "offset",
    options: value,
    fn(middlewareArguments) {
      const {
        x: x2,
        y: y2,
        placement,
        rects
      } = middlewareArguments;
      const diffCoords = convertValueToCoords({
        placement,
        rects,
        value
      });
      return {
        x: x2 + diffCoords.x,
        y: y2 + diffCoords.y,
        data: diffCoords
      };
    }
  };
};
function getCrossAxis(axis) {
  return axis === "x" ? "y" : "x";
}
const shift = function(options2) {
  if (options2 === void 0) {
    options2 = {};
  }
  return {
    name: "shift",
    options: options2,
    async fn(middlewareArguments) {
      const {
        x: x2,
        y: y2,
        placement
      } = middlewareArguments;
      const {
        mainAxis: checkMainAxis = true,
        crossAxis: checkCrossAxis = false,
        limiter = {
          fn: (_ref) => {
            let {
              x: x3,
              y: y3
            } = _ref;
            return {
              x: x3,
              y: y3
            };
          }
        },
        ...detectOverflowOptions
      } = options2;
      const coords = {
        x: x2,
        y: y2
      };
      const overflow = await detectOverflow$1(middlewareArguments, detectOverflowOptions);
      const mainAxis = getMainAxisFromPlacement$1(getBasePlacement$1(placement));
      const crossAxis = getCrossAxis(mainAxis);
      let mainAxisCoord = coords[mainAxis];
      let crossAxisCoord = coords[crossAxis];
      if (checkMainAxis) {
        const minSide = mainAxis === "y" ? "top" : "left";
        const maxSide = mainAxis === "y" ? "bottom" : "right";
        const min2 = mainAxisCoord + overflow[minSide];
        const max2 = mainAxisCoord - overflow[maxSide];
        mainAxisCoord = within$1(min2, mainAxisCoord, max2);
      }
      if (checkCrossAxis) {
        const minSide = crossAxis === "y" ? "top" : "left";
        const maxSide = crossAxis === "y" ? "bottom" : "right";
        const min2 = crossAxisCoord + overflow[minSide];
        const max2 = crossAxisCoord - overflow[maxSide];
        crossAxisCoord = within$1(min2, crossAxisCoord, max2);
      }
      const limitedCoords = limiter.fn({
        ...middlewareArguments,
        [mainAxis]: mainAxisCoord,
        [crossAxis]: crossAxisCoord
      });
      return {
        ...limitedCoords,
        data: {
          x: limitedCoords.x - x2,
          y: limitedCoords.y - y2
        }
      };
    }
  };
};
const size = function(options2) {
  if (options2 === void 0) {
    options2 = {};
  }
  return {
    name: "size",
    options: options2,
    async fn(middlewareArguments) {
      var _middlewareData$size;
      const {
        placement,
        rects,
        middlewareData
      } = middlewareArguments;
      const {
        apply: apply2,
        ...detectOverflowOptions
      } = options2;
      if ((_middlewareData$size = middlewareData.size) != null && _middlewareData$size.skip) {
        return {};
      }
      const overflow = await detectOverflow$1(middlewareArguments, detectOverflowOptions);
      const basePlacement = getBasePlacement$1(placement);
      const isEnd = getAlignment(placement) === "end";
      let heightSide;
      let widthSide;
      if (basePlacement === "top" || basePlacement === "bottom") {
        heightSide = basePlacement;
        widthSide = isEnd ? "left" : "right";
      } else {
        widthSide = basePlacement;
        heightSide = isEnd ? "top" : "bottom";
      }
      const xMin = max$2(overflow.left, 0);
      const xMax = max$2(overflow.right, 0);
      const yMin = max$2(overflow.top, 0);
      const yMax = max$2(overflow.bottom, 0);
      const dimensions = {
        height: rects.floating.height - (["left", "right"].includes(placement) ? 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max$2(overflow.top, overflow.bottom)) : overflow[heightSide]),
        width: rects.floating.width - (["top", "bottom"].includes(placement) ? 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max$2(overflow.left, overflow.right)) : overflow[widthSide])
      };
      apply2 == null ? void 0 : apply2({
        ...dimensions,
        ...rects
      });
      return {
        data: {
          skip: true
        },
        reset: {
          rects: true
        }
      };
    }
  };
};
function isWindow(value) {
  return (value == null ? void 0 : value.toString()) === "[object Window]";
}
function getWindow$1(node) {
  if (node == null) {
    return window;
  }
  if (!isWindow(node)) {
    const ownerDocument = node.ownerDocument;
    return ownerDocument ? ownerDocument.defaultView || window : window;
  }
  return node;
}
function getComputedStyle$1$1(element) {
  return getWindow$1(element).getComputedStyle(element);
}
function getNodeName$1(node) {
  return isWindow(node) ? "" : node ? (node.nodeName || "").toLowerCase() : "";
}
function isHTMLElement$1(value) {
  return value instanceof getWindow$1(value).HTMLElement;
}
function isElement$1(value) {
  return value instanceof getWindow$1(value).Element;
}
function isNode(value) {
  return value instanceof getWindow$1(value).Node;
}
function isShadowRoot$1(node) {
  const OwnElement = getWindow$1(node).ShadowRoot;
  return node instanceof OwnElement || node instanceof ShadowRoot;
}
function isScrollParent$1(element) {
  const {
    overflow,
    overflowX,
    overflowY
  } = getComputedStyle$1$1(element);
  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
}
function isTableElement$1(element) {
  return ["table", "td", "th"].includes(getNodeName$1(element));
}
function isContainingBlock(element) {
  const isFirefox = navigator.userAgent.toLowerCase().includes("firefox");
  const css = getComputedStyle$1$1(element);
  return css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].includes(css.willChange) || isFirefox && css.willChange === "filter" || isFirefox && (css.filter ? css.filter !== "none" : false);
}
const min$1 = Math.min;
const max$1 = Math.max;
const round$1 = Math.round;
function getBoundingClientRect$1(element, includeScale) {
  if (includeScale === void 0) {
    includeScale = false;
  }
  const clientRect = element.getBoundingClientRect();
  let scaleX = 1;
  let scaleY = 1;
  if (includeScale && isHTMLElement$1(element)) {
    scaleX = element.offsetWidth > 0 ? round$1(clientRect.width) / element.offsetWidth || 1 : 1;
    scaleY = element.offsetHeight > 0 ? round$1(clientRect.height) / element.offsetHeight || 1 : 1;
  }
  return {
    width: clientRect.width / scaleX,
    height: clientRect.height / scaleY,
    top: clientRect.top / scaleY,
    right: clientRect.right / scaleX,
    bottom: clientRect.bottom / scaleY,
    left: clientRect.left / scaleX,
    x: clientRect.left / scaleX,
    y: clientRect.top / scaleY
  };
}
function getDocumentElement$1(node) {
  return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;
}
function getNodeScroll$1(element) {
  if (isWindow(element)) {
    return {
      scrollLeft: element.pageXOffset,
      scrollTop: element.pageYOffset
    };
  }
  return {
    scrollLeft: element.scrollLeft,
    scrollTop: element.scrollTop
  };
}
function getWindowScrollBarX$1(element) {
  return getBoundingClientRect$1(getDocumentElement$1(element)).left + getNodeScroll$1(element).scrollLeft;
}
function isScaled(element) {
  const rect2 = getBoundingClientRect$1(element);
  return round$1(rect2.width) !== element.offsetWidth || round$1(rect2.height) !== element.offsetHeight;
}
function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
  const isOffsetParentAnElement = isHTMLElement$1(offsetParent);
  const documentElement = getDocumentElement$1(offsetParent);
  const rect2 = getBoundingClientRect$1(element, isOffsetParentAnElement && isScaled(offsetParent));
  let scroll = {
    scrollLeft: 0,
    scrollTop: 0
  };
  const offsets = {
    x: 0,
    y: 0
  };
  if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== "fixed") {
    if (getNodeName$1(offsetParent) !== "body" || isScrollParent$1(documentElement)) {
      scroll = getNodeScroll$1(offsetParent);
    }
    if (isHTMLElement$1(offsetParent)) {
      const offsetRect = getBoundingClientRect$1(offsetParent, true);
      offsets.x = offsetRect.x + offsetParent.clientLeft;
      offsets.y = offsetRect.y + offsetParent.clientTop;
    } else if (documentElement) {
      offsets.x = getWindowScrollBarX$1(documentElement);
    }
  }
  return {
    x: rect2.left + scroll.scrollLeft - offsets.x,
    y: rect2.top + scroll.scrollTop - offsets.y,
    width: rect2.width,
    height: rect2.height
  };
}
function getParentNode$1(node) {
  if (getNodeName$1(node) === "html") {
    return node;
  }
  return (
    // this is a quicker (but less type safe) way to save quite some bytes from the bundle
    // @ts-ignore
    node.assignedSlot || // step into the shadow DOM of the parent of a slotted node
    node.parentNode || // DOM Element detected
    (isShadowRoot$1(node) ? node.host : null) || // ShadowRoot detected
    getDocumentElement$1(node)
  );
}
function getTrueOffsetParent$1(element) {
  if (!isHTMLElement$1(element) || getComputedStyle(element).position === "fixed") {
    return null;
  }
  return element.offsetParent;
}
function getContainingBlock$1(element) {
  let currentNode = getParentNode$1(element);
  while (isHTMLElement$1(currentNode) && !["html", "body"].includes(getNodeName$1(currentNode))) {
    if (isContainingBlock(currentNode)) {
      return currentNode;
    } else {
      currentNode = currentNode.parentNode;
    }
  }
  return null;
}
function getOffsetParent$1(element) {
  const window2 = getWindow$1(element);
  let offsetParent = getTrueOffsetParent$1(element);
  while (offsetParent && isTableElement$1(offsetParent) && getComputedStyle(offsetParent).position === "static") {
    offsetParent = getTrueOffsetParent$1(offsetParent);
  }
  if (offsetParent && (getNodeName$1(offsetParent) === "html" || getNodeName$1(offsetParent) === "body" && getComputedStyle(offsetParent).position === "static" && !isContainingBlock(offsetParent))) {
    return window2;
  }
  return offsetParent || getContainingBlock$1(element) || window2;
}
function getDimensions(element) {
  return {
    width: element.offsetWidth,
    height: element.offsetHeight
  };
}
function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
  let {
    rect: rect2,
    offsetParent,
    strategy
  } = _ref;
  const isOffsetParentAnElement = isHTMLElement$1(offsetParent);
  const documentElement = getDocumentElement$1(offsetParent);
  if (offsetParent === documentElement) {
    return rect2;
  }
  let scroll = {
    scrollLeft: 0,
    scrollTop: 0
  };
  const offsets = {
    x: 0,
    y: 0
  };
  if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== "fixed") {
    if (getNodeName$1(offsetParent) !== "body" || isScrollParent$1(documentElement)) {
      scroll = getNodeScroll$1(offsetParent);
    }
    if (isHTMLElement$1(offsetParent)) {
      const offsetRect = getBoundingClientRect$1(offsetParent, true);
      offsets.x = offsetRect.x + offsetParent.clientLeft;
      offsets.y = offsetRect.y + offsetParent.clientTop;
    }
  }
  return {
    ...rect2,
    x: rect2.x - scroll.scrollLeft + offsets.x,
    y: rect2.y - scroll.scrollTop + offsets.y
  };
}
function getViewportRect$1(element) {
  const win = getWindow$1(element);
  const html = getDocumentElement$1(element);
  const visualViewport = win.visualViewport;
  let width = html.clientWidth;
  let height = html.clientHeight;
  let x2 = 0;
  let y2 = 0;
  if (visualViewport) {
    width = visualViewport.width;
    height = visualViewport.height;
    if (Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) < 0.01) {
      x2 = visualViewport.offsetLeft;
      y2 = visualViewport.offsetTop;
    }
  }
  return {
    width,
    height,
    x: x2,
    y: y2
  };
}
function getDocumentRect$1(element) {
  var _element$ownerDocumen;
  const html = getDocumentElement$1(element);
  const scroll = getNodeScroll$1(element);
  const body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
  const width = max$1(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
  const height = max$1(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
  let x2 = -scroll.scrollLeft + getWindowScrollBarX$1(element);
  const y2 = -scroll.scrollTop;
  if (getComputedStyle$1$1(body || html).direction === "rtl") {
    x2 += max$1(html.clientWidth, body ? body.clientWidth : 0) - width;
  }
  return {
    width,
    height,
    x: x2,
    y: y2
  };
}
function getScrollParent$1(node) {
  if (["html", "body", "#document"].includes(getNodeName$1(node))) {
    return node.ownerDocument.body;
  }
  if (isHTMLElement$1(node) && isScrollParent$1(node)) {
    return node;
  }
  return getScrollParent$1(getParentNode$1(node));
}
function getScrollParents(node, list3) {
  var _node$ownerDocument;
  if (list3 === void 0) {
    list3 = [];
  }
  const scrollParent = getScrollParent$1(node);
  const isBody = scrollParent === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);
  const win = getWindow$1(scrollParent);
  const target2 = isBody ? [win].concat(win.visualViewport || [], isScrollParent$1(scrollParent) ? scrollParent : []) : scrollParent;
  const updatedList = list3.concat(target2);
  return isBody ? updatedList : (
    // @ts-ignore: isBody tells us target will be an HTMLElement here
    updatedList.concat(getScrollParents(getParentNode$1(target2)))
  );
}
function contains$1(parent, child) {
  const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();
  if (parent.contains(child)) {
    return true;
  } else if (rootNode && isShadowRoot$1(rootNode)) {
    let next = child;
    do {
      if (next && parent === next) {
        return true;
      }
      next = next.parentNode || next.host;
    } while (next);
  }
  return false;
}
function getInnerBoundingClientRect$1(element) {
  const clientRect = getBoundingClientRect$1(element);
  const top2 = clientRect.top + element.clientTop;
  const left2 = clientRect.left + element.clientLeft;
  return {
    top: top2,
    left: left2,
    x: left2,
    y: top2,
    right: left2 + element.clientWidth,
    bottom: top2 + element.clientHeight,
    width: element.clientWidth,
    height: element.clientHeight
  };
}
function getClientRectFromClippingParent(element, clippingParent) {
  if (clippingParent === "viewport") {
    return rectToClientRect$1(getViewportRect$1(element));
  }
  if (isElement$1(clippingParent)) {
    return getInnerBoundingClientRect$1(clippingParent);
  }
  return rectToClientRect$1(getDocumentRect$1(getDocumentElement$1(element)));
}
function getClippingParents$1(element) {
  const clippingParents2 = getScrollParents(getParentNode$1(element));
  const canEscapeClipping = ["absolute", "fixed"].includes(getComputedStyle$1$1(element).position);
  const clipperElement = canEscapeClipping && isHTMLElement$1(element) ? getOffsetParent$1(element) : element;
  if (!isElement$1(clipperElement)) {
    return [];
  }
  return clippingParents2.filter((clippingParent) => isElement$1(clippingParent) && contains$1(clippingParent, clipperElement) && getNodeName$1(clippingParent) !== "body");
}
function getClippingClientRect(_ref) {
  let {
    element,
    boundary,
    rootBoundary
  } = _ref;
  const mainClippingParents = boundary === "clippingParents" ? getClippingParents$1(element) : [].concat(boundary);
  const clippingParents2 = [...mainClippingParents, rootBoundary];
  const firstClippingParent = clippingParents2[0];
  const clippingRect = clippingParents2.reduce((accRect, clippingParent) => {
    const rect2 = getClientRectFromClippingParent(element, clippingParent);
    accRect.top = max$1(rect2.top, accRect.top);
    accRect.right = min$1(rect2.right, accRect.right);
    accRect.bottom = min$1(rect2.bottom, accRect.bottom);
    accRect.left = max$1(rect2.left, accRect.left);
    return accRect;
  }, getClientRectFromClippingParent(element, firstClippingParent));
  clippingRect.width = clippingRect.right - clippingRect.left;
  clippingRect.height = clippingRect.bottom - clippingRect.top;
  clippingRect.x = clippingRect.left;
  clippingRect.y = clippingRect.top;
  return clippingRect;
}
const platform = {
  getElementRects: (_ref) => {
    let {
      reference: reference3,
      floating,
      strategy
    } = _ref;
    return {
      reference: getRectRelativeToOffsetParent(reference3, getOffsetParent$1(floating), strategy),
      floating: {
        ...getDimensions(floating),
        x: 0,
        y: 0
      }
    };
  },
  convertOffsetParentRelativeRectToViewportRelativeRect: (args) => convertOffsetParentRelativeRectToViewportRelativeRect(args),
  getOffsetParent: (_ref2) => {
    let {
      element
    } = _ref2;
    return getOffsetParent$1(element);
  },
  isElement: (value) => isElement$1(value),
  getDocumentElement: (_ref3) => {
    let {
      element
    } = _ref3;
    return getDocumentElement$1(element);
  },
  getClippingClientRect: (args) => getClippingClientRect(args),
  getDimensions: (_ref4) => {
    let {
      element
    } = _ref4;
    return getDimensions(element);
  },
  getClientRects: (_ref5) => {
    let {
      element
    } = _ref5;
    return element.getClientRects();
  }
};
const computePosition = (reference3, floating, options2) => computePosition$1(reference3, floating, {
  platform,
  ...options2
});
var __defProp$1 = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a2, b2) => {
  for (var prop2 in b2 || (b2 = {}))
    if (__hasOwnProp.call(b2, prop2))
      __defNormalProp(a2, prop2, b2[prop2]);
  if (__getOwnPropSymbols)
    for (var prop2 of __getOwnPropSymbols(b2)) {
      if (__propIsEnum.call(b2, prop2))
        __defNormalProp(a2, prop2, b2[prop2]);
    }
  return a2;
};
var __spreadProps = (a2, b2) => __defProps(a2, __getOwnPropDescs(b2));
const config$2 = {
  disabled: false,
  distance: 5,
  skidding: 0,
  container: "body",
  boundary: void 0,
  instantMove: false,
  disposeTimeout: 5e3,
  popperTriggers: [],
  strategy: "absolute",
  preventOverflow: true,
  flip: true,
  shift: true,
  overflowPadding: 0,
  arrowPadding: 0,
  arrowOverflow: true,
  themes: {
    tooltip: {
      placement: "top",
      triggers: ["hover", "focus", "touch"],
      hideTriggers: (events2) => [...events2, "click"],
      delay: {
        show: 200,
        hide: 0
      },
      handleResize: false,
      html: false,
      loadingContent: "..."
    },
    dropdown: {
      placement: "bottom",
      triggers: ["click"],
      delay: 0,
      handleResize: true,
      autoHide: true
    },
    menu: {
      $extend: "dropdown",
      triggers: ["hover", "focus"],
      popperTriggers: ["hover", "focus"],
      delay: {
        show: 0,
        hide: 400
      }
    }
  }
};
function getDefaultConfig(theme, key) {
  let themeConfig = config$2.themes[theme] || {};
  let value;
  do {
    value = themeConfig[key];
    if (typeof value === "undefined") {
      if (themeConfig.$extend) {
        themeConfig = config$2.themes[themeConfig.$extend] || {};
      } else {
        themeConfig = null;
        value = config$2[key];
      }
    } else {
      themeConfig = null;
    }
  } while (themeConfig);
  return value;
}
function getThemeClasses(theme) {
  const result = [theme];
  let themeConfig = config$2.themes[theme] || {};
  do {
    if (themeConfig.$extend && !themeConfig.$resetCss) {
      result.push(themeConfig.$extend);
      themeConfig = config$2.themes[themeConfig.$extend] || {};
    } else {
      themeConfig = null;
    }
  } while (themeConfig);
  return result.map((c2) => `v-popper--theme-${c2}`);
}
function getAllParentThemes(theme) {
  const result = [theme];
  let themeConfig = config$2.themes[theme] || {};
  do {
    if (themeConfig.$extend) {
      result.push(themeConfig.$extend);
      themeConfig = config$2.themes[themeConfig.$extend] || {};
    } else {
      themeConfig = null;
    }
  } while (themeConfig);
  return result;
}
let supportsPassive = false;
if (typeof window !== "undefined") {
  supportsPassive = false;
  try {
    const opts = Object.defineProperty({}, "passive", {
      get() {
        supportsPassive = true;
      }
    });
    window.addEventListener("test", null, opts);
  } catch (e) {
  }
}
let isIOS = false;
if (typeof window !== "undefined" && typeof navigator !== "undefined") {
  isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
}
const placements$1 = ["auto", "top", "bottom", "left", "right"].reduce((acc, base2) => acc.concat([
  base2,
  `${base2}-start`,
  `${base2}-end`
]), []);
const SHOW_EVENT_MAP = {
  hover: "mouseenter",
  focus: "focus",
  click: "click",
  touch: "touchstart"
};
const HIDE_EVENT_MAP = {
  hover: "mouseleave",
  focus: "blur",
  click: "click",
  touch: "touchend"
};
function removeFromArray(array, item) {
  const index2 = array.indexOf(item);
  if (index2 !== -1) {
    array.splice(index2, 1);
  }
}
function nextFrame() {
  return new Promise((resolve3) => requestAnimationFrame(() => {
    requestAnimationFrame(resolve3);
  }));
}
const shownPoppers = [];
let hidingPopper = null;
const shownPoppersByTheme = {};
function getShownPoppersByTheme(theme) {
  let list3 = shownPoppersByTheme[theme];
  if (!list3) {
    list3 = shownPoppersByTheme[theme] = [];
  }
  return list3;
}
let Element$2 = function() {
};
if (typeof window !== "undefined") {
  Element$2 = window.Element;
}
function defaultPropFactory(prop2) {
  return function(props) {
    return getDefaultConfig(props.theme, prop2);
  };
}
const PROVIDE_KEY = "__floating-vue__popper";
var PrivatePopper = () => defineComponent({
  name: "VPopper",
  provide() {
    return {
      [PROVIDE_KEY]: {
        parentPopper: this
      }
    };
  },
  inject: {
    [PROVIDE_KEY]: { default: null }
  },
  props: {
    theme: {
      type: String,
      required: true
    },
    targetNodes: {
      type: Function,
      required: true
    },
    referenceNode: {
      type: Function,
      required: true
    },
    popperNode: {
      type: Function,
      required: true
    },
    shown: {
      type: Boolean,
      default: false
    },
    showGroup: {
      type: String,
      default: null
    },
    ariaId: {
      default: null
    },
    disabled: {
      type: Boolean,
      default: defaultPropFactory("disabled")
    },
    positioningDisabled: {
      type: Boolean,
      default: defaultPropFactory("positioningDisabled")
    },
    placement: {
      type: String,
      default: defaultPropFactory("placement"),
      validator: (value) => placements$1.includes(value)
    },
    delay: {
      type: [String, Number, Object],
      default: defaultPropFactory("delay")
    },
    distance: {
      type: [Number, String],
      default: defaultPropFactory("distance")
    },
    skidding: {
      type: [Number, String],
      default: defaultPropFactory("skidding")
    },
    triggers: {
      type: Array,
      default: defaultPropFactory("triggers")
    },
    showTriggers: {
      type: [Array, Function],
      default: defaultPropFactory("showTriggers")
    },
    hideTriggers: {
      type: [Array, Function],
      default: defaultPropFactory("hideTriggers")
    },
    popperTriggers: {
      type: Array,
      default: defaultPropFactory("popperTriggers")
    },
    popperShowTriggers: {
      type: [Array, Function],
      default: defaultPropFactory("popperShowTriggers")
    },
    popperHideTriggers: {
      type: [Array, Function],
      default: defaultPropFactory("popperHideTriggers")
    },
    container: {
      type: [String, Object, Element$2, Boolean],
      default: defaultPropFactory("container")
    },
    boundary: {
      type: [String, Element$2],
      default: defaultPropFactory("boundary")
    },
    strategy: {
      type: String,
      validator: (value) => ["absolute", "fixed"].includes(value),
      default: defaultPropFactory("strategy")
    },
    autoHide: {
      type: [Boolean, Function],
      default: defaultPropFactory("autoHide")
    },
    handleResize: {
      type: Boolean,
      default: defaultPropFactory("handleResize")
    },
    instantMove: {
      type: Boolean,
      default: defaultPropFactory("instantMove")
    },
    eagerMount: {
      type: Boolean,
      default: defaultPropFactory("eagerMount")
    },
    popperClass: {
      type: [String, Array, Object],
      default: defaultPropFactory("popperClass")
    },
    computeTransformOrigin: {
      type: Boolean,
      default: defaultPropFactory("computeTransformOrigin")
    },
    autoMinSize: {
      type: Boolean,
      default: defaultPropFactory("autoMinSize")
    },
    autoSize: {
      type: [Boolean, String],
      default: defaultPropFactory("autoSize")
    },
    autoMaxSize: {
      type: Boolean,
      default: defaultPropFactory("autoMaxSize")
    },
    autoBoundaryMaxSize: {
      type: Boolean,
      default: defaultPropFactory("autoBoundaryMaxSize")
    },
    preventOverflow: {
      type: Boolean,
      default: defaultPropFactory("preventOverflow")
    },
    overflowPadding: {
      type: [Number, String],
      default: defaultPropFactory("overflowPadding")
    },
    arrowPadding: {
      type: [Number, String],
      default: defaultPropFactory("arrowPadding")
    },
    arrowOverflow: {
      type: Boolean,
      default: defaultPropFactory("arrowOverflow")
    },
    flip: {
      type: Boolean,
      default: defaultPropFactory("flip")
    },
    shift: {
      type: Boolean,
      default: defaultPropFactory("shift")
    },
    shiftCrossAxis: {
      type: Boolean,
      default: defaultPropFactory("shiftCrossAxis")
    }
  },
  emits: [
    "show",
    "hide",
    "update:shown",
    "apply-show",
    "apply-hide",
    "close-group",
    "close-directive",
    "auto-hide",
    "resize",
    "dispose"
  ],
  data() {
    return {
      isShown: false,
      isMounted: false,
      skipTransition: false,
      classes: {
        showFrom: false,
        showTo: false,
        hideFrom: false,
        hideTo: true
      },
      result: {
        x: 0,
        y: 0,
        placement: "",
        strategy: this.strategy,
        arrow: {
          x: 0,
          y: 0,
          centerOffset: 0
        },
        transformOrigin: null
      },
      shownChildren: /* @__PURE__ */ new Set(),
      lastAutoHide: true
    };
  },
  computed: {
    popperId() {
      return this.ariaId != null ? this.ariaId : this.randomId;
    },
    shouldMountContent() {
      return this.eagerMount || this.isMounted;
    },
    slotData() {
      return {
        popperId: this.popperId,
        isShown: this.isShown,
        shouldMountContent: this.shouldMountContent,
        skipTransition: this.skipTransition,
        autoHide: typeof this.autoHide === "function" ? this.lastAutoHide : this.autoHide,
        show: this.show,
        hide: this.hide,
        handleResize: this.handleResize,
        onResize: this.onResize,
        classes: __spreadProps(__spreadValues({}, this.classes), {
          popperClass: this.popperClass
        }),
        result: this.positioningDisabled ? null : this.result,
        attrs: this.$attrs
      };
    },
    parentPopper() {
      var _a3;
      return (_a3 = this[PROVIDE_KEY]) == null ? void 0 : _a3.parentPopper;
    },
    hasPopperShowTriggerHover() {
      var _a3, _b2;
      return ((_a3 = this.popperTriggers) == null ? void 0 : _a3.includes("hover")) || ((_b2 = this.popperShowTriggers) == null ? void 0 : _b2.includes("hover"));
    }
  },
  watch: __spreadValues(__spreadValues({
    shown: "$_autoShowHide",
    disabled(value) {
      if (value) {
        this.dispose();
      } else {
        this.init();
      }
    },
    async container() {
      if (this.isShown) {
        this.$_ensureTeleport();
        await this.$_computePosition();
      }
    }
  }, [
    "triggers",
    "positioningDisabled"
  ].reduce((acc, prop2) => {
    acc[prop2] = "$_refreshListeners";
    return acc;
  }, {})), [
    "placement",
    "distance",
    "skidding",
    "boundary",
    "strategy",
    "overflowPadding",
    "arrowPadding",
    "preventOverflow",
    "shift",
    "shiftCrossAxis",
    "flip"
  ].reduce((acc, prop2) => {
    acc[prop2] = "$_computePosition";
    return acc;
  }, {})),
  created() {
    this.$_isDisposed = true;
    this.randomId = `popper_${[Math.random(), Date.now()].map((n) => n.toString(36).substring(2, 10)).join("_")}`;
    if (this.autoMinSize) {
      console.warn('[floating-vue] `autoMinSize` option is deprecated. Use `autoSize="min"` instead.');
    }
    if (this.autoMaxSize) {
      console.warn("[floating-vue] `autoMaxSize` option is deprecated. Use `autoBoundaryMaxSize` instead.");
    }
  },
  mounted() {
    this.init();
    this.$_detachPopperNode();
  },
  activated() {
    this.$_autoShowHide();
  },
  deactivated() {
    this.hide();
  },
  beforeUnmount() {
    this.dispose();
  },
  methods: {
    show({ event = null, skipDelay = false, force = false } = {}) {
      var _a3, _b2;
      if (((_a3 = this.parentPopper) == null ? void 0 : _a3.lockedChild) && this.parentPopper.lockedChild !== this)
        return;
      this.$_pendingHide = false;
      if (force || !this.disabled) {
        if (((_b2 = this.parentPopper) == null ? void 0 : _b2.lockedChild) === this) {
          this.parentPopper.lockedChild = null;
        }
        this.$_scheduleShow(event, skipDelay);
        this.$emit("show");
        this.$_showFrameLocked = true;
        requestAnimationFrame(() => {
          this.$_showFrameLocked = false;
        });
      }
      this.$emit("update:shown", true);
    },
    hide({ event = null, skipDelay = false } = {}) {
      var _a3;
      if (this.$_hideInProgress)
        return;
      if (this.shownChildren.size > 0) {
        this.$_pendingHide = true;
        return;
      }
      if (this.hasPopperShowTriggerHover && this.$_isAimingPopper()) {
        if (this.parentPopper) {
          this.parentPopper.lockedChild = this;
          clearTimeout(this.parentPopper.lockedChildTimer);
          this.parentPopper.lockedChildTimer = setTimeout(() => {
            if (this.parentPopper.lockedChild === this) {
              this.parentPopper.lockedChild.hide({ skipDelay });
              this.parentPopper.lockedChild = null;
            }
          }, 1e3);
        }
        return;
      }
      if (((_a3 = this.parentPopper) == null ? void 0 : _a3.lockedChild) === this) {
        this.parentPopper.lockedChild = null;
      }
      this.$_pendingHide = false;
      this.$_scheduleHide(event, skipDelay);
      this.$emit("hide");
      this.$emit("update:shown", false);
    },
    init() {
      if (!this.$_isDisposed)
        return;
      this.$_isDisposed = false;
      this.isMounted = false;
      this.$_events = [];
      this.$_preventShow = false;
      this.$_referenceNode = this.referenceNode();
      this.$_targetNodes = this.targetNodes().filter((e) => e.nodeType === e.ELEMENT_NODE);
      this.$_popperNode = this.popperNode();
      this.$_innerNode = this.$_popperNode.querySelector(".v-popper__inner");
      this.$_arrowNode = this.$_popperNode.querySelector(".v-popper__arrow-container");
      this.$_swapTargetAttrs("title", "data-original-title");
      this.$_detachPopperNode();
      if (this.triggers.length) {
        this.$_addEventListeners();
      }
      if (this.shown) {
        this.show();
      }
    },
    dispose() {
      if (this.$_isDisposed)
        return;
      this.$_isDisposed = true;
      this.$_removeEventListeners();
      this.hide({ skipDelay: true });
      this.$_detachPopperNode();
      this.isMounted = false;
      this.isShown = false;
      this.$_updateParentShownChildren(false);
      this.$_swapTargetAttrs("data-original-title", "title");
      this.$emit("dispose");
    },
    async onResize() {
      if (this.isShown) {
        await this.$_computePosition();
        this.$emit("resize");
      }
    },
    async $_computePosition() {
      var _a3;
      if (this.$_isDisposed || this.positioningDisabled)
        return;
      const options2 = {
        strategy: this.strategy,
        middleware: []
      };
      if (this.distance || this.skidding) {
        options2.middleware.push(offset$2({
          mainAxis: this.distance,
          crossAxis: this.skidding
        }));
      }
      const isPlacementAuto = this.placement.startsWith("auto");
      if (isPlacementAuto) {
        options2.middleware.push(autoPlacement({
          alignment: (_a3 = this.placement.split("-")[1]) != null ? _a3 : ""
        }));
      } else {
        options2.placement = this.placement;
      }
      if (this.preventOverflow) {
        if (this.shift) {
          options2.middleware.push(shift({
            padding: this.overflowPadding,
            boundary: this.boundary,
            crossAxis: this.shiftCrossAxis
          }));
        }
        if (!isPlacementAuto && this.flip) {
          options2.middleware.push(flip$2({
            padding: this.overflowPadding,
            boundary: this.boundary
          }));
        }
      }
      options2.middleware.push(arrow$2({
        element: this.$_arrowNode,
        padding: this.arrowPadding
      }));
      if (this.arrowOverflow) {
        options2.middleware.push({
          name: "arrowOverflow",
          fn: ({ placement, rects, middlewareData }) => {
            let overflow;
            const { centerOffset } = middlewareData.arrow;
            if (placement.startsWith("top") || placement.startsWith("bottom")) {
              overflow = Math.abs(centerOffset) > rects.reference.width / 2;
            } else {
              overflow = Math.abs(centerOffset) > rects.reference.height / 2;
            }
            return {
              data: {
                overflow
              }
            };
          }
        });
      }
      if (this.autoMinSize || this.autoSize) {
        const autoSize = this.autoSize ? this.autoSize : this.autoMinSize ? "min" : null;
        options2.middleware.push({
          name: "autoSize",
          fn: ({ rects, placement, middlewareData }) => {
            var _a22;
            if ((_a22 = middlewareData.autoSize) == null ? void 0 : _a22.skip) {
              return {};
            }
            let width;
            let height;
            if (placement.startsWith("top") || placement.startsWith("bottom")) {
              width = rects.reference.width;
            } else {
              height = rects.reference.height;
            }
            this.$_innerNode.style[autoSize === "min" ? "minWidth" : autoSize === "max" ? "maxWidth" : "width"] = width != null ? `${width}px` : null;
            this.$_innerNode.style[autoSize === "min" ? "minHeight" : autoSize === "max" ? "maxHeight" : "height"] = height != null ? `${height}px` : null;
            return {
              data: {
                skip: true
              },
              reset: {
                rects: true
              }
            };
          }
        });
      }
      if (this.autoMaxSize || this.autoBoundaryMaxSize) {
        this.$_innerNode.style.maxWidth = null;
        this.$_innerNode.style.maxHeight = null;
        options2.middleware.push(size({
          boundary: this.boundary,
          padding: this.overflowPadding,
          apply: ({ width, height }) => {
            this.$_innerNode.style.maxWidth = width != null ? `${width}px` : null;
            this.$_innerNode.style.maxHeight = height != null ? `${height}px` : null;
          }
        }));
      }
      const data = await computePosition(this.$_referenceNode, this.$_popperNode, options2);
      Object.assign(this.result, {
        x: data.x,
        y: data.y,
        placement: data.placement,
        strategy: data.strategy,
        arrow: __spreadValues(__spreadValues({}, data.middlewareData.arrow), data.middlewareData.arrowOverflow)
      });
    },
    $_scheduleShow(event = null, skipDelay = false) {
      this.$_updateParentShownChildren(true);
      this.$_hideInProgress = false;
      clearTimeout(this.$_scheduleTimer);
      if (hidingPopper && this.instantMove && hidingPopper.instantMove && hidingPopper !== this.parentPopper) {
        hidingPopper.$_applyHide(true);
        this.$_applyShow(true);
        return;
      }
      if (skipDelay) {
        this.$_applyShow();
      } else {
        this.$_scheduleTimer = setTimeout(this.$_applyShow.bind(this), this.$_computeDelay("show"));
      }
    },
    $_scheduleHide(event = null, skipDelay = false) {
      if (this.shownChildren.size > 0) {
        this.$_pendingHide = true;
        return;
      }
      this.$_updateParentShownChildren(false);
      this.$_hideInProgress = true;
      clearTimeout(this.$_scheduleTimer);
      if (this.isShown) {
        hidingPopper = this;
      }
      if (skipDelay) {
        this.$_applyHide();
      } else {
        this.$_scheduleTimer = setTimeout(this.$_applyHide.bind(this), this.$_computeDelay("hide"));
      }
    },
    $_computeDelay(type2) {
      const delay = this.delay;
      return parseInt(delay && delay[type2] || delay || 0);
    },
    async $_applyShow(skipTransition = false) {
      clearTimeout(this.$_disposeTimer);
      clearTimeout(this.$_scheduleTimer);
      this.skipTransition = skipTransition;
      if (this.isShown) {
        return;
      }
      this.$_ensureTeleport();
      await nextFrame();
      await this.$_computePosition();
      await this.$_applyShowEffect();
      if (!this.positioningDisabled) {
        this.$_registerEventListeners([
          ...getScrollParents(this.$_referenceNode),
          ...getScrollParents(this.$_popperNode)
        ], "scroll", () => {
          this.$_computePosition();
        });
      }
    },
    async $_applyShowEffect() {
      if (this.$_hideInProgress)
        return;
      if (this.computeTransformOrigin) {
        const bounds = this.$_referenceNode.getBoundingClientRect();
        const popperWrapper = this.$_popperNode.querySelector(".v-popper__wrapper");
        const parentBounds = popperWrapper.parentNode.getBoundingClientRect();
        const x2 = bounds.x + bounds.width / 2 - (parentBounds.left + popperWrapper.offsetLeft);
        const y2 = bounds.y + bounds.height / 2 - (parentBounds.top + popperWrapper.offsetTop);
        this.result.transformOrigin = `${x2}px ${y2}px`;
      }
      this.isShown = true;
      this.$_applyAttrsToTarget({
        "aria-describedby": this.popperId,
        "data-popper-shown": ""
      });
      const showGroup = this.showGroup;
      if (showGroup) {
        let popover;
        for (let i = 0; i < shownPoppers.length; i++) {
          popover = shownPoppers[i];
          if (popover.showGroup !== showGroup) {
            popover.hide();
            popover.$emit("close-group");
          }
        }
      }
      shownPoppers.push(this);
      document.body.classList.add("v-popper--some-open");
      for (const theme of getAllParentThemes(this.theme)) {
        getShownPoppersByTheme(theme).push(this);
        document.body.classList.add(`v-popper--some-open--${theme}`);
      }
      this.$emit("apply-show");
      this.classes.showFrom = true;
      this.classes.showTo = false;
      this.classes.hideFrom = false;
      this.classes.hideTo = false;
      await nextFrame();
      this.classes.showFrom = false;
      this.classes.showTo = true;
      this.$_popperNode.focus();
    },
    async $_applyHide(skipTransition = false) {
      if (this.shownChildren.size > 0) {
        this.$_pendingHide = true;
        this.$_hideInProgress = false;
        return;
      }
      clearTimeout(this.$_scheduleTimer);
      if (!this.isShown) {
        return;
      }
      this.skipTransition = skipTransition;
      removeFromArray(shownPoppers, this);
      if (shownPoppers.length === 0) {
        document.body.classList.remove("v-popper--some-open");
      }
      for (const theme of getAllParentThemes(this.theme)) {
        const list3 = getShownPoppersByTheme(theme);
        removeFromArray(list3, this);
        if (list3.length === 0) {
          document.body.classList.remove(`v-popper--some-open--${theme}`);
        }
      }
      if (hidingPopper === this) {
        hidingPopper = null;
      }
      this.isShown = false;
      this.$_applyAttrsToTarget({
        "aria-describedby": void 0,
        "data-popper-shown": void 0
      });
      clearTimeout(this.$_disposeTimer);
      const disposeTime = getDefaultConfig(this.theme, "disposeTimeout");
      if (disposeTime !== null) {
        this.$_disposeTimer = setTimeout(() => {
          if (this.$_popperNode) {
            this.$_detachPopperNode();
            this.isMounted = false;
          }
        }, disposeTime);
      }
      this.$_removeEventListeners("scroll");
      this.$emit("apply-hide");
      this.classes.showFrom = false;
      this.classes.showTo = false;
      this.classes.hideFrom = true;
      this.classes.hideTo = false;
      await nextFrame();
      this.classes.hideFrom = false;
      this.classes.hideTo = true;
    },
    $_autoShowHide() {
      if (this.shown) {
        this.show();
      } else {
        this.hide();
      }
    },
    $_ensureTeleport() {
      if (this.$_isDisposed)
        return;
      let container = this.container;
      if (typeof container === "string") {
        container = window.document.querySelector(container);
      } else if (container === false) {
        container = this.$_targetNodes[0].parentNode;
      }
      if (!container) {
        throw new Error("No container for popover: " + this.container);
      }
      container.appendChild(this.$_popperNode);
      this.isMounted = true;
    },
    $_addEventListeners() {
      const handleShow = (event) => {
        if (this.isShown && !this.$_hideInProgress) {
          return;
        }
        event.usedByTooltip = true;
        !this.$_preventShow && this.show({ event });
      };
      this.$_registerTriggerListeners(this.$_targetNodes, SHOW_EVENT_MAP, this.triggers, this.showTriggers, handleShow);
      this.$_registerTriggerListeners([this.$_popperNode], SHOW_EVENT_MAP, this.popperTriggers, this.popperShowTriggers, handleShow);
      const handleHide = (event) => {
        if (event.usedByTooltip) {
          return;
        }
        this.hide({ event });
      };
      this.$_registerTriggerListeners(this.$_targetNodes, HIDE_EVENT_MAP, this.triggers, this.hideTriggers, handleHide);
      this.$_registerTriggerListeners([this.$_popperNode], HIDE_EVENT_MAP, this.popperTriggers, this.popperHideTriggers, handleHide);
    },
    $_registerEventListeners(targetNodes, eventType, handler) {
      this.$_events.push({ targetNodes, eventType, handler });
      targetNodes.forEach((node) => node.addEventListener(eventType, handler, supportsPassive ? {
        passive: true
      } : void 0));
    },
    $_registerTriggerListeners(targetNodes, eventMap, commonTriggers, customTrigger, handler) {
      let triggers = commonTriggers;
      if (customTrigger != null) {
        triggers = typeof customTrigger === "function" ? customTrigger(triggers) : customTrigger;
      }
      triggers.forEach((trigger2) => {
        const eventType = eventMap[trigger2];
        if (eventType) {
          this.$_registerEventListeners(targetNodes, eventType, handler);
        }
      });
    },
    $_removeEventListeners(filterEventType) {
      const newList = [];
      this.$_events.forEach((listener) => {
        const { targetNodes, eventType, handler } = listener;
        if (!filterEventType || filterEventType === eventType) {
          targetNodes.forEach((node) => node.removeEventListener(eventType, handler));
        } else {
          newList.push(listener);
        }
      });
      this.$_events = newList;
    },
    $_refreshListeners() {
      if (!this.$_isDisposed) {
        this.$_removeEventListeners();
        this.$_addEventListeners();
      }
    },
    $_handleGlobalClose(event, touch = false) {
      if (this.$_showFrameLocked)
        return;
      this.hide({ event });
      if (event.closePopover) {
        this.$emit("close-directive");
      } else {
        this.$emit("auto-hide");
      }
      if (touch) {
        this.$_preventShow = true;
        setTimeout(() => {
          this.$_preventShow = false;
        }, 300);
      }
    },
    $_detachPopperNode() {
      this.$_popperNode.parentNode && this.$_popperNode.parentNode.removeChild(this.$_popperNode);
    },
    $_swapTargetAttrs(attrFrom, attrTo) {
      for (const el2 of this.$_targetNodes) {
        const value = el2.getAttribute(attrFrom);
        if (value) {
          el2.removeAttribute(attrFrom);
          el2.setAttribute(attrTo, value);
        }
      }
    },
    $_applyAttrsToTarget(attrs) {
      for (const el2 of this.$_targetNodes) {
        for (const n in attrs) {
          const value = attrs[n];
          if (value == null) {
            el2.removeAttribute(n);
          } else {
            el2.setAttribute(n, value);
          }
        }
      }
    },
    $_updateParentShownChildren(value) {
      let parent = this.parentPopper;
      while (parent) {
        if (value) {
          parent.shownChildren.add(this.randomId);
        } else {
          parent.shownChildren.delete(this.randomId);
          if (parent.$_pendingHide) {
            parent.hide();
          }
        }
        parent = parent.parentPopper;
      }
    },
    $_isAimingPopper() {
      const referenceBounds = this.$_referenceNode.getBoundingClientRect();
      if (mouseX >= referenceBounds.left && mouseX <= referenceBounds.right && mouseY >= referenceBounds.top && mouseY <= referenceBounds.bottom) {
        const popperBounds = this.$_popperNode.getBoundingClientRect();
        const vectorX = mouseX - mousePreviousX;
        const vectorY = mouseY - mousePreviousY;
        const distance = popperBounds.left + popperBounds.width / 2 - mousePreviousX + (popperBounds.top + popperBounds.height / 2) - mousePreviousY;
        const newVectorLength = distance + popperBounds.width + popperBounds.height;
        const edgeX = mousePreviousX + vectorX * newVectorLength;
        const edgeY = mousePreviousY + vectorY * newVectorLength;
        return lineIntersectsLine(mousePreviousX, mousePreviousY, edgeX, edgeY, popperBounds.left, popperBounds.top, popperBounds.left, popperBounds.bottom) || lineIntersectsLine(mousePreviousX, mousePreviousY, edgeX, edgeY, popperBounds.left, popperBounds.top, popperBounds.right, popperBounds.top) || lineIntersectsLine(mousePreviousX, mousePreviousY, edgeX, edgeY, popperBounds.right, popperBounds.top, popperBounds.right, popperBounds.bottom) || lineIntersectsLine(mousePreviousX, mousePreviousY, edgeX, edgeY, popperBounds.left, popperBounds.bottom, popperBounds.right, popperBounds.bottom);
      }
      return false;
    }
  },
  render() {
    return this.$slots.default(this.slotData);
  }
});
if (typeof document !== "undefined" && typeof window !== "undefined") {
  if (isIOS) {
    document.addEventListener("touchstart", handleGlobalMousedown, supportsPassive ? {
      passive: true,
      capture: true
    } : true);
    document.addEventListener("touchend", handleGlobalTouchend, supportsPassive ? {
      passive: true,
      capture: true
    } : true);
  } else {
    window.addEventListener("mousedown", handleGlobalMousedown, true);
    window.addEventListener("click", handleGlobalClick, true);
  }
  window.addEventListener("resize", computePositionAllShownPoppers);
}
function handleGlobalMousedown(event) {
  for (let i = 0; i < shownPoppers.length; i++) {
    const popper2 = shownPoppers[i];
    try {
      const popperContent = popper2.popperNode();
      popper2.$_mouseDownContains = popperContent.contains(event.target);
    } catch (e) {
    }
  }
}
function handleGlobalClick(event) {
  handleGlobalClose(event);
}
function handleGlobalTouchend(event) {
  handleGlobalClose(event, true);
}
function handleGlobalClose(event, touch = false) {
  const preventClose = {};
  for (let i = shownPoppers.length - 1; i >= 0; i--) {
    const popper2 = shownPoppers[i];
    try {
      const contains2 = popper2.$_containsGlobalTarget = isContainingEventTarget(popper2, event);
      popper2.$_pendingHide = false;
      requestAnimationFrame(() => {
        popper2.$_pendingHide = false;
        if (preventClose[popper2.randomId])
          return;
        if (shouldAutoHide(popper2, contains2, event)) {
          popper2.$_handleGlobalClose(event, touch);
          if (!event.closeAllPopover && event.closePopover && contains2) {
            let parent2 = popper2.parentPopper;
            while (parent2) {
              preventClose[parent2.randomId] = true;
              parent2 = parent2.parentPopper;
            }
            return;
          }
          let parent = popper2.parentPopper;
          while (parent) {
            if (shouldAutoHide(parent, parent.$_containsGlobalTarget, event)) {
              parent.$_handleGlobalClose(event, touch);
            } else {
              break;
            }
            parent = parent.parentPopper;
          }
        }
      });
    } catch (e) {
    }
  }
}
function isContainingEventTarget(popper2, event) {
  const popperContent = popper2.popperNode();
  return popper2.$_mouseDownContains || popperContent.contains(event.target);
}
function shouldAutoHide(popper2, contains2, event) {
  return event.closeAllPopover || event.closePopover && contains2 || getAutoHideResult(popper2, event) && !contains2;
}
function getAutoHideResult(popper2, event) {
  if (typeof popper2.autoHide === "function") {
    const result = popper2.autoHide(event);
    popper2.lastAutoHide = result;
    return result;
  }
  return popper2.autoHide;
}
function computePositionAllShownPoppers(event) {
  for (let i = 0; i < shownPoppers.length; i++) {
    const popper2 = shownPoppers[i];
    popper2.$_computePosition(event);
  }
}
function hideAllPoppers() {
  for (let i = 0; i < shownPoppers.length; i++) {
    const popper2 = shownPoppers[i];
    popper2.hide();
  }
}
let mousePreviousX = 0;
let mousePreviousY = 0;
let mouseX = 0;
let mouseY = 0;
if (typeof window !== "undefined") {
  window.addEventListener("mousemove", (event) => {
    mousePreviousX = mouseX;
    mousePreviousY = mouseY;
    mouseX = event.clientX;
    mouseY = event.clientY;
  }, supportsPassive ? {
    passive: true
  } : void 0);
}
function lineIntersectsLine(x1, y1, x2, y2, x3, y3, x4, y4) {
  const uA = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / ((y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1));
  const uB = ((x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3)) / ((y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1));
  return uA >= 0 && uA <= 1 && uB >= 0 && uB <= 1;
}
var _export_sfc = (sfc, props) => {
  const target2 = sfc.__vccOpts || sfc;
  for (const [key, val] of props) {
    target2[key] = val;
  }
  return target2;
};
const _sfc_main$6$1 = {
  extends: PrivatePopper()
};
function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
  return openBlock(), createElementBlock("div", mergeProps({
    ref: "reference",
    class: "v-popper"
  }, _ctx.$attrs, {
    class: {
      "v-popper--shown": _ctx.slotData.isShown
    }
  }), [
    renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(_ctx.slotData)))
  ], 16);
}
var Popper$1 = /* @__PURE__ */ _export_sfc(_sfc_main$6$1, [["render", _sfc_render$3]]);
function getInternetExplorerVersion() {
  var ua = window.navigator.userAgent;
  var msie = ua.indexOf("MSIE ");
  if (msie > 0) {
    return parseInt(ua.substring(msie + 5, ua.indexOf(".", msie)), 10);
  }
  var trident = ua.indexOf("Trident/");
  if (trident > 0) {
    var rv = ua.indexOf("rv:");
    return parseInt(ua.substring(rv + 3, ua.indexOf(".", rv)), 10);
  }
  var edge = ua.indexOf("Edge/");
  if (edge > 0) {
    return parseInt(ua.substring(edge + 5, ua.indexOf(".", edge)), 10);
  }
  return -1;
}
let isIE;
function initCompat() {
  if (!initCompat.init) {
    initCompat.init = true;
    isIE = getInternetExplorerVersion() !== -1;
  }
}
var script$a = {
  name: "ResizeObserver",
  props: {
    emitOnMount: {
      type: Boolean,
      default: false
    },
    ignoreWidth: {
      type: Boolean,
      default: false
    },
    ignoreHeight: {
      type: Boolean,
      default: false
    }
  },
  emits: [
    "notify"
  ],
  mounted() {
    initCompat();
    nextTick(() => {
      this._w = this.$el.offsetWidth;
      this._h = this.$el.offsetHeight;
      if (this.emitOnMount) {
        this.emitSize();
      }
    });
    const object = document.createElement("object");
    this._resizeObject = object;
    object.setAttribute("aria-hidden", "true");
    object.setAttribute("tabindex", -1);
    object.onload = this.addResizeHandlers;
    object.type = "text/html";
    if (isIE) {
      this.$el.appendChild(object);
    }
    object.data = "about:blank";
    if (!isIE) {
      this.$el.appendChild(object);
    }
  },
  beforeUnmount() {
    this.removeResizeHandlers();
  },
  methods: {
    compareAndNotify() {
      if (!this.ignoreWidth && this._w !== this.$el.offsetWidth || !this.ignoreHeight && this._h !== this.$el.offsetHeight) {
        this._w = this.$el.offsetWidth;
        this._h = this.$el.offsetHeight;
        this.emitSize();
      }
    },
    emitSize() {
      this.$emit("notify", {
        width: this._w,
        height: this._h
      });
    },
    addResizeHandlers() {
      this._resizeObject.contentDocument.defaultView.addEventListener("resize", this.compareAndNotify);
      this.compareAndNotify();
    },
    removeResizeHandlers() {
      if (this._resizeObject && this._resizeObject.onload) {
        if (!isIE && this._resizeObject.contentDocument) {
          this._resizeObject.contentDocument.defaultView.removeEventListener("resize", this.compareAndNotify);
        }
        this.$el.removeChild(this._resizeObject);
        this._resizeObject.onload = null;
        this._resizeObject = null;
      }
    }
  }
};
const _withId = /* @__PURE__ */ withScopeId();
pushScopeId("data-v-b329ee4c");
const _hoisted_1$2$2 = {
  class: "resize-observer",
  tabindex: "-1"
};
popScopeId();
const render$H = /* @__PURE__ */ _withId((_ctx, _cache, $props, $setup, $data, $options) => {
  return openBlock(), createBlock("div", _hoisted_1$2$2);
});
script$a.render = render$H;
script$a.__scopeId = "data-v-b329ee4c";
script$a.__file = "src/components/ResizeObserver.vue";
var PrivateThemeClass = (prop2 = "theme") => ({
  computed: {
    themeClass() {
      return getThemeClasses(this[prop2]);
    }
  }
});
const _sfc_main$5$1 = defineComponent({
  name: "VPopperContent",
  components: {
    ResizeObserver: script$a
  },
  mixins: [
    PrivateThemeClass()
  ],
  props: {
    popperId: String,
    theme: String,
    shown: Boolean,
    mounted: Boolean,
    skipTransition: Boolean,
    autoHide: Boolean,
    handleResize: Boolean,
    classes: Object,
    result: Object
  },
  emits: [
    "hide",
    "resize"
  ],
  methods: {
    toPx(value) {
      if (value != null && !isNaN(value)) {
        return `${value}px`;
      }
      return null;
    }
  }
});
const _hoisted_1$1$2 = ["id", "aria-hidden", "tabindex", "data-popper-placement"];
const _hoisted_2$1$2 = {
  ref: "inner",
  class: "v-popper__inner"
};
const _hoisted_3$11 = /* @__PURE__ */ createBaseVNode("div", { class: "v-popper__arrow-outer" }, null, -1);
const _hoisted_4$E = /* @__PURE__ */ createBaseVNode("div", { class: "v-popper__arrow-inner" }, null, -1);
const _hoisted_5$q = [
  _hoisted_3$11,
  _hoisted_4$E
];
function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
  const _component_ResizeObserver = resolveComponent("ResizeObserver");
  return openBlock(), createElementBlock("div", {
    id: _ctx.popperId,
    ref: "popover",
    class: normalizeClass(["v-popper__popper", [
      _ctx.themeClass,
      _ctx.classes.popperClass,
      {
        "v-popper__popper--shown": _ctx.shown,
        "v-popper__popper--hidden": !_ctx.shown,
        "v-popper__popper--show-from": _ctx.classes.showFrom,
        "v-popper__popper--show-to": _ctx.classes.showTo,
        "v-popper__popper--hide-from": _ctx.classes.hideFrom,
        "v-popper__popper--hide-to": _ctx.classes.hideTo,
        "v-popper__popper--skip-transition": _ctx.skipTransition,
        "v-popper__popper--arrow-overflow": _ctx.result && _ctx.result.arrow.overflow,
        "v-popper__popper--no-positioning": !_ctx.result
      }
    ]]),
    style: normalizeStyle(_ctx.result ? {
      position: _ctx.result.strategy,
      transform: `translate3d(${Math.round(_ctx.result.x)}px,${Math.round(_ctx.result.y)}px,0)`
    } : void 0),
    "aria-hidden": _ctx.shown ? "false" : "true",
    tabindex: _ctx.autoHide ? 0 : void 0,
    "data-popper-placement": _ctx.result ? _ctx.result.placement : void 0,
    onKeyup: _cache[2] || (_cache[2] = withKeys(($event) => _ctx.autoHide && _ctx.$emit("hide"), ["esc"]))
  }, [
    createBaseVNode("div", {
      class: "v-popper__backdrop",
      onClick: _cache[0] || (_cache[0] = ($event) => _ctx.autoHide && _ctx.$emit("hide"))
    }),
    createBaseVNode("div", {
      class: "v-popper__wrapper",
      style: normalizeStyle(_ctx.result ? {
        transformOrigin: _ctx.result.transformOrigin
      } : void 0)
    }, [
      createBaseVNode("div", _hoisted_2$1$2, [
        _ctx.mounted ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
          createBaseVNode("div", null, [
            renderSlot(_ctx.$slots, "default")
          ]),
          _ctx.handleResize ? (openBlock(), createBlock(_component_ResizeObserver, {
            key: 0,
            onNotify: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("resize", $event))
          })) : createCommentVNode("", true)
        ], 64)) : createCommentVNode("", true)
      ], 512),
      createBaseVNode("div", {
        ref: "arrow",
        class: "v-popper__arrow-container",
        style: normalizeStyle(_ctx.result ? {
          left: _ctx.toPx(_ctx.result.arrow.x),
          top: _ctx.toPx(_ctx.result.arrow.y)
        } : void 0)
      }, _hoisted_5$q, 4)
    ], 4)
  ], 46, _hoisted_1$1$2);
}
var PrivatePopperContent = /* @__PURE__ */ _export_sfc(_sfc_main$5$1, [["render", _sfc_render$2]]);
var PrivatePopperMethods = {
  methods: {
    show(...args) {
      return this.$refs.popper.show(...args);
    },
    hide(...args) {
      return this.$refs.popper.hide(...args);
    },
    dispose(...args) {
      return this.$refs.popper.dispose(...args);
    },
    onResize(...args) {
      return this.$refs.popper.onResize(...args);
    }
  }
};
const _sfc_main$4$1 = defineComponent({
  name: "VPopperWrapper",
  components: {
    Popper: Popper$1,
    PopperContent: PrivatePopperContent
  },
  mixins: [
    PrivatePopperMethods,
    PrivateThemeClass("finalTheme")
  ],
  props: {
    theme: {
      type: String,
      default: null
    }
  },
  computed: {
    finalTheme() {
      var _a3;
      return (_a3 = this.theme) != null ? _a3 : this.$options.vPopperTheme;
    }
  },
  methods: {
    getTargetNodes() {
      return Array.from(this.$refs.popper.$el.children).filter((node) => node !== this.$refs.popperContent.$el);
    }
  }
});
function _sfc_render$1$1(_ctx, _cache, $props, $setup, $data, $options) {
  const _component_PopperContent = resolveComponent("PopperContent");
  const _component_Popper = resolveComponent("Popper");
  return openBlock(), createBlock(_component_Popper, {
    ref: "popper",
    theme: _ctx.finalTheme,
    "target-nodes": _ctx.getTargetNodes,
    "reference-node": () => _ctx.$refs.popper.$el,
    "popper-node": () => _ctx.$refs.popperContent.$el,
    class: normalizeClass([
      _ctx.themeClass
    ])
  }, {
    default: withCtx(({
      popperId,
      isShown,
      shouldMountContent,
      skipTransition,
      autoHide,
      show,
      hide: hide2,
      handleResize,
      onResize,
      classes,
      result
    }) => [
      renderSlot(_ctx.$slots, "default", {
        shown: isShown,
        show,
        hide: hide2
      }),
      createVNode(_component_PopperContent, {
        ref: "popperContent",
        "popper-id": popperId,
        theme: _ctx.finalTheme,
        shown: isShown,
        mounted: shouldMountContent,
        "skip-transition": skipTransition,
        "auto-hide": autoHide,
        "handle-resize": handleResize,
        classes,
        result,
        onHide: hide2,
        onResize
      }, {
        default: withCtx(() => [
          renderSlot(_ctx.$slots, "popper", {
            shown: isShown,
            hide: hide2
          })
        ]),
        _: 2
      }, 1032, ["popper-id", "theme", "shown", "mounted", "skip-transition", "auto-hide", "handle-resize", "classes", "result", "onHide", "onResize"])
    ]),
    _: 3
  }, 8, ["theme", "target-nodes", "reference-node", "popper-node", "class"]);
}
var PrivatePopperWrapper = /* @__PURE__ */ _export_sfc(_sfc_main$4$1, [["render", _sfc_render$1$1]]);
defineComponent(__spreadProps(__spreadValues({}, PrivatePopperWrapper), {
  name: "VDropdown",
  vPopperTheme: "dropdown"
}));
const _sfc_main$2$1 = defineComponent(__spreadProps(__spreadValues({}, PrivatePopperWrapper), {
  name: "VMenu",
  vPopperTheme: "menu"
}));
const _sfc_main$1$1 = defineComponent(__spreadProps(__spreadValues({}, PrivatePopperWrapper), {
  name: "VTooltip",
  vPopperTheme: "tooltip"
}));
defineComponent({
  name: "VTooltipDirective",
  components: {
    Popper: PrivatePopper(),
    PopperContent: PrivatePopperContent
  },
  mixins: [
    PrivatePopperMethods
  ],
  inheritAttrs: false,
  props: {
    theme: {
      type: String,
      default: "tooltip"
    },
    html: {
      type: Boolean,
      default: (props) => getDefaultConfig(props.theme, "html")
    },
    content: {
      type: [String, Number, Function],
      default: null
    },
    loadingContent: {
      type: String,
      default: (props) => getDefaultConfig(props.theme, "loadingContent")
    }
  },
  data() {
    return {
      asyncContent: null
    };
  },
  computed: {
    isContentAsync() {
      return typeof this.content === "function";
    },
    loading() {
      return this.isContentAsync && this.asyncContent == null;
    },
    finalContent() {
      if (this.isContentAsync) {
        return this.loading ? this.loadingContent : this.asyncContent;
      }
      return this.content;
    }
  },
  watch: {
    content: {
      handler() {
        this.fetchContent(true);
      },
      immediate: true
    },
    async finalContent() {
      await this.$nextTick();
      this.$refs.popper.onResize();
    }
  },
  created() {
    this.$_fetchId = 0;
  },
  methods: {
    fetchContent(force) {
      if (typeof this.content === "function" && this.$_isShown && (force || !this.$_loading && this.asyncContent == null)) {
        this.asyncContent = null;
        this.$_loading = true;
        const fetchId = ++this.$_fetchId;
        const result = this.content(this);
        if (result.then) {
          result.then((res) => this.onResult(fetchId, res));
        } else {
          this.onResult(fetchId, result);
        }
      }
    },
    onResult(fetchId, result) {
      if (fetchId !== this.$_fetchId)
        return;
      this.$_loading = false;
      this.asyncContent = result;
    },
    onShow() {
      this.$_isShown = true;
      this.fetchContent();
    },
    onHide() {
      this.$_isShown = false;
    }
  }
});
const options = config$2;
const Menu = _sfc_main$2$1;
const Tooltip = _sfc_main$1$1;
const _hoisted_1$1i = { class: "flex min-h-screen items-center justify-center" };
const _hoisted_2$1b = { class: "bg-white rounded mx-auto min-w-[480px] max-w-[600px] relative" };
const _hoisted_3$10 = { key: 2 };
const _hoisted_4$D = { class: "rounded flex font-medium bg-red-100 mb-[20px] p-[16px] text-red-600 gap-[8px] items-center" };
const _hoisted_5$p = { key: 3 };
const _hoisted_6$f = { class: "rounded flex bg-red-100 mt-[16px] p-[16px] text-red-600 gap-[8px] items-center" };
const _sfc_main$V = /* @__PURE__ */ defineComponent({
  __name: "LoginModal",
  props: {
    gql: null,
    utmMedium: null,
    utmContent: null
  },
  emits: ["close", "cancel"],
  setup(__props, { emit: emit3 }) {
    const props = __props;
    const online = useOnline();
    gql`
fragment LoginModal on Query {
  ...Auth
}
`;
    hideAllPoppers();
    const { t: t2 } = useI18n();
    const viewer = computed(() => {
      var _a3;
      return (_a3 = props.gql) == null ? void 0 : _a3.cloudViewer;
    });
    const error2 = computed(() => {
      const { name: name2 } = props.gql.authState;
      if (name2 !== "AUTH_BROWSER_LAUNCHED") {
        return name2;
      }
      return null;
    });
    const showFooter = computed(() => error2.value !== "AUTH_COULD_NOT_LAUNCH_BROWSER");
    const title = computed(() => {
      if (viewer.value) {
        return t2("topNav.login.titleSuccess");
      }
      if (error2.value === "AUTH_COULD_NOT_LAUNCH_BROWSER") {
        return t2("topNav.login.titleBrowserError");
      }
      if (error2.value === "AUTH_ERROR_DURING_LOGIN") {
        return t2("topNav.login.titleFailed");
      }
      return t2("topNav.login.titleInitial");
    });
    const isOnline = computed(() => online.value);
    const cancelLogin = () => {
      emit3("cancel");
    };
    return (_ctx, _cache) => {
      const _component_i18n_t = resolveComponent("i18n-t");
      const _component_i_cy_errored_outline_x16 = __unplugin_components_1$8;
      return openBlock(), createBlock(unref(Dialog), {
        open: "",
        class: "inset-0 z-50 fixed overflow-y-auto",
        onClose: cancelLogin
      }, {
        default: withCtx(() => [
          createBaseVNode("div", _hoisted_1$1i, [
            createVNode(unref(DialogOverlay), { class: "bg-gray-800 opacity-90 inset-0 fixed" }),
            createBaseVNode("div", _hoisted_2$1b, [
              createVNode(_sfc_main$W, {
                "help-link": "https://on.cypress.io",
                "help-text": unref(t2)("links.needHelp"),
                onClose: cancelLogin
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(title)), 1)
                ]),
                _: 1
              }, 8, ["help-text"]),
              !unref(isOnline) ? (openBlock(), createBlock(_sfc_main$_, {
                key: 0,
                class: "mt-[24px]"
              })) : unref(isOnline) ? (openBlock(), createBlock(unref(DialogDescription), {
                key: 1,
                class: "font-normal p-[24px] text-gray-700"
              }, {
                default: withCtx(() => [
                  !unref(viewer) && !unref(error2) ? (openBlock(), createBlock(_component_i18n_t, {
                    key: 0,
                    scope: "global",
                    keypath: "topNav.login.bodyInitial"
                  }, {
                    default: withCtx(() => [
                      createVNode(_sfc_main$11, { href: "https://on.cypress.io/dashboard-introduction" }, {
                        default: withCtx(() => [
                          createTextVNode(toDisplayString$1(unref(t2)("topNav.login.cloud")), 1)
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  })) : unref(viewer) ? (openBlock(), createBlock(_component_i18n_t, {
                    key: 1,
                    scope: "global",
                    keypath: "topNav.login.bodySuccess"
                  }, {
                    default: withCtx(() => [
                      createVNode(_sfc_main$11, {
                        href: "https://on.cypress.io/dashboard/profile",
                        class: "font-medium text-indigo-500"
                      }, {
                        default: withCtx(() => [
                          createTextVNode(toDisplayString$1(unref(viewer).fullName || unref(viewer).email), 1)
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  })) : unref(error2) === "AUTH_COULD_NOT_LAUNCH_BROWSER" ? (openBlock(), createElementBlock("div", _hoisted_3$10, [
                    createBaseVNode("div", _hoisted_4$D, [
                      createVNode(_component_i_cy_errored_outline_x16, { class: "h-[16px] min-w-[16px] w-[16px] icon-dark-red-400" }),
                      createTextVNode(" " + toDisplayString$1(unref(t2)("topNav.login.bodyBrowserError")), 1)
                    ]),
                    createTextVNode(" " + toDisplayString$1(unref(t2)("topNav.login.bodyBrowserErrorDetails")) + " ", 1),
                    props.gql.authState.message ? (openBlock(), createBlock(CopyText, {
                      key: 0,
                      class: "mt-[12px]",
                      text: props.gql.authState.message
                    }, null, 8, ["text"])) : createCommentVNode("", true)
                  ])) : unref(error2) === "AUTH_ERROR_DURING_LOGIN" ? (openBlock(), createElementBlock("div", _hoisted_5$p, [
                    createTextVNode(toDisplayString$1(unref(t2)("topNav.login.bodyError")) + " ", 1),
                    createBaseVNode("div", _hoisted_6$f, [
                      createVNode(_component_i_cy_errored_outline_x16, { class: "h-[16px] min-w-[16px] w-[16px] icon-dark-red-400" }),
                      createTextVNode(" " + toDisplayString$1(props.gql.authState.message), 1)
                    ])
                  ])) : createCommentVNode("", true)
                ]),
                _: 1
              })) : createCommentVNode("", true),
              createBaseVNode("div", {
                class: normalizeClass(["bg-gray-50 border-t-[1px] py-[16px] px-[24px]", { "hidden": !unref(showFooter) }])
              }, [
                createVNode(_sfc_main$$, {
                  gql: props.gql,
                  "show-retry": !!unref(error2),
                  "utm-medium": props.utmMedium,
                  "utm-content": props.utmContent,
                  onClose: _cache[0] || (_cache[0] = ($event) => emit3("close")),
                  onCancel: _cache[1] || (_cache[1] = ($event) => emit3("cancel"))
                }, null, 8, ["gql", "show-retry", "utm-medium", "utm-content"])
              ], 2)
            ])
          ])
        ]),
        _: 1
      });
    };
  }
});
const _sfc_main$U = /* @__PURE__ */ defineComponent({
  __name: "StandardModalBody",
  props: {
    variant: null
  },
  setup(__props) {
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(__props.variant === "bare" ? "p-0" : "p-[24px]")
      }, [
        renderSlot(_ctx.$slots, "default")
      ], 2);
    };
  }
});
const _sfc_main$T = {};
const _hoisted_1$1h = { class: "rounded-b bg-gray-50 border-t-[1px] border-gray-100 h-[72px] py-[16px] px-[24px]" };
function _sfc_render$1(_ctx, _cache) {
  return openBlock(), createElementBlock("div", _hoisted_1$1h, [
    renderSlot(_ctx.$slots, "default")
  ]);
}
const StandardModalFooter = /* @__PURE__ */ _export_sfc$1(_sfc_main$T, [["render", _sfc_render$1]]);
const _hoisted_1$1g = { class: "flex min-h-screen items-center justify-center" };
const _sfc_main$S = /* @__PURE__ */ defineComponent({
  __name: "StandardModal",
  props: {
    modelValue: { type: Boolean, default: false },
    helpLink: { default: "https://on.cypress.io" },
    helpText: { default: `${defaultMessages.links.needHelp}` },
    variant: { default: void 0 },
    noHelp: { type: Boolean, default: false },
    title: { default: "" },
    class: { default: void 0 }
  },
  emits: ["update:modelValue"],
  setup(__props, { emit: emit3 }) {
    const props = __props;
    const setIsOpen = (val) => {
      emit3("update:modelValue", val);
    };
    watch(
      () => props.modelValue,
      (value) => {
        if (value) {
          hideAllPoppers();
        }
      },
      { immediate: true }
    );
    const closeModal = () => {
      setIsOpen(false);
    };
    return (_ctx, _cache) => {
      return openBlock(), createBlock(unref(Dialog), {
        open: __props.modelValue,
        class: "inset-0 z-10 fixed overflow-y-auto",
        onClose: _cache[0] || (_cache[0] = ($event) => closeModal())
      }, {
        default: withCtx(() => [
          createBaseVNode("div", _hoisted_1$1g, [
            renderSlot(_ctx.$slots, "overlay", { classes: "fixed inset-0" }, () => [
              createVNode(unref(DialogOverlay), { class: "bg-gray-800 opacity-90 fixed sm:inset-0" })
            ]),
            createBaseVNode("div", {
              "data-cy": "standard-modal",
              class: normalizeClass(["bg-white rounded mx-auto ring-[#9095AD40] ring-4 relative", props.class || ""])
            }, [
              createVNode(_sfc_main$W, {
                "no-help": __props.noHelp,
                "help-link": __props.helpLink,
                "help-text": __props.helpText,
                onClose: closeModal
              }, {
                default: withCtx(() => [
                  renderSlot(_ctx.$slots, "title", {}, () => [
                    createTextVNode(toDisplayString$1(__props.title), 1)
                  ])
                ]),
                _: 3
              }, 8, ["no-help", "help-link", "help-text"]),
              _ctx.$slots.description ? (openBlock(), createBlock(unref(DialogDescription), {
                key: 0,
                class: "font-normal p-[24px] text-gray-700"
              }, {
                default: withCtx(() => [
                  renderSlot(_ctx.$slots, "description")
                ]),
                _: 3
              })) : createCommentVNode("", true),
              createVNode(_sfc_main$U, { variant: __props.variant }, {
                default: withCtx(() => [
                  renderSlot(_ctx.$slots, "default")
                ]),
                _: 3
              }, 8, ["variant"]),
              _ctx.$slots.footer ? (openBlock(), createBlock(StandardModalFooter, { key: 1 }, {
                default: withCtx(() => [
                  renderSlot(_ctx.$slots, "footer")
                ]),
                _: 3
              })) : createCommentVNode("", true)
            ], 2)
          ])
        ]),
        _: 3
      }, 8, ["open"]);
    };
  }
});
const _hoisted_1$1f = {
  width: "1em",
  height: "1em",
  preserveAspectRatio: "xMidYMid meet",
  viewBox: "0 0 24 24"
};
const _hoisted_2$1a = /* @__PURE__ */ createBaseVNode("path", {
  d: "M21 7L9 19l-5.5-5.5l1.41-1.41L9 16.17L19.59 5.59L21 7z",
  fill: "currentColor"
}, null, -1);
const _hoisted_3$$ = [
  _hoisted_2$1a
];
function render$G(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1f, _hoisted_3$$);
}
const __unplugin_components_1$7 = { name: "mdi-check", render: render$G };
const _hoisted_1$1e = {
  height: "1em",
  width: "1em",
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$19 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M2 5L8 11L14 5",
  stroke: "#1B1E2E",
  class: "icon-dark",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$_ = [
  _hoisted_2$19
];
function render$F(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1e, _hoisted_3$_);
}
const __unplugin_components_0$8 = { name: "cy-chevron-down", render: render$F };
var commonjsGlobal$1 = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
function getDefaultExportFromCjs(x2) {
  return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, "default") ? x2["default"] : x2;
}
function getAugmentedNamespace(n) {
  if (n.__esModule)
    return n;
  var f2 = n.default;
  if (typeof f2 == "function") {
    var a2 = function a3() {
      if (this instanceof a3) {
        var args = [null];
        args.push.apply(args, arguments);
        var Ctor = Function.bind.apply(f2, args);
        return new Ctor();
      }
      return f2.apply(this, arguments);
    };
    a2.prototype = f2.prototype;
  } else
    a2 = {};
  Object.defineProperty(a2, "__esModule", { value: true });
  Object.keys(n).forEach(function(k2) {
    var d2 = Object.getOwnPropertyDescriptor(n, k2);
    Object.defineProperty(a2, k2, d2.get ? d2 : {
      enumerable: true,
      get: function() {
        return n[k2];
      }
    });
  });
  return a2;
}
var lodashExports = {};
var lodash = {
  get exports() {
    return lodashExports;
  },
  set exports(v2) {
    lodashExports = v2;
  }
};
/**
 * @license
 * Lodash <https://lodash.com/>
 * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
 * Released under MIT license <https://lodash.com/license>
 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
 */
(function(module, exports) {
  (function() {
    var undefined$1;
    var VERSION2 = "4.17.21";
    var LARGE_ARRAY_SIZE = 200;
    var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", FUNC_ERROR_TEXT = "Expected a function", INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`";
    var HASH_UNDEFINED = "__lodash_hash_undefined__";
    var MAX_MEMOIZE_SIZE = 500;
    var PLACEHOLDER = "__lodash_placeholder__";
    var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4;
    var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2;
    var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_BOUND_FLAG = 4, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_PARTIAL_FLAG = 32, WRAP_PARTIAL_RIGHT_FLAG = 64, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256, WRAP_FLIP_FLAG = 512;
    var DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = "...";
    var HOT_COUNT = 800, HOT_SPAN = 16;
    var LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, LAZY_WHILE_FLAG = 3;
    var INFINITY = 1 / 0, MAX_SAFE_INTEGER = 9007199254740991, MAX_INTEGER = 17976931348623157e292, NAN = 0 / 0;
    var MAX_ARRAY_LENGTH2 = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH2 - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH2 >>> 1;
    var wrapFlags = [
      ["ary", WRAP_ARY_FLAG],
      ["bind", WRAP_BIND_FLAG],
      ["bindKey", WRAP_BIND_KEY_FLAG],
      ["curry", WRAP_CURRY_FLAG],
      ["curryRight", WRAP_CURRY_RIGHT_FLAG],
      ["flip", WRAP_FLIP_FLAG],
      ["partial", WRAP_PARTIAL_FLAG],
      ["partialRight", WRAP_PARTIAL_RIGHT_FLAG],
      ["rearg", WRAP_REARG_FLAG]
    ];
    var argsTag = "[object Arguments]", arrayTag = "[object Array]", asyncTag = "[object AsyncFunction]", boolTag = "[object Boolean]", dateTag = "[object Date]", domExcTag = "[object DOMException]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", nullTag2 = "[object Null]", objectTag2 = "[object Object]", promiseTag = "[object Promise]", proxyTag = "[object Proxy]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", undefinedTag2 = "[object Undefined]", weakMapTag = "[object WeakMap]", weakSetTag = "[object WeakSet]";
    var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
    var reEmptyStringLeading = /\b__p \+= '';/g, reEmptyStringMiddle = /\b(__p \+=) '' \+/g, reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
    var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, reUnescapedHtml = /[&<>"']/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
    var reEscape = /<%-([\s\S]+?)%>/g, reEvaluate = /<%([\s\S]+?)%>/g, reInterpolate = /<%=([\s\S]+?)%>/g;
    var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
    var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source);
    var reTrimStart = /^\s+/;
    var reWhitespace = /\s/;
    var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, reSplitDetails = /,? & /;
    var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
    var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/;
    var reEscapeChar = /\\(\\)?/g;
    var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
    var reFlags = /\w*$/;
    var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
    var reIsBinary = /^0b[01]+$/i;
    var reIsHostCtor = /^\[object .+?Constructor\]$/;
    var reIsOctal = /^0o[0-7]+$/i;
    var reIsUint = /^(?:0|[1-9]\d*)$/;
    var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
    var reNoMatch = /($^)/;
    var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
    var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsDingbatRange = "\\u2700-\\u27bf", rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff", rsMathOpRange = "\\xac\\xb1\\xd7\\xf7", rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", rsPunctuationRange = "\\u2000-\\u206f", rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde", rsVarRange = "\\ufe0e\\ufe0f", rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
    var rsApos = "['â€™]", rsAstral = "[" + rsAstralRange + "]", rsBreak = "[" + rsBreakRange + "]", rsCombo = "[" + rsComboRange + "]", rsDigits = "\\d+", rsDingbat = "[" + rsDingbatRange + "]", rsLower = "[" + rsLowerRange + "]", rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsUpper = "[" + rsUpperRange + "]", rsZWJ = "\\u200d";
    var rsMiscLower = "(?:" + rsLower + "|" + rsMisc + ")", rsMiscUpper = "(?:" + rsUpper + "|" + rsMisc + ")", rsOptContrLower = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?", rsOptContrUpper = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsOrdLower = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", rsOrdUpper = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsEmoji = "(?:" + [rsDingbat, rsRegional, rsSurrPair].join("|") + ")" + rsSeq, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")";
    var reApos = RegExp(rsApos, "g");
    var reComboMark = RegExp(rsCombo, "g");
    var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g");
    var reUnicodeWord = RegExp([
      rsUpper + "?" + rsLower + "+" + rsOptContrLower + "(?=" + [rsBreak, rsUpper, "$"].join("|") + ")",
      rsMiscUpper + "+" + rsOptContrUpper + "(?=" + [rsBreak, rsUpper + rsMiscLower, "$"].join("|") + ")",
      rsUpper + "?" + rsMiscLower + "+" + rsOptContrLower,
      rsUpper + "+" + rsOptContrUpper,
      rsOrdUpper,
      rsOrdLower,
      rsDigits,
      rsEmoji
    ].join("|"), "g");
    var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]");
    var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
    var contextProps = [
      "Array",
      "Buffer",
      "DataView",
      "Date",
      "Error",
      "Float32Array",
      "Float64Array",
      "Function",
      "Int8Array",
      "Int16Array",
      "Int32Array",
      "Map",
      "Math",
      "Object",
      "Promise",
      "RegExp",
      "Set",
      "String",
      "Symbol",
      "TypeError",
      "Uint8Array",
      "Uint8ClampedArray",
      "Uint16Array",
      "Uint32Array",
      "WeakMap",
      "_",
      "clearTimeout",
      "isFinite",
      "parseInt",
      "setTimeout"
    ];
    var templateCounter = -1;
    var typedArrayTags = {};
    typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
    typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag2] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
    var cloneableTags = {};
    cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag2] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
    cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;
    var deburredLetters = {
      // Latin-1 Supplement block.
      "Ã€": "A",
      "Ã�": "A",
      "Ã‚": "A",
      "Ãƒ": "A",
      "Ã„": "A",
      "Ã…": "A",
      "Ã ": "a",
      "Ã¡": "a",
      "Ã¢": "a",
      "Ã£": "a",
      "Ã¤": "a",
      "Ã¥": "a",
      "Ã‡": "C",
      "Ã§": "c",
      "Ã�": "D",
      "Ã°": "d",
      "Ãˆ": "E",
      "Ã‰": "E",
      "ÃŠ": "E",
      "Ã‹": "E",
      "Ã¨": "e",
      "Ã©": "e",
      "Ãª": "e",
      "Ã«": "e",
      "ÃŒ": "I",
      "Ã�": "I",
      "ÃŽ": "I",
      "Ã�": "I",
      "Ã¬": "i",
      "Ã­": "i",
      "Ã®": "i",
      "Ã¯": "i",
      "Ã‘": "N",
      "Ã±": "n",
      "Ã’": "O",
      "Ã“": "O",
      "Ã”": "O",
      "Ã•": "O",
      "Ã–": "O",
      "Ã˜": "O",
      "Ã²": "o",
      "Ã³": "o",
      "Ã´": "o",
      "Ãµ": "o",
      "Ã¶": "o",
      "Ã¸": "o",
      "Ã™": "U",
      "Ãš": "U",
      "Ã›": "U",
      "Ãœ": "U",
      "Ã¹": "u",
      "Ãº": "u",
      "Ã»": "u",
      "Ã¼": "u",
      "Ã�": "Y",
      "Ã½": "y",
      "Ã¿": "y",
      "Ã†": "Ae",
      "Ã¦": "ae",
      "Ãž": "Th",
      "Ã¾": "th",
      "ÃŸ": "ss",
      // Latin Extended-A block.
      "Ä€": "A",
      "Ä‚": "A",
      "Ä„": "A",
      "Ä�": "a",
      "Äƒ": "a",
      "Ä…": "a",
      "Ä†": "C",
      "Äˆ": "C",
      "ÄŠ": "C",
      "ÄŒ": "C",
      "Ä‡": "c",
      "Ä‰": "c",
      "Ä‹": "c",
      "Ä�": "c",
      "ÄŽ": "D",
      "Ä�": "D",
      "Ä�": "d",
      "Ä‘": "d",
      "Ä’": "E",
      "Ä”": "E",
      "Ä–": "E",
      "Ä˜": "E",
      "Äš": "E",
      "Ä“": "e",
      "Ä•": "e",
      "Ä—": "e",
      "Ä™": "e",
      "Ä›": "e",
      "Äœ": "G",
      "Äž": "G",
      "Ä ": "G",
      "Ä¢": "G",
      "Ä�": "g",
      "ÄŸ": "g",
      "Ä¡": "g",
      "Ä£": "g",
      "Ä¤": "H",
      "Ä¦": "H",
      "Ä¥": "h",
      "Ä§": "h",
      "Ä¨": "I",
      "Äª": "I",
      "Ä¬": "I",
      "Ä®": "I",
      "Ä°": "I",
      "Ä©": "i",
      "Ä«": "i",
      "Ä­": "i",
      "Ä¯": "i",
      "Ä±": "i",
      "Ä´": "J",
      "Äµ": "j",
      "Ä¶": "K",
      "Ä·": "k",
      "Ä¸": "k",
      "Ä¹": "L",
      "Ä»": "L",
      "Ä½": "L",
      "Ä¿": "L",
      "Å�": "L",
      "Äº": "l",
      "Ä¼": "l",
      "Ä¾": "l",
      "Å€": "l",
      "Å‚": "l",
      "Åƒ": "N",
      "Å…": "N",
      "Å‡": "N",
      "ÅŠ": "N",
      "Å„": "n",
      "Å†": "n",
      "Åˆ": "n",
      "Å‹": "n",
      "ÅŒ": "O",
      "ÅŽ": "O",
      "Å�": "O",
      "Å�": "o",
      "Å�": "o",
      "Å‘": "o",
      "Å”": "R",
      "Å–": "R",
      "Å˜": "R",
      "Å•": "r",
      "Å—": "r",
      "Å™": "r",
      "Åš": "S",
      "Åœ": "S",
      "Åž": "S",
      "Å ": "S",
      "Å›": "s",
      "Å�": "s",
      "ÅŸ": "s",
      "Å¡": "s",
      "Å¢": "T",
      "Å¤": "T",
      "Å¦": "T",
      "Å£": "t",
      "Å¥": "t",
      "Å§": "t",
      "Å¨": "U",
      "Åª": "U",
      "Å¬": "U",
      "Å®": "U",
      "Å°": "U",
      "Å²": "U",
      "Å©": "u",
      "Å«": "u",
      "Å­": "u",
      "Å¯": "u",
      "Å±": "u",
      "Å³": "u",
      "Å´": "W",
      "Åµ": "w",
      "Å¶": "Y",
      "Å·": "y",
      "Å¸": "Y",
      "Å¹": "Z",
      "Å»": "Z",
      "Å½": "Z",
      "Åº": "z",
      "Å¼": "z",
      "Å¾": "z",
      "Ä²": "IJ",
      "Ä³": "ij",
      "Å’": "Oe",
      "Å“": "oe",
      "Å‰": "'n",
      "Å¿": "s"
    };
    var htmlEscapes2 = {
      "&": "&amp;",
      "<": "&lt;",
      ">": "&gt;",
      '"': "&quot;",
      "'": "&#39;"
    };
    var htmlUnescapes = {
      "&amp;": "&",
      "&lt;": "<",
      "&gt;": ">",
      "&quot;": '"',
      "&#39;": "'"
    };
    var stringEscapes = {
      "\\": "\\",
      "'": "'",
      "\n": "n",
      "\r": "r",
      "\u2028": "u2028",
      "\u2029": "u2029"
    };
    var freeParseFloat = parseFloat, freeParseInt = parseInt;
    var freeGlobal2 = typeof commonjsGlobal$1 == "object" && commonjsGlobal$1 && commonjsGlobal$1.Object === Object && commonjsGlobal$1;
    var freeSelf2 = typeof self == "object" && self && self.Object === Object && self;
    var root2 = freeGlobal2 || freeSelf2 || Function("return this")();
    var freeExports = exports && !exports.nodeType && exports;
    var freeModule = freeExports && true && module && !module.nodeType && module;
    var moduleExports = freeModule && freeModule.exports === freeExports;
    var freeProcess = moduleExports && freeGlobal2.process;
    var nodeUtil = function() {
      try {
        var types = freeModule && freeModule.require && freeModule.require("util").types;
        if (types) {
          return types;
        }
        return freeProcess && freeProcess.binding && freeProcess.binding("util");
      } catch (e) {
      }
    }();
    var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, nodeIsDate = nodeUtil && nodeUtil.isDate, nodeIsMap = nodeUtil && nodeUtil.isMap, nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, nodeIsSet = nodeUtil && nodeUtil.isSet, nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
    function apply2(func, thisArg, args) {
      switch (args.length) {
        case 0:
          return func.call(thisArg);
        case 1:
          return func.call(thisArg, args[0]);
        case 2:
          return func.call(thisArg, args[0], args[1]);
        case 3:
          return func.call(thisArg, args[0], args[1], args[2]);
      }
      return func.apply(thisArg, args);
    }
    function arrayAggregator(array, setter, iteratee, accumulator) {
      var index2 = -1, length2 = array == null ? 0 : array.length;
      while (++index2 < length2) {
        var value = array[index2];
        setter(accumulator, value, iteratee(value), array);
      }
      return accumulator;
    }
    function arrayEach(array, iteratee) {
      var index2 = -1, length2 = array == null ? 0 : array.length;
      while (++index2 < length2) {
        if (iteratee(array[index2], index2, array) === false) {
          break;
        }
      }
      return array;
    }
    function arrayEachRight(array, iteratee) {
      var length2 = array == null ? 0 : array.length;
      while (length2--) {
        if (iteratee(array[length2], length2, array) === false) {
          break;
        }
      }
      return array;
    }
    function arrayEvery(array, predicate) {
      var index2 = -1, length2 = array == null ? 0 : array.length;
      while (++index2 < length2) {
        if (!predicate(array[index2], index2, array)) {
          return false;
        }
      }
      return true;
    }
    function arrayFilter(array, predicate) {
      var index2 = -1, length2 = array == null ? 0 : array.length, resIndex = 0, result = [];
      while (++index2 < length2) {
        var value = array[index2];
        if (predicate(value, index2, array)) {
          result[resIndex++] = value;
        }
      }
      return result;
    }
    function arrayIncludes(array, value) {
      var length2 = array == null ? 0 : array.length;
      return !!length2 && baseIndexOf(array, value, 0) > -1;
    }
    function arrayIncludesWith(array, value, comparator2) {
      var index2 = -1, length2 = array == null ? 0 : array.length;
      while (++index2 < length2) {
        if (comparator2(value, array[index2])) {
          return true;
        }
      }
      return false;
    }
    function arrayMap(array, iteratee) {
      var index2 = -1, length2 = array == null ? 0 : array.length, result = Array(length2);
      while (++index2 < length2) {
        result[index2] = iteratee(array[index2], index2, array);
      }
      return result;
    }
    function arrayPush(array, values) {
      var index2 = -1, length2 = values.length, offset2 = array.length;
      while (++index2 < length2) {
        array[offset2 + index2] = values[index2];
      }
      return array;
    }
    function arrayReduce(array, iteratee, accumulator, initAccum) {
      var index2 = -1, length2 = array == null ? 0 : array.length;
      if (initAccum && length2) {
        accumulator = array[++index2];
      }
      while (++index2 < length2) {
        accumulator = iteratee(accumulator, array[index2], index2, array);
      }
      return accumulator;
    }
    function arrayReduceRight(array, iteratee, accumulator, initAccum) {
      var length2 = array == null ? 0 : array.length;
      if (initAccum && length2) {
        accumulator = array[--length2];
      }
      while (length2--) {
        accumulator = iteratee(accumulator, array[length2], length2, array);
      }
      return accumulator;
    }
    function arraySome(array, predicate) {
      var index2 = -1, length2 = array == null ? 0 : array.length;
      while (++index2 < length2) {
        if (predicate(array[index2], index2, array)) {
          return true;
        }
      }
      return false;
    }
    var asciiSize = baseProperty("length");
    function asciiToArray(string) {
      return string.split("");
    }
    function asciiWords(string) {
      return string.match(reAsciiWord) || [];
    }
    function baseFindKey(collection, predicate, eachFunc) {
      var result;
      eachFunc(collection, function(value, key, collection2) {
        if (predicate(value, key, collection2)) {
          result = key;
          return false;
        }
      });
      return result;
    }
    function baseFindIndex(array, predicate, fromIndex, fromRight) {
      var length2 = array.length, index2 = fromIndex + (fromRight ? 1 : -1);
      while (fromRight ? index2-- : ++index2 < length2) {
        if (predicate(array[index2], index2, array)) {
          return index2;
        }
      }
      return -1;
    }
    function baseIndexOf(array, value, fromIndex) {
      return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);
    }
    function baseIndexOfWith(array, value, fromIndex, comparator2) {
      var index2 = fromIndex - 1, length2 = array.length;
      while (++index2 < length2) {
        if (comparator2(array[index2], value)) {
          return index2;
        }
      }
      return -1;
    }
    function baseIsNaN(value) {
      return value !== value;
    }
    function baseMean(array, iteratee) {
      var length2 = array == null ? 0 : array.length;
      return length2 ? baseSum(array, iteratee) / length2 : NAN;
    }
    function baseProperty(key) {
      return function(object) {
        return object == null ? undefined$1 : object[key];
      };
    }
    function basePropertyOf(object) {
      return function(key) {
        return object == null ? undefined$1 : object[key];
      };
    }
    function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
      eachFunc(collection, function(value, index2, collection2) {
        accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index2, collection2);
      });
      return accumulator;
    }
    function baseSortBy(array, comparer2) {
      var length2 = array.length;
      array.sort(comparer2);
      while (length2--) {
        array[length2] = array[length2].value;
      }
      return array;
    }
    function baseSum(array, iteratee) {
      var result, index2 = -1, length2 = array.length;
      while (++index2 < length2) {
        var current = iteratee(array[index2]);
        if (current !== undefined$1) {
          result = result === undefined$1 ? current : result + current;
        }
      }
      return result;
    }
    function baseTimes(n, iteratee) {
      var index2 = -1, result = Array(n);
      while (++index2 < n) {
        result[index2] = iteratee(index2);
      }
      return result;
    }
    function baseToPairs(object, props) {
      return arrayMap(props, function(key) {
        return [key, object[key]];
      });
    }
    function baseTrim(string) {
      return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string;
    }
    function baseUnary(func) {
      return function(value) {
        return func(value);
      };
    }
    function baseValues(object, props) {
      return arrayMap(props, function(key) {
        return object[key];
      });
    }
    function cacheHas(cache2, key) {
      return cache2.has(key);
    }
    function charsStartIndex(strSymbols, chrSymbols) {
      var index2 = -1, length2 = strSymbols.length;
      while (++index2 < length2 && baseIndexOf(chrSymbols, strSymbols[index2], 0) > -1) {
      }
      return index2;
    }
    function charsEndIndex(strSymbols, chrSymbols) {
      var index2 = strSymbols.length;
      while (index2-- && baseIndexOf(chrSymbols, strSymbols[index2], 0) > -1) {
      }
      return index2;
    }
    function countHolders(array, placeholder) {
      var length2 = array.length, result = 0;
      while (length2--) {
        if (array[length2] === placeholder) {
          ++result;
        }
      }
      return result;
    }
    var deburrLetter = basePropertyOf(deburredLetters);
    var escapeHtmlChar = basePropertyOf(htmlEscapes2);
    function escapeStringChar(chr) {
      return "\\" + stringEscapes[chr];
    }
    function getValue2(object, key) {
      return object == null ? undefined$1 : object[key];
    }
    function hasUnicode(string) {
      return reHasUnicode.test(string);
    }
    function hasUnicodeWord(string) {
      return reHasUnicodeWord.test(string);
    }
    function iteratorToArray(iterator2) {
      var data, result = [];
      while (!(data = iterator2.next()).done) {
        result.push(data.value);
      }
      return result;
    }
    function mapToArray(map2) {
      var index2 = -1, result = Array(map2.size);
      map2.forEach(function(value, key) {
        result[++index2] = [key, value];
      });
      return result;
    }
    function overArg2(func, transform) {
      return function(arg) {
        return func(transform(arg));
      };
    }
    function replaceHolders(array, placeholder) {
      var index2 = -1, length2 = array.length, resIndex = 0, result = [];
      while (++index2 < length2) {
        var value = array[index2];
        if (value === placeholder || value === PLACEHOLDER) {
          array[index2] = PLACEHOLDER;
          result[resIndex++] = index2;
        }
      }
      return result;
    }
    function setToArray(set3) {
      var index2 = -1, result = Array(set3.size);
      set3.forEach(function(value) {
        result[++index2] = value;
      });
      return result;
    }
    function setToPairs(set3) {
      var index2 = -1, result = Array(set3.size);
      set3.forEach(function(value) {
        result[++index2] = [value, value];
      });
      return result;
    }
    function strictIndexOf(array, value, fromIndex) {
      var index2 = fromIndex - 1, length2 = array.length;
      while (++index2 < length2) {
        if (array[index2] === value) {
          return index2;
        }
      }
      return -1;
    }
    function strictLastIndexOf(array, value, fromIndex) {
      var index2 = fromIndex + 1;
      while (index2--) {
        if (array[index2] === value) {
          return index2;
        }
      }
      return index2;
    }
    function stringSize(string) {
      return hasUnicode(string) ? unicodeSize(string) : asciiSize(string);
    }
    function stringToArray(string) {
      return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string);
    }
    function trimmedEndIndex(string) {
      var index2 = string.length;
      while (index2-- && reWhitespace.test(string.charAt(index2))) {
      }
      return index2;
    }
    var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
    function unicodeSize(string) {
      var result = reUnicode.lastIndex = 0;
      while (reUnicode.test(string)) {
        ++result;
      }
      return result;
    }
    function unicodeToArray(string) {
      return string.match(reUnicode) || [];
    }
    function unicodeWords(string) {
      return string.match(reUnicodeWord) || [];
    }
    var runInContext = function runInContext2(context2) {
      context2 = context2 == null ? root2 : _2.defaults(root2.Object(), context2, _2.pick(root2, contextProps));
      var Array2 = context2.Array, Date2 = context2.Date, Error2 = context2.Error, Function2 = context2.Function, Math2 = context2.Math, Object2 = context2.Object, RegExp2 = context2.RegExp, String2 = context2.String, TypeError2 = context2.TypeError;
      var arrayProto = Array2.prototype, funcProto2 = Function2.prototype, objectProto2 = Object2.prototype;
      var coreJsData = context2["__core-js_shared__"];
      var funcToString2 = funcProto2.toString;
      var hasOwnProperty2 = objectProto2.hasOwnProperty;
      var idCounter = 0;
      var maskSrcKey = function() {
        var uid2 = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
        return uid2 ? "Symbol(src)_1." + uid2 : "";
      }();
      var nativeObjectToString2 = objectProto2.toString;
      var objectCtorString2 = funcToString2.call(Object2);
      var oldDash = root2._;
      var reIsNative = RegExp2(
        "^" + funcToString2.call(hasOwnProperty2).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
      );
      var Buffer2 = moduleExports ? context2.Buffer : undefined$1, Symbol2 = context2.Symbol, Uint8Array2 = context2.Uint8Array, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : undefined$1, getPrototype2 = overArg2(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto2.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol2 ? Symbol2.isConcatSpreadable : undefined$1, symIterator = Symbol2 ? Symbol2.iterator : undefined$1, symToStringTag2 = Symbol2 ? Symbol2.toStringTag : undefined$1;
      var defineProperty = function() {
        try {
          var func = getNative(Object2, "defineProperty");
          func({}, "", {});
          return func;
        } catch (e) {
        }
      }();
      var ctxClearTimeout = context2.clearTimeout !== root2.clearTimeout && context2.clearTimeout, ctxNow = Date2 && Date2.now !== root2.Date.now && Date2.now, ctxSetTimeout = context2.setTimeout !== root2.setTimeout && context2.setTimeout;
      var nativeCeil = Math2.ceil, nativeFloor = Math2.floor, nativeGetSymbols = Object2.getOwnPropertySymbols, nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : undefined$1, nativeIsFinite = context2.isFinite, nativeJoin = arrayProto.join, nativeKeys = overArg2(Object2.keys, Object2), nativeMax = Math2.max, nativeMin = Math2.min, nativeNow = Date2.now, nativeParseInt = context2.parseInt, nativeRandom = Math2.random, nativeReverse = arrayProto.reverse;
      var DataView = getNative(context2, "DataView"), Map2 = getNative(context2, "Map"), Promise2 = getNative(context2, "Promise"), Set2 = getNative(context2, "Set"), WeakMap2 = getNative(context2, "WeakMap"), nativeCreate = getNative(Object2, "create");
      var metaMap = WeakMap2 && new WeakMap2();
      var realNames = {};
      var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set2), weakMapCtorString = toSource(WeakMap2);
      var symbolProto2 = Symbol2 ? Symbol2.prototype : undefined$1, symbolValueOf = symbolProto2 ? symbolProto2.valueOf : undefined$1, symbolToString = symbolProto2 ? symbolProto2.toString : undefined$1;
      function lodash2(value) {
        if (isObjectLike2(value) && !isArray2(value) && !(value instanceof LazyWrapper)) {
          if (value instanceof LodashWrapper) {
            return value;
          }
          if (hasOwnProperty2.call(value, "__wrapped__")) {
            return wrapperClone(value);
          }
        }
        return new LodashWrapper(value);
      }
      var baseCreate = function() {
        function object() {
        }
        return function(proto2) {
          if (!isObject2(proto2)) {
            return {};
          }
          if (objectCreate) {
            return objectCreate(proto2);
          }
          object.prototype = proto2;
          var result2 = new object();
          object.prototype = undefined$1;
          return result2;
        };
      }();
      function baseLodash() {
      }
      function LodashWrapper(value, chainAll) {
        this.__wrapped__ = value;
        this.__actions__ = [];
        this.__chain__ = !!chainAll;
        this.__index__ = 0;
        this.__values__ = undefined$1;
      }
      lodash2.templateSettings = {
        /**
         * Used to detect `data` property values to be HTML-escaped.
         *
         * @memberOf _.templateSettings
         * @type {RegExp}
         */
        "escape": reEscape,
        /**
         * Used to detect code to be evaluated.
         *
         * @memberOf _.templateSettings
         * @type {RegExp}
         */
        "evaluate": reEvaluate,
        /**
         * Used to detect `data` property values to inject.
         *
         * @memberOf _.templateSettings
         * @type {RegExp}
         */
        "interpolate": reInterpolate,
        /**
         * Used to reference the data object in the template text.
         *
         * @memberOf _.templateSettings
         * @type {string}
         */
        "variable": "",
        /**
         * Used to import variables into the compiled template.
         *
         * @memberOf _.templateSettings
         * @type {Object}
         */
        "imports": {
          /**
           * A reference to the `lodash` function.
           *
           * @memberOf _.templateSettings.imports
           * @type {Function}
           */
          "_": lodash2
        }
      };
      lodash2.prototype = baseLodash.prototype;
      lodash2.prototype.constructor = lodash2;
      LodashWrapper.prototype = baseCreate(baseLodash.prototype);
      LodashWrapper.prototype.constructor = LodashWrapper;
      function LazyWrapper(value) {
        this.__wrapped__ = value;
        this.__actions__ = [];
        this.__dir__ = 1;
        this.__filtered__ = false;
        this.__iteratees__ = [];
        this.__takeCount__ = MAX_ARRAY_LENGTH2;
        this.__views__ = [];
      }
      function lazyClone() {
        var result2 = new LazyWrapper(this.__wrapped__);
        result2.__actions__ = copyArray(this.__actions__);
        result2.__dir__ = this.__dir__;
        result2.__filtered__ = this.__filtered__;
        result2.__iteratees__ = copyArray(this.__iteratees__);
        result2.__takeCount__ = this.__takeCount__;
        result2.__views__ = copyArray(this.__views__);
        return result2;
      }
      function lazyReverse() {
        if (this.__filtered__) {
          var result2 = new LazyWrapper(this);
          result2.__dir__ = -1;
          result2.__filtered__ = true;
        } else {
          result2 = this.clone();
          result2.__dir__ *= -1;
        }
        return result2;
      }
      function lazyValue() {
        var array = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray2(array), isRight = dir < 0, arrLength = isArr ? array.length : 0, view = getView(0, arrLength, this.__views__), start2 = view.start, end2 = view.end, length2 = end2 - start2, index2 = isRight ? end2 : start2 - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length2, this.__takeCount__);
        if (!isArr || !isRight && arrLength == length2 && takeCount == length2) {
          return baseWrapperValue(array, this.__actions__);
        }
        var result2 = [];
        outer:
          while (length2-- && resIndex < takeCount) {
            index2 += dir;
            var iterIndex = -1, value = array[index2];
            while (++iterIndex < iterLength) {
              var data = iteratees[iterIndex], iteratee2 = data.iteratee, type2 = data.type, computed2 = iteratee2(value);
              if (type2 == LAZY_MAP_FLAG) {
                value = computed2;
              } else if (!computed2) {
                if (type2 == LAZY_FILTER_FLAG) {
                  continue outer;
                } else {
                  break outer;
                }
              }
            }
            result2[resIndex++] = value;
          }
        return result2;
      }
      LazyWrapper.prototype = baseCreate(baseLodash.prototype);
      LazyWrapper.prototype.constructor = LazyWrapper;
      function Hash(entries) {
        var index2 = -1, length2 = entries == null ? 0 : entries.length;
        this.clear();
        while (++index2 < length2) {
          var entry = entries[index2];
          this.set(entry[0], entry[1]);
        }
      }
      function hashClear() {
        this.__data__ = nativeCreate ? nativeCreate(null) : {};
        this.size = 0;
      }
      function hashDelete(key) {
        var result2 = this.has(key) && delete this.__data__[key];
        this.size -= result2 ? 1 : 0;
        return result2;
      }
      function hashGet(key) {
        var data = this.__data__;
        if (nativeCreate) {
          var result2 = data[key];
          return result2 === HASH_UNDEFINED ? undefined$1 : result2;
        }
        return hasOwnProperty2.call(data, key) ? data[key] : undefined$1;
      }
      function hashHas(key) {
        var data = this.__data__;
        return nativeCreate ? data[key] !== undefined$1 : hasOwnProperty2.call(data, key);
      }
      function hashSet(key, value) {
        var data = this.__data__;
        this.size += this.has(key) ? 0 : 1;
        data[key] = nativeCreate && value === undefined$1 ? HASH_UNDEFINED : value;
        return this;
      }
      Hash.prototype.clear = hashClear;
      Hash.prototype["delete"] = hashDelete;
      Hash.prototype.get = hashGet;
      Hash.prototype.has = hashHas;
      Hash.prototype.set = hashSet;
      function ListCache(entries) {
        var index2 = -1, length2 = entries == null ? 0 : entries.length;
        this.clear();
        while (++index2 < length2) {
          var entry = entries[index2];
          this.set(entry[0], entry[1]);
        }
      }
      function listCacheClear() {
        this.__data__ = [];
        this.size = 0;
      }
      function listCacheDelete(key) {
        var data = this.__data__, index2 = assocIndexOf(data, key);
        if (index2 < 0) {
          return false;
        }
        var lastIndex = data.length - 1;
        if (index2 == lastIndex) {
          data.pop();
        } else {
          splice.call(data, index2, 1);
        }
        --this.size;
        return true;
      }
      function listCacheGet(key) {
        var data = this.__data__, index2 = assocIndexOf(data, key);
        return index2 < 0 ? undefined$1 : data[index2][1];
      }
      function listCacheHas(key) {
        return assocIndexOf(this.__data__, key) > -1;
      }
      function listCacheSet(key, value) {
        var data = this.__data__, index2 = assocIndexOf(data, key);
        if (index2 < 0) {
          ++this.size;
          data.push([key, value]);
        } else {
          data[index2][1] = value;
        }
        return this;
      }
      ListCache.prototype.clear = listCacheClear;
      ListCache.prototype["delete"] = listCacheDelete;
      ListCache.prototype.get = listCacheGet;
      ListCache.prototype.has = listCacheHas;
      ListCache.prototype.set = listCacheSet;
      function MapCache(entries) {
        var index2 = -1, length2 = entries == null ? 0 : entries.length;
        this.clear();
        while (++index2 < length2) {
          var entry = entries[index2];
          this.set(entry[0], entry[1]);
        }
      }
      function mapCacheClear() {
        this.size = 0;
        this.__data__ = {
          "hash": new Hash(),
          "map": new (Map2 || ListCache)(),
          "string": new Hash()
        };
      }
      function mapCacheDelete(key) {
        var result2 = getMapData(this, key)["delete"](key);
        this.size -= result2 ? 1 : 0;
        return result2;
      }
      function mapCacheGet(key) {
        return getMapData(this, key).get(key);
      }
      function mapCacheHas(key) {
        return getMapData(this, key).has(key);
      }
      function mapCacheSet(key, value) {
        var data = getMapData(this, key), size3 = data.size;
        data.set(key, value);
        this.size += data.size == size3 ? 0 : 1;
        return this;
      }
      MapCache.prototype.clear = mapCacheClear;
      MapCache.prototype["delete"] = mapCacheDelete;
      MapCache.prototype.get = mapCacheGet;
      MapCache.prototype.has = mapCacheHas;
      MapCache.prototype.set = mapCacheSet;
      function SetCache(values2) {
        var index2 = -1, length2 = values2 == null ? 0 : values2.length;
        this.__data__ = new MapCache();
        while (++index2 < length2) {
          this.add(values2[index2]);
        }
      }
      function setCacheAdd(value) {
        this.__data__.set(value, HASH_UNDEFINED);
        return this;
      }
      function setCacheHas(value) {
        return this.__data__.has(value);
      }
      SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
      SetCache.prototype.has = setCacheHas;
      function Stack(entries) {
        var data = this.__data__ = new ListCache(entries);
        this.size = data.size;
      }
      function stackClear() {
        this.__data__ = new ListCache();
        this.size = 0;
      }
      function stackDelete(key) {
        var data = this.__data__, result2 = data["delete"](key);
        this.size = data.size;
        return result2;
      }
      function stackGet(key) {
        return this.__data__.get(key);
      }
      function stackHas(key) {
        return this.__data__.has(key);
      }
      function stackSet(key, value) {
        var data = this.__data__;
        if (data instanceof ListCache) {
          var pairs = data.__data__;
          if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) {
            pairs.push([key, value]);
            this.size = ++data.size;
            return this;
          }
          data = this.__data__ = new MapCache(pairs);
        }
        data.set(key, value);
        this.size = data.size;
        return this;
      }
      Stack.prototype.clear = stackClear;
      Stack.prototype["delete"] = stackDelete;
      Stack.prototype.get = stackGet;
      Stack.prototype.has = stackHas;
      Stack.prototype.set = stackSet;
      function arrayLikeKeys(value, inherited) {
        var isArr = isArray2(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes(value.length, String2) : [], length2 = result2.length;
        for (var key in value) {
          if ((inherited || hasOwnProperty2.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.
          (key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers.
          isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays.
          isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties.
          isIndex(key, length2)))) {
            result2.push(key);
          }
        }
        return result2;
      }
      function arraySample(array) {
        var length2 = array.length;
        return length2 ? array[baseRandom(0, length2 - 1)] : undefined$1;
      }
      function arraySampleSize(array, n) {
        return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
      }
      function arrayShuffle(array) {
        return shuffleSelf(copyArray(array));
      }
      function assignMergeValue(object, key, value) {
        if (value !== undefined$1 && !eq2(object[key], value) || value === undefined$1 && !(key in object)) {
          baseAssignValue(object, key, value);
        }
      }
      function assignValue(object, key, value) {
        var objValue = object[key];
        if (!(hasOwnProperty2.call(object, key) && eq2(objValue, value)) || value === undefined$1 && !(key in object)) {
          baseAssignValue(object, key, value);
        }
      }
      function assocIndexOf(array, key) {
        var length2 = array.length;
        while (length2--) {
          if (eq2(array[length2][0], key)) {
            return length2;
          }
        }
        return -1;
      }
      function baseAggregator(collection, setter, iteratee2, accumulator) {
        baseEach(collection, function(value, key, collection2) {
          setter(accumulator, value, iteratee2(value), collection2);
        });
        return accumulator;
      }
      function baseAssign(object, source) {
        return object && copyObject(source, keys(source), object);
      }
      function baseAssignIn(object, source) {
        return object && copyObject(source, keysIn(source), object);
      }
      function baseAssignValue(object, key, value) {
        if (key == "__proto__" && defineProperty) {
          defineProperty(object, key, {
            "configurable": true,
            "enumerable": true,
            "value": value,
            "writable": true
          });
        } else {
          object[key] = value;
        }
      }
      function baseAt(object, paths) {
        var index2 = -1, length2 = paths.length, result2 = Array2(length2), skip = object == null;
        while (++index2 < length2) {
          result2[index2] = skip ? undefined$1 : get2(object, paths[index2]);
        }
        return result2;
      }
      function baseClamp(number2, lower, upper) {
        if (number2 === number2) {
          if (upper !== undefined$1) {
            number2 = number2 <= upper ? number2 : upper;
          }
          if (lower !== undefined$1) {
            number2 = number2 >= lower ? number2 : lower;
          }
        }
        return number2;
      }
      function baseClone(value, bitmask, customizer, key, object, stack) {
        var result2, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG;
        if (customizer) {
          result2 = object ? customizer(value, key, object, stack) : customizer(value);
        }
        if (result2 !== undefined$1) {
          return result2;
        }
        if (!isObject2(value)) {
          return value;
        }
        var isArr = isArray2(value);
        if (isArr) {
          result2 = initCloneArray(value);
          if (!isDeep) {
            return copyArray(value, result2);
          }
        } else {
          var tag = getTag(value), isFunc = tag == funcTag || tag == genTag;
          if (isBuffer(value)) {
            return cloneBuffer(value, isDeep);
          }
          if (tag == objectTag2 || tag == argsTag || isFunc && !object) {
            result2 = isFlat || isFunc ? {} : initCloneObject(value);
            if (!isDeep) {
              return isFlat ? copySymbolsIn(value, baseAssignIn(result2, value)) : copySymbols(value, baseAssign(result2, value));
            }
          } else {
            if (!cloneableTags[tag]) {
              return object ? value : {};
            }
            result2 = initCloneByTag(value, tag, isDeep);
          }
        }
        stack || (stack = new Stack());
        var stacked = stack.get(value);
        if (stacked) {
          return stacked;
        }
        stack.set(value, result2);
        if (isSet2(value)) {
          value.forEach(function(subValue) {
            result2.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
          });
        } else if (isMap2(value)) {
          value.forEach(function(subValue, key2) {
            result2.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
          });
        }
        var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;
        var props = isArr ? undefined$1 : keysFunc(value);
        arrayEach(props || value, function(subValue, key2) {
          if (props) {
            key2 = subValue;
            subValue = value[key2];
          }
          assignValue(result2, key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
        });
        return result2;
      }
      function baseConforms(source) {
        var props = keys(source);
        return function(object) {
          return baseConformsTo(object, source, props);
        };
      }
      function baseConformsTo(object, source, props) {
        var length2 = props.length;
        if (object == null) {
          return !length2;
        }
        object = Object2(object);
        while (length2--) {
          var key = props[length2], predicate = source[key], value = object[key];
          if (value === undefined$1 && !(key in object) || !predicate(value)) {
            return false;
          }
        }
        return true;
      }
      function baseDelay(func, wait, args) {
        if (typeof func != "function") {
          throw new TypeError2(FUNC_ERROR_TEXT);
        }
        return setTimeout2(function() {
          func.apply(undefined$1, args);
        }, wait);
      }
      function baseDifference(array, values2, iteratee2, comparator2) {
        var index2 = -1, includes2 = arrayIncludes, isCommon = true, length2 = array.length, result2 = [], valuesLength = values2.length;
        if (!length2) {
          return result2;
        }
        if (iteratee2) {
          values2 = arrayMap(values2, baseUnary(iteratee2));
        }
        if (comparator2) {
          includes2 = arrayIncludesWith;
          isCommon = false;
        } else if (values2.length >= LARGE_ARRAY_SIZE) {
          includes2 = cacheHas;
          isCommon = false;
          values2 = new SetCache(values2);
        }
        outer:
          while (++index2 < length2) {
            var value = array[index2], computed2 = iteratee2 == null ? value : iteratee2(value);
            value = comparator2 || value !== 0 ? value : 0;
            if (isCommon && computed2 === computed2) {
              var valuesIndex = valuesLength;
              while (valuesIndex--) {
                if (values2[valuesIndex] === computed2) {
                  continue outer;
                }
              }
              result2.push(value);
            } else if (!includes2(values2, computed2, comparator2)) {
              result2.push(value);
            }
          }
        return result2;
      }
      var baseEach = createBaseEach(baseForOwn);
      var baseEachRight = createBaseEach(baseForOwnRight, true);
      function baseEvery(collection, predicate) {
        var result2 = true;
        baseEach(collection, function(value, index2, collection2) {
          result2 = !!predicate(value, index2, collection2);
          return result2;
        });
        return result2;
      }
      function baseExtremum(array, iteratee2, comparator2) {
        var index2 = -1, length2 = array.length;
        while (++index2 < length2) {
          var value = array[index2], current = iteratee2(value);
          if (current != null && (computed2 === undefined$1 ? current === current && !isSymbol2(current) : comparator2(current, computed2))) {
            var computed2 = current, result2 = value;
          }
        }
        return result2;
      }
      function baseFill(array, value, start2, end2) {
        var length2 = array.length;
        start2 = toInteger(start2);
        if (start2 < 0) {
          start2 = -start2 > length2 ? 0 : length2 + start2;
        }
        end2 = end2 === undefined$1 || end2 > length2 ? length2 : toInteger(end2);
        if (end2 < 0) {
          end2 += length2;
        }
        end2 = start2 > end2 ? 0 : toLength(end2);
        while (start2 < end2) {
          array[start2++] = value;
        }
        return array;
      }
      function baseFilter(collection, predicate) {
        var result2 = [];
        baseEach(collection, function(value, index2, collection2) {
          if (predicate(value, index2, collection2)) {
            result2.push(value);
          }
        });
        return result2;
      }
      function baseFlatten(array, depth, predicate, isStrict, result2) {
        var index2 = -1, length2 = array.length;
        predicate || (predicate = isFlattenable);
        result2 || (result2 = []);
        while (++index2 < length2) {
          var value = array[index2];
          if (depth > 0 && predicate(value)) {
            if (depth > 1) {
              baseFlatten(value, depth - 1, predicate, isStrict, result2);
            } else {
              arrayPush(result2, value);
            }
          } else if (!isStrict) {
            result2[result2.length] = value;
          }
        }
        return result2;
      }
      var baseFor = createBaseFor();
      var baseForRight = createBaseFor(true);
      function baseForOwn(object, iteratee2) {
        return object && baseFor(object, iteratee2, keys);
      }
      function baseForOwnRight(object, iteratee2) {
        return object && baseForRight(object, iteratee2, keys);
      }
      function baseFunctions(object, props) {
        return arrayFilter(props, function(key) {
          return isFunction2(object[key]);
        });
      }
      function baseGet(object, path) {
        path = castPath(path, object);
        var index2 = 0, length2 = path.length;
        while (object != null && index2 < length2) {
          object = object[toKey(path[index2++])];
        }
        return index2 && index2 == length2 ? object : undefined$1;
      }
      function baseGetAllKeys(object, keysFunc, symbolsFunc) {
        var result2 = keysFunc(object);
        return isArray2(object) ? result2 : arrayPush(result2, symbolsFunc(object));
      }
      function baseGetTag2(value) {
        if (value == null) {
          return value === undefined$1 ? undefinedTag2 : nullTag2;
        }
        return symToStringTag2 && symToStringTag2 in Object2(value) ? getRawTag2(value) : objectToString2(value);
      }
      function baseGt(value, other) {
        return value > other;
      }
      function baseHas(object, key) {
        return object != null && hasOwnProperty2.call(object, key);
      }
      function baseHasIn(object, key) {
        return object != null && key in Object2(object);
      }
      function baseInRange(number2, start2, end2) {
        return number2 >= nativeMin(start2, end2) && number2 < nativeMax(start2, end2);
      }
      function baseIntersection(arrays, iteratee2, comparator2) {
        var includes2 = comparator2 ? arrayIncludesWith : arrayIncludes, length2 = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array2(othLength), maxLength = Infinity, result2 = [];
        while (othIndex--) {
          var array = arrays[othIndex];
          if (othIndex && iteratee2) {
            array = arrayMap(array, baseUnary(iteratee2));
          }
          maxLength = nativeMin(array.length, maxLength);
          caches[othIndex] = !comparator2 && (iteratee2 || length2 >= 120 && array.length >= 120) ? new SetCache(othIndex && array) : undefined$1;
        }
        array = arrays[0];
        var index2 = -1, seen2 = caches[0];
        outer:
          while (++index2 < length2 && result2.length < maxLength) {
            var value = array[index2], computed2 = iteratee2 ? iteratee2(value) : value;
            value = comparator2 || value !== 0 ? value : 0;
            if (!(seen2 ? cacheHas(seen2, computed2) : includes2(result2, computed2, comparator2))) {
              othIndex = othLength;
              while (--othIndex) {
                var cache2 = caches[othIndex];
                if (!(cache2 ? cacheHas(cache2, computed2) : includes2(arrays[othIndex], computed2, comparator2))) {
                  continue outer;
                }
              }
              if (seen2) {
                seen2.push(computed2);
              }
              result2.push(value);
            }
          }
        return result2;
      }
      function baseInverter(object, setter, iteratee2, accumulator) {
        baseForOwn(object, function(value, key, object2) {
          setter(accumulator, iteratee2(value), key, object2);
        });
        return accumulator;
      }
      function baseInvoke(object, path, args) {
        path = castPath(path, object);
        object = parent(object, path);
        var func = object == null ? object : object[toKey(last(path))];
        return func == null ? undefined$1 : apply2(func, object, args);
      }
      function baseIsArguments(value) {
        return isObjectLike2(value) && baseGetTag2(value) == argsTag;
      }
      function baseIsArrayBuffer(value) {
        return isObjectLike2(value) && baseGetTag2(value) == arrayBufferTag;
      }
      function baseIsDate(value) {
        return isObjectLike2(value) && baseGetTag2(value) == dateTag;
      }
      function baseIsEqual(value, other, bitmask, customizer, stack) {
        if (value === other) {
          return true;
        }
        if (value == null || other == null || !isObjectLike2(value) && !isObjectLike2(other)) {
          return value !== value && other !== other;
        }
        return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
      }
      function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
        var objIsArr = isArray2(object), othIsArr = isArray2(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other);
        objTag = objTag == argsTag ? objectTag2 : objTag;
        othTag = othTag == argsTag ? objectTag2 : othTag;
        var objIsObj = objTag == objectTag2, othIsObj = othTag == objectTag2, isSameTag = objTag == othTag;
        if (isSameTag && isBuffer(object)) {
          if (!isBuffer(other)) {
            return false;
          }
          objIsArr = true;
          objIsObj = false;
        }
        if (isSameTag && !objIsObj) {
          stack || (stack = new Stack());
          return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
        }
        if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
          var objIsWrapped = objIsObj && hasOwnProperty2.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty2.call(other, "__wrapped__");
          if (objIsWrapped || othIsWrapped) {
            var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
            stack || (stack = new Stack());
            return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
          }
        }
        if (!isSameTag) {
          return false;
        }
        stack || (stack = new Stack());
        return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
      }
      function baseIsMap(value) {
        return isObjectLike2(value) && getTag(value) == mapTag;
      }
      function baseIsMatch(object, source, matchData, customizer) {
        var index2 = matchData.length, length2 = index2, noCustomizer = !customizer;
        if (object == null) {
          return !length2;
        }
        object = Object2(object);
        while (index2--) {
          var data = matchData[index2];
          if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {
            return false;
          }
        }
        while (++index2 < length2) {
          data = matchData[index2];
          var key = data[0], objValue = object[key], srcValue = data[1];
          if (noCustomizer && data[2]) {
            if (objValue === undefined$1 && !(key in object)) {
              return false;
            }
          } else {
            var stack = new Stack();
            if (customizer) {
              var result2 = customizer(objValue, srcValue, key, object, source, stack);
            }
            if (!(result2 === undefined$1 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result2)) {
              return false;
            }
          }
        }
        return true;
      }
      function baseIsNative(value) {
        if (!isObject2(value) || isMasked(value)) {
          return false;
        }
        var pattern = isFunction2(value) ? reIsNative : reIsHostCtor;
        return pattern.test(toSource(value));
      }
      function baseIsRegExp(value) {
        return isObjectLike2(value) && baseGetTag2(value) == regexpTag;
      }
      function baseIsSet(value) {
        return isObjectLike2(value) && getTag(value) == setTag;
      }
      function baseIsTypedArray(value) {
        return isObjectLike2(value) && isLength(value.length) && !!typedArrayTags[baseGetTag2(value)];
      }
      function baseIteratee(value) {
        if (typeof value == "function") {
          return value;
        }
        if (value == null) {
          return identity;
        }
        if (typeof value == "object") {
          return isArray2(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);
        }
        return property(value);
      }
      function baseKeys(object) {
        if (!isPrototype(object)) {
          return nativeKeys(object);
        }
        var result2 = [];
        for (var key in Object2(object)) {
          if (hasOwnProperty2.call(object, key) && key != "constructor") {
            result2.push(key);
          }
        }
        return result2;
      }
      function baseKeysIn(object) {
        if (!isObject2(object)) {
          return nativeKeysIn(object);
        }
        var isProto = isPrototype(object), result2 = [];
        for (var key in object) {
          if (!(key == "constructor" && (isProto || !hasOwnProperty2.call(object, key)))) {
            result2.push(key);
          }
        }
        return result2;
      }
      function baseLt(value, other) {
        return value < other;
      }
      function baseMap(collection, iteratee2) {
        var index2 = -1, result2 = isArrayLike(collection) ? Array2(collection.length) : [];
        baseEach(collection, function(value, key, collection2) {
          result2[++index2] = iteratee2(value, key, collection2);
        });
        return result2;
      }
      function baseMatches(source) {
        var matchData = getMatchData(source);
        if (matchData.length == 1 && matchData[0][2]) {
          return matchesStrictComparable(matchData[0][0], matchData[0][1]);
        }
        return function(object) {
          return object === source || baseIsMatch(object, source, matchData);
        };
      }
      function baseMatchesProperty(path, srcValue) {
        if (isKey(path) && isStrictComparable(srcValue)) {
          return matchesStrictComparable(toKey(path), srcValue);
        }
        return function(object) {
          var objValue = get2(object, path);
          return objValue === undefined$1 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
        };
      }
      function baseMerge(object, source, srcIndex, customizer, stack) {
        if (object === source) {
          return;
        }
        baseFor(source, function(srcValue, key) {
          stack || (stack = new Stack());
          if (isObject2(srcValue)) {
            baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
          } else {
            var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : undefined$1;
            if (newValue === undefined$1) {
              newValue = srcValue;
            }
            assignMergeValue(object, key, newValue);
          }
        }, keysIn);
      }
      function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
        var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue);
        if (stacked) {
          assignMergeValue(object, key, stacked);
          return;
        }
        var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : undefined$1;
        var isCommon = newValue === undefined$1;
        if (isCommon) {
          var isArr = isArray2(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue);
          newValue = srcValue;
          if (isArr || isBuff || isTyped) {
            if (isArray2(objValue)) {
              newValue = objValue;
            } else if (isArrayLikeObject(objValue)) {
              newValue = copyArray(objValue);
            } else if (isBuff) {
              isCommon = false;
              newValue = cloneBuffer(srcValue, true);
            } else if (isTyped) {
              isCommon = false;
              newValue = cloneTypedArray(srcValue, true);
            } else {
              newValue = [];
            }
          } else if (isPlainObject2(srcValue) || isArguments(srcValue)) {
            newValue = objValue;
            if (isArguments(objValue)) {
              newValue = toPlainObject(objValue);
            } else if (!isObject2(objValue) || isFunction2(objValue)) {
              newValue = initCloneObject(srcValue);
            }
          } else {
            isCommon = false;
          }
        }
        if (isCommon) {
          stack.set(srcValue, newValue);
          mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
          stack["delete"](srcValue);
        }
        assignMergeValue(object, key, newValue);
      }
      function baseNth(array, n) {
        var length2 = array.length;
        if (!length2) {
          return;
        }
        n += n < 0 ? length2 : 0;
        return isIndex(n, length2) ? array[n] : undefined$1;
      }
      function baseOrderBy(collection, iteratees, orders) {
        if (iteratees.length) {
          iteratees = arrayMap(iteratees, function(iteratee2) {
            if (isArray2(iteratee2)) {
              return function(value) {
                return baseGet(value, iteratee2.length === 1 ? iteratee2[0] : iteratee2);
              };
            }
            return iteratee2;
          });
        } else {
          iteratees = [identity];
        }
        var index2 = -1;
        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
        var result2 = baseMap(collection, function(value, key, collection2) {
          var criteria = arrayMap(iteratees, function(iteratee2) {
            return iteratee2(value);
          });
          return { "criteria": criteria, "index": ++index2, "value": value };
        });
        return baseSortBy(result2, function(object, other) {
          return compareMultiple(object, other, orders);
        });
      }
      function basePick(object, paths) {
        return basePickBy(object, paths, function(value, path) {
          return hasIn(object, path);
        });
      }
      function basePickBy(object, paths, predicate) {
        var index2 = -1, length2 = paths.length, result2 = {};
        while (++index2 < length2) {
          var path = paths[index2], value = baseGet(object, path);
          if (predicate(value, path)) {
            baseSet(result2, castPath(path, object), value);
          }
        }
        return result2;
      }
      function basePropertyDeep(path) {
        return function(object) {
          return baseGet(object, path);
        };
      }
      function basePullAll(array, values2, iteratee2, comparator2) {
        var indexOf3 = comparator2 ? baseIndexOfWith : baseIndexOf, index2 = -1, length2 = values2.length, seen2 = array;
        if (array === values2) {
          values2 = copyArray(values2);
        }
        if (iteratee2) {
          seen2 = arrayMap(array, baseUnary(iteratee2));
        }
        while (++index2 < length2) {
          var fromIndex = 0, value = values2[index2], computed2 = iteratee2 ? iteratee2(value) : value;
          while ((fromIndex = indexOf3(seen2, computed2, fromIndex, comparator2)) > -1) {
            if (seen2 !== array) {
              splice.call(seen2, fromIndex, 1);
            }
            splice.call(array, fromIndex, 1);
          }
        }
        return array;
      }
      function basePullAt(array, indexes) {
        var length2 = array ? indexes.length : 0, lastIndex = length2 - 1;
        while (length2--) {
          var index2 = indexes[length2];
          if (length2 == lastIndex || index2 !== previous) {
            var previous = index2;
            if (isIndex(index2)) {
              splice.call(array, index2, 1);
            } else {
              baseUnset(array, index2);
            }
          }
        }
        return array;
      }
      function baseRandom(lower, upper) {
        return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
      }
      function baseRange(start2, end2, step, fromRight) {
        var index2 = -1, length2 = nativeMax(nativeCeil((end2 - start2) / (step || 1)), 0), result2 = Array2(length2);
        while (length2--) {
          result2[fromRight ? length2 : ++index2] = start2;
          start2 += step;
        }
        return result2;
      }
      function baseRepeat(string, n) {
        var result2 = "";
        if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
          return result2;
        }
        do {
          if (n % 2) {
            result2 += string;
          }
          n = nativeFloor(n / 2);
          if (n) {
            string += string;
          }
        } while (n);
        return result2;
      }
      function baseRest(func, start2) {
        return setToString(overRest(func, start2, identity), func + "");
      }
      function baseSample(collection) {
        return arraySample(values(collection));
      }
      function baseSampleSize(collection, n) {
        var array = values(collection);
        return shuffleSelf(array, baseClamp(n, 0, array.length));
      }
      function baseSet(object, path, value, customizer) {
        if (!isObject2(object)) {
          return object;
        }
        path = castPath(path, object);
        var index2 = -1, length2 = path.length, lastIndex = length2 - 1, nested = object;
        while (nested != null && ++index2 < length2) {
          var key = toKey(path[index2]), newValue = value;
          if (key === "__proto__" || key === "constructor" || key === "prototype") {
            return object;
          }
          if (index2 != lastIndex) {
            var objValue = nested[key];
            newValue = customizer ? customizer(objValue, key, nested) : undefined$1;
            if (newValue === undefined$1) {
              newValue = isObject2(objValue) ? objValue : isIndex(path[index2 + 1]) ? [] : {};
            }
          }
          assignValue(nested, key, newValue);
          nested = nested[key];
        }
        return object;
      }
      var baseSetData = !metaMap ? identity : function(func, data) {
        metaMap.set(func, data);
        return func;
      };
      var baseSetToString = !defineProperty ? identity : function(func, string) {
        return defineProperty(func, "toString", {
          "configurable": true,
          "enumerable": false,
          "value": constant(string),
          "writable": true
        });
      };
      function baseShuffle(collection) {
        return shuffleSelf(values(collection));
      }
      function baseSlice(array, start2, end2) {
        var index2 = -1, length2 = array.length;
        if (start2 < 0) {
          start2 = -start2 > length2 ? 0 : length2 + start2;
        }
        end2 = end2 > length2 ? length2 : end2;
        if (end2 < 0) {
          end2 += length2;
        }
        length2 = start2 > end2 ? 0 : end2 - start2 >>> 0;
        start2 >>>= 0;
        var result2 = Array2(length2);
        while (++index2 < length2) {
          result2[index2] = array[index2 + start2];
        }
        return result2;
      }
      function baseSome(collection, predicate) {
        var result2;
        baseEach(collection, function(value, index2, collection2) {
          result2 = predicate(value, index2, collection2);
          return !result2;
        });
        return !!result2;
      }
      function baseSortedIndex(array, value, retHighest) {
        var low = 0, high = array == null ? low : array.length;
        if (typeof value == "number" && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
          while (low < high) {
            var mid2 = low + high >>> 1, computed2 = array[mid2];
            if (computed2 !== null && !isSymbol2(computed2) && (retHighest ? computed2 <= value : computed2 < value)) {
              low = mid2 + 1;
            } else {
              high = mid2;
            }
          }
          return high;
        }
        return baseSortedIndexBy(array, value, identity, retHighest);
      }
      function baseSortedIndexBy(array, value, iteratee2, retHighest) {
        var low = 0, high = array == null ? 0 : array.length;
        if (high === 0) {
          return 0;
        }
        value = iteratee2(value);
        var valIsNaN = value !== value, valIsNull = value === null, valIsSymbol = isSymbol2(value), valIsUndefined = value === undefined$1;
        while (low < high) {
          var mid2 = nativeFloor((low + high) / 2), computed2 = iteratee2(array[mid2]), othIsDefined = computed2 !== undefined$1, othIsNull = computed2 === null, othIsReflexive = computed2 === computed2, othIsSymbol = isSymbol2(computed2);
          if (valIsNaN) {
            var setLow = retHighest || othIsReflexive;
          } else if (valIsUndefined) {
            setLow = othIsReflexive && (retHighest || othIsDefined);
          } else if (valIsNull) {
            setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
          } else if (valIsSymbol) {
            setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
          } else if (othIsNull || othIsSymbol) {
            setLow = false;
          } else {
            setLow = retHighest ? computed2 <= value : computed2 < value;
          }
          if (setLow) {
            low = mid2 + 1;
          } else {
            high = mid2;
          }
        }
        return nativeMin(high, MAX_ARRAY_INDEX);
      }
      function baseSortedUniq(array, iteratee2) {
        var index2 = -1, length2 = array.length, resIndex = 0, result2 = [];
        while (++index2 < length2) {
          var value = array[index2], computed2 = iteratee2 ? iteratee2(value) : value;
          if (!index2 || !eq2(computed2, seen2)) {
            var seen2 = computed2;
            result2[resIndex++] = value === 0 ? 0 : value;
          }
        }
        return result2;
      }
      function baseToNumber(value) {
        if (typeof value == "number") {
          return value;
        }
        if (isSymbol2(value)) {
          return NAN;
        }
        return +value;
      }
      function baseToString(value) {
        if (typeof value == "string") {
          return value;
        }
        if (isArray2(value)) {
          return arrayMap(value, baseToString) + "";
        }
        if (isSymbol2(value)) {
          return symbolToString ? symbolToString.call(value) : "";
        }
        var result2 = value + "";
        return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2;
      }
      function baseUniq(array, iteratee2, comparator2) {
        var index2 = -1, includes2 = arrayIncludes, length2 = array.length, isCommon = true, result2 = [], seen2 = result2;
        if (comparator2) {
          isCommon = false;
          includes2 = arrayIncludesWith;
        } else if (length2 >= LARGE_ARRAY_SIZE) {
          var set4 = iteratee2 ? null : createSet(array);
          if (set4) {
            return setToArray(set4);
          }
          isCommon = false;
          includes2 = cacheHas;
          seen2 = new SetCache();
        } else {
          seen2 = iteratee2 ? [] : result2;
        }
        outer:
          while (++index2 < length2) {
            var value = array[index2], computed2 = iteratee2 ? iteratee2(value) : value;
            value = comparator2 || value !== 0 ? value : 0;
            if (isCommon && computed2 === computed2) {
              var seenIndex = seen2.length;
              while (seenIndex--) {
                if (seen2[seenIndex] === computed2) {
                  continue outer;
                }
              }
              if (iteratee2) {
                seen2.push(computed2);
              }
              result2.push(value);
            } else if (!includes2(seen2, computed2, comparator2)) {
              if (seen2 !== result2) {
                seen2.push(computed2);
              }
              result2.push(value);
            }
          }
        return result2;
      }
      function baseUnset(object, path) {
        path = castPath(path, object);
        object = parent(object, path);
        return object == null || delete object[toKey(last(path))];
      }
      function baseUpdate(object, path, updater, customizer) {
        return baseSet(object, path, updater(baseGet(object, path)), customizer);
      }
      function baseWhile(array, predicate, isDrop, fromRight) {
        var length2 = array.length, index2 = fromRight ? length2 : -1;
        while ((fromRight ? index2-- : ++index2 < length2) && predicate(array[index2], index2, array)) {
        }
        return isDrop ? baseSlice(array, fromRight ? 0 : index2, fromRight ? index2 + 1 : length2) : baseSlice(array, fromRight ? index2 + 1 : 0, fromRight ? length2 : index2);
      }
      function baseWrapperValue(value, actions) {
        var result2 = value;
        if (result2 instanceof LazyWrapper) {
          result2 = result2.value();
        }
        return arrayReduce(actions, function(result3, action3) {
          return action3.func.apply(action3.thisArg, arrayPush([result3], action3.args));
        }, result2);
      }
      function baseXor(arrays, iteratee2, comparator2) {
        var length2 = arrays.length;
        if (length2 < 2) {
          return length2 ? baseUniq(arrays[0]) : [];
        }
        var index2 = -1, result2 = Array2(length2);
        while (++index2 < length2) {
          var array = arrays[index2], othIndex = -1;
          while (++othIndex < length2) {
            if (othIndex != index2) {
              result2[index2] = baseDifference(result2[index2] || array, arrays[othIndex], iteratee2, comparator2);
            }
          }
        }
        return baseUniq(baseFlatten(result2, 1), iteratee2, comparator2);
      }
      function baseZipObject(props, values2, assignFunc) {
        var index2 = -1, length2 = props.length, valsLength = values2.length, result2 = {};
        while (++index2 < length2) {
          var value = index2 < valsLength ? values2[index2] : undefined$1;
          assignFunc(result2, props[index2], value);
        }
        return result2;
      }
      function castArrayLikeObject(value) {
        return isArrayLikeObject(value) ? value : [];
      }
      function castFunction(value) {
        return typeof value == "function" ? value : identity;
      }
      function castPath(value, object) {
        if (isArray2(value)) {
          return value;
        }
        return isKey(value, object) ? [value] : stringToPath(toString2(value));
      }
      var castRest = baseRest;
      function castSlice(array, start2, end2) {
        var length2 = array.length;
        end2 = end2 === undefined$1 ? length2 : end2;
        return !start2 && end2 >= length2 ? array : baseSlice(array, start2, end2);
      }
      var clearTimeout2 = ctxClearTimeout || function(id2) {
        return root2.clearTimeout(id2);
      };
      function cloneBuffer(buffer, isDeep) {
        if (isDeep) {
          return buffer.slice();
        }
        var length2 = buffer.length, result2 = allocUnsafe ? allocUnsafe(length2) : new buffer.constructor(length2);
        buffer.copy(result2);
        return result2;
      }
      function cloneArrayBuffer(arrayBuffer) {
        var result2 = new arrayBuffer.constructor(arrayBuffer.byteLength);
        new Uint8Array2(result2).set(new Uint8Array2(arrayBuffer));
        return result2;
      }
      function cloneDataView(dataView, isDeep) {
        var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
        return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
      }
      function cloneRegExp(regexp) {
        var result2 = new regexp.constructor(regexp.source, reFlags.exec(regexp));
        result2.lastIndex = regexp.lastIndex;
        return result2;
      }
      function cloneSymbol(symbol) {
        return symbolValueOf ? Object2(symbolValueOf.call(symbol)) : {};
      }
      function cloneTypedArray(typedArray, isDeep) {
        var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
        return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
      }
      function compareAscending(value, other) {
        if (value !== other) {
          var valIsDefined = value !== undefined$1, valIsNull = value === null, valIsReflexive = value === value, valIsSymbol = isSymbol2(value);
          var othIsDefined = other !== undefined$1, othIsNull = other === null, othIsReflexive = other === other, othIsSymbol = isSymbol2(other);
          if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) {
            return 1;
          }
          if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) {
            return -1;
          }
        }
        return 0;
      }
      function compareMultiple(object, other, orders) {
        var index2 = -1, objCriteria = object.criteria, othCriteria = other.criteria, length2 = objCriteria.length, ordersLength = orders.length;
        while (++index2 < length2) {
          var result2 = compareAscending(objCriteria[index2], othCriteria[index2]);
          if (result2) {
            if (index2 >= ordersLength) {
              return result2;
            }
            var order2 = orders[index2];
            return result2 * (order2 == "desc" ? -1 : 1);
          }
        }
        return object.index - other.index;
      }
      function composeArgs(args, partials, holders, isCurried) {
        var argsIndex = -1, argsLength = args.length, holdersLength = holders.length, leftIndex = -1, leftLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(leftLength + rangeLength), isUncurried = !isCurried;
        while (++leftIndex < leftLength) {
          result2[leftIndex] = partials[leftIndex];
        }
        while (++argsIndex < holdersLength) {
          if (isUncurried || argsIndex < argsLength) {
            result2[holders[argsIndex]] = args[argsIndex];
          }
        }
        while (rangeLength--) {
          result2[leftIndex++] = args[argsIndex++];
        }
        return result2;
      }
      function composeArgsRight(args, partials, holders, isCurried) {
        var argsIndex = -1, argsLength = args.length, holdersIndex = -1, holdersLength = holders.length, rightIndex = -1, rightLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(rangeLength + rightLength), isUncurried = !isCurried;
        while (++argsIndex < rangeLength) {
          result2[argsIndex] = args[argsIndex];
        }
        var offset2 = argsIndex;
        while (++rightIndex < rightLength) {
          result2[offset2 + rightIndex] = partials[rightIndex];
        }
        while (++holdersIndex < holdersLength) {
          if (isUncurried || argsIndex < argsLength) {
            result2[offset2 + holders[holdersIndex]] = args[argsIndex++];
          }
        }
        return result2;
      }
      function copyArray(source, array) {
        var index2 = -1, length2 = source.length;
        array || (array = Array2(length2));
        while (++index2 < length2) {
          array[index2] = source[index2];
        }
        return array;
      }
      function copyObject(source, props, object, customizer) {
        var isNew = !object;
        object || (object = {});
        var index2 = -1, length2 = props.length;
        while (++index2 < length2) {
          var key = props[index2];
          var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined$1;
          if (newValue === undefined$1) {
            newValue = source[key];
          }
          if (isNew) {
            baseAssignValue(object, key, newValue);
          } else {
            assignValue(object, key, newValue);
          }
        }
        return object;
      }
      function copySymbols(source, object) {
        return copyObject(source, getSymbols(source), object);
      }
      function copySymbolsIn(source, object) {
        return copyObject(source, getSymbolsIn(source), object);
      }
      function createAggregator(setter, initializer) {
        return function(collection, iteratee2) {
          var func = isArray2(collection) ? arrayAggregator : baseAggregator, accumulator = initializer ? initializer() : {};
          return func(collection, setter, getIteratee(iteratee2, 2), accumulator);
        };
      }
      function createAssigner(assigner) {
        return baseRest(function(object, sources) {
          var index2 = -1, length2 = sources.length, customizer = length2 > 1 ? sources[length2 - 1] : undefined$1, guard = length2 > 2 ? sources[2] : undefined$1;
          customizer = assigner.length > 3 && typeof customizer == "function" ? (length2--, customizer) : undefined$1;
          if (guard && isIterateeCall(sources[0], sources[1], guard)) {
            customizer = length2 < 3 ? undefined$1 : customizer;
            length2 = 1;
          }
          object = Object2(object);
          while (++index2 < length2) {
            var source = sources[index2];
            if (source) {
              assigner(object, source, index2, customizer);
            }
          }
          return object;
        });
      }
      function createBaseEach(eachFunc, fromRight) {
        return function(collection, iteratee2) {
          if (collection == null) {
            return collection;
          }
          if (!isArrayLike(collection)) {
            return eachFunc(collection, iteratee2);
          }
          var length2 = collection.length, index2 = fromRight ? length2 : -1, iterable = Object2(collection);
          while (fromRight ? index2-- : ++index2 < length2) {
            if (iteratee2(iterable[index2], index2, iterable) === false) {
              break;
            }
          }
          return collection;
        };
      }
      function createBaseFor(fromRight) {
        return function(object, iteratee2, keysFunc) {
          var index2 = -1, iterable = Object2(object), props = keysFunc(object), length2 = props.length;
          while (length2--) {
            var key = props[fromRight ? length2 : ++index2];
            if (iteratee2(iterable[key], key, iterable) === false) {
              break;
            }
          }
          return object;
        };
      }
      function createBind(func, bitmask, thisArg) {
        var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func);
        function wrapper() {
          var fn2 = this && this !== root2 && this instanceof wrapper ? Ctor : func;
          return fn2.apply(isBind ? thisArg : this, arguments);
        }
        return wrapper;
      }
      function createCaseFirst(methodName) {
        return function(string) {
          string = toString2(string);
          var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined$1;
          var chr = strSymbols ? strSymbols[0] : string.charAt(0);
          var trailing = strSymbols ? castSlice(strSymbols, 1).join("") : string.slice(1);
          return chr[methodName]() + trailing;
        };
      }
      function createCompounder(callback) {
        return function(string) {
          return arrayReduce(words(deburr(string).replace(reApos, "")), callback, "");
        };
      }
      function createCtor(Ctor) {
        return function() {
          var args = arguments;
          switch (args.length) {
            case 0:
              return new Ctor();
            case 1:
              return new Ctor(args[0]);
            case 2:
              return new Ctor(args[0], args[1]);
            case 3:
              return new Ctor(args[0], args[1], args[2]);
            case 4:
              return new Ctor(args[0], args[1], args[2], args[3]);
            case 5:
              return new Ctor(args[0], args[1], args[2], args[3], args[4]);
            case 6:
              return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
            case 7:
              return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
          }
          var thisBinding = baseCreate(Ctor.prototype), result2 = Ctor.apply(thisBinding, args);
          return isObject2(result2) ? result2 : thisBinding;
        };
      }
      function createCurry(func, bitmask, arity) {
        var Ctor = createCtor(func);
        function wrapper() {
          var length2 = arguments.length, args = Array2(length2), index2 = length2, placeholder = getHolder(wrapper);
          while (index2--) {
            args[index2] = arguments[index2];
          }
          var holders = length2 < 3 && args[0] !== placeholder && args[length2 - 1] !== placeholder ? [] : replaceHolders(args, placeholder);
          length2 -= holders.length;
          if (length2 < arity) {
            return createRecurry(
              func,
              bitmask,
              createHybrid,
              wrapper.placeholder,
              undefined$1,
              args,
              holders,
              undefined$1,
              undefined$1,
              arity - length2
            );
          }
          var fn2 = this && this !== root2 && this instanceof wrapper ? Ctor : func;
          return apply2(fn2, this, args);
        }
        return wrapper;
      }
      function createFind(findIndexFunc) {
        return function(collection, predicate, fromIndex) {
          var iterable = Object2(collection);
          if (!isArrayLike(collection)) {
            var iteratee2 = getIteratee(predicate, 3);
            collection = keys(collection);
            predicate = function(key) {
              return iteratee2(iterable[key], key, iterable);
            };
          }
          var index2 = findIndexFunc(collection, predicate, fromIndex);
          return index2 > -1 ? iterable[iteratee2 ? collection[index2] : index2] : undefined$1;
        };
      }
      function createFlow(fromRight) {
        return flatRest(function(funcs) {
          var length2 = funcs.length, index2 = length2, prereq = LodashWrapper.prototype.thru;
          if (fromRight) {
            funcs.reverse();
          }
          while (index2--) {
            var func = funcs[index2];
            if (typeof func != "function") {
              throw new TypeError2(FUNC_ERROR_TEXT);
            }
            if (prereq && !wrapper && getFuncName(func) == "wrapper") {
              var wrapper = new LodashWrapper([], true);
            }
          }
          index2 = wrapper ? index2 : length2;
          while (++index2 < length2) {
            func = funcs[index2];
            var funcName = getFuncName(func), data = funcName == "wrapper" ? getData(func) : undefined$1;
            if (data && isLaziable(data[0]) && data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && !data[4].length && data[9] == 1) {
              wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
            } else {
              wrapper = func.length == 1 && isLaziable(func) ? wrapper[funcName]() : wrapper.thru(func);
            }
          }
          return function() {
            var args = arguments, value = args[0];
            if (wrapper && args.length == 1 && isArray2(value)) {
              return wrapper.plant(value).value();
            }
            var index3 = 0, result2 = length2 ? funcs[index3].apply(this, args) : value;
            while (++index3 < length2) {
              result2 = funcs[index3].call(this, result2);
            }
            return result2;
          };
        });
      }
      function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary2, arity) {
        var isAry = bitmask & WRAP_ARY_FLAG, isBind = bitmask & WRAP_BIND_FLAG, isBindKey = bitmask & WRAP_BIND_KEY_FLAG, isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), isFlip = bitmask & WRAP_FLIP_FLAG, Ctor = isBindKey ? undefined$1 : createCtor(func);
        function wrapper() {
          var length2 = arguments.length, args = Array2(length2), index2 = length2;
          while (index2--) {
            args[index2] = arguments[index2];
          }
          if (isCurried) {
            var placeholder = getHolder(wrapper), holdersCount = countHolders(args, placeholder);
          }
          if (partials) {
            args = composeArgs(args, partials, holders, isCurried);
          }
          if (partialsRight) {
            args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
          }
          length2 -= holdersCount;
          if (isCurried && length2 < arity) {
            var newHolders = replaceHolders(args, placeholder);
            return createRecurry(
              func,
              bitmask,
              createHybrid,
              wrapper.placeholder,
              thisArg,
              args,
              newHolders,
              argPos,
              ary2,
              arity - length2
            );
          }
          var thisBinding = isBind ? thisArg : this, fn2 = isBindKey ? thisBinding[func] : func;
          length2 = args.length;
          if (argPos) {
            args = reorder(args, argPos);
          } else if (isFlip && length2 > 1) {
            args.reverse();
          }
          if (isAry && ary2 < length2) {
            args.length = ary2;
          }
          if (this && this !== root2 && this instanceof wrapper) {
            fn2 = Ctor || createCtor(fn2);
          }
          return fn2.apply(thisBinding, args);
        }
        return wrapper;
      }
      function createInverter(setter, toIteratee) {
        return function(object, iteratee2) {
          return baseInverter(object, setter, toIteratee(iteratee2), {});
        };
      }
      function createMathOperation(operator, defaultValue) {
        return function(value, other) {
          var result2;
          if (value === undefined$1 && other === undefined$1) {
            return defaultValue;
          }
          if (value !== undefined$1) {
            result2 = value;
          }
          if (other !== undefined$1) {
            if (result2 === undefined$1) {
              return other;
            }
            if (typeof value == "string" || typeof other == "string") {
              value = baseToString(value);
              other = baseToString(other);
            } else {
              value = baseToNumber(value);
              other = baseToNumber(other);
            }
            result2 = operator(value, other);
          }
          return result2;
        };
      }
      function createOver(arrayFunc) {
        return flatRest(function(iteratees) {
          iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
          return baseRest(function(args) {
            var thisArg = this;
            return arrayFunc(iteratees, function(iteratee2) {
              return apply2(iteratee2, thisArg, args);
            });
          });
        });
      }
      function createPadding(length2, chars) {
        chars = chars === undefined$1 ? " " : baseToString(chars);
        var charsLength = chars.length;
        if (charsLength < 2) {
          return charsLength ? baseRepeat(chars, length2) : chars;
        }
        var result2 = baseRepeat(chars, nativeCeil(length2 / stringSize(chars)));
        return hasUnicode(chars) ? castSlice(stringToArray(result2), 0, length2).join("") : result2.slice(0, length2);
      }
      function createPartial(func, bitmask, thisArg, partials) {
        var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func);
        function wrapper() {
          var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array2(leftLength + argsLength), fn2 = this && this !== root2 && this instanceof wrapper ? Ctor : func;
          while (++leftIndex < leftLength) {
            args[leftIndex] = partials[leftIndex];
          }
          while (argsLength--) {
            args[leftIndex++] = arguments[++argsIndex];
          }
          return apply2(fn2, isBind ? thisArg : this, args);
        }
        return wrapper;
      }
      function createRange(fromRight) {
        return function(start2, end2, step) {
          if (step && typeof step != "number" && isIterateeCall(start2, end2, step)) {
            end2 = step = undefined$1;
          }
          start2 = toFinite(start2);
          if (end2 === undefined$1) {
            end2 = start2;
            start2 = 0;
          } else {
            end2 = toFinite(end2);
          }
          step = step === undefined$1 ? start2 < end2 ? 1 : -1 : toFinite(step);
          return baseRange(start2, end2, step, fromRight);
        };
      }
      function createRelationalOperation(operator) {
        return function(value, other) {
          if (!(typeof value == "string" && typeof other == "string")) {
            value = toNumber2(value);
            other = toNumber2(other);
          }
          return operator(value, other);
        };
      }
      function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary2, arity) {
        var isCurry = bitmask & WRAP_CURRY_FLAG, newHolders = isCurry ? holders : undefined$1, newHoldersRight = isCurry ? undefined$1 : holders, newPartials = isCurry ? partials : undefined$1, newPartialsRight = isCurry ? undefined$1 : partials;
        bitmask |= isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG;
        bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
        if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
          bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
        }
        var newData = [
          func,
          bitmask,
          thisArg,
          newPartials,
          newHolders,
          newPartialsRight,
          newHoldersRight,
          argPos,
          ary2,
          arity
        ];
        var result2 = wrapFunc.apply(undefined$1, newData);
        if (isLaziable(func)) {
          setData(result2, newData);
        }
        result2.placeholder = placeholder;
        return setWrapToString(result2, func, bitmask);
      }
      function createRound(methodName) {
        var func = Math2[methodName];
        return function(number2, precision) {
          number2 = toNumber2(number2);
          precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
          if (precision && nativeIsFinite(number2)) {
            var pair = (toString2(number2) + "e").split("e"), value = func(pair[0] + "e" + (+pair[1] + precision));
            pair = (toString2(value) + "e").split("e");
            return +(pair[0] + "e" + (+pair[1] - precision));
          }
          return func(number2);
        };
      }
      var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop2 : function(values2) {
        return new Set2(values2);
      };
      function createToPairs(keysFunc) {
        return function(object) {
          var tag = getTag(object);
          if (tag == mapTag) {
            return mapToArray(object);
          }
          if (tag == setTag) {
            return setToPairs(object);
          }
          return baseToPairs(object, keysFunc(object));
        };
      }
      function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary2, arity) {
        var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
        if (!isBindKey && typeof func != "function") {
          throw new TypeError2(FUNC_ERROR_TEXT);
        }
        var length2 = partials ? partials.length : 0;
        if (!length2) {
          bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
          partials = holders = undefined$1;
        }
        ary2 = ary2 === undefined$1 ? ary2 : nativeMax(toInteger(ary2), 0);
        arity = arity === undefined$1 ? arity : toInteger(arity);
        length2 -= holders ? holders.length : 0;
        if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
          var partialsRight = partials, holdersRight = holders;
          partials = holders = undefined$1;
        }
        var data = isBindKey ? undefined$1 : getData(func);
        var newData = [
          func,
          bitmask,
          thisArg,
          partials,
          holders,
          partialsRight,
          holdersRight,
          argPos,
          ary2,
          arity
        ];
        if (data) {
          mergeData(newData, data);
        }
        func = newData[0];
        bitmask = newData[1];
        thisArg = newData[2];
        partials = newData[3];
        holders = newData[4];
        arity = newData[9] = newData[9] === undefined$1 ? isBindKey ? 0 : func.length : nativeMax(newData[9] - length2, 0);
        if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
          bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
        }
        if (!bitmask || bitmask == WRAP_BIND_FLAG) {
          var result2 = createBind(func, bitmask, thisArg);
        } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
          result2 = createCurry(func, bitmask, arity);
        } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
          result2 = createPartial(func, bitmask, thisArg, partials);
        } else {
          result2 = createHybrid.apply(undefined$1, newData);
        }
        var setter = data ? baseSetData : setData;
        return setWrapToString(setter(result2, newData), func, bitmask);
      }
      function customDefaultsAssignIn(objValue, srcValue, key, object) {
        if (objValue === undefined$1 || eq2(objValue, objectProto2[key]) && !hasOwnProperty2.call(object, key)) {
          return srcValue;
        }
        return objValue;
      }
      function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
        if (isObject2(objValue) && isObject2(srcValue)) {
          stack.set(srcValue, objValue);
          baseMerge(objValue, srcValue, undefined$1, customDefaultsMerge, stack);
          stack["delete"](srcValue);
        }
        return objValue;
      }
      function customOmitClone(value) {
        return isPlainObject2(value) ? undefined$1 : value;
      }
      function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
        var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other.length;
        if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
          return false;
        }
        var arrStacked = stack.get(array);
        var othStacked = stack.get(other);
        if (arrStacked && othStacked) {
          return arrStacked == other && othStacked == array;
        }
        var index2 = -1, result2 = true, seen2 = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined$1;
        stack.set(array, other);
        stack.set(other, array);
        while (++index2 < arrLength) {
          var arrValue = array[index2], othValue = other[index2];
          if (customizer) {
            var compared = isPartial ? customizer(othValue, arrValue, index2, other, array, stack) : customizer(arrValue, othValue, index2, array, other, stack);
          }
          if (compared !== undefined$1) {
            if (compared) {
              continue;
            }
            result2 = false;
            break;
          }
          if (seen2) {
            if (!arraySome(other, function(othValue2, othIndex) {
              if (!cacheHas(seen2, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {
                return seen2.push(othIndex);
              }
            })) {
              result2 = false;
              break;
            }
          } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
            result2 = false;
            break;
          }
        }
        stack["delete"](array);
        stack["delete"](other);
        return result2;
      }
      function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
        switch (tag) {
          case dataViewTag:
            if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
              return false;
            }
            object = object.buffer;
            other = other.buffer;
          case arrayBufferTag:
            if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) {
              return false;
            }
            return true;
          case boolTag:
          case dateTag:
          case numberTag:
            return eq2(+object, +other);
          case errorTag:
            return object.name == other.name && object.message == other.message;
          case regexpTag:
          case stringTag:
            return object == other + "";
          case mapTag:
            var convert = mapToArray;
          case setTag:
            var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
            convert || (convert = setToArray);
            if (object.size != other.size && !isPartial) {
              return false;
            }
            var stacked = stack.get(object);
            if (stacked) {
              return stacked == other;
            }
            bitmask |= COMPARE_UNORDERED_FLAG;
            stack.set(object, other);
            var result2 = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
            stack["delete"](object);
            return result2;
          case symbolTag:
            if (symbolValueOf) {
              return symbolValueOf.call(object) == symbolValueOf.call(other);
            }
        }
        return false;
      }
      function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
        var isPartial = bitmask & COMPARE_PARTIAL_FLAG, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length;
        if (objLength != othLength && !isPartial) {
          return false;
        }
        var index2 = objLength;
        while (index2--) {
          var key = objProps[index2];
          if (!(isPartial ? key in other : hasOwnProperty2.call(other, key))) {
            return false;
          }
        }
        var objStacked = stack.get(object);
        var othStacked = stack.get(other);
        if (objStacked && othStacked) {
          return objStacked == other && othStacked == object;
        }
        var result2 = true;
        stack.set(object, other);
        stack.set(other, object);
        var skipCtor = isPartial;
        while (++index2 < objLength) {
          key = objProps[index2];
          var objValue = object[key], othValue = other[key];
          if (customizer) {
            var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
          }
          if (!(compared === undefined$1 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {
            result2 = false;
            break;
          }
          skipCtor || (skipCtor = key == "constructor");
        }
        if (result2 && !skipCtor) {
          var objCtor = object.constructor, othCtor = other.constructor;
          if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) {
            result2 = false;
          }
        }
        stack["delete"](object);
        stack["delete"](other);
        return result2;
      }
      function flatRest(func) {
        return setToString(overRest(func, undefined$1, flatten), func + "");
      }
      function getAllKeys(object) {
        return baseGetAllKeys(object, keys, getSymbols);
      }
      function getAllKeysIn(object) {
        return baseGetAllKeys(object, keysIn, getSymbolsIn);
      }
      var getData = !metaMap ? noop2 : function(func) {
        return metaMap.get(func);
      };
      function getFuncName(func) {
        var result2 = func.name + "", array = realNames[result2], length2 = hasOwnProperty2.call(realNames, result2) ? array.length : 0;
        while (length2--) {
          var data = array[length2], otherFunc = data.func;
          if (otherFunc == null || otherFunc == func) {
            return data.name;
          }
        }
        return result2;
      }
      function getHolder(func) {
        var object = hasOwnProperty2.call(lodash2, "placeholder") ? lodash2 : func;
        return object.placeholder;
      }
      function getIteratee() {
        var result2 = lodash2.iteratee || iteratee;
        result2 = result2 === iteratee ? baseIteratee : result2;
        return arguments.length ? result2(arguments[0], arguments[1]) : result2;
      }
      function getMapData(map3, key) {
        var data = map3.__data__;
        return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
      }
      function getMatchData(object) {
        var result2 = keys(object), length2 = result2.length;
        while (length2--) {
          var key = result2[length2], value = object[key];
          result2[length2] = [key, value, isStrictComparable(value)];
        }
        return result2;
      }
      function getNative(object, key) {
        var value = getValue2(object, key);
        return baseIsNative(value) ? value : undefined$1;
      }
      function getRawTag2(value) {
        var isOwn = hasOwnProperty2.call(value, symToStringTag2), tag = value[symToStringTag2];
        try {
          value[symToStringTag2] = undefined$1;
          var unmasked = true;
        } catch (e) {
        }
        var result2 = nativeObjectToString2.call(value);
        if (unmasked) {
          if (isOwn) {
            value[symToStringTag2] = tag;
          } else {
            delete value[symToStringTag2];
          }
        }
        return result2;
      }
      var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
        if (object == null) {
          return [];
        }
        object = Object2(object);
        return arrayFilter(nativeGetSymbols(object), function(symbol) {
          return propertyIsEnumerable.call(object, symbol);
        });
      };
      var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
        var result2 = [];
        while (object) {
          arrayPush(result2, getSymbols(object));
          object = getPrototype2(object);
        }
        return result2;
      };
      var getTag = baseGetTag2;
      if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap2 && getTag(new WeakMap2()) != weakMapTag) {
        getTag = function(value) {
          var result2 = baseGetTag2(value), Ctor = result2 == objectTag2 ? value.constructor : undefined$1, ctorString = Ctor ? toSource(Ctor) : "";
          if (ctorString) {
            switch (ctorString) {
              case dataViewCtorString:
                return dataViewTag;
              case mapCtorString:
                return mapTag;
              case promiseCtorString:
                return promiseTag;
              case setCtorString:
                return setTag;
              case weakMapCtorString:
                return weakMapTag;
            }
          }
          return result2;
        };
      }
      function getView(start2, end2, transforms) {
        var index2 = -1, length2 = transforms.length;
        while (++index2 < length2) {
          var data = transforms[index2], size3 = data.size;
          switch (data.type) {
            case "drop":
              start2 += size3;
              break;
            case "dropRight":
              end2 -= size3;
              break;
            case "take":
              end2 = nativeMin(end2, start2 + size3);
              break;
            case "takeRight":
              start2 = nativeMax(start2, end2 - size3);
              break;
          }
        }
        return { "start": start2, "end": end2 };
      }
      function getWrapDetails(source) {
        var match3 = source.match(reWrapDetails);
        return match3 ? match3[1].split(reSplitDetails) : [];
      }
      function hasPath(object, path, hasFunc) {
        path = castPath(path, object);
        var index2 = -1, length2 = path.length, result2 = false;
        while (++index2 < length2) {
          var key = toKey(path[index2]);
          if (!(result2 = object != null && hasFunc(object, key))) {
            break;
          }
          object = object[key];
        }
        if (result2 || ++index2 != length2) {
          return result2;
        }
        length2 = object == null ? 0 : object.length;
        return !!length2 && isLength(length2) && isIndex(key, length2) && (isArray2(object) || isArguments(object));
      }
      function initCloneArray(array) {
        var length2 = array.length, result2 = new array.constructor(length2);
        if (length2 && typeof array[0] == "string" && hasOwnProperty2.call(array, "index")) {
          result2.index = array.index;
          result2.input = array.input;
        }
        return result2;
      }
      function initCloneObject(object) {
        return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype2(object)) : {};
      }
      function initCloneByTag(object, tag, isDeep) {
        var Ctor = object.constructor;
        switch (tag) {
          case arrayBufferTag:
            return cloneArrayBuffer(object);
          case boolTag:
          case dateTag:
            return new Ctor(+object);
          case dataViewTag:
            return cloneDataView(object, isDeep);
          case float32Tag:
          case float64Tag:
          case int8Tag:
          case int16Tag:
          case int32Tag:
          case uint8Tag:
          case uint8ClampedTag:
          case uint16Tag:
          case uint32Tag:
            return cloneTypedArray(object, isDeep);
          case mapTag:
            return new Ctor();
          case numberTag:
          case stringTag:
            return new Ctor(object);
          case regexpTag:
            return cloneRegExp(object);
          case setTag:
            return new Ctor();
          case symbolTag:
            return cloneSymbol(object);
        }
      }
      function insertWrapDetails(source, details) {
        var length2 = details.length;
        if (!length2) {
          return source;
        }
        var lastIndex = length2 - 1;
        details[lastIndex] = (length2 > 1 ? "& " : "") + details[lastIndex];
        details = details.join(length2 > 2 ? ", " : " ");
        return source.replace(reWrapComment, "{\n/* [wrapped with " + details + "] */\n");
      }
      function isFlattenable(value) {
        return isArray2(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);
      }
      function isIndex(value, length2) {
        var type2 = typeof value;
        length2 = length2 == null ? MAX_SAFE_INTEGER : length2;
        return !!length2 && (type2 == "number" || type2 != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length2);
      }
      function isIterateeCall(value, index2, object) {
        if (!isObject2(object)) {
          return false;
        }
        var type2 = typeof index2;
        if (type2 == "number" ? isArrayLike(object) && isIndex(index2, object.length) : type2 == "string" && index2 in object) {
          return eq2(object[index2], value);
        }
        return false;
      }
      function isKey(value, object) {
        if (isArray2(value)) {
          return false;
        }
        var type2 = typeof value;
        if (type2 == "number" || type2 == "symbol" || type2 == "boolean" || value == null || isSymbol2(value)) {
          return true;
        }
        return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object2(object);
      }
      function isKeyable(value) {
        var type2 = typeof value;
        return type2 == "string" || type2 == "number" || type2 == "symbol" || type2 == "boolean" ? value !== "__proto__" : value === null;
      }
      function isLaziable(func) {
        var funcName = getFuncName(func), other = lodash2[funcName];
        if (typeof other != "function" || !(funcName in LazyWrapper.prototype)) {
          return false;
        }
        if (func === other) {
          return true;
        }
        var data = getData(other);
        return !!data && func === data[0];
      }
      function isMasked(func) {
        return !!maskSrcKey && maskSrcKey in func;
      }
      var isMaskable = coreJsData ? isFunction2 : stubFalse;
      function isPrototype(value) {
        var Ctor = value && value.constructor, proto2 = typeof Ctor == "function" && Ctor.prototype || objectProto2;
        return value === proto2;
      }
      function isStrictComparable(value) {
        return value === value && !isObject2(value);
      }
      function matchesStrictComparable(key, srcValue) {
        return function(object) {
          if (object == null) {
            return false;
          }
          return object[key] === srcValue && (srcValue !== undefined$1 || key in Object2(object));
        };
      }
      function memoizeCapped(func) {
        var result2 = memoize(func, function(key) {
          if (cache2.size === MAX_MEMOIZE_SIZE) {
            cache2.clear();
          }
          return key;
        });
        var cache2 = result2.cache;
        return result2;
      }
      function mergeData(data, source) {
        var bitmask = data[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
        var isCombo = srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG || srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_REARG_FLAG && data[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG;
        if (!(isCommon || isCombo)) {
          return data;
        }
        if (srcBitmask & WRAP_BIND_FLAG) {
          data[2] = source[2];
          newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
        }
        var value = source[3];
        if (value) {
          var partials = data[3];
          data[3] = partials ? composeArgs(partials, value, source[4]) : value;
          data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
        }
        value = source[5];
        if (value) {
          partials = data[5];
          data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
          data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
        }
        value = source[7];
        if (value) {
          data[7] = value;
        }
        if (srcBitmask & WRAP_ARY_FLAG) {
          data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
        }
        if (data[9] == null) {
          data[9] = source[9];
        }
        data[0] = source[0];
        data[1] = newBitmask;
        return data;
      }
      function nativeKeysIn(object) {
        var result2 = [];
        if (object != null) {
          for (var key in Object2(object)) {
            result2.push(key);
          }
        }
        return result2;
      }
      function objectToString2(value) {
        return nativeObjectToString2.call(value);
      }
      function overRest(func, start2, transform2) {
        start2 = nativeMax(start2 === undefined$1 ? func.length - 1 : start2, 0);
        return function() {
          var args = arguments, index2 = -1, length2 = nativeMax(args.length - start2, 0), array = Array2(length2);
          while (++index2 < length2) {
            array[index2] = args[start2 + index2];
          }
          index2 = -1;
          var otherArgs = Array2(start2 + 1);
          while (++index2 < start2) {
            otherArgs[index2] = args[index2];
          }
          otherArgs[start2] = transform2(array);
          return apply2(func, this, otherArgs);
        };
      }
      function parent(object, path) {
        return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
      }
      function reorder(array, indexes) {
        var arrLength = array.length, length2 = nativeMin(indexes.length, arrLength), oldArray = copyArray(array);
        while (length2--) {
          var index2 = indexes[length2];
          array[length2] = isIndex(index2, arrLength) ? oldArray[index2] : undefined$1;
        }
        return array;
      }
      function safeGet(object, key) {
        if (key === "constructor" && typeof object[key] === "function") {
          return;
        }
        if (key == "__proto__") {
          return;
        }
        return object[key];
      }
      var setData = shortOut(baseSetData);
      var setTimeout2 = ctxSetTimeout || function(func, wait) {
        return root2.setTimeout(func, wait);
      };
      var setToString = shortOut(baseSetToString);
      function setWrapToString(wrapper, reference3, bitmask) {
        var source = reference3 + "";
        return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
      }
      function shortOut(func) {
        var count = 0, lastCalled = 0;
        return function() {
          var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);
          lastCalled = stamp;
          if (remaining > 0) {
            if (++count >= HOT_COUNT) {
              return arguments[0];
            }
          } else {
            count = 0;
          }
          return func.apply(undefined$1, arguments);
        };
      }
      function shuffleSelf(array, size3) {
        var index2 = -1, length2 = array.length, lastIndex = length2 - 1;
        size3 = size3 === undefined$1 ? length2 : size3;
        while (++index2 < size3) {
          var rand = baseRandom(index2, lastIndex), value = array[rand];
          array[rand] = array[index2];
          array[index2] = value;
        }
        array.length = size3;
        return array;
      }
      var stringToPath = memoizeCapped(function(string) {
        var result2 = [];
        if (string.charCodeAt(0) === 46) {
          result2.push("");
        }
        string.replace(rePropName, function(match3, number2, quote, subString) {
          result2.push(quote ? subString.replace(reEscapeChar, "$1") : number2 || match3);
        });
        return result2;
      });
      function toKey(value) {
        if (typeof value == "string" || isSymbol2(value)) {
          return value;
        }
        var result2 = value + "";
        return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2;
      }
      function toSource(func) {
        if (func != null) {
          try {
            return funcToString2.call(func);
          } catch (e) {
          }
          try {
            return func + "";
          } catch (e) {
          }
        }
        return "";
      }
      function updateWrapDetails(details, bitmask) {
        arrayEach(wrapFlags, function(pair) {
          var value = "_." + pair[0];
          if (bitmask & pair[1] && !arrayIncludes(details, value)) {
            details.push(value);
          }
        });
        return details.sort();
      }
      function wrapperClone(wrapper) {
        if (wrapper instanceof LazyWrapper) {
          return wrapper.clone();
        }
        var result2 = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
        result2.__actions__ = copyArray(wrapper.__actions__);
        result2.__index__ = wrapper.__index__;
        result2.__values__ = wrapper.__values__;
        return result2;
      }
      function chunk(array, size3, guard) {
        if (guard ? isIterateeCall(array, size3, guard) : size3 === undefined$1) {
          size3 = 1;
        } else {
          size3 = nativeMax(toInteger(size3), 0);
        }
        var length2 = array == null ? 0 : array.length;
        if (!length2 || size3 < 1) {
          return [];
        }
        var index2 = 0, resIndex = 0, result2 = Array2(nativeCeil(length2 / size3));
        while (index2 < length2) {
          result2[resIndex++] = baseSlice(array, index2, index2 += size3);
        }
        return result2;
      }
      function compact(array) {
        var index2 = -1, length2 = array == null ? 0 : array.length, resIndex = 0, result2 = [];
        while (++index2 < length2) {
          var value = array[index2];
          if (value) {
            result2[resIndex++] = value;
          }
        }
        return result2;
      }
      function concat() {
        var length2 = arguments.length;
        if (!length2) {
          return [];
        }
        var args = Array2(length2 - 1), array = arguments[0], index2 = length2;
        while (index2--) {
          args[index2 - 1] = arguments[index2];
        }
        return arrayPush(isArray2(array) ? copyArray(array) : [array], baseFlatten(args, 1));
      }
      var difference = baseRest(function(array, values2) {
        return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true)) : [];
      });
      var differenceBy = baseRest(function(array, values2) {
        var iteratee2 = last(values2);
        if (isArrayLikeObject(iteratee2)) {
          iteratee2 = undefined$1;
        }
        return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)) : [];
      });
      var differenceWith = baseRest(function(array, values2) {
        var comparator2 = last(values2);
        if (isArrayLikeObject(comparator2)) {
          comparator2 = undefined$1;
        }
        return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), undefined$1, comparator2) : [];
      });
      function drop(array, n, guard) {
        var length2 = array == null ? 0 : array.length;
        if (!length2) {
          return [];
        }
        n = guard || n === undefined$1 ? 1 : toInteger(n);
        return baseSlice(array, n < 0 ? 0 : n, length2);
      }
      function dropRight(array, n, guard) {
        var length2 = array == null ? 0 : array.length;
        if (!length2) {
          return [];
        }
        n = guard || n === undefined$1 ? 1 : toInteger(n);
        n = length2 - n;
        return baseSlice(array, 0, n < 0 ? 0 : n);
      }
      function dropRightWhile(array, predicate) {
        return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true, true) : [];
      }
      function dropWhile(array, predicate) {
        return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true) : [];
      }
      function fill(array, value, start2, end2) {
        var length2 = array == null ? 0 : array.length;
        if (!length2) {
          return [];
        }
        if (start2 && typeof start2 != "number" && isIterateeCall(array, value, start2)) {
          start2 = 0;
          end2 = length2;
        }
        return baseFill(array, value, start2, end2);
      }
      function findIndex(array, predicate, fromIndex) {
        var length2 = array == null ? 0 : array.length;
        if (!length2) {
          return -1;
        }
        var index2 = fromIndex == null ? 0 : toInteger(fromIndex);
        if (index2 < 0) {
          index2 = nativeMax(length2 + index2, 0);
        }
        return baseFindIndex(array, getIteratee(predicate, 3), index2);
      }
      function findLastIndex(array, predicate, fromIndex) {
        var length2 = array == null ? 0 : array.length;
        if (!length2) {
          return -1;
        }
        var index2 = length2 - 1;
        if (fromIndex !== undefined$1) {
          index2 = toInteger(fromIndex);
          index2 = fromIndex < 0 ? nativeMax(length2 + index2, 0) : nativeMin(index2, length2 - 1);
        }
        return baseFindIndex(array, getIteratee(predicate, 3), index2, true);
      }
      function flatten(array) {
        var length2 = array == null ? 0 : array.length;
        return length2 ? baseFlatten(array, 1) : [];
      }
      function flattenDeep(array) {
        var length2 = array == null ? 0 : array.length;
        return length2 ? baseFlatten(array, INFINITY) : [];
      }
      function flattenDepth(array, depth) {
        var length2 = array == null ? 0 : array.length;
        if (!length2) {
          return [];
        }
        depth = depth === undefined$1 ? 1 : toInteger(depth);
        return baseFlatten(array, depth);
      }
      function fromPairs(pairs) {
        var index2 = -1, length2 = pairs == null ? 0 : pairs.length, result2 = {};
        while (++index2 < length2) {
          var pair = pairs[index2];
          result2[pair[0]] = pair[1];
        }
        return result2;
      }
      function head(array) {
        return array && array.length ? array[0] : undefined$1;
      }
      function indexOf2(array, value, fromIndex) {
        var length2 = array == null ? 0 : array.length;
        if (!length2) {
          return -1;
        }
        var index2 = fromIndex == null ? 0 : toInteger(fromIndex);
        if (index2 < 0) {
          index2 = nativeMax(length2 + index2, 0);
        }
        return baseIndexOf(array, value, index2);
      }
      function initial2(array) {
        var length2 = array == null ? 0 : array.length;
        return length2 ? baseSlice(array, 0, -1) : [];
      }
      var intersection = baseRest(function(arrays) {
        var mapped = arrayMap(arrays, castArrayLikeObject);
        return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped) : [];
      });
      var intersectionBy = baseRest(function(arrays) {
        var iteratee2 = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject);
        if (iteratee2 === last(mapped)) {
          iteratee2 = undefined$1;
        } else {
          mapped.pop();
        }
        return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, getIteratee(iteratee2, 2)) : [];
      });
      var intersectionWith = baseRest(function(arrays) {
        var comparator2 = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject);
        comparator2 = typeof comparator2 == "function" ? comparator2 : undefined$1;
        if (comparator2) {
          mapped.pop();
        }
        return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined$1, comparator2) : [];
      });
      function join2(array, separator) {
        return array == null ? "" : nativeJoin.call(array, separator);
      }
      function last(array) {
        var length2 = array == null ? 0 : array.length;
        return length2 ? array[length2 - 1] : undefined$1;
      }
      function lastIndexOf(array, value, fromIndex) {
        var length2 = array == null ? 0 : array.length;
        if (!length2) {
          return -1;
        }
        var index2 = length2;
        if (fromIndex !== undefined$1) {
          index2 = toInteger(fromIndex);
          index2 = index2 < 0 ? nativeMax(length2 + index2, 0) : nativeMin(index2, length2 - 1);
        }
        return value === value ? strictLastIndexOf(array, value, index2) : baseFindIndex(array, baseIsNaN, index2, true);
      }
      function nth(array, n) {
        return array && array.length ? baseNth(array, toInteger(n)) : undefined$1;
      }
      var pull = baseRest(pullAll);
      function pullAll(array, values2) {
        return array && array.length && values2 && values2.length ? basePullAll(array, values2) : array;
      }
      function pullAllBy(array, values2, iteratee2) {
        return array && array.length && values2 && values2.length ? basePullAll(array, values2, getIteratee(iteratee2, 2)) : array;
      }
      function pullAllWith(array, values2, comparator2) {
        return array && array.length && values2 && values2.length ? basePullAll(array, values2, undefined$1, comparator2) : array;
      }
      var pullAt = flatRest(function(array, indexes) {
        var length2 = array == null ? 0 : array.length, result2 = baseAt(array, indexes);
        basePullAt(array, arrayMap(indexes, function(index2) {
          return isIndex(index2, length2) ? +index2 : index2;
        }).sort(compareAscending));
        return result2;
      });
      function remove2(array, predicate) {
        var result2 = [];
        if (!(array && array.length)) {
          return result2;
        }
        var index2 = -1, indexes = [], length2 = array.length;
        predicate = getIteratee(predicate, 3);
        while (++index2 < length2) {
          var value = array[index2];
          if (predicate(value, index2, array)) {
            result2.push(value);
            indexes.push(index2);
          }
        }
        basePullAt(array, indexes);
        return result2;
      }
      function reverse(array) {
        return array == null ? array : nativeReverse.call(array);
      }
      function slice(array, start2, end2) {
        var length2 = array == null ? 0 : array.length;
        if (!length2) {
          return [];
        }
        if (end2 && typeof end2 != "number" && isIterateeCall(array, start2, end2)) {
          start2 = 0;
          end2 = length2;
        } else {
          start2 = start2 == null ? 0 : toInteger(start2);
          end2 = end2 === undefined$1 ? length2 : toInteger(end2);
        }
        return baseSlice(array, start2, end2);
      }
      function sortedIndex(array, value) {
        return baseSortedIndex(array, value);
      }
      function sortedIndexBy(array, value, iteratee2) {
        return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2));
      }
      function sortedIndexOf(array, value) {
        var length2 = array == null ? 0 : array.length;
        if (length2) {
          var index2 = baseSortedIndex(array, value);
          if (index2 < length2 && eq2(array[index2], value)) {
            return index2;
          }
        }
        return -1;
      }
      function sortedLastIndex(array, value) {
        return baseSortedIndex(array, value, true);
      }
      function sortedLastIndexBy(array, value, iteratee2) {
        return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2), true);
      }
      function sortedLastIndexOf(array, value) {
        var length2 = array == null ? 0 : array.length;
        if (length2) {
          var index2 = baseSortedIndex(array, value, true) - 1;
          if (eq2(array[index2], value)) {
            return index2;
          }
        }
        return -1;
      }
      function sortedUniq(array) {
        return array && array.length ? baseSortedUniq(array) : [];
      }
      function sortedUniqBy(array, iteratee2) {
        return array && array.length ? baseSortedUniq(array, getIteratee(iteratee2, 2)) : [];
      }
      function tail(array) {
        var length2 = array == null ? 0 : array.length;
        return length2 ? baseSlice(array, 1, length2) : [];
      }
      function take(array, n, guard) {
        if (!(array && array.length)) {
          return [];
        }
        n = guard || n === undefined$1 ? 1 : toInteger(n);
        return baseSlice(array, 0, n < 0 ? 0 : n);
      }
      function takeRight(array, n, guard) {
        var length2 = array == null ? 0 : array.length;
        if (!length2) {
          return [];
        }
        n = guard || n === undefined$1 ? 1 : toInteger(n);
        n = length2 - n;
        return baseSlice(array, n < 0 ? 0 : n, length2);
      }
      function takeRightWhile(array, predicate) {
        return array && array.length ? baseWhile(array, getIteratee(predicate, 3), false, true) : [];
      }
      function takeWhile(array, predicate) {
        return array && array.length ? baseWhile(array, getIteratee(predicate, 3)) : [];
      }
      var union = baseRest(function(arrays) {
        return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
      });
      var unionBy = baseRest(function(arrays) {
        var iteratee2 = last(arrays);
        if (isArrayLikeObject(iteratee2)) {
          iteratee2 = undefined$1;
        }
        return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2));
      });
      var unionWith = baseRest(function(arrays) {
        var comparator2 = last(arrays);
        comparator2 = typeof comparator2 == "function" ? comparator2 : undefined$1;
        return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined$1, comparator2);
      });
      function uniq(array) {
        return array && array.length ? baseUniq(array) : [];
      }
      function uniqBy(array, iteratee2) {
        return array && array.length ? baseUniq(array, getIteratee(iteratee2, 2)) : [];
      }
      function uniqWith(array, comparator2) {
        comparator2 = typeof comparator2 == "function" ? comparator2 : undefined$1;
        return array && array.length ? baseUniq(array, undefined$1, comparator2) : [];
      }
      function unzip(array) {
        if (!(array && array.length)) {
          return [];
        }
        var length2 = 0;
        array = arrayFilter(array, function(group) {
          if (isArrayLikeObject(group)) {
            length2 = nativeMax(group.length, length2);
            return true;
          }
        });
        return baseTimes(length2, function(index2) {
          return arrayMap(array, baseProperty(index2));
        });
      }
      function unzipWith(array, iteratee2) {
        if (!(array && array.length)) {
          return [];
        }
        var result2 = unzip(array);
        if (iteratee2 == null) {
          return result2;
        }
        return arrayMap(result2, function(group) {
          return apply2(iteratee2, undefined$1, group);
        });
      }
      var without = baseRest(function(array, values2) {
        return isArrayLikeObject(array) ? baseDifference(array, values2) : [];
      });
      var xor = baseRest(function(arrays) {
        return baseXor(arrayFilter(arrays, isArrayLikeObject));
      });
      var xorBy = baseRest(function(arrays) {
        var iteratee2 = last(arrays);
        if (isArrayLikeObject(iteratee2)) {
          iteratee2 = undefined$1;
        }
        return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee2, 2));
      });
      var xorWith = baseRest(function(arrays) {
        var comparator2 = last(arrays);
        comparator2 = typeof comparator2 == "function" ? comparator2 : undefined$1;
        return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined$1, comparator2);
      });
      var zip = baseRest(unzip);
      function zipObject(props, values2) {
        return baseZipObject(props || [], values2 || [], assignValue);
      }
      function zipObjectDeep(props, values2) {
        return baseZipObject(props || [], values2 || [], baseSet);
      }
      var zipWith = baseRest(function(arrays) {
        var length2 = arrays.length, iteratee2 = length2 > 1 ? arrays[length2 - 1] : undefined$1;
        iteratee2 = typeof iteratee2 == "function" ? (arrays.pop(), iteratee2) : undefined$1;
        return unzipWith(arrays, iteratee2);
      });
      function chain(value) {
        var result2 = lodash2(value);
        result2.__chain__ = true;
        return result2;
      }
      function tap(value, interceptor) {
        interceptor(value);
        return value;
      }
      function thru(value, interceptor) {
        return interceptor(value);
      }
      var wrapperAt = flatRest(function(paths) {
        var length2 = paths.length, start2 = length2 ? paths[0] : 0, value = this.__wrapped__, interceptor = function(object) {
          return baseAt(object, paths);
        };
        if (length2 > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex(start2)) {
          return this.thru(interceptor);
        }
        value = value.slice(start2, +start2 + (length2 ? 1 : 0));
        value.__actions__.push({
          "func": thru,
          "args": [interceptor],
          "thisArg": undefined$1
        });
        return new LodashWrapper(value, this.__chain__).thru(function(array) {
          if (length2 && !array.length) {
            array.push(undefined$1);
          }
          return array;
        });
      });
      function wrapperChain() {
        return chain(this);
      }
      function wrapperCommit() {
        return new LodashWrapper(this.value(), this.__chain__);
      }
      function wrapperNext() {
        if (this.__values__ === undefined$1) {
          this.__values__ = toArray2(this.value());
        }
        var done = this.__index__ >= this.__values__.length, value = done ? undefined$1 : this.__values__[this.__index__++];
        return { "done": done, "value": value };
      }
      function wrapperToIterator() {
        return this;
      }
      function wrapperPlant(value) {
        var result2, parent2 = this;
        while (parent2 instanceof baseLodash) {
          var clone3 = wrapperClone(parent2);
          clone3.__index__ = 0;
          clone3.__values__ = undefined$1;
          if (result2) {
            previous.__wrapped__ = clone3;
          } else {
            result2 = clone3;
          }
          var previous = clone3;
          parent2 = parent2.__wrapped__;
        }
        previous.__wrapped__ = value;
        return result2;
      }
      function wrapperReverse() {
        var value = this.__wrapped__;
        if (value instanceof LazyWrapper) {
          var wrapped = value;
          if (this.__actions__.length) {
            wrapped = new LazyWrapper(this);
          }
          wrapped = wrapped.reverse();
          wrapped.__actions__.push({
            "func": thru,
            "args": [reverse],
            "thisArg": undefined$1
          });
          return new LodashWrapper(wrapped, this.__chain__);
        }
        return this.thru(reverse);
      }
      function wrapperValue() {
        return baseWrapperValue(this.__wrapped__, this.__actions__);
      }
      var countBy = createAggregator(function(result2, value, key) {
        if (hasOwnProperty2.call(result2, key)) {
          ++result2[key];
        } else {
          baseAssignValue(result2, key, 1);
        }
      });
      function every(collection, predicate, guard) {
        var func = isArray2(collection) ? arrayEvery : baseEvery;
        if (guard && isIterateeCall(collection, predicate, guard)) {
          predicate = undefined$1;
        }
        return func(collection, getIteratee(predicate, 3));
      }
      function filter(collection, predicate) {
        var func = isArray2(collection) ? arrayFilter : baseFilter;
        return func(collection, getIteratee(predicate, 3));
      }
      var find = createFind(findIndex);
      var findLast = createFind(findLastIndex);
      function flatMap(collection, iteratee2) {
        return baseFlatten(map2(collection, iteratee2), 1);
      }
      function flatMapDeep(collection, iteratee2) {
        return baseFlatten(map2(collection, iteratee2), INFINITY);
      }
      function flatMapDepth(collection, iteratee2, depth) {
        depth = depth === undefined$1 ? 1 : toInteger(depth);
        return baseFlatten(map2(collection, iteratee2), depth);
      }
      function forEach(collection, iteratee2) {
        var func = isArray2(collection) ? arrayEach : baseEach;
        return func(collection, getIteratee(iteratee2, 3));
      }
      function forEachRight(collection, iteratee2) {
        var func = isArray2(collection) ? arrayEachRight : baseEachRight;
        return func(collection, getIteratee(iteratee2, 3));
      }
      var groupBy = createAggregator(function(result2, value, key) {
        if (hasOwnProperty2.call(result2, key)) {
          result2[key].push(value);
        } else {
          baseAssignValue(result2, key, [value]);
        }
      });
      function includes(collection, value, fromIndex, guard) {
        collection = isArrayLike(collection) ? collection : values(collection);
        fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0;
        var length2 = collection.length;
        if (fromIndex < 0) {
          fromIndex = nativeMax(length2 + fromIndex, 0);
        }
        return isString2(collection) ? fromIndex <= length2 && collection.indexOf(value, fromIndex) > -1 : !!length2 && baseIndexOf(collection, value, fromIndex) > -1;
      }
      var invokeMap = baseRest(function(collection, path, args) {
        var index2 = -1, isFunc = typeof path == "function", result2 = isArrayLike(collection) ? Array2(collection.length) : [];
        baseEach(collection, function(value) {
          result2[++index2] = isFunc ? apply2(path, value, args) : baseInvoke(value, path, args);
        });
        return result2;
      });
      var keyBy = createAggregator(function(result2, value, key) {
        baseAssignValue(result2, key, value);
      });
      function map2(collection, iteratee2) {
        var func = isArray2(collection) ? arrayMap : baseMap;
        return func(collection, getIteratee(iteratee2, 3));
      }
      function orderBy(collection, iteratees, orders, guard) {
        if (collection == null) {
          return [];
        }
        if (!isArray2(iteratees)) {
          iteratees = iteratees == null ? [] : [iteratees];
        }
        orders = guard ? undefined$1 : orders;
        if (!isArray2(orders)) {
          orders = orders == null ? [] : [orders];
        }
        return baseOrderBy(collection, iteratees, orders);
      }
      var partition = createAggregator(function(result2, value, key) {
        result2[key ? 0 : 1].push(value);
      }, function() {
        return [[], []];
      });
      function reduce(collection, iteratee2, accumulator) {
        var func = isArray2(collection) ? arrayReduce : baseReduce, initAccum = arguments.length < 3;
        return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEach);
      }
      function reduceRight(collection, iteratee2, accumulator) {
        var func = isArray2(collection) ? arrayReduceRight : baseReduce, initAccum = arguments.length < 3;
        return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEachRight);
      }
      function reject(collection, predicate) {
        var func = isArray2(collection) ? arrayFilter : baseFilter;
        return func(collection, negate(getIteratee(predicate, 3)));
      }
      function sample(collection) {
        var func = isArray2(collection) ? arraySample : baseSample;
        return func(collection);
      }
      function sampleSize(collection, n, guard) {
        if (guard ? isIterateeCall(collection, n, guard) : n === undefined$1) {
          n = 1;
        } else {
          n = toInteger(n);
        }
        var func = isArray2(collection) ? arraySampleSize : baseSampleSize;
        return func(collection, n);
      }
      function shuffle(collection) {
        var func = isArray2(collection) ? arrayShuffle : baseShuffle;
        return func(collection);
      }
      function size2(collection) {
        if (collection == null) {
          return 0;
        }
        if (isArrayLike(collection)) {
          return isString2(collection) ? stringSize(collection) : collection.length;
        }
        var tag = getTag(collection);
        if (tag == mapTag || tag == setTag) {
          return collection.size;
        }
        return baseKeys(collection).length;
      }
      function some(collection, predicate, guard) {
        var func = isArray2(collection) ? arraySome : baseSome;
        if (guard && isIterateeCall(collection, predicate, guard)) {
          predicate = undefined$1;
        }
        return func(collection, getIteratee(predicate, 3));
      }
      var sortBy = baseRest(function(collection, iteratees) {
        if (collection == null) {
          return [];
        }
        var length2 = iteratees.length;
        if (length2 > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
          iteratees = [];
        } else if (length2 > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
          iteratees = [iteratees[0]];
        }
        return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
      });
      var now2 = ctxNow || function() {
        return root2.Date.now();
      };
      function after(n, func) {
        if (typeof func != "function") {
          throw new TypeError2(FUNC_ERROR_TEXT);
        }
        n = toInteger(n);
        return function() {
          if (--n < 1) {
            return func.apply(this, arguments);
          }
        };
      }
      function ary(func, n, guard) {
        n = guard ? undefined$1 : n;
        n = func && n == null ? func.length : n;
        return createWrap(func, WRAP_ARY_FLAG, undefined$1, undefined$1, undefined$1, undefined$1, n);
      }
      function before(n, func) {
        var result2;
        if (typeof func != "function") {
          throw new TypeError2(FUNC_ERROR_TEXT);
        }
        n = toInteger(n);
        return function() {
          if (--n > 0) {
            result2 = func.apply(this, arguments);
          }
          if (n <= 1) {
            func = undefined$1;
          }
          return result2;
        };
      }
      var bind = baseRest(function(func, thisArg, partials) {
        var bitmask = WRAP_BIND_FLAG;
        if (partials.length) {
          var holders = replaceHolders(partials, getHolder(bind));
          bitmask |= WRAP_PARTIAL_FLAG;
        }
        return createWrap(func, bitmask, thisArg, partials, holders);
      });
      var bindKey = baseRest(function(object, key, partials) {
        var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
        if (partials.length) {
          var holders = replaceHolders(partials, getHolder(bindKey));
          bitmask |= WRAP_PARTIAL_FLAG;
        }
        return createWrap(key, bitmask, object, partials, holders);
      });
      function curry(func, arity, guard) {
        arity = guard ? undefined$1 : arity;
        var result2 = createWrap(func, WRAP_CURRY_FLAG, undefined$1, undefined$1, undefined$1, undefined$1, undefined$1, arity);
        result2.placeholder = curry.placeholder;
        return result2;
      }
      function curryRight(func, arity, guard) {
        arity = guard ? undefined$1 : arity;
        var result2 = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined$1, undefined$1, undefined$1, undefined$1, undefined$1, arity);
        result2.placeholder = curryRight.placeholder;
        return result2;
      }
      function debounce2(func, wait, options2) {
        var lastArgs, lastThis, maxWait, result2, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
        if (typeof func != "function") {
          throw new TypeError2(FUNC_ERROR_TEXT);
        }
        wait = toNumber2(wait) || 0;
        if (isObject2(options2)) {
          leading = !!options2.leading;
          maxing = "maxWait" in options2;
          maxWait = maxing ? nativeMax(toNumber2(options2.maxWait) || 0, wait) : maxWait;
          trailing = "trailing" in options2 ? !!options2.trailing : trailing;
        }
        function invokeFunc(time) {
          var args = lastArgs, thisArg = lastThis;
          lastArgs = lastThis = undefined$1;
          lastInvokeTime = time;
          result2 = func.apply(thisArg, args);
          return result2;
        }
        function leadingEdge(time) {
          lastInvokeTime = time;
          timerId = setTimeout2(timerExpired, wait);
          return leading ? invokeFunc(time) : result2;
        }
        function remainingWait(time) {
          var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;
          return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;
        }
        function shouldInvoke(time) {
          var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;
          return lastCallTime === undefined$1 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
        }
        function timerExpired() {
          var time = now2();
          if (shouldInvoke(time)) {
            return trailingEdge(time);
          }
          timerId = setTimeout2(timerExpired, remainingWait(time));
        }
        function trailingEdge(time) {
          timerId = undefined$1;
          if (trailing && lastArgs) {
            return invokeFunc(time);
          }
          lastArgs = lastThis = undefined$1;
          return result2;
        }
        function cancel() {
          if (timerId !== undefined$1) {
            clearTimeout2(timerId);
          }
          lastInvokeTime = 0;
          lastArgs = lastCallTime = lastThis = timerId = undefined$1;
        }
        function flush() {
          return timerId === undefined$1 ? result2 : trailingEdge(now2());
        }
        function debounced() {
          var time = now2(), isInvoking = shouldInvoke(time);
          lastArgs = arguments;
          lastThis = this;
          lastCallTime = time;
          if (isInvoking) {
            if (timerId === undefined$1) {
              return leadingEdge(lastCallTime);
            }
            if (maxing) {
              clearTimeout2(timerId);
              timerId = setTimeout2(timerExpired, wait);
              return invokeFunc(lastCallTime);
            }
          }
          if (timerId === undefined$1) {
            timerId = setTimeout2(timerExpired, wait);
          }
          return result2;
        }
        debounced.cancel = cancel;
        debounced.flush = flush;
        return debounced;
      }
      var defer = baseRest(function(func, args) {
        return baseDelay(func, 1, args);
      });
      var delay = baseRest(function(func, wait, args) {
        return baseDelay(func, toNumber2(wait) || 0, args);
      });
      function flip2(func) {
        return createWrap(func, WRAP_FLIP_FLAG);
      }
      function memoize(func, resolver) {
        if (typeof func != "function" || resolver != null && typeof resolver != "function") {
          throw new TypeError2(FUNC_ERROR_TEXT);
        }
        var memoized = function() {
          var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache2 = memoized.cache;
          if (cache2.has(key)) {
            return cache2.get(key);
          }
          var result2 = func.apply(this, args);
          memoized.cache = cache2.set(key, result2) || cache2;
          return result2;
        };
        memoized.cache = new (memoize.Cache || MapCache)();
        return memoized;
      }
      memoize.Cache = MapCache;
      function negate(predicate) {
        if (typeof predicate != "function") {
          throw new TypeError2(FUNC_ERROR_TEXT);
        }
        return function() {
          var args = arguments;
          switch (args.length) {
            case 0:
              return !predicate.call(this);
            case 1:
              return !predicate.call(this, args[0]);
            case 2:
              return !predicate.call(this, args[0], args[1]);
            case 3:
              return !predicate.call(this, args[0], args[1], args[2]);
          }
          return !predicate.apply(this, args);
        };
      }
      function once3(func) {
        return before(2, func);
      }
      var overArgs = castRest(function(func, transforms) {
        transforms = transforms.length == 1 && isArray2(transforms[0]) ? arrayMap(transforms[0], baseUnary(getIteratee())) : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));
        var funcsLength = transforms.length;
        return baseRest(function(args) {
          var index2 = -1, length2 = nativeMin(args.length, funcsLength);
          while (++index2 < length2) {
            args[index2] = transforms[index2].call(this, args[index2]);
          }
          return apply2(func, this, args);
        });
      });
      var partial = baseRest(function(func, partials) {
        var holders = replaceHolders(partials, getHolder(partial));
        return createWrap(func, WRAP_PARTIAL_FLAG, undefined$1, partials, holders);
      });
      var partialRight = baseRest(function(func, partials) {
        var holders = replaceHolders(partials, getHolder(partialRight));
        return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined$1, partials, holders);
      });
      var rearg = flatRest(function(func, indexes) {
        return createWrap(func, WRAP_REARG_FLAG, undefined$1, undefined$1, undefined$1, indexes);
      });
      function rest(func, start2) {
        if (typeof func != "function") {
          throw new TypeError2(FUNC_ERROR_TEXT);
        }
        start2 = start2 === undefined$1 ? start2 : toInteger(start2);
        return baseRest(func, start2);
      }
      function spread(func, start2) {
        if (typeof func != "function") {
          throw new TypeError2(FUNC_ERROR_TEXT);
        }
        start2 = start2 == null ? 0 : nativeMax(toInteger(start2), 0);
        return baseRest(function(args) {
          var array = args[start2], otherArgs = castSlice(args, 0, start2);
          if (array) {
            arrayPush(otherArgs, array);
          }
          return apply2(func, this, otherArgs);
        });
      }
      function throttle(func, wait, options2) {
        var leading = true, trailing = true;
        if (typeof func != "function") {
          throw new TypeError2(FUNC_ERROR_TEXT);
        }
        if (isObject2(options2)) {
          leading = "leading" in options2 ? !!options2.leading : leading;
          trailing = "trailing" in options2 ? !!options2.trailing : trailing;
        }
        return debounce2(func, wait, {
          "leading": leading,
          "maxWait": wait,
          "trailing": trailing
        });
      }
      function unary(func) {
        return ary(func, 1);
      }
      function wrap2(value, wrapper) {
        return partial(castFunction(wrapper), value);
      }
      function castArray() {
        if (!arguments.length) {
          return [];
        }
        var value = arguments[0];
        return isArray2(value) ? value : [value];
      }
      function clone2(value) {
        return baseClone(value, CLONE_SYMBOLS_FLAG);
      }
      function cloneWith(value, customizer) {
        customizer = typeof customizer == "function" ? customizer : undefined$1;
        return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
      }
      function cloneDeep(value) {
        return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
      }
      function cloneDeepWith(value, customizer) {
        customizer = typeof customizer == "function" ? customizer : undefined$1;
        return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
      }
      function conformsTo(object, source) {
        return source == null || baseConformsTo(object, source, keys(source));
      }
      function eq2(value, other) {
        return value === other || value !== value && other !== other;
      }
      var gt2 = createRelationalOperation(baseGt);
      var gte = createRelationalOperation(function(value, other) {
        return value >= other;
      });
      var isArguments = baseIsArguments(function() {
        return arguments;
      }()) ? baseIsArguments : function(value) {
        return isObjectLike2(value) && hasOwnProperty2.call(value, "callee") && !propertyIsEnumerable.call(value, "callee");
      };
      var isArray2 = Array2.isArray;
      var isArrayBuffer2 = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
      function isArrayLike(value) {
        return value != null && isLength(value.length) && !isFunction2(value);
      }
      function isArrayLikeObject(value) {
        return isObjectLike2(value) && isArrayLike(value);
      }
      function isBoolean2(value) {
        return value === true || value === false || isObjectLike2(value) && baseGetTag2(value) == boolTag;
      }
      var isBuffer = nativeIsBuffer || stubFalse;
      var isDate2 = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
      function isElement2(value) {
        return isObjectLike2(value) && value.nodeType === 1 && !isPlainObject2(value);
      }
      function isEmpty2(value) {
        if (value == null) {
          return true;
        }
        if (isArrayLike(value) && (isArray2(value) || typeof value == "string" || typeof value.splice == "function" || isBuffer(value) || isTypedArray(value) || isArguments(value))) {
          return !value.length;
        }
        var tag = getTag(value);
        if (tag == mapTag || tag == setTag) {
          return !value.size;
        }
        if (isPrototype(value)) {
          return !baseKeys(value).length;
        }
        for (var key in value) {
          if (hasOwnProperty2.call(value, key)) {
            return false;
          }
        }
        return true;
      }
      function isEqual(value, other) {
        return baseIsEqual(value, other);
      }
      function isEqualWith(value, other, customizer) {
        customizer = typeof customizer == "function" ? customizer : undefined$1;
        var result2 = customizer ? customizer(value, other) : undefined$1;
        return result2 === undefined$1 ? baseIsEqual(value, other, undefined$1, customizer) : !!result2;
      }
      function isError(value) {
        if (!isObjectLike2(value)) {
          return false;
        }
        var tag = baseGetTag2(value);
        return tag == errorTag || tag == domExcTag || typeof value.message == "string" && typeof value.name == "string" && !isPlainObject2(value);
      }
      function isFinite2(value) {
        return typeof value == "number" && nativeIsFinite(value);
      }
      function isFunction2(value) {
        if (!isObject2(value)) {
          return false;
        }
        var tag = baseGetTag2(value);
        return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
      }
      function isInteger(value) {
        return typeof value == "number" && value == toInteger(value);
      }
      function isLength(value) {
        return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
      }
      function isObject2(value) {
        var type2 = typeof value;
        return value != null && (type2 == "object" || type2 == "function");
      }
      function isObjectLike2(value) {
        return value != null && typeof value == "object";
      }
      var isMap2 = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
      function isMatch(object, source) {
        return object === source || baseIsMatch(object, source, getMatchData(source));
      }
      function isMatchWith(object, source, customizer) {
        customizer = typeof customizer == "function" ? customizer : undefined$1;
        return baseIsMatch(object, source, getMatchData(source), customizer);
      }
      function isNaN2(value) {
        return isNumber2(value) && value != +value;
      }
      function isNative(value) {
        if (isMaskable(value)) {
          throw new Error2(CORE_ERROR_TEXT);
        }
        return baseIsNative(value);
      }
      function isNull(value) {
        return value === null;
      }
      function isNil(value) {
        return value == null;
      }
      function isNumber2(value) {
        return typeof value == "number" || isObjectLike2(value) && baseGetTag2(value) == numberTag;
      }
      function isPlainObject2(value) {
        if (!isObjectLike2(value) || baseGetTag2(value) != objectTag2) {
          return false;
        }
        var proto2 = getPrototype2(value);
        if (proto2 === null) {
          return true;
        }
        var Ctor = hasOwnProperty2.call(proto2, "constructor") && proto2.constructor;
        return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString2.call(Ctor) == objectCtorString2;
      }
      var isRegExp2 = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
      function isSafeInteger(value) {
        return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
      }
      var isSet2 = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
      function isString2(value) {
        return typeof value == "string" || !isArray2(value) && isObjectLike2(value) && baseGetTag2(value) == stringTag;
      }
      function isSymbol2(value) {
        return typeof value == "symbol" || isObjectLike2(value) && baseGetTag2(value) == symbolTag;
      }
      var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
      function isUndefined2(value) {
        return value === undefined$1;
      }
      function isWeakMap(value) {
        return isObjectLike2(value) && getTag(value) == weakMapTag;
      }
      function isWeakSet(value) {
        return isObjectLike2(value) && baseGetTag2(value) == weakSetTag;
      }
      var lt2 = createRelationalOperation(baseLt);
      var lte = createRelationalOperation(function(value, other) {
        return value <= other;
      });
      function toArray2(value) {
        if (!value) {
          return [];
        }
        if (isArrayLike(value)) {
          return isString2(value) ? stringToArray(value) : copyArray(value);
        }
        if (symIterator && value[symIterator]) {
          return iteratorToArray(value[symIterator]());
        }
        var tag = getTag(value), func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values;
        return func(value);
      }
      function toFinite(value) {
        if (!value) {
          return value === 0 ? value : 0;
        }
        value = toNumber2(value);
        if (value === INFINITY || value === -INFINITY) {
          var sign = value < 0 ? -1 : 1;
          return sign * MAX_INTEGER;
        }
        return value === value ? value : 0;
      }
      function toInteger(value) {
        var result2 = toFinite(value), remainder = result2 % 1;
        return result2 === result2 ? remainder ? result2 - remainder : result2 : 0;
      }
      function toLength(value) {
        return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH2) : 0;
      }
      function toNumber2(value) {
        if (typeof value == "number") {
          return value;
        }
        if (isSymbol2(value)) {
          return NAN;
        }
        if (isObject2(value)) {
          var other = typeof value.valueOf == "function" ? value.valueOf() : value;
          value = isObject2(other) ? other + "" : other;
        }
        if (typeof value != "string") {
          return value === 0 ? value : +value;
        }
        value = baseTrim(value);
        var isBinary2 = reIsBinary.test(value);
        return isBinary2 || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary2 ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;
      }
      function toPlainObject(value) {
        return copyObject(value, keysIn(value));
      }
      function toSafeInteger(value) {
        return value ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) : value === 0 ? value : 0;
      }
      function toString2(value) {
        return value == null ? "" : baseToString(value);
      }
      var assign2 = createAssigner(function(object, source) {
        if (isPrototype(source) || isArrayLike(source)) {
          copyObject(source, keys(source), object);
          return;
        }
        for (var key in source) {
          if (hasOwnProperty2.call(source, key)) {
            assignValue(object, key, source[key]);
          }
        }
      });
      var assignIn = createAssigner(function(object, source) {
        copyObject(source, keysIn(source), object);
      });
      var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
        copyObject(source, keysIn(source), object, customizer);
      });
      var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
        copyObject(source, keys(source), object, customizer);
      });
      var at = flatRest(baseAt);
      function create(prototype, properties) {
        var result2 = baseCreate(prototype);
        return properties == null ? result2 : baseAssign(result2, properties);
      }
      var defaults2 = baseRest(function(object, sources) {
        object = Object2(object);
        var index2 = -1;
        var length2 = sources.length;
        var guard = length2 > 2 ? sources[2] : undefined$1;
        if (guard && isIterateeCall(sources[0], sources[1], guard)) {
          length2 = 1;
        }
        while (++index2 < length2) {
          var source = sources[index2];
          var props = keysIn(source);
          var propsIndex = -1;
          var propsLength = props.length;
          while (++propsIndex < propsLength) {
            var key = props[propsIndex];
            var value = object[key];
            if (value === undefined$1 || eq2(value, objectProto2[key]) && !hasOwnProperty2.call(object, key)) {
              object[key] = source[key];
            }
          }
        }
        return object;
      });
      var defaultsDeep = baseRest(function(args) {
        args.push(undefined$1, customDefaultsMerge);
        return apply2(mergeWith, undefined$1, args);
      });
      function findKey(object, predicate) {
        return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);
      }
      function findLastKey(object, predicate) {
        return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);
      }
      function forIn(object, iteratee2) {
        return object == null ? object : baseFor(object, getIteratee(iteratee2, 3), keysIn);
      }
      function forInRight(object, iteratee2) {
        return object == null ? object : baseForRight(object, getIteratee(iteratee2, 3), keysIn);
      }
      function forOwn(object, iteratee2) {
        return object && baseForOwn(object, getIteratee(iteratee2, 3));
      }
      function forOwnRight(object, iteratee2) {
        return object && baseForOwnRight(object, getIteratee(iteratee2, 3));
      }
      function functions(object) {
        return object == null ? [] : baseFunctions(object, keys(object));
      }
      function functionsIn(object) {
        return object == null ? [] : baseFunctions(object, keysIn(object));
      }
      function get2(object, path, defaultValue) {
        var result2 = object == null ? undefined$1 : baseGet(object, path);
        return result2 === undefined$1 ? defaultValue : result2;
      }
      function has2(object, path) {
        return object != null && hasPath(object, path, baseHas);
      }
      function hasIn(object, path) {
        return object != null && hasPath(object, path, baseHasIn);
      }
      var invert = createInverter(function(result2, value, key) {
        if (value != null && typeof value.toString != "function") {
          value = nativeObjectToString2.call(value);
        }
        result2[value] = key;
      }, constant(identity));
      var invertBy = createInverter(function(result2, value, key) {
        if (value != null && typeof value.toString != "function") {
          value = nativeObjectToString2.call(value);
        }
        if (hasOwnProperty2.call(result2, value)) {
          result2[value].push(key);
        } else {
          result2[value] = [key];
        }
      }, getIteratee);
      var invoke = baseRest(baseInvoke);
      function keys(object) {
        return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
      }
      function keysIn(object) {
        return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
      }
      function mapKeys(object, iteratee2) {
        var result2 = {};
        iteratee2 = getIteratee(iteratee2, 3);
        baseForOwn(object, function(value, key, object2) {
          baseAssignValue(result2, iteratee2(value, key, object2), value);
        });
        return result2;
      }
      function mapValues(object, iteratee2) {
        var result2 = {};
        iteratee2 = getIteratee(iteratee2, 3);
        baseForOwn(object, function(value, key, object2) {
          baseAssignValue(result2, key, iteratee2(value, key, object2));
        });
        return result2;
      }
      var merge2 = createAssigner(function(object, source, srcIndex) {
        baseMerge(object, source, srcIndex);
      });
      var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
        baseMerge(object, source, srcIndex, customizer);
      });
      var omit2 = flatRest(function(object, paths) {
        var result2 = {};
        if (object == null) {
          return result2;
        }
        var isDeep = false;
        paths = arrayMap(paths, function(path) {
          path = castPath(path, object);
          isDeep || (isDeep = path.length > 1);
          return path;
        });
        copyObject(object, getAllKeysIn(object), result2);
        if (isDeep) {
          result2 = baseClone(result2, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
        }
        var length2 = paths.length;
        while (length2--) {
          baseUnset(result2, paths[length2]);
        }
        return result2;
      });
      function omitBy(object, predicate) {
        return pickBy(object, negate(getIteratee(predicate)));
      }
      var pick2 = flatRest(function(object, paths) {
        return object == null ? {} : basePick(object, paths);
      });
      function pickBy(object, predicate) {
        if (object == null) {
          return {};
        }
        var props = arrayMap(getAllKeysIn(object), function(prop2) {
          return [prop2];
        });
        predicate = getIteratee(predicate);
        return basePickBy(object, props, function(value, path) {
          return predicate(value, path[0]);
        });
      }
      function result(object, path, defaultValue) {
        path = castPath(path, object);
        var index2 = -1, length2 = path.length;
        if (!length2) {
          length2 = 1;
          object = undefined$1;
        }
        while (++index2 < length2) {
          var value = object == null ? undefined$1 : object[toKey(path[index2])];
          if (value === undefined$1) {
            index2 = length2;
            value = defaultValue;
          }
          object = isFunction2(value) ? value.call(object) : value;
        }
        return object;
      }
      function set3(object, path, value) {
        return object == null ? object : baseSet(object, path, value);
      }
      function setWith(object, path, value, customizer) {
        customizer = typeof customizer == "function" ? customizer : undefined$1;
        return object == null ? object : baseSet(object, path, value, customizer);
      }
      var toPairs = createToPairs(keys);
      var toPairsIn = createToPairs(keysIn);
      function transform(object, iteratee2, accumulator) {
        var isArr = isArray2(object), isArrLike = isArr || isBuffer(object) || isTypedArray(object);
        iteratee2 = getIteratee(iteratee2, 4);
        if (accumulator == null) {
          var Ctor = object && object.constructor;
          if (isArrLike) {
            accumulator = isArr ? new Ctor() : [];
          } else if (isObject2(object)) {
            accumulator = isFunction2(Ctor) ? baseCreate(getPrototype2(object)) : {};
          } else {
            accumulator = {};
          }
        }
        (isArrLike ? arrayEach : baseForOwn)(object, function(value, index2, object2) {
          return iteratee2(accumulator, value, index2, object2);
        });
        return accumulator;
      }
      function unset(object, path) {
        return object == null ? true : baseUnset(object, path);
      }
      function update(object, path, updater) {
        return object == null ? object : baseUpdate(object, path, castFunction(updater));
      }
      function updateWith(object, path, updater, customizer) {
        customizer = typeof customizer == "function" ? customizer : undefined$1;
        return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
      }
      function values(object) {
        return object == null ? [] : baseValues(object, keys(object));
      }
      function valuesIn(object) {
        return object == null ? [] : baseValues(object, keysIn(object));
      }
      function clamp(number2, lower, upper) {
        if (upper === undefined$1) {
          upper = lower;
          lower = undefined$1;
        }
        if (upper !== undefined$1) {
          upper = toNumber2(upper);
          upper = upper === upper ? upper : 0;
        }
        if (lower !== undefined$1) {
          lower = toNumber2(lower);
          lower = lower === lower ? lower : 0;
        }
        return baseClamp(toNumber2(number2), lower, upper);
      }
      function inRange(number2, start2, end2) {
        start2 = toFinite(start2);
        if (end2 === undefined$1) {
          end2 = start2;
          start2 = 0;
        } else {
          end2 = toFinite(end2);
        }
        number2 = toNumber2(number2);
        return baseInRange(number2, start2, end2);
      }
      function random(lower, upper, floating) {
        if (floating && typeof floating != "boolean" && isIterateeCall(lower, upper, floating)) {
          upper = floating = undefined$1;
        }
        if (floating === undefined$1) {
          if (typeof upper == "boolean") {
            floating = upper;
            upper = undefined$1;
          } else if (typeof lower == "boolean") {
            floating = lower;
            lower = undefined$1;
          }
        }
        if (lower === undefined$1 && upper === undefined$1) {
          lower = 0;
          upper = 1;
        } else {
          lower = toFinite(lower);
          if (upper === undefined$1) {
            upper = lower;
            lower = 0;
          } else {
            upper = toFinite(upper);
          }
        }
        if (lower > upper) {
          var temp = lower;
          lower = upper;
          upper = temp;
        }
        if (floating || lower % 1 || upper % 1) {
          var rand = nativeRandom();
          return nativeMin(lower + rand * (upper - lower + freeParseFloat("1e-" + ((rand + "").length - 1))), upper);
        }
        return baseRandom(lower, upper);
      }
      var camelCase = createCompounder(function(result2, word, index2) {
        word = word.toLowerCase();
        return result2 + (index2 ? capitalize2(word) : word);
      });
      function capitalize2(string) {
        return upperFirst(toString2(string).toLowerCase());
      }
      function deburr(string) {
        string = toString2(string);
        return string && string.replace(reLatin, deburrLetter).replace(reComboMark, "");
      }
      function endsWith(string, target2, position) {
        string = toString2(string);
        target2 = baseToString(target2);
        var length2 = string.length;
        position = position === undefined$1 ? length2 : baseClamp(toInteger(position), 0, length2);
        var end2 = position;
        position -= target2.length;
        return position >= 0 && string.slice(position, end2) == target2;
      }
      function escape2(string) {
        string = toString2(string);
        return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string;
      }
      function escapeRegExp(string) {
        string = toString2(string);
        return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, "\\$&") : string;
      }
      var kebabCase = createCompounder(function(result2, word, index2) {
        return result2 + (index2 ? "-" : "") + word.toLowerCase();
      });
      var lowerCase = createCompounder(function(result2, word, index2) {
        return result2 + (index2 ? " " : "") + word.toLowerCase();
      });
      var lowerFirst = createCaseFirst("toLowerCase");
      function pad(string, length2, chars) {
        string = toString2(string);
        length2 = toInteger(length2);
        var strLength = length2 ? stringSize(string) : 0;
        if (!length2 || strLength >= length2) {
          return string;
        }
        var mid2 = (length2 - strLength) / 2;
        return createPadding(nativeFloor(mid2), chars) + string + createPadding(nativeCeil(mid2), chars);
      }
      function padEnd(string, length2, chars) {
        string = toString2(string);
        length2 = toInteger(length2);
        var strLength = length2 ? stringSize(string) : 0;
        return length2 && strLength < length2 ? string + createPadding(length2 - strLength, chars) : string;
      }
      function padStart(string, length2, chars) {
        string = toString2(string);
        length2 = toInteger(length2);
        var strLength = length2 ? stringSize(string) : 0;
        return length2 && strLength < length2 ? createPadding(length2 - strLength, chars) + string : string;
      }
      function parseInt2(string, radix, guard) {
        if (guard || radix == null) {
          radix = 0;
        } else if (radix) {
          radix = +radix;
        }
        return nativeParseInt(toString2(string).replace(reTrimStart, ""), radix || 0);
      }
      function repeat(string, n, guard) {
        if (guard ? isIterateeCall(string, n, guard) : n === undefined$1) {
          n = 1;
        } else {
          n = toInteger(n);
        }
        return baseRepeat(toString2(string), n);
      }
      function replace2() {
        var args = arguments, string = toString2(args[0]);
        return args.length < 3 ? string : string.replace(args[1], args[2]);
      }
      var snakeCase = createCompounder(function(result2, word, index2) {
        return result2 + (index2 ? "_" : "") + word.toLowerCase();
      });
      function split(string, separator, limit) {
        if (limit && typeof limit != "number" && isIterateeCall(string, separator, limit)) {
          separator = limit = undefined$1;
        }
        limit = limit === undefined$1 ? MAX_ARRAY_LENGTH2 : limit >>> 0;
        if (!limit) {
          return [];
        }
        string = toString2(string);
        if (string && (typeof separator == "string" || separator != null && !isRegExp2(separator))) {
          separator = baseToString(separator);
          if (!separator && hasUnicode(string)) {
            return castSlice(stringToArray(string), 0, limit);
          }
        }
        return string.split(separator, limit);
      }
      var startCase = createCompounder(function(result2, word, index2) {
        return result2 + (index2 ? " " : "") + upperFirst(word);
      });
      function startsWith(string, target2, position) {
        string = toString2(string);
        position = position == null ? 0 : baseClamp(toInteger(position), 0, string.length);
        target2 = baseToString(target2);
        return string.slice(position, position + target2.length) == target2;
      }
      function template(string, options2, guard) {
        var settings = lodash2.templateSettings;
        if (guard && isIterateeCall(string, options2, guard)) {
          options2 = undefined$1;
        }
        string = toString2(string);
        options2 = assignInWith({}, options2, settings, customDefaultsAssignIn);
        var imports = assignInWith({}, options2.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys(imports), importsValues = baseValues(imports, importsKeys);
        var isEscaping, isEvaluating, index2 = 0, interpolate = options2.interpolate || reNoMatch, source = "__p += '";
        var reDelimiters = RegExp2(
          (options2.escape || reNoMatch).source + "|" + interpolate.source + "|" + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options2.evaluate || reNoMatch).source + "|$",
          "g"
        );
        var sourceURL = "//# sourceURL=" + (hasOwnProperty2.call(options2, "sourceURL") ? (options2.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++templateCounter + "]") + "\n";
        string.replace(reDelimiters, function(match3, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset2) {
          interpolateValue || (interpolateValue = esTemplateValue);
          source += string.slice(index2, offset2).replace(reUnescapedString, escapeStringChar);
          if (escapeValue) {
            isEscaping = true;
            source += "' +\n__e(" + escapeValue + ") +\n'";
          }
          if (evaluateValue) {
            isEvaluating = true;
            source += "';\n" + evaluateValue + ";\n__p += '";
          }
          if (interpolateValue) {
            source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
          }
          index2 = offset2 + match3.length;
          return match3;
        });
        source += "';\n";
        var variable = hasOwnProperty2.call(options2, "variable") && options2.variable;
        if (!variable) {
          source = "with (obj) {\n" + source + "\n}\n";
        } else if (reForbiddenIdentifierChars.test(variable)) {
          throw new Error2(INVALID_TEMPL_VAR_ERROR_TEXT);
        }
        source = (isEvaluating ? source.replace(reEmptyStringLeading, "") : source).replace(reEmptyStringMiddle, "$1").replace(reEmptyStringTrailing, "$1;");
        source = "function(" + (variable || "obj") + ") {\n" + (variable ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (isEscaping ? ", __e = _.escape" : "") + (isEvaluating ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + source + "return __p\n}";
        var result2 = attempt(function() {
          return Function2(importsKeys, sourceURL + "return " + source).apply(undefined$1, importsValues);
        });
        result2.source = source;
        if (isError(result2)) {
          throw result2;
        }
        return result2;
      }
      function toLower(value) {
        return toString2(value).toLowerCase();
      }
      function toUpper(value) {
        return toString2(value).toUpperCase();
      }
      function trim2(string, chars, guard) {
        string = toString2(string);
        if (string && (guard || chars === undefined$1)) {
          return baseTrim(string);
        }
        if (!string || !(chars = baseToString(chars))) {
          return string;
        }
        var strSymbols = stringToArray(string), chrSymbols = stringToArray(chars), start2 = charsStartIndex(strSymbols, chrSymbols), end2 = charsEndIndex(strSymbols, chrSymbols) + 1;
        return castSlice(strSymbols, start2, end2).join("");
      }
      function trimEnd(string, chars, guard) {
        string = toString2(string);
        if (string && (guard || chars === undefined$1)) {
          return string.slice(0, trimmedEndIndex(string) + 1);
        }
        if (!string || !(chars = baseToString(chars))) {
          return string;
        }
        var strSymbols = stringToArray(string), end2 = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
        return castSlice(strSymbols, 0, end2).join("");
      }
      function trimStart(string, chars, guard) {
        string = toString2(string);
        if (string && (guard || chars === undefined$1)) {
          return string.replace(reTrimStart, "");
        }
        if (!string || !(chars = baseToString(chars))) {
          return string;
        }
        var strSymbols = stringToArray(string), start2 = charsStartIndex(strSymbols, stringToArray(chars));
        return castSlice(strSymbols, start2).join("");
      }
      function truncate(string, options2) {
        var length2 = DEFAULT_TRUNC_LENGTH, omission = DEFAULT_TRUNC_OMISSION;
        if (isObject2(options2)) {
          var separator = "separator" in options2 ? options2.separator : separator;
          length2 = "length" in options2 ? toInteger(options2.length) : length2;
          omission = "omission" in options2 ? baseToString(options2.omission) : omission;
        }
        string = toString2(string);
        var strLength = string.length;
        if (hasUnicode(string)) {
          var strSymbols = stringToArray(string);
          strLength = strSymbols.length;
        }
        if (length2 >= strLength) {
          return string;
        }
        var end2 = length2 - stringSize(omission);
        if (end2 < 1) {
          return omission;
        }
        var result2 = strSymbols ? castSlice(strSymbols, 0, end2).join("") : string.slice(0, end2);
        if (separator === undefined$1) {
          return result2 + omission;
        }
        if (strSymbols) {
          end2 += result2.length - end2;
        }
        if (isRegExp2(separator)) {
          if (string.slice(end2).search(separator)) {
            var match3, substring = result2;
            if (!separator.global) {
              separator = RegExp2(separator.source, toString2(reFlags.exec(separator)) + "g");
            }
            separator.lastIndex = 0;
            while (match3 = separator.exec(substring)) {
              var newEnd = match3.index;
            }
            result2 = result2.slice(0, newEnd === undefined$1 ? end2 : newEnd);
          }
        } else if (string.indexOf(baseToString(separator), end2) != end2) {
          var index2 = result2.lastIndexOf(separator);
          if (index2 > -1) {
            result2 = result2.slice(0, index2);
          }
        }
        return result2 + omission;
      }
      function unescape2(string) {
        string = toString2(string);
        return string && reHasEscapedHtml.test(string) ? string.replace(reEscapedHtml, unescapeHtmlChar) : string;
      }
      var upperCase = createCompounder(function(result2, word, index2) {
        return result2 + (index2 ? " " : "") + word.toUpperCase();
      });
      var upperFirst = createCaseFirst("toUpperCase");
      function words(string, pattern, guard) {
        string = toString2(string);
        pattern = guard ? undefined$1 : pattern;
        if (pattern === undefined$1) {
          return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
        }
        return string.match(pattern) || [];
      }
      var attempt = baseRest(function(func, args) {
        try {
          return apply2(func, undefined$1, args);
        } catch (e) {
          return isError(e) ? e : new Error2(e);
        }
      });
      var bindAll = flatRest(function(object, methodNames) {
        arrayEach(methodNames, function(key) {
          key = toKey(key);
          baseAssignValue(object, key, bind(object[key], object));
        });
        return object;
      });
      function cond(pairs) {
        var length2 = pairs == null ? 0 : pairs.length, toIteratee = getIteratee();
        pairs = !length2 ? [] : arrayMap(pairs, function(pair) {
          if (typeof pair[1] != "function") {
            throw new TypeError2(FUNC_ERROR_TEXT);
          }
          return [toIteratee(pair[0]), pair[1]];
        });
        return baseRest(function(args) {
          var index2 = -1;
          while (++index2 < length2) {
            var pair = pairs[index2];
            if (apply2(pair[0], this, args)) {
              return apply2(pair[1], this, args);
            }
          }
        });
      }
      function conforms(source) {
        return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
      }
      function constant(value) {
        return function() {
          return value;
        };
      }
      function defaultTo(value, defaultValue) {
        return value == null || value !== value ? defaultValue : value;
      }
      var flow = createFlow();
      var flowRight = createFlow(true);
      function identity(value) {
        return value;
      }
      function iteratee(func) {
        return baseIteratee(typeof func == "function" ? func : baseClone(func, CLONE_DEEP_FLAG));
      }
      function matches2(source) {
        return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
      }
      function matchesProperty(path, srcValue) {
        return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
      }
      var method = baseRest(function(path, args) {
        return function(object) {
          return baseInvoke(object, path, args);
        };
      });
      var methodOf = baseRest(function(object, args) {
        return function(path) {
          return baseInvoke(object, path, args);
        };
      });
      function mixin(object, source, options2) {
        var props = keys(source), methodNames = baseFunctions(source, props);
        if (options2 == null && !(isObject2(source) && (methodNames.length || !props.length))) {
          options2 = source;
          source = object;
          object = this;
          methodNames = baseFunctions(source, keys(source));
        }
        var chain2 = !(isObject2(options2) && "chain" in options2) || !!options2.chain, isFunc = isFunction2(object);
        arrayEach(methodNames, function(methodName) {
          var func = source[methodName];
          object[methodName] = func;
          if (isFunc) {
            object.prototype[methodName] = function() {
              var chainAll = this.__chain__;
              if (chain2 || chainAll) {
                var result2 = object(this.__wrapped__), actions = result2.__actions__ = copyArray(this.__actions__);
                actions.push({ "func": func, "args": arguments, "thisArg": object });
                result2.__chain__ = chainAll;
                return result2;
              }
              return func.apply(object, arrayPush([this.value()], arguments));
            };
          }
        });
        return object;
      }
      function noConflict() {
        if (root2._ === this) {
          root2._ = oldDash;
        }
        return this;
      }
      function noop2() {
      }
      function nthArg(n) {
        n = toInteger(n);
        return baseRest(function(args) {
          return baseNth(args, n);
        });
      }
      var over = createOver(arrayMap);
      var overEvery = createOver(arrayEvery);
      var overSome = createOver(arraySome);
      function property(path) {
        return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
      }
      function propertyOf(object) {
        return function(path) {
          return object == null ? undefined$1 : baseGet(object, path);
        };
      }
      var range2 = createRange();
      var rangeRight = createRange(true);
      function stubArray() {
        return [];
      }
      function stubFalse() {
        return false;
      }
      function stubObject() {
        return {};
      }
      function stubString() {
        return "";
      }
      function stubTrue() {
        return true;
      }
      function times2(n, iteratee2) {
        n = toInteger(n);
        if (n < 1 || n > MAX_SAFE_INTEGER) {
          return [];
        }
        var index2 = MAX_ARRAY_LENGTH2, length2 = nativeMin(n, MAX_ARRAY_LENGTH2);
        iteratee2 = getIteratee(iteratee2);
        n -= MAX_ARRAY_LENGTH2;
        var result2 = baseTimes(length2, iteratee2);
        while (++index2 < n) {
          iteratee2(index2);
        }
        return result2;
      }
      function toPath(value) {
        if (isArray2(value)) {
          return arrayMap(value, toKey);
        }
        return isSymbol2(value) ? [value] : copyArray(stringToPath(toString2(value)));
      }
      function uniqueId(prefix) {
        var id2 = ++idCounter;
        return toString2(prefix) + id2;
      }
      var add3 = createMathOperation(function(augend, addend) {
        return augend + addend;
      }, 0);
      var ceil = createRound("ceil");
      var divide2 = createMathOperation(function(dividend, divisor) {
        return dividend / divisor;
      }, 1);
      var floor2 = createRound("floor");
      function max2(array) {
        return array && array.length ? baseExtremum(array, identity, baseGt) : undefined$1;
      }
      function maxBy(array, iteratee2) {
        return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseGt) : undefined$1;
      }
      function mean(array) {
        return baseMean(array, identity);
      }
      function meanBy(array, iteratee2) {
        return baseMean(array, getIteratee(iteratee2, 2));
      }
      function min2(array) {
        return array && array.length ? baseExtremum(array, identity, baseLt) : undefined$1;
      }
      function minBy(array, iteratee2) {
        return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseLt) : undefined$1;
      }
      var multiply = createMathOperation(function(multiplier, multiplicand) {
        return multiplier * multiplicand;
      }, 1);
      var round2 = createRound("round");
      var subtract = createMathOperation(function(minuend, subtrahend) {
        return minuend - subtrahend;
      }, 0);
      function sum2(array) {
        return array && array.length ? baseSum(array, identity) : 0;
      }
      function sumBy(array, iteratee2) {
        return array && array.length ? baseSum(array, getIteratee(iteratee2, 2)) : 0;
      }
      lodash2.after = after;
      lodash2.ary = ary;
      lodash2.assign = assign2;
      lodash2.assignIn = assignIn;
      lodash2.assignInWith = assignInWith;
      lodash2.assignWith = assignWith;
      lodash2.at = at;
      lodash2.before = before;
      lodash2.bind = bind;
      lodash2.bindAll = bindAll;
      lodash2.bindKey = bindKey;
      lodash2.castArray = castArray;
      lodash2.chain = chain;
      lodash2.chunk = chunk;
      lodash2.compact = compact;
      lodash2.concat = concat;
      lodash2.cond = cond;
      lodash2.conforms = conforms;
      lodash2.constant = constant;
      lodash2.countBy = countBy;
      lodash2.create = create;
      lodash2.curry = curry;
      lodash2.curryRight = curryRight;
      lodash2.debounce = debounce2;
      lodash2.defaults = defaults2;
      lodash2.defaultsDeep = defaultsDeep;
      lodash2.defer = defer;
      lodash2.delay = delay;
      lodash2.difference = difference;
      lodash2.differenceBy = differenceBy;
      lodash2.differenceWith = differenceWith;
      lodash2.drop = drop;
      lodash2.dropRight = dropRight;
      lodash2.dropRightWhile = dropRightWhile;
      lodash2.dropWhile = dropWhile;
      lodash2.fill = fill;
      lodash2.filter = filter;
      lodash2.flatMap = flatMap;
      lodash2.flatMapDeep = flatMapDeep;
      lodash2.flatMapDepth = flatMapDepth;
      lodash2.flatten = flatten;
      lodash2.flattenDeep = flattenDeep;
      lodash2.flattenDepth = flattenDepth;
      lodash2.flip = flip2;
      lodash2.flow = flow;
      lodash2.flowRight = flowRight;
      lodash2.fromPairs = fromPairs;
      lodash2.functions = functions;
      lodash2.functionsIn = functionsIn;
      lodash2.groupBy = groupBy;
      lodash2.initial = initial2;
      lodash2.intersection = intersection;
      lodash2.intersectionBy = intersectionBy;
      lodash2.intersectionWith = intersectionWith;
      lodash2.invert = invert;
      lodash2.invertBy = invertBy;
      lodash2.invokeMap = invokeMap;
      lodash2.iteratee = iteratee;
      lodash2.keyBy = keyBy;
      lodash2.keys = keys;
      lodash2.keysIn = keysIn;
      lodash2.map = map2;
      lodash2.mapKeys = mapKeys;
      lodash2.mapValues = mapValues;
      lodash2.matches = matches2;
      lodash2.matchesProperty = matchesProperty;
      lodash2.memoize = memoize;
      lodash2.merge = merge2;
      lodash2.mergeWith = mergeWith;
      lodash2.method = method;
      lodash2.methodOf = methodOf;
      lodash2.mixin = mixin;
      lodash2.negate = negate;
      lodash2.nthArg = nthArg;
      lodash2.omit = omit2;
      lodash2.omitBy = omitBy;
      lodash2.once = once3;
      lodash2.orderBy = orderBy;
      lodash2.over = over;
      lodash2.overArgs = overArgs;
      lodash2.overEvery = overEvery;
      lodash2.overSome = overSome;
      lodash2.partial = partial;
      lodash2.partialRight = partialRight;
      lodash2.partition = partition;
      lodash2.pick = pick2;
      lodash2.pickBy = pickBy;
      lodash2.property = property;
      lodash2.propertyOf = propertyOf;
      lodash2.pull = pull;
      lodash2.pullAll = pullAll;
      lodash2.pullAllBy = pullAllBy;
      lodash2.pullAllWith = pullAllWith;
      lodash2.pullAt = pullAt;
      lodash2.range = range2;
      lodash2.rangeRight = rangeRight;
      lodash2.rearg = rearg;
      lodash2.reject = reject;
      lodash2.remove = remove2;
      lodash2.rest = rest;
      lodash2.reverse = reverse;
      lodash2.sampleSize = sampleSize;
      lodash2.set = set3;
      lodash2.setWith = setWith;
      lodash2.shuffle = shuffle;
      lodash2.slice = slice;
      lodash2.sortBy = sortBy;
      lodash2.sortedUniq = sortedUniq;
      lodash2.sortedUniqBy = sortedUniqBy;
      lodash2.split = split;
      lodash2.spread = spread;
      lodash2.tail = tail;
      lodash2.take = take;
      lodash2.takeRight = takeRight;
      lodash2.takeRightWhile = takeRightWhile;
      lodash2.takeWhile = takeWhile;
      lodash2.tap = tap;
      lodash2.throttle = throttle;
      lodash2.thru = thru;
      lodash2.toArray = toArray2;
      lodash2.toPairs = toPairs;
      lodash2.toPairsIn = toPairsIn;
      lodash2.toPath = toPath;
      lodash2.toPlainObject = toPlainObject;
      lodash2.transform = transform;
      lodash2.unary = unary;
      lodash2.union = union;
      lodash2.unionBy = unionBy;
      lodash2.unionWith = unionWith;
      lodash2.uniq = uniq;
      lodash2.uniqBy = uniqBy;
      lodash2.uniqWith = uniqWith;
      lodash2.unset = unset;
      lodash2.unzip = unzip;
      lodash2.unzipWith = unzipWith;
      lodash2.update = update;
      lodash2.updateWith = updateWith;
      lodash2.values = values;
      lodash2.valuesIn = valuesIn;
      lodash2.without = without;
      lodash2.words = words;
      lodash2.wrap = wrap2;
      lodash2.xor = xor;
      lodash2.xorBy = xorBy;
      lodash2.xorWith = xorWith;
      lodash2.zip = zip;
      lodash2.zipObject = zipObject;
      lodash2.zipObjectDeep = zipObjectDeep;
      lodash2.zipWith = zipWith;
      lodash2.entries = toPairs;
      lodash2.entriesIn = toPairsIn;
      lodash2.extend = assignIn;
      lodash2.extendWith = assignInWith;
      mixin(lodash2, lodash2);
      lodash2.add = add3;
      lodash2.attempt = attempt;
      lodash2.camelCase = camelCase;
      lodash2.capitalize = capitalize2;
      lodash2.ceil = ceil;
      lodash2.clamp = clamp;
      lodash2.clone = clone2;
      lodash2.cloneDeep = cloneDeep;
      lodash2.cloneDeepWith = cloneDeepWith;
      lodash2.cloneWith = cloneWith;
      lodash2.conformsTo = conformsTo;
      lodash2.deburr = deburr;
      lodash2.defaultTo = defaultTo;
      lodash2.divide = divide2;
      lodash2.endsWith = endsWith;
      lodash2.eq = eq2;
      lodash2.escape = escape2;
      lodash2.escapeRegExp = escapeRegExp;
      lodash2.every = every;
      lodash2.find = find;
      lodash2.findIndex = findIndex;
      lodash2.findKey = findKey;
      lodash2.findLast = findLast;
      lodash2.findLastIndex = findLastIndex;
      lodash2.findLastKey = findLastKey;
      lodash2.floor = floor2;
      lodash2.forEach = forEach;
      lodash2.forEachRight = forEachRight;
      lodash2.forIn = forIn;
      lodash2.forInRight = forInRight;
      lodash2.forOwn = forOwn;
      lodash2.forOwnRight = forOwnRight;
      lodash2.get = get2;
      lodash2.gt = gt2;
      lodash2.gte = gte;
      lodash2.has = has2;
      lodash2.hasIn = hasIn;
      lodash2.head = head;
      lodash2.identity = identity;
      lodash2.includes = includes;
      lodash2.indexOf = indexOf2;
      lodash2.inRange = inRange;
      lodash2.invoke = invoke;
      lodash2.isArguments = isArguments;
      lodash2.isArray = isArray2;
      lodash2.isArrayBuffer = isArrayBuffer2;
      lodash2.isArrayLike = isArrayLike;
      lodash2.isArrayLikeObject = isArrayLikeObject;
      lodash2.isBoolean = isBoolean2;
      lodash2.isBuffer = isBuffer;
      lodash2.isDate = isDate2;
      lodash2.isElement = isElement2;
      lodash2.isEmpty = isEmpty2;
      lodash2.isEqual = isEqual;
      lodash2.isEqualWith = isEqualWith;
      lodash2.isError = isError;
      lodash2.isFinite = isFinite2;
      lodash2.isFunction = isFunction2;
      lodash2.isInteger = isInteger;
      lodash2.isLength = isLength;
      lodash2.isMap = isMap2;
      lodash2.isMatch = isMatch;
      lodash2.isMatchWith = isMatchWith;
      lodash2.isNaN = isNaN2;
      lodash2.isNative = isNative;
      lodash2.isNil = isNil;
      lodash2.isNull = isNull;
      lodash2.isNumber = isNumber2;
      lodash2.isObject = isObject2;
      lodash2.isObjectLike = isObjectLike2;
      lodash2.isPlainObject = isPlainObject2;
      lodash2.isRegExp = isRegExp2;
      lodash2.isSafeInteger = isSafeInteger;
      lodash2.isSet = isSet2;
      lodash2.isString = isString2;
      lodash2.isSymbol = isSymbol2;
      lodash2.isTypedArray = isTypedArray;
      lodash2.isUndefined = isUndefined2;
      lodash2.isWeakMap = isWeakMap;
      lodash2.isWeakSet = isWeakSet;
      lodash2.join = join2;
      lodash2.kebabCase = kebabCase;
      lodash2.last = last;
      lodash2.lastIndexOf = lastIndexOf;
      lodash2.lowerCase = lowerCase;
      lodash2.lowerFirst = lowerFirst;
      lodash2.lt = lt2;
      lodash2.lte = lte;
      lodash2.max = max2;
      lodash2.maxBy = maxBy;
      lodash2.mean = mean;
      lodash2.meanBy = meanBy;
      lodash2.min = min2;
      lodash2.minBy = minBy;
      lodash2.stubArray = stubArray;
      lodash2.stubFalse = stubFalse;
      lodash2.stubObject = stubObject;
      lodash2.stubString = stubString;
      lodash2.stubTrue = stubTrue;
      lodash2.multiply = multiply;
      lodash2.nth = nth;
      lodash2.noConflict = noConflict;
      lodash2.noop = noop2;
      lodash2.now = now2;
      lodash2.pad = pad;
      lodash2.padEnd = padEnd;
      lodash2.padStart = padStart;
      lodash2.parseInt = parseInt2;
      lodash2.random = random;
      lodash2.reduce = reduce;
      lodash2.reduceRight = reduceRight;
      lodash2.repeat = repeat;
      lodash2.replace = replace2;
      lodash2.result = result;
      lodash2.round = round2;
      lodash2.runInContext = runInContext2;
      lodash2.sample = sample;
      lodash2.size = size2;
      lodash2.snakeCase = snakeCase;
      lodash2.some = some;
      lodash2.sortedIndex = sortedIndex;
      lodash2.sortedIndexBy = sortedIndexBy;
      lodash2.sortedIndexOf = sortedIndexOf;
      lodash2.sortedLastIndex = sortedLastIndex;
      lodash2.sortedLastIndexBy = sortedLastIndexBy;
      lodash2.sortedLastIndexOf = sortedLastIndexOf;
      lodash2.startCase = startCase;
      lodash2.startsWith = startsWith;
      lodash2.subtract = subtract;
      lodash2.sum = sum2;
      lodash2.sumBy = sumBy;
      lodash2.template = template;
      lodash2.times = times2;
      lodash2.toFinite = toFinite;
      lodash2.toInteger = toInteger;
      lodash2.toLength = toLength;
      lodash2.toLower = toLower;
      lodash2.toNumber = toNumber2;
      lodash2.toSafeInteger = toSafeInteger;
      lodash2.toString = toString2;
      lodash2.toUpper = toUpper;
      lodash2.trim = trim2;
      lodash2.trimEnd = trimEnd;
      lodash2.trimStart = trimStart;
      lodash2.truncate = truncate;
      lodash2.unescape = unescape2;
      lodash2.uniqueId = uniqueId;
      lodash2.upperCase = upperCase;
      lodash2.upperFirst = upperFirst;
      lodash2.each = forEach;
      lodash2.eachRight = forEachRight;
      lodash2.first = head;
      mixin(lodash2, function() {
        var source = {};
        baseForOwn(lodash2, function(func, methodName) {
          if (!hasOwnProperty2.call(lodash2.prototype, methodName)) {
            source[methodName] = func;
          }
        });
        return source;
      }(), { "chain": false });
      lodash2.VERSION = VERSION2;
      arrayEach(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(methodName) {
        lodash2[methodName].placeholder = lodash2;
      });
      arrayEach(["drop", "take"], function(methodName, index2) {
        LazyWrapper.prototype[methodName] = function(n) {
          n = n === undefined$1 ? 1 : nativeMax(toInteger(n), 0);
          var result2 = this.__filtered__ && !index2 ? new LazyWrapper(this) : this.clone();
          if (result2.__filtered__) {
            result2.__takeCount__ = nativeMin(n, result2.__takeCount__);
          } else {
            result2.__views__.push({
              "size": nativeMin(n, MAX_ARRAY_LENGTH2),
              "type": methodName + (result2.__dir__ < 0 ? "Right" : "")
            });
          }
          return result2;
        };
        LazyWrapper.prototype[methodName + "Right"] = function(n) {
          return this.reverse()[methodName](n).reverse();
        };
      });
      arrayEach(["filter", "map", "takeWhile"], function(methodName, index2) {
        var type2 = index2 + 1, isFilter = type2 == LAZY_FILTER_FLAG || type2 == LAZY_WHILE_FLAG;
        LazyWrapper.prototype[methodName] = function(iteratee2) {
          var result2 = this.clone();
          result2.__iteratees__.push({
            "iteratee": getIteratee(iteratee2, 3),
            "type": type2
          });
          result2.__filtered__ = result2.__filtered__ || isFilter;
          return result2;
        };
      });
      arrayEach(["head", "last"], function(methodName, index2) {
        var takeName = "take" + (index2 ? "Right" : "");
        LazyWrapper.prototype[methodName] = function() {
          return this[takeName](1).value()[0];
        };
      });
      arrayEach(["initial", "tail"], function(methodName, index2) {
        var dropName = "drop" + (index2 ? "" : "Right");
        LazyWrapper.prototype[methodName] = function() {
          return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
        };
      });
      LazyWrapper.prototype.compact = function() {
        return this.filter(identity);
      };
      LazyWrapper.prototype.find = function(predicate) {
        return this.filter(predicate).head();
      };
      LazyWrapper.prototype.findLast = function(predicate) {
        return this.reverse().find(predicate);
      };
      LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {
        if (typeof path == "function") {
          return new LazyWrapper(this);
        }
        return this.map(function(value) {
          return baseInvoke(value, path, args);
        });
      });
      LazyWrapper.prototype.reject = function(predicate) {
        return this.filter(negate(getIteratee(predicate)));
      };
      LazyWrapper.prototype.slice = function(start2, end2) {
        start2 = toInteger(start2);
        var result2 = this;
        if (result2.__filtered__ && (start2 > 0 || end2 < 0)) {
          return new LazyWrapper(result2);
        }
        if (start2 < 0) {
          result2 = result2.takeRight(-start2);
        } else if (start2) {
          result2 = result2.drop(start2);
        }
        if (end2 !== undefined$1) {
          end2 = toInteger(end2);
          result2 = end2 < 0 ? result2.dropRight(-end2) : result2.take(end2 - start2);
        }
        return result2;
      };
      LazyWrapper.prototype.takeRightWhile = function(predicate) {
        return this.reverse().takeWhile(predicate).reverse();
      };
      LazyWrapper.prototype.toArray = function() {
        return this.take(MAX_ARRAY_LENGTH2);
      };
      baseForOwn(LazyWrapper.prototype, function(func, methodName) {
        var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), isTaker = /^(?:head|last)$/.test(methodName), lodashFunc = lodash2[isTaker ? "take" + (methodName == "last" ? "Right" : "") : methodName], retUnwrapped = isTaker || /^find/.test(methodName);
        if (!lodashFunc) {
          return;
        }
        lodash2.prototype[methodName] = function() {
          var value = this.__wrapped__, args = isTaker ? [1] : arguments, isLazy = value instanceof LazyWrapper, iteratee2 = args[0], useLazy = isLazy || isArray2(value);
          var interceptor = function(value2) {
            var result3 = lodashFunc.apply(lodash2, arrayPush([value2], args));
            return isTaker && chainAll ? result3[0] : result3;
          };
          if (useLazy && checkIteratee && typeof iteratee2 == "function" && iteratee2.length != 1) {
            isLazy = useLazy = false;
          }
          var chainAll = this.__chain__, isHybrid = !!this.__actions__.length, isUnwrapped = retUnwrapped && !chainAll, onlyLazy = isLazy && !isHybrid;
          if (!retUnwrapped && useLazy) {
            value = onlyLazy ? value : new LazyWrapper(this);
            var result2 = func.apply(value, args);
            result2.__actions__.push({ "func": thru, "args": [interceptor], "thisArg": undefined$1 });
            return new LodashWrapper(result2, chainAll);
          }
          if (isUnwrapped && onlyLazy) {
            return func.apply(this, args);
          }
          result2 = this.thru(interceptor);
          return isUnwrapped ? isTaker ? result2.value()[0] : result2.value() : result2;
        };
      });
      arrayEach(["pop", "push", "shift", "sort", "splice", "unshift"], function(methodName) {
        var func = arrayProto[methodName], chainName = /^(?:push|sort|unshift)$/.test(methodName) ? "tap" : "thru", retUnwrapped = /^(?:pop|shift)$/.test(methodName);
        lodash2.prototype[methodName] = function() {
          var args = arguments;
          if (retUnwrapped && !this.__chain__) {
            var value = this.value();
            return func.apply(isArray2(value) ? value : [], args);
          }
          return this[chainName](function(value2) {
            return func.apply(isArray2(value2) ? value2 : [], args);
          });
        };
      });
      baseForOwn(LazyWrapper.prototype, function(func, methodName) {
        var lodashFunc = lodash2[methodName];
        if (lodashFunc) {
          var key = lodashFunc.name + "";
          if (!hasOwnProperty2.call(realNames, key)) {
            realNames[key] = [];
          }
          realNames[key].push({ "name": methodName, "func": lodashFunc });
        }
      });
      realNames[createHybrid(undefined$1, WRAP_BIND_KEY_FLAG).name] = [{
        "name": "wrapper",
        "func": undefined$1
      }];
      LazyWrapper.prototype.clone = lazyClone;
      LazyWrapper.prototype.reverse = lazyReverse;
      LazyWrapper.prototype.value = lazyValue;
      lodash2.prototype.at = wrapperAt;
      lodash2.prototype.chain = wrapperChain;
      lodash2.prototype.commit = wrapperCommit;
      lodash2.prototype.next = wrapperNext;
      lodash2.prototype.plant = wrapperPlant;
      lodash2.prototype.reverse = wrapperReverse;
      lodash2.prototype.toJSON = lodash2.prototype.valueOf = lodash2.prototype.value = wrapperValue;
      lodash2.prototype.first = lodash2.prototype.head;
      if (symIterator) {
        lodash2.prototype[symIterator] = wrapperToIterator;
      }
      return lodash2;
    };
    var _2 = runInContext();
    if (freeModule) {
      (freeModule.exports = _2)._ = _2;
      freeExports._ = _2;
    } else {
      root2._ = _2;
    }
  }).call(commonjsGlobal$1);
})(lodash, lodashExports);
const _hoisted_1$1d = { class: "relative" };
const _hoisted_2$18 = { class: "flex inset-y-0 absolute items-center" };
const _hoisted_3$Z = { key: 0 };
const _hoisted_4$C = { class: "flex pr-3 inset-y-0 right-0 absolute items-center" };
const _hoisted_5$o = ["data-cy"];
const _hoisted_6$e = { class: "flex inset-y-0 absolute items-center" };
const _hoisted_7$b = { class: "flex text-sm pr-3 inset-y-0 right-0 absolute items-center" };
const _hoisted_8$9 = {
  key: 0,
  class: "flex pr-3 right-0 text-jade-400 absolute items-center"
};
const __default__$3 = {
  inheritAttrs: true
};
const _sfc_main$R = /* @__PURE__ */ defineComponent({
  ...__default__$3,
  __name: "Select",
  props: {
    options: null,
    modelValue: { default: void 0 },
    placeholder: { default: "" },
    label: { default: "" },
    itemValue: { default: "value" },
    itemKey: { default: "key" },
    error: { type: Boolean }
  },
  emits: ["update:modelValue"],
  setup(__props, { emit: emit3 }) {
    const props = __props;
    const { t: t2 } = useI18n();
    const isSelectedOption = (option) => {
      const optionKey = lodashExports.get(option, props.itemKey);
      return optionKey && optionKey === lodashExports.get(props.modelValue, props.itemKey);
    };
    const handleUpdate = (value) => {
      emit3("update:modelValue", value);
    };
    return (_ctx, _cache) => {
      const _component_i_cy_chevron_down = __unplugin_components_0$8;
      const _component_i_mdi_check = __unplugin_components_1$7;
      return openBlock(), createBlock(unref(Listbox), {
        value: props.modelValue,
        as: "div",
        "onUpdate:modelValue": handleUpdate
      }, {
        default: withCtx(({ open }) => [
          createVNode(unref(ListboxLabel), { class: "font-medium text-sm text-gray-800 block" }, {
            default: withCtx(() => [
              __props.label ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
                createTextVNode(toDisplayString$1(__props.label), 1)
              ], 64)) : renderSlot(_ctx.$slots, "label", {
                key: 1,
                open
              })
            ]),
            _: 2
          }, 1024),
          createBaseVNode("div", _hoisted_1$1d, [
            createVNode(unref(ListboxButton), {
              class: normalizeClass(["bg-white border rounded text-left w-full py-2 px-4 text-gray-800 hocus-default group relative sm:text-sm", open ? "cursor-default default-ring" : "cursor-pointer border-gray-100"])
            }, {
              default: withCtx(() => [
                createBaseVNode("span", _hoisted_2$18, [
                  renderSlot(_ctx.$slots, "input-prefix", {
                    value: __props.modelValue,
                    open
                  })
                ]),
                createBaseVNode("span", {
                  class: normalizeClass([
                    "pr-[24px] text-[16px] leading-[24px]",
                    {
                      "pl-[24px]": _ctx.$slots["input-prefix"]
                    }
                  ])
                }, [
                  !__props.modelValue ? (openBlock(), createElementBlock("span", _hoisted_3$Z, toDisplayString$1(__props.placeholder ? __props.placeholder : unref(t2)("components.select.placeholder")), 1)) : renderSlot(_ctx.$slots, "selected", { key: 1 }, () => [
                    createTextVNode(toDisplayString$1(unref(lodashExports.get)(__props.modelValue, __props.itemValue || "")), 1)
                  ])
                ], 2),
                createBaseVNode("span", _hoisted_4$C, [
                  renderSlot(_ctx.$slots, "input-suffix", {
                    value: __props.modelValue,
                    open
                  }, () => [
                    createVNode(_component_i_cy_chevron_down, {
                      "data-testid": "icon-caret",
                      class: normalizeClass([{
                        "rotate-180 icon-dark-indigo-600": open,
                        "rotate-0 icon-dark-gray-500": !open
                      }, "max-w-[16px] transform transition duration-250 group-hocus:icon-dark-indigo-600"])
                    }, null, 8, ["class"])
                  ])
                ])
              ]),
              _: 2
            }, 1032, ["class"]),
            createVNode(Transition, {
              "leave-active-class": "transition ease-in duration-100",
              "leave-from-class": "opacity-100",
              "leave-to-class": "opacity-0"
            }, {
              default: withCtx(() => [
                createVNode(unref(ListboxOptions), { class: "bg-white rounded shadow-lg ring-black mt-1 text-base w-full max-h-60 ring-1 ring-opacity-5 z-10 absolute overflow-auto sm:text-sm focus:outline-none" }, {
                  default: withCtx(() => [
                    (openBlock(true), createElementBlock(Fragment, null, renderList(props.options, (option) => {
                      return openBlock(), createBlock(unref(ListboxOption), {
                        key: unref(lodashExports.get)(option, __props.itemKey),
                        as: "ul",
                        value: option,
                        disabled: option.disabled || false
                      }, {
                        default: withCtx(({ active, selected }) => [
                          createBaseVNode("li", {
                            class: normalizeClass(["border-transparent cursor-pointer border py-2 pr-8 pl-4 block truncate select-none relative", [{
                              "font-medium bg-jade-50": isSelectedOption(option),
                              "bg-gray-50": active,
                              "text-gray-800": !isSelectedOption(option) && !active,
                              "text-opacity-40": option.disabled || false
                            }]]),
                            "data-cy": unref(lodashExports.get)(option, __props.itemKey)
                          }, [
                            createBaseVNode("span", _hoisted_6$e, [
                              renderSlot(_ctx.$slots, "item-prefix", {
                                selected,
                                active,
                                value: option
                              })
                            ]),
                            createBaseVNode("span", {
                              class: normalizeClass(["inline-block", {
                                "pl-8": _ctx.$slots["item-prefix"],
                                "pr-6": _ctx.$slots["item-suffix"]
                              }])
                            }, [
                              renderSlot(_ctx.$slots, "item-body", {
                                selected: isSelectedOption(option),
                                active,
                                value: option
                              }, () => [
                                createTextVNode(toDisplayString$1(unref(lodashExports.get)(option, __props.itemValue || "")), 1)
                              ])
                            ], 2),
                            createBaseVNode("span", _hoisted_7$b, [
                              renderSlot(_ctx.$slots, "item-suffix", {
                                selected: isSelectedOption(option),
                                active,
                                value: option
                              }, () => [
                                isSelectedOption(option) ? (openBlock(), createElementBlock("span", _hoisted_8$9, [
                                  createVNode(_component_i_mdi_check, {
                                    class: "h-[16px] w-[16px]",
                                    "data-testid": "icon-check",
                                    "aria-hidden": "true"
                                  })
                                ])) : createCommentVNode("", true)
                              ])
                            ])
                          ], 10, _hoisted_5$o)
                        ]),
                        _: 2
                      }, 1032, ["value", "disabled"]);
                    }), 128)),
                    renderSlot(_ctx.$slots, "footer")
                  ]),
                  _: 3
                })
              ]),
              _: 3
            })
          ])
        ]),
        _: 3
      }, 8, ["value"]);
    };
  }
});
const _hoisted_1$1c = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$17 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M12 7C12 8.38071 11.4404 9.63071 10.5355 10.5355C9.63071 11.4404 8.38071 12 7 12C4.23858 12 2 9.76142 2 7C2 4.23858 4.23858 2 7 2C9.76142 2 12 4.23858 12 7Z",
  class: "icon-light",
  fill: "#D0D2E0"
}, null, -1);
const _hoisted_3$Y = /* @__PURE__ */ createBaseVNode("path", {
  d: "M10.5355 10.5355C11.4404 9.63071 12 8.38071 12 7C12 4.23858 9.76142 2 7 2C4.23858 2 2 4.23858 2 7C2 9.76142 4.23858 12 7 12C8.38071 12 9.63071 11.4404 10.5355 10.5355ZM10.5355 10.5355L14 14",
  stroke: "#1B1E2E",
  class: "icon-dark",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_4$B = [
  _hoisted_2$17,
  _hoisted_3$Y
];
function render$E(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1c, _hoisted_4$B);
}
const IconMagnifyingGlass = { name: "cy-magnifying-glass_x16", render: render$E };
function useModelWrapper(props, emit3, name2 = "modelValue") {
  return computed({
    get: () => props[name2],
    set: (value) => {
      emit3(`update:${name2}`, value);
    }
  });
}
const _hoisted_1$1b = {
  key: 0,
  class: "flex flex-none ml-[-1px] pl-4 items-center"
};
const _hoisted_2$16 = { class: "flex items-center justify-center text-gray-500" };
const _hoisted_3$X = ["type"];
const _hoisted_4$A = {
  key: 1,
  class: "flex flex-none mr-[-1px] pr-3 items-center"
};
const _hoisted_5$n = { class: "flex items-center justify-center text-gray-500" };
const __default__$2 = {
  inheritAttrs: false
};
const _sfc_main$Q = /* @__PURE__ */ defineComponent({
  ...__default__$2,
  __name: "Input",
  props: {
    type: { default: "text" },
    inputClasses: { default: void 0 },
    prefixIcon: { default: void 0 },
    prefixIconClasses: { default: void 0 },
    suffixIcon: { default: void 0 },
    suffixIconClasses: { default: void 0 },
    modelValue: { default: "" },
    style: { default: "" },
    hasError: { type: Boolean, default: false },
    inputRef: { type: Function, default: void 0 }
  },
  emits: ["update:modelValue"],
  setup(__props, { emit: emits }) {
    const props = __props;
    const slots = useSlots();
    const attrs = useAttrs();
    const inputAttrs = lodashExports.omit(attrs, "class");
    const localValue = useModelWrapper(props, emits, "modelValue");
    const hasPrefix = computed(() => {
      return !!(slots.prefix || props.prefixIcon || props.type === "search");
    });
    const hasSuffix = computed(() => {
      return !!(slots.suffix || props.suffixIcon);
    });
    return (_ctx, _cache) => {
      var _a3;
      const _component_i_cy_magnifying_glass_x16 = IconMagnifyingGlass;
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["p-0 m-0 border-0", _ctx.$attrs.class])
      }, [
        createBaseVNode("div", {
          class: normalizeClass(["relative flex flex-row leading-tight border border-gray-100 rounded-md", [props.inputClasses, { "hocus-default focus-within-default": !__props.hasError, "border-error-300 ring-2 ring-error-100 hocus-error": __props.hasError }]])
        }, [
          unref(hasPrefix) ? (openBlock(), createElementBlock("div", _hoisted_1$1b, [
            createBaseVNode("span", _hoisted_2$16, [
              renderSlot(_ctx.$slots, "prefix", {}, () => [
                __props.prefixIcon ? (openBlock(), createBlock(resolveDynamicComponent(__props.prefixIcon), {
                  key: 0,
                  class: normalizeClass(["pointer-events-none", __props.prefixIconClasses])
                }, null, 8, ["class"])) : __props.type === "search" ? (openBlock(), createBlock(_component_i_cy_magnifying_glass_x16, {
                  key: 1,
                  class: "icon-light-gray-50 icon-dark-gray-500"
                })) : createCommentVNode("", true)
              ], true)
            ])
          ])) : createCommentVNode("", true),
          withDirectives(createBaseVNode("input", mergeProps({
            ref: (_a3 = props.inputRef) == null ? void 0 : _a3.call(props),
            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(localValue) ? localValue.value = $event : null),
            style: __props.style,
            type: __props.type,
            spellcheck: false,
            class: [[{ "text-gray-800": !__props.hasError, "text-error-500": __props.hasError }], "border-0 flex-1 ml-[1px] min-w-[100px] py-[9px] pl-2 placeholder-gray-400 text-gray-800 block disabled:bg-gray-100 disabled:text-gray-400"],
            autocomplete: "off"
          }, unref(inputAttrs)), null, 16, _hoisted_3$X), [
            [vModelDynamic, unref(localValue)]
          ]),
          unref(hasSuffix) ? (openBlock(), createElementBlock("div", _hoisted_4$A, [
            createBaseVNode("span", _hoisted_5$n, [
              renderSlot(_ctx.$slots, "suffix", {}, () => [
                __props.suffixIcon ? (openBlock(), createBlock(resolveDynamicComponent(__props.suffixIcon), {
                  key: 0,
                  class: normalizeClass(["pointer-events-none", __props.suffixIconClasses])
                }, null, 8, ["class"])) : createCommentVNode("", true)
              ], true)
            ])
          ])) : createCommentVNode("", true)
        ], 2)
      ], 2);
    };
  }
});
const Input_vue_vue_type_style_index_0_scoped_71ed09a1_lang = "";
const Input = /* @__PURE__ */ _export_sfc$1(_sfc_main$Q, [["__scopeId", "data-v-71ed09a1"]]);
const _hoisted_1$1a = ["for"];
const _hoisted_2$15 = { class: "flex text-[16px] leading-[24px] items-center" };
const _hoisted_3$W = ["name", "value", "checked", "onClick"];
const _hoisted_4$z = { class: "text-gray-800" };
const _hoisted_5$m = { class: "text-gray-500" };
const _sfc_main$P = /* @__PURE__ */ defineComponent({
  __name: "Radio",
  props: {
    name: null,
    label: null,
    value: null,
    options: null
  },
  emits: ["update:value"],
  setup(__props, { emit: emits }) {
    const props = __props;
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock(Fragment, null, [
        createBaseVNode("label", {
          class: "mt-[24px] text-gray-800 block font-bold",
          for: props.name
        }, toDisplayString$1(props.label), 9, _hoisted_1$1a),
        (openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (opt) => {
          return openBlock(), createElementBlock("div", {
            key: opt.value,
            class: "mt-[8px]"
          }, [
            createBaseVNode("label", _hoisted_2$15, [
              createBaseVNode("input", {
                type: "radio",
                name: props.name,
                value: opt.value,
                class: "mr-[8px] radio hocus-default checked:bg-transparent checked:hocus:bg-transparent checked:border-indigo-500 checked:hocus:border-indigo-500",
                checked: props.value === opt.value,
                onClick: ($event) => emits("update:value", opt.value)
              }, null, 8, _hoisted_3$W),
              renderSlot(_ctx.$slots, "option", {
                option: opt,
                checked: props.value === opt.value
              }, () => [
                createBaseVNode("span", _hoisted_4$z, toDisplayString$1(opt.label), 1),
                createBaseVNode("span", _hoisted_5$m, " - " + toDisplayString$1(opt.description), 1)
              ], true)
            ])
          ]);
        }), 128))
      ], 64);
    };
  }
});
const Radio_vue_vue_type_style_index_0_scoped_8872dbd3_lang = "";
const Radio = /* @__PURE__ */ _export_sfc$1(_sfc_main$P, [["__scopeId", "data-v-8872dbd3"]]);
const _hoisted_1$19 = { class: "relative shrink" };
const _hoisted_2$14 = ["aria-label"];
const _sfc_main$O = /* @__PURE__ */ defineComponent({
  __name: "AlertHeader",
  props: {
    title: null,
    prefixIcon: null,
    suffixIcon: null,
    suffixIconAriaLabel: null,
    alertClass: null,
    prefixIconClass: null,
    suffixIconClass: null,
    headerClass: null,
    suffixButtonClass: null
  },
  emits: ["suffixIconClicked"],
  setup(__props, { emit: emit3 }) {
    const onSuffixIconClicked = () => {
      emit3("suffixIconClicked");
    };
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["flex gap-[8px] group items-center relative", [__props.alertClass, __props.headerClass]])
      }, [
        renderSlot(_ctx.$slots, "prefixIcon", {}, () => [
          __props.prefixIcon ? (openBlock(), createBlock(resolveDynamicComponent(__props.prefixIcon), {
            key: 0,
            "data-cy": "alert-prefix-icon",
            class: normalizeClass(["h-[16px] w-[16px] icon-dark-current", __props.prefixIconClass])
          }, null, 8, ["class"])) : createCommentVNode("", true)
        ]),
        createBaseVNode("h3", {
          class: normalizeClass(["grow font-medium text-left leading-normal decoration-current", __props.headerClass])
        }, [
          renderSlot(_ctx.$slots, "title", {}, () => [
            createTextVNode(toDisplayString$1(__props.title), 1)
          ])
        ], 2),
        createBaseVNode("div", _hoisted_1$19, [
          renderSlot(_ctx.$slots, "suffixIcon", normalizeProps(guardReactiveProps({ ariaLabel: __props.suffixIconAriaLabel, buttonClasses: __props.suffixButtonClass, iconClasses: __props.suffixIconClass, onClick: onSuffixIconClicked })), () => [
            __props.suffixIcon ? (openBlock(), createElementBlock("button", {
              key: 0,
              "data-cy": "alert-suffix-icon",
              "aria-label": __props.suffixIconAriaLabel,
              class: normalizeClass(["rounded-full flex outline-none h-[32px] -top-[16px] right-[-8px] w-[32px] hocus:ring-current items-center justify-center absolute hocus:ring-1", __props.suffixButtonClass]),
              onClick: onSuffixIconClicked
            }, [
              (openBlock(), createBlock(resolveDynamicComponent(__props.suffixIcon), {
                class: normalizeClass(["h-[16px] w-[16px]", __props.suffixIconClass])
              }, null, 8, ["class"]))
            ], 10, _hoisted_2$14)) : createCommentVNode("", true)
          ])
        ])
      ], 2);
    };
  }
});
const _hoisted_1$18 = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$13 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M3 13L13 3M3 3L13 13",
  class: "icon-dark",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$V = [
  _hoisted_2$13
];
function render$D(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$18, _hoisted_3$V);
}
const __unplugin_components_0$7 = { name: "cy-delete_x16", render: render$D };
const _hoisted_1$17 = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$12 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M4 6L8 10L12 6",
  stroke: "currentColor",
  class: "icon-dark",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$U = [
  _hoisted_2$12
];
function render$C(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$17, _hoisted_3$U);
}
const __unplugin_components_0$6 = { name: "cy-chevron-down-small_x16", render: render$C };
const _hoisted_1$16 = ["tabindex"];
const _hoisted_2$11 = ["aria-expanded"];
const _hoisted_3$T = ["aria-hidden"];
const _sfc_main$N = /* @__PURE__ */ defineComponent({
  __name: "Collapsible",
  props: {
    maxHeight: { default: "500px" },
    initiallyOpen: { type: Boolean, default: false },
    lazy: { type: Boolean, default: false },
    disable: { type: Boolean, default: false },
    overflow: { type: Boolean, default: true },
    fileRow: { type: Boolean, default: false }
  },
  setup(__props) {
    const props = __props;
    const [isOpen, toggle] = useToggle(props.initiallyOpen);
    watch(() => props.initiallyOpen, (val, oldVal) => {
      if (oldVal === false && val === true) {
        isOpen.value = true;
      }
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        tabindex: __props.disable ? "-1" : "0",
        "data-cy": "collapsible",
        onKeypress: _cache[2] || (_cache[2] = withKeys(withModifiers(($event) => !__props.disable && unref(toggle)(), ["self", "prevent"]), ["space", "enter"]))
      }, [
        createBaseVNode("div", {
          "data-cy": "collapsible-header",
          "aria-expanded": unref(isOpen),
          class: normalizeClass(["rounded-t focus:outline-indigo-500", { "rounded-b": !unref(isOpen) }]),
          onClick: _cache[0] || (_cache[0] = ($event) => !__props.disable && unref(toggle)()),
          onKeypress: _cache[1] || (_cache[1] = withKeys(withModifiers(($event) => !__props.disable && unref(toggle)(), ["self"]), ["space", "enter"]))
        }, [
          renderSlot(_ctx.$slots, "target", {
            open: unref(isOpen),
            toggle: unref(toggle)
          })
        ], 42, _hoisted_2$11),
        createBaseVNode("div", {
          style: normalizeStyle({
            maxHeight: unref(isOpen) ? __props.maxHeight : "0px"
          }),
          "aria-hidden": !unref(isOpen),
          class: normalizeClass({
            "overflow-auto": unref(isOpen) && __props.overflow,
            "border rounded rounded-t-none bg-light-50 border-gray-100 mb-4 w-full block": unref(isOpen) && __props.fileRow,
            "overflow-hidden": !unref(isOpen) && __props.fileRow
          })
        }, [
          !__props.lazy || __props.lazy && unref(isOpen) ? renderSlot(_ctx.$slots, "default", {
            key: 0,
            toggle: unref(toggle),
            open: unref(isOpen)
          }) : createCommentVNode("", true)
        ], 14, _hoisted_3$T)
      ], 40, _hoisted_1$16);
    };
  }
});
const _sfc_main$M = /* @__PURE__ */ defineComponent({
  __name: "Alert",
  props: {
    title: { default: void 0 },
    status: { default: "info" },
    icon: { default: void 0 },
    headerClass: { default: void 0 },
    bodyClass: { default: void 0 },
    dismissible: { type: Boolean },
    collapsible: { type: Boolean },
    modelValue: { type: Boolean, default: true },
    iconClasses: { default: "" },
    maxHeight: { default: void 0 },
    overflow: { type: Boolean, default: true }
  },
  emits: ["update:modelValue"],
  setup(__props) {
    const props = __props;
    const { t: t2 } = useI18n();
    const slots = useSlots();
    const title = computed(() => props.title ?? "Alert");
    const alertStyles = {
      default: {
        headerClass: "text-gray-800 bg-gray-100",
        suffixIconClass: "icon-dark-gray-600",
        suffixButtonClass: "text-gray-600",
        bodyClass: "bg-gray-50",
        ring: "hocus:ring-gray-200 hocus:border-gray-300"
      },
      info: {
        headerClass: "text-info-700 bg-info-100",
        suffixIconClass: "icon-dark-info-500",
        suffixButtonClass: "text-info-500",
        bodyClass: "bg-info-50",
        ring: "hocus:ring-info-200 hocus:border-info-300"
      },
      warning: {
        headerClass: "text-warning-600 bg-warning-100",
        suffixIconClass: "icon-dark-warning-500",
        suffixButtonClass: "text-warning-500",
        bodyClass: "bg-warning-50",
        ring: "hocus:ring-warning-200 hocus:border-warning-300"
      },
      error: {
        headerClass: "text-error-600 bg-error-100",
        suffixIconClass: "icon-dark-error-500",
        suffixButtonClass: "text-error-500",
        bodyClass: "bg-error-50",
        ring: "hocus:ring-error-200 hocus:border-error-300"
      },
      success: {
        headerClass: "text-success-600 bg-success-100",
        suffixIconClass: "icon-dark-success-500",
        suffixButtonClass: "text-success-500",
        bodyClass: "bg-success-50",
        ring: "hocus:ring-success-200 hocus:border-success-300"
      },
      promo: {
        headerClass: "text-gray-900 bg-white border border-gray-100",
        suffixIconClass: "icon-dark-gray-700",
        suffixButtonClass: "text-gray-700",
        bodyClass: "bg-white border-t border-gray-100",
        ring: "hocus:ring-gray-100 hocus:border-gray-100"
      }
    };
    const classes = computed(() => {
      return {
        ...alertStyles[props.status],
        bodyClass: props.bodyClass ?? alertStyles[props.status].bodyClass,
        headerClass: props.headerClass ?? alertStyles[props.status].headerClass
      };
    });
    const canCollapse = computed(() => slots.default && props.collapsible);
    const initiallyOpen = computed(() => slots.default && !props.collapsible);
    const prefix = computed(() => {
      if (props.icon)
        return { classes: props.iconClasses, icon: props.icon };
      if (canCollapse.value) {
        return {
          icon: __unplugin_components_0$6,
          classes: "transition transform duration-150 w-[16px] h-[16px]"
        };
      }
      return {};
    });
    const computedBodyClass = computed(() => {
      return `${classes.value.bodyClass} ${props.bodyClass}`;
    });
    return (_ctx, _cache) => {
      return __props.modelValue ? (openBlock(), createBlock(_sfc_main$N, {
        key: 0,
        lazy: "",
        "initially-open": unref(initiallyOpen),
        disable: !unref(canCollapse),
        overflow: __props.overflow,
        class: normalizeClass(["rounded-t rounded-b outline-none group", [
          unref(classes).headerClass,
          { [`hocus-default border border-transparent rounded ${unref(classes).ring}`]: unref(canCollapse), "overflow-hidden": __props.overflow }
        ]]),
        "max-height": __props.maxHeight
      }, {
        target: withCtx(({ open }) => {
          var _a3, _b2, _c;
          return [
            createBaseVNode("div", {
              "data-cy": "alert-header",
              class: normalizeClass(["grid grid-cols-1 group", {
                "cursor-pointer": unref(canCollapse)
              }])
            }, [
              createVNode(_sfc_main$O, {
                title: unref(title),
                "header-class": `${props.headerClass} ${unref(canCollapse) ? "group-hocus:underline" : ""}`,
                "prefix-icon": (_a3 = unref(prefix)) == null ? void 0 : _a3.icon,
                "prefix-icon-class": open && __props.collapsible ? ((_b2 = unref(prefix)) == null ? void 0 : _b2.classes) + " rotate-180" : (_c = unref(prefix)) == null ? void 0 : _c.classes,
                "suffix-icon-aria-label": props.dismissible ? unref(t2)("components.alert.dismissAriaLabel") : "",
                "suffix-icon": props.dismissible ? unref(__unplugin_components_0$7) : null,
                "suffix-button-class": unref(classes).suffixButtonClass,
                "suffix-icon-class": unref(classes).suffixIconClass,
                "data-cy": "alert",
                class: "rounded min-w-[200px] p-[16px]",
                onSuffixIconClicked: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("update:modelValue", !__props.modelValue))
              }, createSlots({ _: 2 }, [
                _ctx.$slots.title ? {
                  name: "title",
                  fn: withCtx(() => [
                    renderSlot(_ctx.$slots, "title")
                  ]),
                  key: "0"
                } : void 0,
                _ctx.$slots.prefixIcon ? {
                  name: "prefixIcon",
                  fn: withCtx((slotProps) => [
                    renderSlot(_ctx.$slots, "prefixIcon", normalizeProps(guardReactiveProps(slotProps)))
                  ]),
                  key: "1"
                } : void 0,
                _ctx.$slots.suffixIcon ? {
                  name: "suffixIcon",
                  fn: withCtx((slotProps) => [
                    renderSlot(_ctx.$slots, "suffixIcon", normalizeProps(guardReactiveProps(slotProps)))
                  ]),
                  key: "2"
                } : void 0
              ]), 1032, ["title", "header-class", "prefix-icon", "prefix-icon-class", "suffix-icon-aria-label", "suffix-icon", "suffix-button-class", "suffix-icon-class"])
            ], 2)
          ];
        }),
        default: withCtx(() => [
          _ctx.$slots.default ? (openBlock(), createElementBlock("div", {
            key: 0,
            class: normalizeClass(["text-left p-[16px]", unref(computedBodyClass)]),
            "data-cy": "alert-body"
          }, [
            renderSlot(_ctx.$slots, "default")
          ], 2)) : createCommentVNode("", true)
        ]),
        _: 3
      }, 8, ["initially-open", "disable", "overflow", "class", "max-height"])) : createCommentVNode("", true);
    };
  }
});
const _hoisted_1$15 = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$10 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M2 8H8M14 8H8M8 8V2M8 8V14",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$S = [
  _hoisted_2$10
];
function render$B(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$15, _hoisted_3$S);
}
const __unplugin_components_1$6 = { name: "cy-add-large_x16", render: render$B };
const _hoisted_1$14 = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$$ = /* @__PURE__ */ createBaseVNode("path", {
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M7.29289 2.29289C7.10536 2.10536 6.851 2 6.58579 2H2C1.44772 2 1 2.44772 1 3V6H6.58579C6.851 6 7.10536 5.89464 7.29289 5.70711L9 4L7.29289 2.29289Z",
  fill: "#D0D2E0",
  class: "icon-light"
}, null, -1);
const _hoisted_3$R = /* @__PURE__ */ createBaseVNode("path", {
  d: "M9 4L7.29289 2.29289C7.10536 2.10536 6.851 2 6.58579 2H2C1.44772 2 1 2.44772 1 3V6M9 4H14C14.5523 4 15 4.44772 15 5V13C15 13.5523 14.5523 14 14 14H2C1.44772 14 1 13.5523 1 13V6M9 4L7.29289 5.70711C7.10536 5.89464 6.851 6 6.58579 6H1",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linejoin": "round",
  class: "icon-dark"
}, null, -1);
const _hoisted_4$y = [
  _hoisted_2$$,
  _hoisted_3$R
];
function render$A(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$14, _hoisted_4$y);
}
const FolderIcon = { name: "cy-folder-outline_x16", render: render$A };
const _hoisted_1$13 = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$_ = /* @__PURE__ */ createStaticVNode('<path d="M10 4V14H14C14.5523 14 15 13.5523 15 13V5C15 4.44772 14.5523 4 14 4H10Z" class="icon-light" fill="#D0D2E0"></path><path d="M10 14H2C1.44772 14 1 13.5523 1 13V2C1 1.44772 1.44772 1 2 1H9C9.55228 1 10 1.44772 10 2V4M10 14V4M10 14H14C14.5523 14 15 13.5523 15 13V5C15 4.44772 14.5523 4 14 4H10" stroke="#1B1E2E" stroke-width="2" class="icon-dark"></path><path d="M3 3.5C3 3.22386 3.22386 3 3.5 3H4.5C4.77614 3 5 3.22386 5 3.5V4.5C5 4.77614 4.77614 5 4.5 5H3.5C3.22386 5 3 4.77614 3 4.5V3.5Z" fill="#1B1E2E" class="icon-dark"></path><path d="M12 6.5C12 6.22386 12.2239 6 12.5 6C12.7761 6 13 6.22386 13 6.5V7.5C13 7.77614 12.7761 8 12.5 8C12.2239 8 12 7.77614 12 7.5V6.5Z" fill="#1B1E2E" class="icon-dark"></path><path d="M12 9.5C12 9.22386 12.2239 9 12.5 9C12.7761 9 13 9.22386 13 9.5V10.5C13 10.7761 12.7761 11 12.5 11C12.2239 11 12 10.7761 12 10.5V9.5Z" fill="#1B1E2E" class="icon-dark"></path><path d="M3 6.5C3 6.22386 3.22386 6 3.5 6H4.5C4.77614 6 5 6.22386 5 6.5V7.5C5 7.77614 4.77614 8 4.5 8H3.5C3.22386 8 3 7.77614 3 7.5V6.5Z" fill="#1B1E2E" class="icon-dark"></path><path d="M3 9.5C3 9.22386 3.22386 9 3.5 9H4.5C4.77614 9 5 9.22386 5 9.5V10.5C5 10.7761 4.77614 11 4.5 11H3.5C3.22386 11 3 10.7761 3 10.5V9.5Z" fill="#1B1E2E" class="icon-dark"></path><path d="M6 3.5C6 3.22386 6.22386 3 6.5 3H7.5C7.77614 3 8 3.22386 8 3.5V4.5C8 4.77614 7.77614 5 7.5 5H6.5C6.22386 5 6 4.77614 6 4.5V3.5Z" fill="#1B1E2E" class="icon-dark"></path><path d="M6 6.5C6 6.22386 6.22386 6 6.5 6H7.5C7.77614 6 8 6.22386 8 6.5V7.5C8 7.77614 7.77614 8 7.5 8H6.5C6.22386 8 6 7.77614 6 7.5V6.5Z" fill="#1B1E2E" class="icon-dark"></path><path d="M6 9.5C6 9.22386 6.22386 9 6.5 9H7.5C7.77614 9 8 9.22386 8 9.5V10.5C8 10.7761 7.77614 11 7.5 11H6.5C6.22386 11 6 10.7761 6 10.5V9.5Z" fill="#1B1E2E" class="icon-dark"></path>', 10);
const _hoisted_12$6 = [
  _hoisted_2$_
];
function render$z(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$13, _hoisted_12$6);
}
const OrganizationIcon = { name: "cy-office-building_x16", render: render$z };
const _hoisted_1$12 = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$Z = /* @__PURE__ */ createBaseVNode("path", {
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M2 8C2 4.68629 4.68629 2 8 2C11.3137 2 14 4.68629 14 8C14 11.3137 11.3137 14 8 14C4.68629 14 2 11.3137 2 8ZM8 0C3.58172 0 0 3.58172 0 8C0 12.4183 3.58172 16 8 16C12.4183 16 16 12.4183 16 8C16 3.58172 12.4183 0 8 0ZM9 5C9 4.44772 8.55228 4 8 4C7.44772 4 7 4.44772 7 5V8C7 8.55228 7.44772 9 8 9C8.55228 9 9 8.55228 9 8V5ZM8 12C8.55228 12 9 11.5523 9 11C9 10.4477 8.55228 10 8 10C7.44772 10 7 10.4477 7 11C7 11.5523 7.44772 12 8 12Z",
  fill: "currentColor",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$Q = [
  _hoisted_2$Z
];
function render$y(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$12, _hoisted_3$Q);
}
const WarningIcon = { name: "cy-warning_x16", render: render$y };
function keyValMap(list3, keyFn, valFn) {
  return list3.reduce(function(map2, item) {
    map2[keyFn(item)] = valFn(item);
    return map2;
  }, /* @__PURE__ */ Object.create(null));
}
function valueFromASTUntyped(valueNode, variables) {
  switch (valueNode.kind) {
    case Kind.NULL:
      return null;
    case Kind.INT:
      return parseInt(valueNode.value, 10);
    case Kind.FLOAT:
      return parseFloat(valueNode.value);
    case Kind.STRING:
    case Kind.ENUM:
    case Kind.BOOLEAN:
      return valueNode.value;
    case Kind.LIST:
      return valueNode.values.map(function(node) {
        return valueFromASTUntyped(node, variables);
      });
    case Kind.OBJECT:
      return keyValMap(valueNode.fields, function(field) {
        return field.name.value;
      }, function(field) {
        return valueFromASTUntyped(field.value, variables);
      });
    case Kind.VARIABLE:
      return variables === null || variables === void 0 ? void 0 : variables[valueNode.name.value];
  }
  invariant$2(0, "Unexpected value node: " + inspect(valueNode));
}
const isFunction$2 = (value) => typeof value === "function";
const isString$1 = (value) => typeof value === "string";
const isNonEmptyString = (value) => isString$1(value) && value.trim().length > 0;
const isNumber = (value) => typeof value === "number";
const isUndefined = (value) => typeof value === "undefined";
const isObject$4 = (value) => typeof value === "object" && value !== null;
const isJSX = (obj) => hasProp(obj, "tag") && isNonEmptyString(obj.tag);
const isTouchEvent = (event) => window.TouchEvent && event instanceof TouchEvent;
const isToastComponent = (obj) => hasProp(obj, "component") && isToastContent(obj.component);
const isVueComponent = (c2) => isFunction$2(c2) || isObject$4(c2);
const isToastContent = (obj) => (
  // Ignore undefined
  !isUndefined(obj) && // Is a string
  (isString$1(obj) || // Regular Vue component
  isVueComponent(obj) || // Nested object
  isToastComponent(obj))
);
const isDOMRect = (obj) => isObject$4(obj) && ["height", "width", "right", "left", "top", "bottom"].every((p2) => isNumber(obj[p2]));
const hasProp = (obj, propKey) => (isObject$4(obj) || isFunction$2(obj)) && propKey in obj;
const getId = ((i) => () => i++)(0);
function getX(event) {
  return isTouchEvent(event) ? event.targetTouches[0].clientX : event.clientX;
}
function getY(event) {
  return isTouchEvent(event) ? event.targetTouches[0].clientY : event.clientY;
}
const removeElement = (el2) => {
  if (!isUndefined(el2.remove)) {
    el2.remove();
  } else if (el2.parentNode) {
    el2.parentNode.removeChild(el2);
  }
};
const getVueComponentFromObj = (obj) => {
  if (isToastComponent(obj)) {
    return getVueComponentFromObj(obj.component);
  }
  if (isJSX(obj)) {
    return defineComponent({
      render() {
        return obj;
      }
    });
  }
  return typeof obj === "string" ? obj : toRaw(unref(obj));
};
const normalizeToastComponent = (obj) => {
  if (typeof obj === "string") {
    return obj;
  }
  const props = hasProp(obj, "props") && isObject$4(obj.props) ? obj.props : {};
  const listeners2 = hasProp(obj, "listeners") && isObject$4(obj.listeners) ? obj.listeners : {};
  return {
    component: getVueComponentFromObj(obj),
    props,
    listeners: listeners2
  };
};
const isBrowser$1 = () => typeof window !== "undefined";
class EventBus {
  constructor() {
    this.allHandlers = {};
  }
  getHandlers(eventType) {
    return this.allHandlers[eventType] || [];
  }
  on(eventType, handler) {
    const handlers = this.getHandlers(eventType);
    handlers.push(handler);
    this.allHandlers[eventType] = handlers;
  }
  off(eventType, handler) {
    const handlers = this.getHandlers(eventType);
    handlers.splice(handlers.indexOf(handler) >>> 0, 1);
  }
  emit(eventType, event) {
    const handlers = this.getHandlers(eventType);
    handlers.forEach((handler) => handler(event));
  }
}
const isEventBusInterface = (e) => ["on", "off", "emit"].every((f2) => hasProp(e, f2) && isFunction$2(e[f2]));
var TYPE;
(function(TYPE2) {
  TYPE2["SUCCESS"] = "success";
  TYPE2["ERROR"] = "error";
  TYPE2["WARNING"] = "warning";
  TYPE2["INFO"] = "info";
  TYPE2["DEFAULT"] = "default";
})(TYPE || (TYPE = {}));
var POSITION;
(function(POSITION2) {
  POSITION2["TOP_LEFT"] = "top-left";
  POSITION2["TOP_CENTER"] = "top-center";
  POSITION2["TOP_RIGHT"] = "top-right";
  POSITION2["BOTTOM_LEFT"] = "bottom-left";
  POSITION2["BOTTOM_CENTER"] = "bottom-center";
  POSITION2["BOTTOM_RIGHT"] = "bottom-right";
})(POSITION || (POSITION = {}));
var EVENTS;
(function(EVENTS2) {
  EVENTS2["ADD"] = "add";
  EVENTS2["DISMISS"] = "dismiss";
  EVENTS2["UPDATE"] = "update";
  EVENTS2["CLEAR"] = "clear";
  EVENTS2["UPDATE_DEFAULTS"] = "update_defaults";
})(EVENTS || (EVENTS = {}));
const VT_NAMESPACE = "Vue-Toastification";
const COMMON = {
  type: {
    type: String,
    default: TYPE.DEFAULT
  },
  classNames: {
    type: [String, Array],
    default: () => []
  },
  trueBoolean: {
    type: Boolean,
    default: true
  }
};
const ICON = {
  type: COMMON.type,
  customIcon: {
    type: [String, Boolean, Object, Function],
    default: true
  }
};
const CLOSE_BUTTON = {
  component: {
    type: [String, Object, Function, Boolean],
    default: "button"
  },
  classNames: COMMON.classNames,
  showOnHover: {
    type: Boolean,
    default: false
  },
  ariaLabel: {
    type: String,
    default: "close"
  }
};
const PROGRESS_BAR = {
  timeout: {
    type: [Number, Boolean],
    default: 5e3
  },
  hideProgressBar: {
    type: Boolean,
    default: false
  },
  isRunning: {
    type: Boolean,
    default: false
  }
};
const TRANSITION = {
  transition: {
    type: [Object, String],
    default: `${VT_NAMESPACE}__bounce`
  }
};
const CORE_TOAST = {
  position: {
    type: String,
    default: POSITION.TOP_RIGHT
  },
  draggable: COMMON.trueBoolean,
  draggablePercent: {
    type: Number,
    default: 0.6
  },
  pauseOnFocusLoss: COMMON.trueBoolean,
  pauseOnHover: COMMON.trueBoolean,
  closeOnClick: COMMON.trueBoolean,
  timeout: PROGRESS_BAR.timeout,
  hideProgressBar: PROGRESS_BAR.hideProgressBar,
  toastClassName: COMMON.classNames,
  bodyClassName: COMMON.classNames,
  icon: ICON.customIcon,
  closeButton: CLOSE_BUTTON.component,
  closeButtonClassName: CLOSE_BUTTON.classNames,
  showCloseButtonOnHover: CLOSE_BUTTON.showOnHover,
  accessibility: {
    type: Object,
    default: () => ({
      toastRole: "alert",
      closeButtonLabel: "close"
    })
  },
  rtl: {
    type: Boolean,
    default: false
  },
  eventBus: {
    type: Object,
    required: true,
    default: new EventBus()
  }
};
const TOAST = {
  id: {
    type: [String, Number],
    required: true,
    default: 0
  },
  type: COMMON.type,
  content: {
    type: [String, Object, Function],
    required: true,
    default: ""
  },
  onClick: {
    type: Function,
    default: () => {
    }
  },
  onClose: {
    type: Function,
    default: (
      /* istanbul ignore next */
      () => {
      }
    )
  }
};
const CONTAINER = {
  container: {
    type: [Object, Function],
    default: () => document.body
  },
  newestOnTop: COMMON.trueBoolean,
  maxToasts: {
    type: Number,
    default: 20
  },
  transition: TRANSITION.transition,
  toastDefaults: Object,
  filterBeforeCreate: {
    type: Function,
    default: (toast) => toast
  },
  filterToasts: {
    type: Function,
    default: (toasts) => toasts
  },
  containerClassName: COMMON.classNames,
  onMounted: Function
};
var PROPS = {
  CORE_TOAST,
  TOAST,
  CONTAINER,
  PROGRESS_BAR,
  ICON,
  TRANSITION,
  CLOSE_BUTTON
};
var script = defineComponent({
  name: "VtProgressBar",
  props: PROPS.PROGRESS_BAR,
  // TODO: The typescript compiler is not playing nice with emit types
  // Rollback this change once ts is able to infer emit types
  // emits: ["close-toast"],
  data() {
    return {
      hasClass: true
    };
  },
  computed: {
    style() {
      return {
        animationDuration: `${this.timeout}ms`,
        animationPlayState: this.isRunning ? "running" : "paused",
        opacity: this.hideProgressBar ? 0 : 1
      };
    },
    cpClass() {
      return this.hasClass ? `${VT_NAMESPACE}__progress-bar` : "";
    }
  },
  watch: {
    timeout() {
      this.hasClass = false;
      this.$nextTick(() => this.hasClass = true);
    }
  },
  mounted() {
    this.$el.addEventListener("animationend", this.animationEnded);
  },
  beforeUnmount() {
    this.$el.removeEventListener("animationend", this.animationEnded);
  },
  methods: {
    animationEnded() {
      this.$emit("close-toast");
    }
  }
});
function render$x(_ctx, _cache, $props, $setup, $data, $options) {
  return openBlock(), createBlock(
    "div",
    {
      style: _ctx.style,
      class: _ctx.cpClass
    },
    null,
    6
    /* CLASS, STYLE */
  );
}
script.render = render$x;
script.__file = "src/components/VtProgressBar.vue";
var script$1 = defineComponent({
  name: "VtCloseButton",
  props: PROPS.CLOSE_BUTTON,
  computed: {
    buttonComponent() {
      if (this.component !== false) {
        return getVueComponentFromObj(this.component);
      }
      return "button";
    },
    classes() {
      const classes = [`${VT_NAMESPACE}__close-button`];
      if (this.showOnHover) {
        classes.push("show-on-hover");
      }
      return classes.concat(this.classNames);
    }
  }
});
const _hoisted_1$11 = /* @__PURE__ */ createTextVNode(" Ã— ");
function render$1$1(_ctx, _cache, $props, $setup, $data, $options) {
  return openBlock(), createBlock(resolveDynamicComponent(_ctx.buttonComponent), mergeProps({
    "aria-label": _ctx.ariaLabel,
    class: _ctx.classes
  }, _ctx.$attrs), {
    default: withCtx(() => [
      _hoisted_1$11
    ]),
    _: 1
  }, 16, ["aria-label", "class"]);
}
script$1.render = render$1$1;
script$1.__file = "src/components/VtCloseButton.vue";
var script$2 = {};
const _hoisted_1$1$1 = {
  "aria-hidden": "true",
  focusable: "false",
  "data-prefix": "fas",
  "data-icon": "check-circle",
  class: "svg-inline--fa fa-check-circle fa-w-16",
  role: "img",
  xmlns: "http://www.w3.org/2000/svg",
  viewBox: "0 0 512 512"
};
const _hoisted_2$Y = /* @__PURE__ */ createVNode(
  "path",
  {
    fill: "currentColor",
    d: "M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"
  },
  null,
  -1
  /* HOISTED */
);
function render$2$1(_ctx, _cache, $props, $setup, $data, $options) {
  return openBlock(), createBlock("svg", _hoisted_1$1$1, [
    _hoisted_2$Y
  ]);
}
script$2.render = render$2$1;
script$2.__file = "src/components/icons/VtSuccessIcon.vue";
var script$3 = {};
const _hoisted_1$2$1 = {
  "aria-hidden": "true",
  focusable: "false",
  "data-prefix": "fas",
  "data-icon": "info-circle",
  class: "svg-inline--fa fa-info-circle fa-w-16",
  role: "img",
  xmlns: "http://www.w3.org/2000/svg",
  viewBox: "0 0 512 512"
};
const _hoisted_2$1$1 = /* @__PURE__ */ createVNode(
  "path",
  {
    fill: "currentColor",
    d: "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"
  },
  null,
  -1
  /* HOISTED */
);
function render$3$1(_ctx, _cache, $props, $setup, $data, $options) {
  return openBlock(), createBlock("svg", _hoisted_1$2$1, [
    _hoisted_2$1$1
  ]);
}
script$3.render = render$3$1;
script$3.__file = "src/components/icons/VtInfoIcon.vue";
var script$4 = {};
const _hoisted_1$3$1 = {
  "aria-hidden": "true",
  focusable: "false",
  "data-prefix": "fas",
  "data-icon": "exclamation-circle",
  class: "svg-inline--fa fa-exclamation-circle fa-w-16",
  role: "img",
  xmlns: "http://www.w3.org/2000/svg",
  viewBox: "0 0 512 512"
};
const _hoisted_2$2$1 = /* @__PURE__ */ createVNode(
  "path",
  {
    fill: "currentColor",
    d: "M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"
  },
  null,
  -1
  /* HOISTED */
);
function render$4$1(_ctx, _cache, $props, $setup, $data, $options) {
  return openBlock(), createBlock("svg", _hoisted_1$3$1, [
    _hoisted_2$2$1
  ]);
}
script$4.render = render$4$1;
script$4.__file = "src/components/icons/VtWarningIcon.vue";
var script$5 = {};
const _hoisted_1$4$1 = {
  "aria-hidden": "true",
  focusable: "false",
  "data-prefix": "fas",
  "data-icon": "exclamation-triangle",
  class: "svg-inline--fa fa-exclamation-triangle fa-w-18",
  role: "img",
  xmlns: "http://www.w3.org/2000/svg",
  viewBox: "0 0 576 512"
};
const _hoisted_2$3$1 = /* @__PURE__ */ createVNode(
  "path",
  {
    fill: "currentColor",
    d: "M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"
  },
  null,
  -1
  /* HOISTED */
);
function render$5$1(_ctx, _cache, $props, $setup, $data, $options) {
  return openBlock(), createBlock("svg", _hoisted_1$4$1, [
    _hoisted_2$3$1
  ]);
}
script$5.render = render$5$1;
script$5.__file = "src/components/icons/VtErrorIcon.vue";
var script$6 = defineComponent({
  name: "VtIcon",
  props: PROPS.ICON,
  computed: {
    customIconChildren() {
      return hasProp(this.customIcon, "iconChildren") ? this.trimValue(this.customIcon.iconChildren) : "";
    },
    customIconClass() {
      if (isString$1(this.customIcon)) {
        return this.trimValue(this.customIcon);
      } else if (hasProp(this.customIcon, "iconClass")) {
        return this.trimValue(this.customIcon.iconClass);
      }
      return "";
    },
    customIconTag() {
      if (hasProp(this.customIcon, "iconTag")) {
        return this.trimValue(this.customIcon.iconTag, "i");
      }
      return "i";
    },
    hasCustomIcon() {
      return this.customIconClass.length > 0;
    },
    component() {
      if (this.hasCustomIcon) {
        return this.customIconTag;
      }
      if (isToastContent(this.customIcon)) {
        return getVueComponentFromObj(this.customIcon);
      }
      return this.iconTypeComponent;
    },
    iconTypeComponent() {
      const types = {
        [TYPE.DEFAULT]: script$3,
        [TYPE.INFO]: script$3,
        [TYPE.SUCCESS]: script$2,
        [TYPE.ERROR]: script$5,
        [TYPE.WARNING]: script$4
      };
      return types[this.type];
    },
    iconClasses() {
      const classes = [`${VT_NAMESPACE}__icon`];
      if (this.hasCustomIcon) {
        return classes.concat(this.customIconClass);
      }
      return classes;
    }
  },
  methods: {
    trimValue(value, empty2 = "") {
      return isNonEmptyString(value) ? value.trim() : empty2;
    }
  }
});
function render$6$1(_ctx, _cache, $props, $setup, $data, $options) {
  return openBlock(), createBlock(resolveDynamicComponent(_ctx.component), { class: _ctx.iconClasses }, {
    default: withCtx(() => [
      createTextVNode(
        toDisplayString$1(_ctx.customIconChildren),
        1
        /* TEXT */
      )
    ]),
    _: 1
  }, 8, ["class"]);
}
script$6.render = render$6$1;
script$6.__file = "src/components/VtIcon.vue";
var script$7 = defineComponent({
  name: "VtToast",
  components: {
    ProgressBar: script,
    CloseButton: script$1,
    Icon: script$6
  },
  inheritAttrs: false,
  props: Object.assign({}, PROPS.CORE_TOAST, PROPS.TOAST),
  data() {
    const data = {
      isRunning: true,
      disableTransitions: false,
      beingDragged: false,
      dragStart: 0,
      dragPos: {
        x: 0,
        y: 0
      },
      dragRect: {}
    };
    return data;
  },
  computed: {
    classes() {
      const classes = [`${VT_NAMESPACE}__toast`, `${VT_NAMESPACE}__toast--${this.type}`, `${this.position}`].concat(this.toastClassName);
      if (this.disableTransitions) {
        classes.push("disable-transition");
      }
      if (this.rtl) {
        classes.push(`${VT_NAMESPACE}__toast--rtl`);
      }
      return classes;
    },
    bodyClasses() {
      const classes = [`${VT_NAMESPACE}__toast-${isString$1(this.content) ? "body" : "component-body"}`].concat(this.bodyClassName);
      return classes;
    },
    /* istanbul ignore next */
    draggableStyle() {
      if (this.dragStart === this.dragPos.x) {
        return {};
      } else if (this.beingDragged) {
        return {
          transform: `translateX(${this.dragDelta}px)`,
          opacity: 1 - Math.abs(this.dragDelta / this.removalDistance)
        };
      } else {
        return {
          transition: "transform 0.2s, opacity 0.2s",
          transform: "translateX(0)",
          opacity: 1
        };
      }
    },
    dragDelta() {
      return this.beingDragged ? this.dragPos.x - this.dragStart : 0;
    },
    removalDistance() {
      if (isDOMRect(this.dragRect)) {
        return (this.dragRect.right - this.dragRect.left) * this.draggablePercent;
      }
      return 0;
    }
  },
  mounted() {
    if (this.draggable) {
      this.draggableSetup();
    }
    if (this.pauseOnFocusLoss) {
      this.focusSetup();
    }
  },
  beforeUnmount() {
    if (this.draggable) {
      this.draggableCleanup();
    }
    if (this.pauseOnFocusLoss) {
      this.focusCleanup();
    }
  },
  methods: {
    getVueComponentFromObj,
    closeToast() {
      this.eventBus.emit(EVENTS.DISMISS, this.id);
    },
    clickHandler() {
      if (this.onClick) {
        this.onClick(this.closeToast);
      }
      if (this.closeOnClick) {
        if (!this.beingDragged || this.dragStart === this.dragPos.x) {
          this.closeToast();
        }
      }
    },
    timeoutHandler() {
      this.closeToast();
    },
    hoverPause() {
      if (this.pauseOnHover) {
        this.isRunning = false;
      }
    },
    hoverPlay() {
      if (this.pauseOnHover) {
        this.isRunning = true;
      }
    },
    focusPause() {
      this.isRunning = false;
    },
    focusPlay() {
      this.isRunning = true;
    },
    focusSetup() {
      addEventListener("blur", this.focusPause);
      addEventListener("focus", this.focusPlay);
    },
    focusCleanup() {
      removeEventListener("blur", this.focusPause);
      removeEventListener("focus", this.focusPlay);
    },
    draggableSetup() {
      const element = this.$el;
      element.addEventListener("touchstart", this.onDragStart, {
        passive: true
      });
      element.addEventListener("mousedown", this.onDragStart);
      addEventListener("touchmove", this.onDragMove, {
        passive: false
      });
      addEventListener("mousemove", this.onDragMove);
      addEventListener("touchend", this.onDragEnd);
      addEventListener("mouseup", this.onDragEnd);
    },
    draggableCleanup() {
      const element = this.$el;
      element.removeEventListener("touchstart", this.onDragStart);
      element.removeEventListener("mousedown", this.onDragStart);
      removeEventListener("touchmove", this.onDragMove);
      removeEventListener("mousemove", this.onDragMove);
      removeEventListener("touchend", this.onDragEnd);
      removeEventListener("mouseup", this.onDragEnd);
    },
    onDragStart(event) {
      this.beingDragged = true;
      this.dragPos = {
        x: getX(event),
        y: getY(event)
      };
      this.dragStart = getX(event);
      this.dragRect = this.$el.getBoundingClientRect();
    },
    onDragMove(event) {
      if (this.beingDragged) {
        event.preventDefault();
        if (this.isRunning) {
          this.isRunning = false;
        }
        this.dragPos = {
          x: getX(event),
          y: getY(event)
        };
      }
    },
    onDragEnd() {
      if (this.beingDragged) {
        if (Math.abs(this.dragDelta) >= this.removalDistance) {
          this.disableTransitions = true;
          this.$nextTick(() => this.closeToast());
        } else {
          setTimeout(() => {
            this.beingDragged = false;
            if (isDOMRect(this.dragRect) && this.pauseOnHover && this.dragRect.bottom >= this.dragPos.y && this.dragPos.y >= this.dragRect.top && this.dragRect.left <= this.dragPos.x && this.dragPos.x <= this.dragRect.right) {
              this.isRunning = false;
            } else {
              this.isRunning = true;
            }
          });
        }
      }
    }
  }
});
function render$7$1(_ctx, _cache, $props, $setup, $data, $options) {
  const _component_Icon = resolveComponent("Icon");
  const _component_CloseButton = resolveComponent("CloseButton");
  const _component_ProgressBar = resolveComponent("ProgressBar");
  return openBlock(), createBlock(
    "div",
    {
      class: _ctx.classes,
      style: _ctx.draggableStyle,
      onClick: _cache[1] || (_cache[1] = (...args) => _ctx.clickHandler(...args)),
      onMouseenter: _cache[2] || (_cache[2] = (...args) => _ctx.hoverPause(...args)),
      onMouseleave: _cache[3] || (_cache[3] = (...args) => _ctx.hoverPlay(...args))
    },
    [
      _ctx.icon ? (openBlock(), createBlock(_component_Icon, {
        key: 0,
        "custom-icon": _ctx.icon,
        type: _ctx.type
      }, null, 8, ["custom-icon", "type"])) : createCommentVNode("v-if", true),
      createVNode("div", {
        role: _ctx.accessibility.toastRole || "alert",
        class: _ctx.bodyClasses
      }, [
        typeof _ctx.content === "string" ? (openBlock(), createBlock(
          Fragment,
          { key: 0 },
          [
            createTextVNode(
              toDisplayString$1(_ctx.content),
              1
              /* TEXT */
            )
          ],
          64
          /* STABLE_FRAGMENT */
        )) : (openBlock(), createBlock(resolveDynamicComponent(_ctx.getVueComponentFromObj(_ctx.content)), mergeProps({
          key: 1,
          "toast-id": _ctx.id
        }, _ctx.content.props, toHandlers(_ctx.content.listeners), { onCloseToast: _ctx.closeToast }), null, 16, ["toast-id", "onCloseToast"]))
      ], 10, ["role"]),
      !!_ctx.closeButton ? (openBlock(), createBlock(_component_CloseButton, {
        key: 1,
        component: _ctx.closeButton,
        "class-names": _ctx.closeButtonClassName,
        "show-on-hover": _ctx.showCloseButtonOnHover,
        "aria-label": _ctx.accessibility.closeButtonLabel,
        onClick: withModifiers(_ctx.closeToast, ["stop"])
      }, null, 8, ["component", "class-names", "show-on-hover", "aria-label", "onClick"])) : createCommentVNode("v-if", true),
      _ctx.timeout ? (openBlock(), createBlock(_component_ProgressBar, {
        key: 2,
        "is-running": _ctx.isRunning,
        "hide-progress-bar": _ctx.hideProgressBar,
        timeout: _ctx.timeout,
        onCloseToast: _ctx.timeoutHandler
      }, null, 8, ["is-running", "hide-progress-bar", "timeout", "onCloseToast"])) : createCommentVNode("v-if", true)
    ],
    38
    /* CLASS, STYLE, HYDRATE_EVENTS */
  );
}
script$7.render = render$7$1;
script$7.__file = "src/components/VtToast.vue";
var script$8 = defineComponent({
  name: "VtTransition",
  props: PROPS.TRANSITION,
  emits: ["leave"],
  methods: {
    leave(el2) {
      el2.style.left = el2.offsetLeft + "px";
      el2.style.top = el2.offsetTop + "px";
      el2.style.width = getComputedStyle(el2).width;
      el2.style.position = "absolute";
    }
  }
});
function render$8$1(_ctx, _cache, $props, $setup, $data, $options) {
  return openBlock(), createBlock(TransitionGroup, {
    tag: "div",
    "enter-active-class": _ctx.transition.enter ? _ctx.transition.enter : `${_ctx.transition}-enter-active`,
    "move-class": _ctx.transition.move ? _ctx.transition.move : `${_ctx.transition}-move`,
    "leave-active-class": _ctx.transition.leave ? _ctx.transition.leave : `${_ctx.transition}-leave-active`,
    onLeave: _ctx.leave
  }, {
    default: withCtx(() => [
      renderSlot(_ctx.$slots, "default")
    ]),
    _: 3
  }, 8, ["enter-active-class", "move-class", "leave-active-class", "onLeave"]);
}
script$8.render = render$8$1;
script$8.__file = "src/components/VtTransition.vue";
var script$9 = defineComponent({
  name: "VueToastification",
  components: {
    Toast: script$7,
    VtTransition: script$8
  },
  props: Object.assign({}, PROPS.CORE_TOAST, PROPS.CONTAINER, PROPS.TRANSITION),
  data() {
    const data = {
      count: 0,
      positions: Object.values(POSITION),
      toasts: {},
      defaults: {}
    };
    return data;
  },
  computed: {
    toastArray() {
      return Object.values(this.toasts);
    },
    filteredToasts() {
      return this.defaults.filterToasts(this.toastArray);
    }
  },
  beforeMount() {
    const events2 = this.eventBus;
    events2.on(EVENTS.ADD, this.addToast);
    events2.on(EVENTS.CLEAR, this.clearToasts);
    events2.on(EVENTS.DISMISS, this.dismissToast);
    events2.on(EVENTS.UPDATE, this.updateToast);
    events2.on(EVENTS.UPDATE_DEFAULTS, this.updateDefaults);
    this.defaults = this.$props;
  },
  mounted() {
    this.setup(this.container);
  },
  methods: {
    async setup(container) {
      if (isFunction$2(container)) {
        container = await container();
      }
      removeElement(this.$el);
      container.appendChild(this.$el);
    },
    setToast(props) {
      if (!isUndefined(props.id)) {
        this.toasts[props.id] = props;
      }
    },
    addToast(params2) {
      params2.content = normalizeToastComponent(params2.content);
      const props = Object.assign({}, this.defaults, params2.type && this.defaults.toastDefaults && this.defaults.toastDefaults[params2.type], params2);
      const toast = this.defaults.filterBeforeCreate(props, this.toastArray);
      toast && this.setToast(toast);
    },
    dismissToast(id2) {
      const toast = this.toasts[id2];
      if (!isUndefined(toast) && !isUndefined(toast.onClose)) {
        toast.onClose();
      }
      delete this.toasts[id2];
    },
    clearToasts() {
      Object.keys(this.toasts).forEach((id2) => {
        this.dismissToast(id2);
      });
    },
    getPositionToasts(position) {
      const toasts = this.filteredToasts.filter((toast) => toast.position === position).slice(0, this.defaults.maxToasts);
      return this.defaults.newestOnTop ? toasts.reverse() : toasts;
    },
    updateDefaults(update) {
      if (!isUndefined(update.container)) {
        this.setup(update.container);
      }
      this.defaults = Object.assign({}, this.defaults, update);
    },
    updateToast({
      id: id2,
      options: options2,
      create
    }) {
      if (this.toasts[id2]) {
        if (options2.timeout && options2.timeout === this.toasts[id2].timeout) {
          options2.timeout++;
        }
        this.setToast(Object.assign({}, this.toasts[id2], options2));
      } else if (create) {
        this.addToast(Object.assign({}, {
          id: id2
        }, options2));
      }
    },
    getClasses(position) {
      const classes = [`${VT_NAMESPACE}__container`, position];
      return classes.concat(this.defaults.containerClassName);
    }
  }
});
function render$9$1(_ctx, _cache, $props, $setup, $data, $options) {
  const _component_Toast = resolveComponent("Toast");
  const _component_VtTransition = resolveComponent("VtTransition");
  return openBlock(), createBlock("div", null, [
    (openBlock(true), createBlock(
      Fragment,
      null,
      renderList(_ctx.positions, (pos) => {
        return openBlock(), createBlock("div", { key: pos }, [
          createVNode(_component_VtTransition, {
            transition: _ctx.defaults.transition,
            class: _ctx.getClasses(pos)
          }, {
            default: withCtx(() => [
              (openBlock(true), createBlock(
                Fragment,
                null,
                renderList(_ctx.getPositionToasts(pos), (toast) => {
                  return openBlock(), createBlock(
                    _component_Toast,
                    mergeProps({
                      key: toast.id
                    }, toast),
                    null,
                    16
                    /* FULL_PROPS */
                  );
                }),
                128
                /* KEYED_FRAGMENT */
              ))
            ]),
            _: 2
          }, 1032, ["transition", "class"])
        ]);
      }),
      128
      /* KEYED_FRAGMENT */
    ))
  ]);
}
script$9.render = render$9$1;
script$9.__file = "src/components/VtToastContainer.vue";
const buildInterface = (globalOptions = {}, mountContainer = true) => {
  const events2 = globalOptions.eventBus = globalOptions.eventBus || new EventBus();
  if (mountContainer) {
    nextTick(() => {
      const app2 = createApp(script$9, Object.assign({}, globalOptions));
      const component = app2.mount(document.createElement("div"));
      const onMounted2 = globalOptions.onMounted;
      if (!isUndefined(onMounted2)) {
        onMounted2(component, app2);
      }
    });
  }
  const toast = (content, options2) => {
    const props = Object.assign({}, {
      id: getId(),
      type: TYPE.DEFAULT
    }, options2, {
      content
    });
    events2.emit(EVENTS.ADD, props);
    return props.id;
  };
  toast.clear = () => events2.emit(EVENTS.CLEAR, void 0);
  toast.updateDefaults = (update) => {
    events2.emit(EVENTS.UPDATE_DEFAULTS, update);
  };
  toast.dismiss = (id2) => {
    events2.emit(EVENTS.DISMISS, id2);
  };
  function updateToast(id2, {
    content,
    options: options2
  }, create = false) {
    const opt = Object.assign({}, options2, {
      content
    });
    events2.emit(EVENTS.UPDATE, {
      id: id2,
      options: opt,
      create
    });
  }
  toast.update = updateToast;
  toast.success = (content, options2) => toast(content, Object.assign({}, options2, {
    type: TYPE.SUCCESS
  }));
  toast.info = (content, options2) => toast(content, Object.assign({}, options2, {
    type: TYPE.INFO
  }));
  toast.error = (content, options2) => toast(content, Object.assign({}, options2, {
    type: TYPE.ERROR
  }));
  toast.warning = (content, options2) => toast(content, Object.assign({}, options2, {
    type: TYPE.WARNING
  }));
  return toast;
};
const createMockToastInterface = () => {
  const toast = () => console.warn("[Vue Toastification] This plugin does not support SSR!");
  return new Proxy(toast, {
    get() {
      return toast;
    }
  });
};
function createToastInterface(optionsOrEventBus) {
  if (!isBrowser$1()) {
    return createMockToastInterface();
  }
  if (isEventBusInterface(optionsOrEventBus)) {
    return buildInterface({
      eventBus: optionsOrEventBus
    }, false);
  }
  return buildInterface(optionsOrEventBus, true);
}
const toastInjectionKey = Symbol("VueToastification");
const globalEventBus = new EventBus();
const VueToastificationPlugin = (App, options2) => {
  const inter = createToastInterface(Object.assign({
    eventBus: globalEventBus
  }, options2));
  App.provide(toastInjectionKey, inter);
};
const useToast = (eventBus) => {
  if (eventBus) {
    return createToastInterface(eventBus);
  }
  const toast = getCurrentInstance() ? inject(toastInjectionKey) : void 0;
  return toast ? toast : createToastInterface(globalEventBus);
};
var buildExports = {};
var build = {
  get exports() {
    return buildExports;
  },
  set exports(v2) {
    buildExports = v2;
  }
};
var url$1 = {};
var re$2 = /^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/;
var parts = [
  "source",
  "protocol",
  "authority",
  "userInfo",
  "user",
  "password",
  "host",
  "port",
  "relative",
  "path",
  "directory",
  "file",
  "query",
  "anchor"
];
var parseuri$2 = function parseuri(str) {
  var src = str, b2 = str.indexOf("["), e = str.indexOf("]");
  if (b2 != -1 && e != -1) {
    str = str.substring(0, b2) + str.substring(b2, e).replace(/:/g, ";") + str.substring(e, str.length);
  }
  var m2 = re$2.exec(str || ""), uri = {}, i = 14;
  while (i--) {
    uri[parts[i]] = m2[i] || "";
  }
  if (b2 != -1 && e != -1) {
    uri.source = src;
    uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ":");
    uri.authority = uri.authority.replace("[", "").replace("]", "").replace(/;/g, ":");
    uri.ipv6uri = true;
  }
  uri.pathNames = pathNames(uri, uri["path"]);
  uri.queryKey = queryKey(uri, uri["query"]);
  return uri;
};
function pathNames(obj, path) {
  var regx = /\/{2,9}/g, names = path.replace(regx, "/").split("/");
  if (path.substr(0, 1) == "/" || path.length === 0) {
    names.splice(0, 1);
  }
  if (path.substr(path.length - 1, 1) == "/") {
    names.splice(names.length - 1, 1);
  }
  return names;
}
function queryKey(uri, query2) {
  var data = {};
  query2.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function($0, $1, $2) {
    if ($1) {
      data[$1] = $2;
    }
  });
  return data;
}
var browserExports = {};
var browser = {
  get exports() {
    return browserExports;
  },
  set exports(v2) {
    browserExports = v2;
  }
};
var ms;
var hasRequiredMs;
function requireMs() {
  if (hasRequiredMs)
    return ms;
  hasRequiredMs = 1;
  var s2 = 1e3;
  var m2 = s2 * 60;
  var h2 = m2 * 60;
  var d2 = h2 * 24;
  var w2 = d2 * 7;
  var y2 = d2 * 365.25;
  ms = function(val, options2) {
    options2 = options2 || {};
    var type2 = typeof val;
    if (type2 === "string" && val.length > 0) {
      return parse3(val);
    } else if (type2 === "number" && isFinite(val)) {
      return options2.long ? fmtLong(val) : fmtShort(val);
    }
    throw new Error(
      "val is not a non-empty string or a valid number. val=" + JSON.stringify(val)
    );
  };
  function parse3(str) {
    str = String(str);
    if (str.length > 100) {
      return;
    }
    var match3 = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
      str
    );
    if (!match3) {
      return;
    }
    var n = parseFloat(match3[1]);
    var type2 = (match3[2] || "ms").toLowerCase();
    switch (type2) {
      case "years":
      case "year":
      case "yrs":
      case "yr":
      case "y":
        return n * y2;
      case "weeks":
      case "week":
      case "w":
        return n * w2;
      case "days":
      case "day":
      case "d":
        return n * d2;
      case "hours":
      case "hour":
      case "hrs":
      case "hr":
      case "h":
        return n * h2;
      case "minutes":
      case "minute":
      case "mins":
      case "min":
      case "m":
        return n * m2;
      case "seconds":
      case "second":
      case "secs":
      case "sec":
      case "s":
        return n * s2;
      case "milliseconds":
      case "millisecond":
      case "msecs":
      case "msec":
      case "ms":
        return n;
      default:
        return void 0;
    }
  }
  function fmtShort(ms2) {
    var msAbs = Math.abs(ms2);
    if (msAbs >= d2) {
      return Math.round(ms2 / d2) + "d";
    }
    if (msAbs >= h2) {
      return Math.round(ms2 / h2) + "h";
    }
    if (msAbs >= m2) {
      return Math.round(ms2 / m2) + "m";
    }
    if (msAbs >= s2) {
      return Math.round(ms2 / s2) + "s";
    }
    return ms2 + "ms";
  }
  function fmtLong(ms2) {
    var msAbs = Math.abs(ms2);
    if (msAbs >= d2) {
      return plural(ms2, msAbs, d2, "day");
    }
    if (msAbs >= h2) {
      return plural(ms2, msAbs, h2, "hour");
    }
    if (msAbs >= m2) {
      return plural(ms2, msAbs, m2, "minute");
    }
    if (msAbs >= s2) {
      return plural(ms2, msAbs, s2, "second");
    }
    return ms2 + " ms";
  }
  function plural(ms2, msAbs, n, name2) {
    var isPlural = msAbs >= n * 1.5;
    return Math.round(ms2 / n) + " " + name2 + (isPlural ? "s" : "");
  }
  return ms;
}
function setup20(env2) {
  createDebug.debug = createDebug;
  createDebug.default = createDebug;
  createDebug.coerce = coerce;
  createDebug.disable = disable;
  createDebug.enable = enable;
  createDebug.enabled = enabled;
  createDebug.humanize = requireMs();
  createDebug.destroy = destroy;
  Object.keys(env2).forEach((key) => {
    createDebug[key] = env2[key];
  });
  createDebug.names = [];
  createDebug.skips = [];
  createDebug.formatters = {};
  function selectColor(namespace) {
    let hash2 = 0;
    for (let i = 0; i < namespace.length; i++) {
      hash2 = (hash2 << 5) - hash2 + namespace.charCodeAt(i);
      hash2 |= 0;
    }
    return createDebug.colors[Math.abs(hash2) % createDebug.colors.length];
  }
  createDebug.selectColor = selectColor;
  function createDebug(namespace) {
    let prevTime;
    let enableOverride = null;
    let namespacesCache;
    let enabledCache;
    function debug2(...args) {
      if (!debug2.enabled) {
        return;
      }
      const self2 = debug2;
      const curr = Number(/* @__PURE__ */ new Date());
      const ms2 = curr - (prevTime || curr);
      self2.diff = ms2;
      self2.prev = prevTime;
      self2.curr = curr;
      prevTime = curr;
      args[0] = createDebug.coerce(args[0]);
      if (typeof args[0] !== "string") {
        args.unshift("%O");
      }
      let index2 = 0;
      args[0] = args[0].replace(/%([a-zA-Z%])/g, (match3, format3) => {
        if (match3 === "%%") {
          return "%";
        }
        index2++;
        const formatter = createDebug.formatters[format3];
        if (typeof formatter === "function") {
          const val = args[index2];
          match3 = formatter.call(self2, val);
          args.splice(index2, 1);
          index2--;
        }
        return match3;
      });
      createDebug.formatArgs.call(self2, args);
      const logFn = self2.log || createDebug.log;
      logFn.apply(self2, args);
    }
    debug2.namespace = namespace;
    debug2.useColors = createDebug.useColors();
    debug2.color = createDebug.selectColor(namespace);
    debug2.extend = extend2;
    debug2.destroy = createDebug.destroy;
    Object.defineProperty(debug2, "enabled", {
      enumerable: true,
      configurable: false,
      get: () => {
        if (enableOverride !== null) {
          return enableOverride;
        }
        if (namespacesCache !== createDebug.namespaces) {
          namespacesCache = createDebug.namespaces;
          enabledCache = createDebug.enabled(namespace);
        }
        return enabledCache;
      },
      set: (v2) => {
        enableOverride = v2;
      }
    });
    if (typeof createDebug.init === "function") {
      createDebug.init(debug2);
    }
    return debug2;
  }
  function extend2(namespace, delimiter2) {
    const newDebug = createDebug(this.namespace + (typeof delimiter2 === "undefined" ? ":" : delimiter2) + namespace);
    newDebug.log = this.log;
    return newDebug;
  }
  function enable(namespaces) {
    createDebug.save(namespaces);
    createDebug.namespaces = namespaces;
    createDebug.names = [];
    createDebug.skips = [];
    let i;
    const split = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/);
    const len = split.length;
    for (i = 0; i < len; i++) {
      if (!split[i]) {
        continue;
      }
      namespaces = split[i].replace(/\*/g, ".*?");
      if (namespaces[0] === "-") {
        createDebug.skips.push(new RegExp("^" + namespaces.slice(1) + "$"));
      } else {
        createDebug.names.push(new RegExp("^" + namespaces + "$"));
      }
    }
  }
  function disable() {
    const namespaces = [
      ...createDebug.names.map(toNamespace),
      ...createDebug.skips.map(toNamespace).map((namespace) => "-" + namespace)
    ].join(",");
    createDebug.enable("");
    return namespaces;
  }
  function enabled(name2) {
    if (name2[name2.length - 1] === "*") {
      return true;
    }
    let i;
    let len;
    for (i = 0, len = createDebug.skips.length; i < len; i++) {
      if (createDebug.skips[i].test(name2)) {
        return false;
      }
    }
    for (i = 0, len = createDebug.names.length; i < len; i++) {
      if (createDebug.names[i].test(name2)) {
        return true;
      }
    }
    return false;
  }
  function toNamespace(regexp) {
    return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, "*");
  }
  function coerce(val) {
    if (val instanceof Error) {
      return val.stack || val.message;
    }
    return val;
  }
  function destroy() {
    console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
  }
  createDebug.enable(createDebug.load());
  return createDebug;
}
var common = setup20;
(function(module, exports) {
  exports.formatArgs = formatArgs;
  exports.save = save;
  exports.load = load;
  exports.useColors = useColors;
  exports.storage = localstorage();
  exports.destroy = (() => {
    let warned2 = false;
    return () => {
      if (!warned2) {
        warned2 = true;
        console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
      }
    };
  })();
  exports.colors = [
    "#0000CC",
    "#0000FF",
    "#0033CC",
    "#0033FF",
    "#0066CC",
    "#0066FF",
    "#0099CC",
    "#0099FF",
    "#00CC00",
    "#00CC33",
    "#00CC66",
    "#00CC99",
    "#00CCCC",
    "#00CCFF",
    "#3300CC",
    "#3300FF",
    "#3333CC",
    "#3333FF",
    "#3366CC",
    "#3366FF",
    "#3399CC",
    "#3399FF",
    "#33CC00",
    "#33CC33",
    "#33CC66",
    "#33CC99",
    "#33CCCC",
    "#33CCFF",
    "#6600CC",
    "#6600FF",
    "#6633CC",
    "#6633FF",
    "#66CC00",
    "#66CC33",
    "#9900CC",
    "#9900FF",
    "#9933CC",
    "#9933FF",
    "#99CC00",
    "#99CC33",
    "#CC0000",
    "#CC0033",
    "#CC0066",
    "#CC0099",
    "#CC00CC",
    "#CC00FF",
    "#CC3300",
    "#CC3333",
    "#CC3366",
    "#CC3399",
    "#CC33CC",
    "#CC33FF",
    "#CC6600",
    "#CC6633",
    "#CC9900",
    "#CC9933",
    "#CCCC00",
    "#CCCC33",
    "#FF0000",
    "#FF0033",
    "#FF0066",
    "#FF0099",
    "#FF00CC",
    "#FF00FF",
    "#FF3300",
    "#FF3333",
    "#FF3366",
    "#FF3399",
    "#FF33CC",
    "#FF33FF",
    "#FF6600",
    "#FF6633",
    "#FF9900",
    "#FF9933",
    "#FFCC00",
    "#FFCC33"
  ];
  function useColors() {
    if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) {
      return true;
    }
    if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
      return false;
    }
    return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773
    typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?
    // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
    typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker
    typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
  }
  function formatArgs(args) {
    args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module.exports.humanize(this.diff);
    if (!this.useColors) {
      return;
    }
    const c2 = "color: " + this.color;
    args.splice(1, 0, c2, "color: inherit");
    let index2 = 0;
    let lastC = 0;
    args[0].replace(/%[a-zA-Z%]/g, (match3) => {
      if (match3 === "%%") {
        return;
      }
      index2++;
      if (match3 === "%c") {
        lastC = index2;
      }
    });
    args.splice(lastC, 0, c2);
  }
  exports.log = console.debug || console.log || (() => {
  });
  function save(namespaces) {
    try {
      if (namespaces) {
        exports.storage.setItem("debug", namespaces);
      } else {
        exports.storage.removeItem("debug");
      }
    } catch (error2) {
    }
  }
  function load() {
    let r2;
    try {
      r2 = exports.storage.getItem("debug");
    } catch (error2) {
    }
    if (!r2 && typeof process !== "undefined" && "env" in process) {
      r2 = { "CYPRESS_INTERNAL_ENV": "development", "NODE_ENV": "production" }.DEBUG;
    }
    return r2;
  }
  function localstorage() {
    try {
      return localStorage;
    } catch (error2) {
    }
  }
  module.exports = common(exports);
  const { formatters } = module.exports;
  formatters.j = function(v2) {
    try {
      return JSON.stringify(v2);
    } catch (error2) {
      return "[UnexpectedJSONParseError]: " + error2.message;
    }
  };
})(browser, browserExports);
const Debug = browserExports;
Object.defineProperty(url$1, "__esModule", { value: true });
url$1.url = void 0;
const parseuri$1 = parseuri$2;
const debug$7 = browserExports("socket.io-client:url");
function url(uri, path = "", loc) {
  let obj = uri;
  loc = loc || typeof location !== "undefined" && location;
  if (null == uri)
    uri = loc.protocol + "//" + loc.host;
  if (typeof uri === "string") {
    if ("/" === uri.charAt(0)) {
      if ("/" === uri.charAt(1)) {
        uri = loc.protocol + uri;
      } else {
        uri = loc.host + uri;
      }
    }
    if (!/^(https?|wss?):\/\//.test(uri)) {
      debug$7("protocol-less url %s", uri);
      if ("undefined" !== typeof loc) {
        uri = loc.protocol + "//" + uri;
      } else {
        uri = "https://" + uri;
      }
    }
    debug$7("parse %s", uri);
    obj = parseuri$1(uri);
  }
  if (!obj.port) {
    if (/^(http|ws)$/.test(obj.protocol)) {
      obj.port = "80";
    } else if (/^(http|ws)s$/.test(obj.protocol)) {
      obj.port = "443";
    }
  }
  obj.path = obj.path || "/";
  const ipv6 = obj.host.indexOf(":") !== -1;
  const host = ipv6 ? "[" + obj.host + "]" : obj.host;
  obj.id = obj.protocol + "://" + host + ":" + obj.port + path;
  obj.href = obj.protocol + "://" + host + (loc && loc.port === obj.port ? "" : ":" + obj.port);
  return obj;
}
url$1.url = url;
var manager = {};
var libExports = {};
var lib$3 = {
  get exports() {
    return libExports;
  },
  set exports(v2) {
    libExports = v2;
  }
};
var transports$1 = {};
var hasCorsExports = {};
var hasCors = {
  get exports() {
    return hasCorsExports;
  },
  set exports(v2) {
    hasCorsExports = v2;
  }
};
try {
  hasCors.exports = typeof XMLHttpRequest !== "undefined" && "withCredentials" in new XMLHttpRequest();
} catch (err) {
  hasCors.exports = false;
}
var globalThis_browser = (() => {
  if (typeof self !== "undefined") {
    return self;
  } else if (typeof window !== "undefined") {
    return window;
  } else {
    return Function("return this")();
  }
})();
const hasCORS = hasCorsExports;
const globalThis$4 = globalThis_browser;
var xmlhttprequest = function(opts) {
  const xdomain = opts.xdomain;
  const xscheme = opts.xscheme;
  const enablesXDR = opts.enablesXDR;
  try {
    if ("undefined" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {
      return new XMLHttpRequest();
    }
  } catch (e) {
  }
  try {
    if ("undefined" !== typeof XDomainRequest && !xscheme && enablesXDR) {
      return new XDomainRequest();
    }
  } catch (e) {
  }
  if (!xdomain) {
    try {
      return new globalThis$4[["Active"].concat("Object").join("X")](
        "Microsoft.XMLHTTP"
      );
    } catch (e) {
    }
  }
};
var pollingXhrExports = {};
var pollingXhr = {
  get exports() {
    return pollingXhrExports;
  },
  set exports(v2) {
    pollingXhrExports = v2;
  }
};
const PACKET_TYPES$1 = /* @__PURE__ */ Object.create(null);
PACKET_TYPES$1["open"] = "0";
PACKET_TYPES$1["close"] = "1";
PACKET_TYPES$1["ping"] = "2";
PACKET_TYPES$1["pong"] = "3";
PACKET_TYPES$1["message"] = "4";
PACKET_TYPES$1["upgrade"] = "5";
PACKET_TYPES$1["noop"] = "6";
const PACKET_TYPES_REVERSE$1 = /* @__PURE__ */ Object.create(null);
Object.keys(PACKET_TYPES$1).forEach((key) => {
  PACKET_TYPES_REVERSE$1[PACKET_TYPES$1[key]] = key;
});
const ERROR_PACKET$1 = { type: "error", data: "parser error" };
var commons = {
  PACKET_TYPES: PACKET_TYPES$1,
  PACKET_TYPES_REVERSE: PACKET_TYPES_REVERSE$1,
  ERROR_PACKET: ERROR_PACKET$1
};
const { PACKET_TYPES } = commons;
const withNativeBlob$1 = typeof Blob === "function" || typeof Blob !== "undefined" && Object.prototype.toString.call(Blob) === "[object BlobConstructor]";
const withNativeArrayBuffer$2 = typeof ArrayBuffer === "function";
function isArrayBuffer$1(obj) {
  return typeof obj === "object" && obj !== null && toString.call(obj) === "[object ArrayBuffer]";
}
const isView$1 = (obj) => {
  return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj && obj.buffer instanceof ArrayBuffer;
};
const encodePacket$1 = ({ type: type2, data }, supportsBinary, callback) => {
  if (withNativeBlob$1 && data instanceof Blob) {
    if (supportsBinary) {
      return callback(data);
    } else {
      return encodeBlobAsBase64(data, callback);
    }
  } else if (withNativeArrayBuffer$2 && (data instanceof ArrayBuffer || isArrayBuffer$1(data) || isView$1(data))) {
    if (supportsBinary) {
      return callback(data instanceof ArrayBuffer || isArrayBuffer$1(data) ? data : data.buffer);
    } else {
      return encodeBlobAsBase64(new Blob([data]), callback);
    }
  }
  return callback(PACKET_TYPES[type2] + (data || ""));
};
const encodeBlobAsBase64 = (data, callback) => {
  const fileReader = new FileReader();
  fileReader.onload = function() {
    const content = fileReader.result.split(",")[1];
    callback("b" + content);
  };
  return fileReader.readAsDataURL(data);
};
var encodePacket_browser = encodePacket$1;
var base64Arraybuffer = {};
var hasRequiredBase64Arraybuffer;
function requireBase64Arraybuffer() {
  if (hasRequiredBase64Arraybuffer)
    return base64Arraybuffer;
  hasRequiredBase64Arraybuffer = 1;
  (function(chars) {
    base64Arraybuffer.encode = function(arraybuffer) {
      var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = "";
      for (i = 0; i < len; i += 3) {
        base64 += chars[bytes[i] >> 2];
        base64 += chars[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];
        base64 += chars[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];
        base64 += chars[bytes[i + 2] & 63];
      }
      if (len % 3 === 2) {
        base64 = base64.substring(0, base64.length - 1) + "=";
      } else if (len % 3 === 1) {
        base64 = base64.substring(0, base64.length - 2) + "==";
      }
      return base64;
    };
    base64Arraybuffer.decode = function(base64) {
      var bufferLength = base64.length * 0.75, len = base64.length, i, p2 = 0, encoded1, encoded2, encoded3, encoded4;
      if (base64[base64.length - 1] === "=") {
        bufferLength--;
        if (base64[base64.length - 2] === "=") {
          bufferLength--;
        }
      }
      var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);
      for (i = 0; i < len; i += 4) {
        encoded1 = chars.indexOf(base64[i]);
        encoded2 = chars.indexOf(base64[i + 1]);
        encoded3 = chars.indexOf(base64[i + 2]);
        encoded4 = chars.indexOf(base64[i + 3]);
        bytes[p2++] = encoded1 << 2 | encoded2 >> 4;
        bytes[p2++] = (encoded2 & 15) << 4 | encoded3 >> 2;
        bytes[p2++] = (encoded3 & 3) << 6 | encoded4 & 63;
      }
      return arraybuffer;
    };
  })("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/");
  return base64Arraybuffer;
}
const { PACKET_TYPES_REVERSE, ERROR_PACKET } = commons;
const withNativeArrayBuffer$1 = typeof ArrayBuffer === "function";
let base64decoder;
if (withNativeArrayBuffer$1) {
  base64decoder = requireBase64Arraybuffer();
}
const decodePacket$1 = (encodedPacket, binaryType) => {
  if (typeof encodedPacket !== "string") {
    return {
      type: "message",
      data: mapBinary(encodedPacket, binaryType)
    };
  }
  const type2 = encodedPacket.charAt(0);
  if (type2 === "b") {
    return {
      type: "message",
      data: decodeBase64Packet(encodedPacket.substring(1), binaryType)
    };
  }
  const packetType = PACKET_TYPES_REVERSE[type2];
  if (!packetType) {
    return ERROR_PACKET;
  }
  return encodedPacket.length > 1 ? {
    type: PACKET_TYPES_REVERSE[type2],
    data: encodedPacket.substring(1)
  } : {
    type: PACKET_TYPES_REVERSE[type2]
  };
};
const decodeBase64Packet = (data, binaryType) => {
  if (base64decoder) {
    const decoded = base64decoder.decode(data);
    return mapBinary(decoded, binaryType);
  } else {
    return { base64: true, data };
  }
};
const mapBinary = (data, binaryType) => {
  switch (binaryType) {
    case "blob":
      return data instanceof ArrayBuffer ? new Blob([data]) : data;
    case "arraybuffer":
    default:
      return data;
  }
};
var decodePacket_browser = decodePacket$1;
const encodePacket = encodePacket_browser;
const decodePacket = decodePacket_browser;
const SEPARATOR = String.fromCharCode(30);
const encodePayload = (packets, callback) => {
  const length2 = packets.length;
  const encodedPackets = new Array(length2);
  let count = 0;
  packets.forEach((packet, i) => {
    encodePacket(packet, false, (encodedPacket) => {
      encodedPackets[i] = encodedPacket;
      if (++count === length2) {
        callback(encodedPackets.join(SEPARATOR));
      }
    });
  });
};
const decodePayload = (encodedPayload, binaryType) => {
  const encodedPackets = encodedPayload.split(SEPARATOR);
  const packets = [];
  for (let i = 0; i < encodedPackets.length; i++) {
    const decodedPacket = decodePacket(encodedPackets[i], binaryType);
    packets.push(decodedPacket);
    if (decodedPacket.type === "error") {
      break;
    }
  }
  return packets;
};
var lib$2 = {
  protocol: 4,
  encodePacket,
  encodePayload,
  decodePacket,
  decodePayload
};
var componentEmitterExports = {};
var componentEmitter = {
  get exports() {
    return componentEmitterExports;
  },
  set exports(v2) {
    componentEmitterExports = v2;
  }
};
(function(module) {
  {
    module.exports = Emitter2;
  }
  function Emitter2(obj) {
    if (obj)
      return mixin(obj);
  }
  function mixin(obj) {
    for (var key in Emitter2.prototype) {
      obj[key] = Emitter2.prototype[key];
    }
    return obj;
  }
  Emitter2.prototype.on = Emitter2.prototype.addEventListener = function(event, fn2) {
    this._callbacks = this._callbacks || {};
    (this._callbacks["$" + event] = this._callbacks["$" + event] || []).push(fn2);
    return this;
  };
  Emitter2.prototype.once = function(event, fn2) {
    function on2() {
      this.off(event, on2);
      fn2.apply(this, arguments);
    }
    on2.fn = fn2;
    this.on(event, on2);
    return this;
  };
  Emitter2.prototype.off = Emitter2.prototype.removeListener = Emitter2.prototype.removeAllListeners = Emitter2.prototype.removeEventListener = function(event, fn2) {
    this._callbacks = this._callbacks || {};
    if (0 == arguments.length) {
      this._callbacks = {};
      return this;
    }
    var callbacks2 = this._callbacks["$" + event];
    if (!callbacks2)
      return this;
    if (1 == arguments.length) {
      delete this._callbacks["$" + event];
      return this;
    }
    var cb;
    for (var i = 0; i < callbacks2.length; i++) {
      cb = callbacks2[i];
      if (cb === fn2 || cb.fn === fn2) {
        callbacks2.splice(i, 1);
        break;
      }
    }
    if (callbacks2.length === 0) {
      delete this._callbacks["$" + event];
    }
    return this;
  };
  Emitter2.prototype.emit = function(event) {
    this._callbacks = this._callbacks || {};
    var args = new Array(arguments.length - 1), callbacks2 = this._callbacks["$" + event];
    for (var i = 1; i < arguments.length; i++) {
      args[i - 1] = arguments[i];
    }
    if (callbacks2) {
      callbacks2 = callbacks2.slice(0);
      for (var i = 0, len = callbacks2.length; i < len; ++i) {
        callbacks2[i].apply(this, args);
      }
    }
    return this;
  };
  Emitter2.prototype.listeners = function(event) {
    this._callbacks = this._callbacks || {};
    return this._callbacks["$" + event] || [];
  };
  Emitter2.prototype.hasListeners = function(event) {
    return !!this.listeners(event).length;
  };
})(componentEmitter);
const parser$4 = lib$2;
const Emitter$3 = componentEmitterExports;
const debug$6 = browserExports("engine.io-client:transport");
let Transport$2 = class Transport extends Emitter$3 {
  /**
   * Transport abstract constructor.
   *
   * @param {Object} options.
   * @api private
   */
  constructor(opts) {
    super();
    this.opts = opts;
    this.query = opts.query;
    this.readyState = "";
    this.socket = opts.socket;
  }
  /**
   * Emits an error.
   *
   * @param {String} str
   * @return {Transport} for chaining
   * @api public
   */
  onError(msg, desc) {
    const err = new Error(msg);
    err.type = "TransportError";
    err.description = desc;
    this.emit("error", err);
    return this;
  }
  /**
   * Opens the transport.
   *
   * @api public
   */
  open() {
    if ("closed" === this.readyState || "" === this.readyState) {
      this.readyState = "opening";
      this.doOpen();
    }
    return this;
  }
  /**
   * Closes the transport.
   *
   * @api private
   */
  close() {
    if ("opening" === this.readyState || "open" === this.readyState) {
      this.doClose();
      this.onClose();
    }
    return this;
  }
  /**
   * Sends multiple packets.
   *
   * @param {Array} packets
   * @api private
   */
  send(packets) {
    if ("open" === this.readyState) {
      this.write(packets);
    } else {
      debug$6("transport is not open, discarding packets");
    }
  }
  /**
   * Called upon open
   *
   * @api private
   */
  onOpen() {
    this.readyState = "open";
    this.writable = true;
    this.emit("open");
  }
  /**
   * Called with data.
   *
   * @param {String} data
   * @api private
   */
  onData(data) {
    const packet = parser$4.decodePacket(data, this.socket.binaryType);
    this.onPacket(packet);
  }
  /**
   * Called with a decoded packet.
   */
  onPacket(packet) {
    this.emit("packet", packet);
  }
  /**
   * Called upon close.
   *
   * @api private
   */
  onClose() {
    this.readyState = "closed";
    this.emit("close");
  }
};
var transport = Transport$2;
var parseqs$3 = {};
parseqs$3.encode = function(obj) {
  var str = "";
  for (var i in obj) {
    if (obj.hasOwnProperty(i)) {
      if (str.length)
        str += "&";
      str += encodeURIComponent(i) + "=" + encodeURIComponent(obj[i]);
    }
  }
  return str;
};
parseqs$3.decode = function(qs) {
  var qry = {};
  var pairs = qs.split("&");
  for (var i = 0, l2 = pairs.length; i < l2; i++) {
    var pair = pairs[i].split("=");
    qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
  }
  return qry;
};
var alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""), length = 64, map$2 = {}, seed = 0, i$1 = 0, prev;
function encode$3(num2) {
  var encoded = "";
  do {
    encoded = alphabet[num2 % length] + encoded;
    num2 = Math.floor(num2 / length);
  } while (num2 > 0);
  return encoded;
}
function decode$3(str) {
  var decoded = 0;
  for (i$1 = 0; i$1 < str.length; i$1++) {
    decoded = decoded * length + map$2[str.charAt(i$1)];
  }
  return decoded;
}
function yeast$2() {
  var now2 = encode$3(+/* @__PURE__ */ new Date());
  if (now2 !== prev)
    return seed = 0, prev = now2;
  return now2 + "." + encode$3(seed++);
}
for (; i$1 < length; i$1++)
  map$2[alphabet[i$1]] = i$1;
yeast$2.encode = encode$3;
yeast$2.decode = decode$3;
var yeast_1 = yeast$2;
const Transport$1 = transport;
const parseqs$2 = parseqs$3;
const parser$3 = lib$2;
const yeast$1 = yeast_1;
const debug$5 = browserExports("engine.io-client:polling");
let Polling$2 = class Polling extends Transport$1 {
  /**
   * Transport name.
   */
  get name() {
    return "polling";
  }
  /**
   * Opens the socket (triggers polling). We write a PING message to determine
   * when the transport is open.
   *
   * @api private
   */
  doOpen() {
    this.poll();
  }
  /**
   * Pauses polling.
   *
   * @param {Function} callback upon buffers are flushed and transport is paused
   * @api private
   */
  pause(onPause) {
    const self2 = this;
    this.readyState = "pausing";
    function pause() {
      debug$5("paused");
      self2.readyState = "paused";
      onPause();
    }
    if (this.polling || !this.writable) {
      let total = 0;
      if (this.polling) {
        debug$5("we are currently polling - waiting to pause");
        total++;
        this.once("pollComplete", function() {
          debug$5("pre-pause polling complete");
          --total || pause();
        });
      }
      if (!this.writable) {
        debug$5("we are currently writing - waiting to pause");
        total++;
        this.once("drain", function() {
          debug$5("pre-pause writing complete");
          --total || pause();
        });
      }
    } else {
      pause();
    }
  }
  /**
   * Starts polling cycle.
   *
   * @api public
   */
  poll() {
    debug$5("polling");
    this.polling = true;
    this.doPoll();
    this.emit("poll");
  }
  /**
   * Overloads onData to detect payloads.
   *
   * @api private
   */
  onData(data) {
    const self2 = this;
    debug$5("polling got data %s", data);
    const callback = function(packet, index2, total) {
      if ("opening" === self2.readyState && packet.type === "open") {
        self2.onOpen();
      }
      if ("close" === packet.type) {
        self2.onClose();
        return false;
      }
      self2.onPacket(packet);
    };
    parser$3.decodePayload(data, this.socket.binaryType).forEach(callback);
    if ("closed" !== this.readyState) {
      this.polling = false;
      this.emit("pollComplete");
      if ("open" === this.readyState) {
        this.poll();
      } else {
        debug$5('ignoring poll - transport state "%s"', this.readyState);
      }
    }
  }
  /**
   * For polling, send a close packet.
   *
   * @api private
   */
  doClose() {
    const self2 = this;
    function close() {
      debug$5("writing close packet");
      self2.write([{ type: "close" }]);
    }
    if ("open" === this.readyState) {
      debug$5("transport open - closing");
      close();
    } else {
      debug$5("transport not open - deferring close");
      this.once("open", close);
    }
  }
  /**
   * Writes a packets payload.
   *
   * @param {Array} data packets
   * @param {Function} drain callback
   * @api private
   */
  write(packets) {
    this.writable = false;
    parser$3.encodePayload(packets, (data) => {
      this.doWrite(data, () => {
        this.writable = true;
        this.emit("drain");
      });
    });
  }
  /**
   * Generates uri for connection.
   *
   * @api private
   */
  uri() {
    let query2 = this.query || {};
    const schema = this.opts.secure ? "https" : "http";
    let port = "";
    if (false !== this.opts.timestampRequests) {
      query2[this.opts.timestampParam] = yeast$1();
    }
    if (!this.supportsBinary && !query2.sid) {
      query2.b64 = 1;
    }
    query2 = parseqs$2.encode(query2);
    if (this.opts.port && ("https" === schema && Number(this.opts.port) !== 443 || "http" === schema && Number(this.opts.port) !== 80)) {
      port = ":" + this.opts.port;
    }
    if (query2.length) {
      query2 = "?" + query2;
    }
    const ipv6 = this.opts.hostname.indexOf(":") !== -1;
    return schema + "://" + (ipv6 ? "[" + this.opts.hostname + "]" : this.opts.hostname) + port + this.opts.path + query2;
  }
};
var polling$1 = Polling$2;
var util = {};
util.pick = (obj, ...attr) => {
  return attr.reduce((acc, k2) => {
    if (obj.hasOwnProperty(k2)) {
      acc[k2] = obj[k2];
    }
    return acc;
  }, {});
};
const XMLHttpRequest$2 = xmlhttprequest;
const Polling$1 = polling$1;
const Emitter$2 = componentEmitterExports;
const { pick: pick$1 } = util;
const globalThis$3 = globalThis_browser;
const debug$4 = browserExports("engine.io-client:polling-xhr");
function empty$2() {
}
const hasXHR2 = function() {
  const xhr = new XMLHttpRequest$2({ xdomain: false });
  return null != xhr.responseType;
}();
let XHR$1 = class XHR extends Polling$1 {
  /**
   * XHR Polling constructor.
   *
   * @param {Object} opts
   * @api public
   */
  constructor(opts) {
    super(opts);
    if (typeof location !== "undefined") {
      const isSSL = "https:" === location.protocol;
      let port = location.port;
      if (!port) {
        port = isSSL ? 443 : 80;
      }
      this.xd = typeof location !== "undefined" && opts.hostname !== location.hostname || port !== opts.port;
      this.xs = opts.secure !== isSSL;
    }
    const forceBase64 = opts && opts.forceBase64;
    this.supportsBinary = hasXHR2 && !forceBase64;
  }
  /**
   * Creates a request.
   *
   * @param {String} method
   * @api private
   */
  request(opts = {}) {
    Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);
    return new Request(this.uri(), opts);
  }
  /**
   * Sends data.
   *
   * @param {String} data to send.
   * @param {Function} called upon flush.
   * @api private
   */
  doWrite(data, fn2) {
    const req = this.request({
      method: "POST",
      data
    });
    const self2 = this;
    req.on("success", fn2);
    req.on("error", function(err) {
      self2.onError("xhr post error", err);
    });
  }
  /**
   * Starts a poll cycle.
   *
   * @api private
   */
  doPoll() {
    debug$4("xhr poll");
    const req = this.request();
    const self2 = this;
    req.on("data", function(data) {
      self2.onData(data);
    });
    req.on("error", function(err) {
      self2.onError("xhr poll error", err);
    });
    this.pollXhr = req;
  }
};
class Request extends Emitter$2 {
  /**
   * Request constructor
   *
   * @param {Object} options
   * @api public
   */
  constructor(uri, opts) {
    super();
    this.opts = opts;
    this.method = opts.method || "GET";
    this.uri = uri;
    this.async = false !== opts.async;
    this.data = void 0 !== opts.data ? opts.data : null;
    this.create();
  }
  /**
   * Creates the XHR object and sends the request.
   *
   * @api private
   */
  create() {
    const opts = pick$1(
      this.opts,
      "agent",
      "enablesXDR",
      "pfx",
      "key",
      "passphrase",
      "cert",
      "ca",
      "ciphers",
      "rejectUnauthorized",
      "autoUnref"
    );
    opts.xdomain = !!this.opts.xd;
    opts.xscheme = !!this.opts.xs;
    const xhr = this.xhr = new XMLHttpRequest$2(opts);
    const self2 = this;
    try {
      debug$4("xhr open %s: %s", this.method, this.uri);
      xhr.open(this.method, this.uri, this.async);
      try {
        if (this.opts.extraHeaders) {
          xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);
          for (let i in this.opts.extraHeaders) {
            if (this.opts.extraHeaders.hasOwnProperty(i)) {
              xhr.setRequestHeader(i, this.opts.extraHeaders[i]);
            }
          }
        }
      } catch (e) {
      }
      if ("POST" === this.method) {
        try {
          xhr.setRequestHeader("Content-type", "text/plain;charset=UTF-8");
        } catch (e) {
        }
      }
      try {
        xhr.setRequestHeader("Accept", "*/*");
      } catch (e) {
      }
      if ("withCredentials" in xhr) {
        xhr.withCredentials = this.opts.withCredentials;
      }
      if (this.opts.requestTimeout) {
        xhr.timeout = this.opts.requestTimeout;
      }
      if (this.hasXDR()) {
        xhr.onload = function() {
          self2.onLoad();
        };
        xhr.onerror = function() {
          self2.onError(xhr.responseText);
        };
      } else {
        xhr.onreadystatechange = function() {
          if (4 !== xhr.readyState)
            return;
          if (200 === xhr.status || 1223 === xhr.status) {
            self2.onLoad();
          } else {
            setTimeout(function() {
              self2.onError(typeof xhr.status === "number" ? xhr.status : 0);
            }, 0);
          }
        };
      }
      debug$4("xhr data %s", this.data);
      xhr.send(this.data);
    } catch (e) {
      setTimeout(function() {
        self2.onError(e);
      }, 0);
      return;
    }
    if (typeof document !== "undefined") {
      this.index = Request.requestsCount++;
      Request.requests[this.index] = this;
    }
  }
  /**
   * Called upon successful response.
   *
   * @api private
   */
  onSuccess() {
    this.emit("success");
    this.cleanup();
  }
  /**
   * Called if we have data.
   *
   * @api private
   */
  onData(data) {
    this.emit("data", data);
    this.onSuccess();
  }
  /**
   * Called upon error.
   *
   * @api private
   */
  onError(err) {
    this.emit("error", err);
    this.cleanup(true);
  }
  /**
   * Cleans up house.
   *
   * @api private
   */
  cleanup(fromError) {
    if ("undefined" === typeof this.xhr || null === this.xhr) {
      return;
    }
    if (this.hasXDR()) {
      this.xhr.onload = this.xhr.onerror = empty$2;
    } else {
      this.xhr.onreadystatechange = empty$2;
    }
    if (fromError) {
      try {
        this.xhr.abort();
      } catch (e) {
      }
    }
    if (typeof document !== "undefined") {
      delete Request.requests[this.index];
    }
    this.xhr = null;
  }
  /**
   * Called upon load.
   *
   * @api private
   */
  onLoad() {
    const data = this.xhr.responseText;
    if (data !== null) {
      this.onData(data);
    }
  }
  /**
   * Check if it has XDomainRequest.
   *
   * @api private
   */
  hasXDR() {
    return typeof XDomainRequest !== "undefined" && !this.xs && this.enablesXDR;
  }
  /**
   * Aborts the request.
   *
   * @api public
   */
  abort() {
    this.cleanup();
  }
}
Request.requestsCount = 0;
Request.requests = {};
if (typeof document !== "undefined") {
  if (typeof attachEvent === "function") {
    attachEvent("onunload", unloadHandler);
  } else if (typeof addEventListener === "function") {
    const terminationEvent = "onpagehide" in globalThis$3 ? "pagehide" : "unload";
    addEventListener(terminationEvent, unloadHandler, false);
  }
}
function unloadHandler() {
  for (let i in Request.requests) {
    if (Request.requests.hasOwnProperty(i)) {
      Request.requests[i].abort();
    }
  }
}
pollingXhr.exports = XHR$1;
pollingXhrExports.Request = Request;
const Polling2 = polling$1;
const globalThis$2 = globalThis_browser;
const rNewline = /\n/g;
const rEscapedNewline = /\\n/g;
let callbacks;
class JSONPPolling extends Polling2 {
  /**
   * JSONP Polling constructor.
   *
   * @param {Object} opts.
   * @api public
   */
  constructor(opts) {
    super(opts);
    this.query = this.query || {};
    if (!callbacks) {
      callbacks = globalThis$2.___eio = globalThis$2.___eio || [];
    }
    this.index = callbacks.length;
    const self2 = this;
    callbacks.push(function(msg) {
      self2.onData(msg);
    });
    this.query.j = this.index;
  }
  /**
   * JSONP only supports binary as base64 encoded strings
   */
  get supportsBinary() {
    return false;
  }
  /**
   * Closes the socket.
   *
   * @api private
   */
  doClose() {
    if (this.script) {
      this.script.onerror = () => {
      };
      this.script.parentNode.removeChild(this.script);
      this.script = null;
    }
    if (this.form) {
      this.form.parentNode.removeChild(this.form);
      this.form = null;
      this.iframe = null;
    }
    super.doClose();
  }
  /**
   * Starts a poll cycle.
   *
   * @api private
   */
  doPoll() {
    const self2 = this;
    const script2 = document.createElement("script");
    if (this.script) {
      this.script.parentNode.removeChild(this.script);
      this.script = null;
    }
    script2.async = true;
    script2.src = this.uri();
    script2.onerror = function(e) {
      self2.onError("jsonp poll error", e);
    };
    const insertAt = document.getElementsByTagName("script")[0];
    if (insertAt) {
      insertAt.parentNode.insertBefore(script2, insertAt);
    } else {
      (document.head || document.body).appendChild(script2);
    }
    this.script = script2;
    const isUAgecko = "undefined" !== typeof navigator && /gecko/i.test(navigator.userAgent);
    if (isUAgecko) {
      setTimeout(function() {
        const iframe = document.createElement("iframe");
        document.body.appendChild(iframe);
        document.body.removeChild(iframe);
      }, 100);
    }
  }
  /**
   * Writes with a hidden iframe.
   *
   * @param {String} data to send
   * @param {Function} called upon flush.
   * @api private
   */
  doWrite(data, fn2) {
    const self2 = this;
    let iframe;
    if (!this.form) {
      const form = document.createElement("form");
      const area = document.createElement("textarea");
      const id2 = this.iframeId = "eio_iframe_" + this.index;
      form.className = "socketio";
      form.style.position = "absolute";
      form.style.top = "-1000px";
      form.style.left = "-1000px";
      form.target = id2;
      form.method = "POST";
      form.setAttribute("accept-charset", "utf-8");
      area.name = "d";
      form.appendChild(area);
      document.body.appendChild(form);
      this.form = form;
      this.area = area;
    }
    this.form.action = this.uri();
    function complete() {
      initIframe();
      fn2();
    }
    function initIframe() {
      if (self2.iframe) {
        try {
          self2.form.removeChild(self2.iframe);
        } catch (e) {
          self2.onError("jsonp polling iframe removal error", e);
        }
      }
      try {
        const html = '<iframe src="javascript:0" name="' + self2.iframeId + '">';
        iframe = document.createElement(html);
      } catch (e) {
        iframe = document.createElement("iframe");
        iframe.name = self2.iframeId;
        iframe.src = "javascript:0";
      }
      iframe.id = self2.iframeId;
      self2.form.appendChild(iframe);
      self2.iframe = iframe;
    }
    initIframe();
    data = data.replace(rEscapedNewline, "\\\n");
    this.area.value = data.replace(rNewline, "\\n");
    try {
      this.form.submit();
    } catch (e) {
    }
    if (this.iframe.attachEvent) {
      this.iframe.onreadystatechange = function() {
        if (self2.iframe.readyState === "complete") {
          complete();
        }
      };
    } else {
      this.iframe.onload = complete;
    }
  }
}
var pollingJsonp = JSONPPolling;
const globalThis$1 = globalThis_browser;
var websocketConstructor_browser = {
  WebSocket: globalThis$1.WebSocket || globalThis$1.MozWebSocket,
  usingBrowserWebSocket: true,
  defaultBinaryType: "arraybuffer"
};
const Transport2 = transport;
const parser$2 = lib$2;
const parseqs$1 = parseqs$3;
const yeast = yeast_1;
const { pick } = util;
const {
  WebSocket: WebSocket$1,
  usingBrowserWebSocket,
  defaultBinaryType
} = websocketConstructor_browser;
const debug$3 = browserExports("engine.io-client:websocket");
const isReactNative = typeof navigator !== "undefined" && typeof navigator.product === "string" && navigator.product.toLowerCase() === "reactnative";
class WS extends Transport2 {
  /**
   * WebSocket transport constructor.
   *
   * @api {Object} connection options
   * @api public
   */
  constructor(opts) {
    super(opts);
    this.supportsBinary = !opts.forceBase64;
  }
  /**
   * Transport name.
   *
   * @api public
   */
  get name() {
    return "websocket";
  }
  /**
   * Opens socket.
   *
   * @api private
   */
  doOpen() {
    if (!this.check()) {
      return;
    }
    const uri = this.uri();
    const protocols = this.opts.protocols;
    const opts = isReactNative ? {} : pick(
      this.opts,
      "agent",
      "perMessageDeflate",
      "pfx",
      "key",
      "passphrase",
      "cert",
      "ca",
      "ciphers",
      "rejectUnauthorized",
      "localAddress",
      "protocolVersion",
      "origin",
      "maxPayload",
      "family",
      "checkServerIdentity"
    );
    if (this.opts.extraHeaders) {
      opts.headers = this.opts.extraHeaders;
    }
    try {
      this.ws = usingBrowserWebSocket && !isReactNative ? protocols ? new WebSocket$1(uri, protocols) : new WebSocket$1(uri) : new WebSocket$1(uri, protocols, opts);
    } catch (err) {
      return this.emit("error", err);
    }
    this.ws.binaryType = this.socket.binaryType || defaultBinaryType;
    this.addEventListeners();
  }
  /**
   * Adds event listeners to the socket
   *
   * @api private
   */
  addEventListeners() {
    this.ws.onopen = () => {
      if (this.opts.autoUnref) {
        this.ws._socket.unref();
      }
      this.onOpen();
    };
    this.ws.onclose = this.onClose.bind(this);
    this.ws.onmessage = (ev) => this.onData(ev.data);
    this.ws.onerror = (e) => this.onError("websocket error", e);
  }
  /**
   * Writes data to socket.
   *
   * @param {Array} array of packets.
   * @api private
   */
  write(packets) {
    const self2 = this;
    this.writable = false;
    let total = packets.length;
    let i = 0;
    const l2 = total;
    for (; i < l2; i++) {
      (function(packet) {
        parser$2.encodePacket(packet, self2.supportsBinary, function(data) {
          const opts = {};
          if (!usingBrowserWebSocket) {
            if (packet.options) {
              opts.compress = packet.options.compress;
            }
            if (self2.opts.perMessageDeflate) {
              const len = "string" === typeof data ? Buffer.byteLength(data) : data.length;
              if (len < self2.opts.perMessageDeflate.threshold) {
                opts.compress = false;
              }
            }
          }
          try {
            if (usingBrowserWebSocket) {
              self2.ws.send(data);
            } else {
              self2.ws.send(data, opts);
            }
          } catch (e) {
            debug$3("websocket closed before onclose event");
          }
          --total || done();
        });
      })(packets[i]);
    }
    function done() {
      self2.emit("flush");
      setTimeout(function() {
        self2.writable = true;
        self2.emit("drain");
      }, 0);
    }
  }
  /**
   * Called upon close
   *
   * @api private
   */
  onClose() {
    Transport2.prototype.onClose.call(this);
  }
  /**
   * Closes socket.
   *
   * @api private
   */
  doClose() {
    if (typeof this.ws !== "undefined") {
      this.ws.close();
      this.ws = null;
    }
  }
  /**
   * Generates uri for connection.
   *
   * @api private
   */
  uri() {
    let query2 = this.query || {};
    const schema = this.opts.secure ? "wss" : "ws";
    let port = "";
    if (this.opts.port && ("wss" === schema && Number(this.opts.port) !== 443 || "ws" === schema && Number(this.opts.port) !== 80)) {
      port = ":" + this.opts.port;
    }
    if (this.opts.timestampRequests) {
      query2[this.opts.timestampParam] = yeast();
    }
    if (!this.supportsBinary) {
      query2.b64 = 1;
    }
    query2 = parseqs$1.encode(query2);
    if (query2.length) {
      query2 = "?" + query2;
    }
    const ipv6 = this.opts.hostname.indexOf(":") !== -1;
    return schema + "://" + (ipv6 ? "[" + this.opts.hostname + "]" : this.opts.hostname) + port + this.opts.path + query2;
  }
  /**
   * Feature detection for WebSocket.
   *
   * @return {Boolean} whether this transport is available.
   * @api public
   */
  check() {
    return !!WebSocket$1 && !("__initialize" in WebSocket$1 && this.name === WS.prototype.name);
  }
}
var websocket$1 = WS;
const XMLHttpRequest$1 = xmlhttprequest;
const XHR2 = pollingXhrExports;
const JSONP = pollingJsonp;
const websocket = websocket$1;
transports$1.polling = polling;
transports$1.websocket = websocket;
function polling(opts) {
  let xhr;
  let xd = false;
  let xs = false;
  const jsonp = false !== opts.jsonp;
  if (typeof location !== "undefined") {
    const isSSL = "https:" === location.protocol;
    let port = location.port;
    if (!port) {
      port = isSSL ? 443 : 80;
    }
    xd = opts.hostname !== location.hostname || port !== opts.port;
    xs = opts.secure !== isSSL;
  }
  opts.xdomain = xd;
  opts.xscheme = xs;
  xhr = new XMLHttpRequest$1(opts);
  if ("open" in xhr && !opts.forceJSONP) {
    return new XHR2(opts);
  } else {
    if (!jsonp)
      throw new Error("JSONP disabled");
    return new JSONP(opts);
  }
}
const transports = transports$1;
const Emitter$1 = componentEmitterExports;
const debug$2 = browserExports("engine.io-client:socket");
const parser$1 = lib$2;
const parseuri2 = parseuri$2;
const parseqs = parseqs$3;
let Socket$2 = class Socket extends Emitter$1 {
  /**
   * Socket constructor.
   *
   * @param {String|Object} uri or options
   * @param {Object} options
   * @api public
   */
  constructor(uri, opts = {}) {
    super();
    if (uri && "object" === typeof uri) {
      opts = uri;
      uri = null;
    }
    if (uri) {
      uri = parseuri2(uri);
      opts.hostname = uri.host;
      opts.secure = uri.protocol === "https" || uri.protocol === "wss";
      opts.port = uri.port;
      if (uri.query)
        opts.query = uri.query;
    } else if (opts.host) {
      opts.hostname = parseuri2(opts.host).host;
    }
    this.secure = null != opts.secure ? opts.secure : typeof location !== "undefined" && "https:" === location.protocol;
    if (opts.hostname && !opts.port) {
      opts.port = this.secure ? "443" : "80";
    }
    this.hostname = opts.hostname || (typeof location !== "undefined" ? location.hostname : "localhost");
    this.port = opts.port || (typeof location !== "undefined" && location.port ? location.port : this.secure ? 443 : 80);
    this.transports = opts.transports || ["polling", "websocket"];
    this.readyState = "";
    this.writeBuffer = [];
    this.prevBufferLen = 0;
    this.opts = Object.assign(
      {
        path: "/engine.io",
        agent: false,
        withCredentials: false,
        upgrade: true,
        jsonp: true,
        timestampParam: "t",
        rememberUpgrade: false,
        rejectUnauthorized: true,
        perMessageDeflate: {
          threshold: 1024
        },
        transportOptions: {}
      },
      opts
    );
    this.opts.path = this.opts.path.replace(/\/$/, "") + "/";
    if (typeof this.opts.query === "string") {
      this.opts.query = parseqs.decode(this.opts.query);
    }
    this.id = null;
    this.upgrades = null;
    this.pingInterval = null;
    this.pingTimeout = null;
    this.pingTimeoutTimer = null;
    if (typeof addEventListener === "function") {
      addEventListener(
        "beforeunload",
        () => {
          if (this.transport) {
            this.transport.removeAllListeners();
            this.transport.close();
          }
        },
        false
      );
      if (this.hostname !== "localhost") {
        this.offlineEventListener = () => {
          this.onClose("transport close");
        };
        addEventListener("offline", this.offlineEventListener, false);
      }
    }
    this.open();
  }
  /**
   * Creates transport of the given type.
   *
   * @param {String} transport name
   * @return {Transport}
   * @api private
   */
  createTransport(name2) {
    debug$2('creating transport "%s"', name2);
    const query2 = clone(this.opts.query);
    query2.EIO = parser$1.protocol;
    query2.transport = name2;
    if (this.id)
      query2.sid = this.id;
    const opts = Object.assign(
      {},
      this.opts.transportOptions[name2],
      this.opts,
      {
        query: query2,
        socket: this,
        hostname: this.hostname,
        secure: this.secure,
        port: this.port
      }
    );
    debug$2("options: %j", opts);
    return new transports[name2](opts);
  }
  /**
   * Initializes transport to use and starts probe.
   *
   * @api private
   */
  open() {
    let transport2;
    if (this.opts.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf("websocket") !== -1) {
      transport2 = "websocket";
    } else if (0 === this.transports.length) {
      const self2 = this;
      setTimeout(function() {
        self2.emit("error", "No transports available");
      }, 0);
      return;
    } else {
      transport2 = this.transports[0];
    }
    this.readyState = "opening";
    try {
      transport2 = this.createTransport(transport2);
    } catch (e) {
      debug$2("error while creating transport: %s", e);
      this.transports.shift();
      this.open();
      return;
    }
    transport2.open();
    this.setTransport(transport2);
  }
  /**
   * Sets the current transport. Disables the existing one (if any).
   *
   * @api private
   */
  setTransport(transport2) {
    debug$2("setting transport %s", transport2.name);
    const self2 = this;
    if (this.transport) {
      debug$2("clearing existing transport %s", this.transport.name);
      this.transport.removeAllListeners();
    }
    this.transport = transport2;
    transport2.on("drain", function() {
      self2.onDrain();
    }).on("packet", function(packet) {
      self2.onPacket(packet);
    }).on("error", function(e) {
      self2.onError(e);
    }).on("close", function() {
      self2.onClose("transport close");
    });
  }
  /**
   * Probes a transport.
   *
   * @param {String} transport name
   * @api private
   */
  probe(name2) {
    debug$2('probing transport "%s"', name2);
    let transport2 = this.createTransport(name2, { probe: 1 });
    let failed = false;
    const self2 = this;
    Socket.priorWebsocketSuccess = false;
    function onTransportOpen() {
      if (self2.onlyBinaryUpgrades) {
        const upgradeLosesBinary = !this.supportsBinary && self2.transport.supportsBinary;
        failed = failed || upgradeLosesBinary;
      }
      if (failed)
        return;
      debug$2('probe transport "%s" opened', name2);
      transport2.send([{ type: "ping", data: "probe" }]);
      transport2.once("packet", function(msg) {
        if (failed)
          return;
        if ("pong" === msg.type && "probe" === msg.data) {
          debug$2('probe transport "%s" pong', name2);
          self2.upgrading = true;
          self2.emit("upgrading", transport2);
          if (!transport2)
            return;
          Socket.priorWebsocketSuccess = "websocket" === transport2.name;
          debug$2('pausing current transport "%s"', self2.transport.name);
          self2.transport.pause(function() {
            if (failed)
              return;
            if ("closed" === self2.readyState)
              return;
            debug$2("changing transport and sending upgrade packet");
            cleanup();
            self2.setTransport(transport2);
            transport2.send([{ type: "upgrade" }]);
            self2.emit("upgrade", transport2);
            transport2 = null;
            self2.upgrading = false;
            self2.flush();
          });
        } else {
          debug$2('probe transport "%s" failed', name2);
          const err = new Error("probe error");
          err.transport = transport2.name;
          self2.emit("upgradeError", err);
        }
      });
    }
    function freezeTransport() {
      if (failed)
        return;
      failed = true;
      cleanup();
      transport2.close();
      transport2 = null;
    }
    function onerror(err) {
      const error2 = new Error("probe error: " + err);
      error2.transport = transport2.name;
      freezeTransport();
      debug$2('probe transport "%s" failed because of error: %s', name2, err);
      self2.emit("upgradeError", error2);
    }
    function onTransportClose() {
      onerror("transport closed");
    }
    function onclose() {
      onerror("socket closed");
    }
    function onupgrade(to2) {
      if (transport2 && to2.name !== transport2.name) {
        debug$2('"%s" works - aborting "%s"', to2.name, transport2.name);
        freezeTransport();
      }
    }
    function cleanup() {
      transport2.removeListener("open", onTransportOpen);
      transport2.removeListener("error", onerror);
      transport2.removeListener("close", onTransportClose);
      self2.removeListener("close", onclose);
      self2.removeListener("upgrading", onupgrade);
    }
    transport2.once("open", onTransportOpen);
    transport2.once("error", onerror);
    transport2.once("close", onTransportClose);
    this.once("close", onclose);
    this.once("upgrading", onupgrade);
    transport2.open();
  }
  /**
   * Called when connection is deemed open.
   *
   * @api public
   */
  onOpen() {
    debug$2("socket open");
    this.readyState = "open";
    Socket.priorWebsocketSuccess = "websocket" === this.transport.name;
    this.emit("open");
    this.flush();
    if ("open" === this.readyState && this.opts.upgrade && this.transport.pause) {
      debug$2("starting upgrade probes");
      let i = 0;
      const l2 = this.upgrades.length;
      for (; i < l2; i++) {
        this.probe(this.upgrades[i]);
      }
    }
  }
  /**
   * Handles a packet.
   *
   * @api private
   */
  onPacket(packet) {
    if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) {
      debug$2('socket receive: type "%s", data "%s"', packet.type, packet.data);
      this.emit("packet", packet);
      this.emit("heartbeat");
      switch (packet.type) {
        case "open":
          this.onHandshake(JSON.parse(packet.data));
          break;
        case "ping":
          this.resetPingTimeout();
          this.sendPacket("pong");
          this.emit("pong");
          break;
        case "error":
          const err = new Error("server error");
          err.code = packet.data;
          this.onError(err);
          break;
        case "message":
          this.emit("data", packet.data);
          this.emit("message", packet.data);
          break;
      }
    } else {
      debug$2('packet received with socket readyState "%s"', this.readyState);
    }
  }
  /**
   * Called upon handshake completion.
   *
   * @param {Object} handshake obj
   * @api private
   */
  onHandshake(data) {
    this.emit("handshake", data);
    this.id = data.sid;
    this.transport.query.sid = data.sid;
    this.upgrades = this.filterUpgrades(data.upgrades);
    this.pingInterval = data.pingInterval;
    this.pingTimeout = data.pingTimeout;
    this.onOpen();
    if ("closed" === this.readyState)
      return;
    this.resetPingTimeout();
  }
  /**
   * Sets and resets ping timeout timer based on server pings.
   *
   * @api private
   */
  resetPingTimeout() {
    clearTimeout(this.pingTimeoutTimer);
    this.pingTimeoutTimer = setTimeout(() => {
      this.onClose("ping timeout");
    }, this.pingInterval + this.pingTimeout);
    if (this.opts.autoUnref) {
      this.pingTimeoutTimer.unref();
    }
  }
  /**
   * Called on `drain` event
   *
   * @api private
   */
  onDrain() {
    this.writeBuffer.splice(0, this.prevBufferLen);
    this.prevBufferLen = 0;
    if (0 === this.writeBuffer.length) {
      this.emit("drain");
    } else {
      this.flush();
    }
  }
  /**
   * Flush write buffers.
   *
   * @api private
   */
  flush() {
    if ("closed" !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length) {
      debug$2("flushing %d packets in socket", this.writeBuffer.length);
      this.transport.send(this.writeBuffer);
      this.prevBufferLen = this.writeBuffer.length;
      this.emit("flush");
    }
  }
  /**
   * Sends a message.
   *
   * @param {String} message.
   * @param {Function} callback function.
   * @param {Object} options.
   * @return {Socket} for chaining.
   * @api public
   */
  write(msg, options2, fn2) {
    this.sendPacket("message", msg, options2, fn2);
    return this;
  }
  send(msg, options2, fn2) {
    this.sendPacket("message", msg, options2, fn2);
    return this;
  }
  /**
   * Sends a packet.
   *
   * @param {String} packet type.
   * @param {String} data.
   * @param {Object} options.
   * @param {Function} callback function.
   * @api private
   */
  sendPacket(type2, data, options2, fn2) {
    if ("function" === typeof data) {
      fn2 = data;
      data = void 0;
    }
    if ("function" === typeof options2) {
      fn2 = options2;
      options2 = null;
    }
    if ("closing" === this.readyState || "closed" === this.readyState) {
      return;
    }
    options2 = options2 || {};
    options2.compress = false !== options2.compress;
    const packet = {
      type: type2,
      data,
      options: options2
    };
    this.emit("packetCreate", packet);
    this.writeBuffer.push(packet);
    if (fn2)
      this.once("flush", fn2);
    this.flush();
  }
  /**
   * Closes the connection.
   *
   * @api private
   */
  close() {
    const self2 = this;
    if ("opening" === this.readyState || "open" === this.readyState) {
      this.readyState = "closing";
      if (this.writeBuffer.length) {
        this.once("drain", function() {
          if (this.upgrading) {
            waitForUpgrade();
          } else {
            close();
          }
        });
      } else if (this.upgrading) {
        waitForUpgrade();
      } else {
        close();
      }
    }
    function close() {
      self2.onClose("forced close");
      debug$2("socket closing - telling transport to close");
      self2.transport.close();
    }
    function cleanupAndClose() {
      self2.removeListener("upgrade", cleanupAndClose);
      self2.removeListener("upgradeError", cleanupAndClose);
      close();
    }
    function waitForUpgrade() {
      self2.once("upgrade", cleanupAndClose);
      self2.once("upgradeError", cleanupAndClose);
    }
    return this;
  }
  /**
   * Called upon transport error
   *
   * @api private
   */
  onError(err) {
    debug$2("socket error %j", err);
    Socket.priorWebsocketSuccess = false;
    this.emit("error", err);
    this.onClose("transport error", err);
  }
  /**
   * Called upon transport close.
   *
   * @api private
   */
  onClose(reason, desc) {
    if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) {
      debug$2('socket close with reason: "%s"', reason);
      const self2 = this;
      clearTimeout(this.pingIntervalTimer);
      clearTimeout(this.pingTimeoutTimer);
      this.transport.removeAllListeners("close");
      this.transport.close();
      this.transport.removeAllListeners();
      if (typeof removeEventListener === "function") {
        removeEventListener("offline", this.offlineEventListener, false);
      }
      this.readyState = "closed";
      this.id = null;
      this.emit("close", reason, desc);
      self2.writeBuffer = [];
      self2.prevBufferLen = 0;
    }
  }
  /**
   * Filters upgrades, returning only those matching client transports.
   *
   * @param {Array} server upgrades
   * @api private
   *
   */
  filterUpgrades(upgrades) {
    const filteredUpgrades = [];
    let i = 0;
    const j2 = upgrades.length;
    for (; i < j2; i++) {
      if (~this.transports.indexOf(upgrades[i]))
        filteredUpgrades.push(upgrades[i]);
    }
    return filteredUpgrades;
  }
};
Socket$2.priorWebsocketSuccess = false;
Socket$2.protocol = parser$1.protocol;
function clone(obj) {
  const o2 = {};
  for (let i in obj) {
    if (obj.hasOwnProperty(i)) {
      o2[i] = obj[i];
    }
  }
  return o2;
}
var socket$1 = Socket$2;
const Socket$1 = socket$1;
lib$3.exports = (uri, opts) => new Socket$1(uri, opts);
libExports.Socket = Socket$1;
libExports.protocol = Socket$1.protocol;
libExports.Transport = transport;
libExports.transports = transports$1;
libExports.parser = lib$2;
var socket = {};
var dist = {};
var binary = {};
var isBinary$1 = {};
Object.defineProperty(isBinary$1, "__esModule", { value: true });
isBinary$1.hasBinary = isBinary$1.isBinary = void 0;
const withNativeBuffer = typeof Buffer === "function" && typeof Buffer.isBuffer === "function";
const withNativeArrayBuffer = typeof ArrayBuffer === "function";
const isView = (obj) => {
  return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj.buffer instanceof ArrayBuffer;
};
const toString$2 = Object.prototype.toString;
const withNativeBlob = typeof Blob === "function" || typeof Blob !== "undefined" && toString$2.call(Blob) === "[object BlobConstructor]";
const withNativeFile = typeof File === "function" || typeof File !== "undefined" && toString$2.call(File) === "[object FileConstructor]";
function isArrayBuffer(obj) {
  return typeof obj === "object" && obj !== null && toString$2.call(obj) === "[object ArrayBuffer]";
}
function isBinary(obj) {
  return withNativeArrayBuffer && (obj instanceof ArrayBuffer || isArrayBuffer(obj) || isView(obj)) || withNativeBlob && obj instanceof Blob || withNativeFile && obj instanceof File || withNativeBuffer && Buffer.isBuffer(obj);
}
isBinary$1.isBinary = isBinary;
function hasBinary(obj, known = [], toJSON = false) {
  if (!obj || typeof obj !== "object") {
    return false;
  }
  if (known.includes(obj)) {
    return false;
  }
  known.push(obj);
  if (Array.isArray(obj)) {
    for (let i = 0, l2 = obj.length; i < l2; i++) {
      if (hasBinary(obj[i], known)) {
        return true;
      }
    }
    return false;
  }
  if (isBinary(obj)) {
    return true;
  }
  if (obj.toJSON && typeof obj.toJSON === "function" && arguments.length === 2) {
    return hasBinary(obj.toJSON(), known, true);
  }
  for (const key in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key], known)) {
      return true;
    }
  }
  return false;
}
isBinary$1.hasBinary = hasBinary;
Object.defineProperty(binary, "__esModule", { value: true });
binary.reconstructPacket = binary.deconstructPacket = void 0;
const is_binary_1 = isBinary$1;
function deconstructPacket(packet) {
  const buffers = [];
  const packetData = packet.data;
  const pack = packet;
  pack.data = _deconstructPacket(packetData, buffers, [], /* @__PURE__ */ new WeakMap());
  pack.attachments = buffers.length;
  return { packet: pack, buffers };
}
binary.deconstructPacket = deconstructPacket;
function _deconstructPacket(data, buffers, known, retvals) {
  if (!data)
    return data;
  if (is_binary_1.isBinary(data)) {
    const placeholder = { _placeholder: true, num: buffers.length };
    buffers.push(data);
    return placeholder;
  } else if (retvals.has(data)) {
    return retvals.get(data);
  } else if (known.includes(data)) {
    return data;
  }
  known.push(data);
  if (Array.isArray(data)) {
    const newData = new Array(data.length);
    retvals.set(data, newData);
    for (let i = 0; i < data.length; i++) {
      newData[i] = _deconstructPacket(data[i], buffers, known, retvals);
    }
    return newData;
  } else if (typeof data === "object" && !(data instanceof Date)) {
    const newData = {};
    retvals.set(data, newData);
    for (const key in data) {
      if (Object.prototype.hasOwnProperty.call(data, key)) {
        newData[key] = _deconstructPacket(data[key], buffers, known, retvals);
      }
    }
    return newData;
  }
  return data;
}
function reconstructPacket(packet, buffers) {
  packet.data = _reconstructPacket(packet.data, buffers, []);
  packet.attachments = void 0;
  return packet;
}
binary.reconstructPacket = reconstructPacket;
function _reconstructPacket(data, buffers, known) {
  if (!data)
    return data;
  if (data && data._placeholder === true) {
    const isIndexValid = typeof data.num === "number" && data.num >= 0 && data.num < buffers.length;
    if (isIndexValid) {
      return buffers[data.num];
    } else {
      throw new Error("illegal attachments");
    }
  } else if (known.includes(data)) {
    return data;
  }
  known.push(data);
  if (Array.isArray(data)) {
    for (let i = 0; i < data.length; i++) {
      data[i] = _reconstructPacket(data[i], buffers, known);
    }
  } else if (typeof data === "object") {
    for (const key in data) {
      if (data.hasOwnProperty(key)) {
        data[key] = _reconstructPacket(data[key], buffers, known);
      }
    }
  }
  return data;
}
/*!
Copyright (C) 2013-2017 by Andrea Giammarchi - @WebReflection

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

*/
var specialChar = "~", safeSpecialChar = "\\x" + ("0" + specialChar.charCodeAt(0).toString(16)).slice(-2), escapedSafeSpecialChar = "\\" + safeSpecialChar, specialCharRG = new RegExp(safeSpecialChar, "g"), safeSpecialCharRG = new RegExp(escapedSafeSpecialChar, "g"), safeStartWithSpecialCharRG = new RegExp("(?:^|([^\\\\]))" + escapedSafeSpecialChar), indexOf = [].indexOf || function(v2) {
  for (var i = this.length; i-- && this[i] !== v2; )
    ;
  return i;
}, $String = String;
function generateReplacer(value, replacer2, resolve3) {
  var doNotIgnore = false, inspect2 = !!replacer2, path = [], all = [value], seen2 = [value], mapp = [resolve3 ? specialChar : "[Circular]"], last = value, lvl = 1, i, fn2;
  if (inspect2) {
    fn2 = typeof replacer2 === "object" ? function(key, value2) {
      return key !== "" && replacer2.indexOf(key) < 0 ? void 0 : value2;
    } : replacer2;
  }
  return function(key, value2) {
    if (inspect2)
      value2 = fn2.call(this, key, value2);
    if (doNotIgnore) {
      if (last !== this) {
        i = lvl - indexOf.call(all, this) - 1;
        lvl -= i;
        all.splice(lvl, all.length);
        path.splice(lvl - 1, path.length);
        last = this;
      }
      if (typeof value2 === "object" && value2) {
        if (indexOf.call(all, value2) < 0) {
          all.push(last = value2);
        }
        lvl = all.length;
        i = indexOf.call(seen2, value2);
        if (i < 0) {
          i = seen2.push(value2) - 1;
          if (resolve3) {
            path.push(("" + key).replace(specialCharRG, safeSpecialChar));
            mapp[i] = specialChar + path.join(specialChar);
          } else {
            mapp[i] = mapp[0];
          }
        } else {
          value2 = mapp[i];
        }
      } else {
        if (typeof value2 === "string" && resolve3) {
          value2 = value2.replace(safeSpecialChar, escapedSafeSpecialChar).replace(specialChar, safeSpecialChar);
        }
      }
    } else {
      doNotIgnore = true;
    }
    return value2;
  };
}
function retrieveFromPath(current, keys) {
  for (var i = 0, length2 = keys.length; i < length2; current = current[
    // keys should be normalized back here
    keys[i++].replace(safeSpecialCharRG, specialChar)
  ])
    ;
  return current;
}
function generateReviver(reviver) {
  return function(key, value) {
    var isString2 = typeof value === "string";
    if (isString2 && value.charAt(0) === specialChar) {
      return new $String(value.slice(1));
    }
    if (key === "")
      value = regenerate(value, value, {});
    if (isString2)
      value = value.replace(safeStartWithSpecialCharRG, "$1" + specialChar).replace(escapedSafeSpecialChar, safeSpecialChar);
    return reviver ? reviver.call(this, key, value) : value;
  };
}
function regenerateArray(root2, current, retrieve) {
  for (var i = 0, length2 = current.length; i < length2; i++) {
    current[i] = regenerate(root2, current[i], retrieve);
  }
  return current;
}
function regenerateObject(root2, current, retrieve) {
  for (var key in current) {
    if (current.hasOwnProperty(key)) {
      current[key] = regenerate(root2, current[key], retrieve);
    }
  }
  return current;
}
function regenerate(root2, current, retrieve) {
  return current instanceof Array ? (
    // fast Array reconstruction
    regenerateArray(root2, current, retrieve)
  ) : current instanceof $String ? (
    // root is an empty string
    current.length ? retrieve.hasOwnProperty(current) ? retrieve[current] : retrieve[current] = retrieveFromPath(
      root2,
      current.split(specialChar)
    ) : root2
  ) : current instanceof Object ? (
    // dedicated Object parser
    regenerateObject(root2, current, retrieve)
  ) : (
    // value as it is
    current
  );
}
var CircularJSON = {
  stringify: function stringify2(value, replacer2, space, doNotResolve) {
    return CircularJSON.parser.stringify(
      value,
      generateReplacer(value, replacer2, !doNotResolve),
      space
    );
  },
  parse: function parse(text3, reviver) {
    return CircularJSON.parser.parse(
      text3,
      generateReviver(reviver)
    );
  },
  // A parser should be an API 1:1 compatible with JSON
  // it should expose stringify and parse methods.
  // The default parser is the native JSON.
  parser: JSON
};
var circularJson_node = CircularJSON;
(function(exports) {
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.Decoder = exports.Encoder = exports.PacketType = exports.protocol = void 0;
  const Emitter2 = componentEmitterExports;
  const binary_1 = binary;
  const is_binary_12 = isBinary$1;
  const debug2 = browserExports("socket.io-parser");
  const CircularJSON2 = circularJson_node;
  exports.protocol = 5;
  var PacketType;
  (function(PacketType2) {
    PacketType2[PacketType2["CONNECT"] = 0] = "CONNECT";
    PacketType2[PacketType2["DISCONNECT"] = 1] = "DISCONNECT";
    PacketType2[PacketType2["EVENT"] = 2] = "EVENT";
    PacketType2[PacketType2["ACK"] = 3] = "ACK";
    PacketType2[PacketType2["CONNECT_ERROR"] = 4] = "CONNECT_ERROR";
    PacketType2[PacketType2["BINARY_EVENT"] = 5] = "BINARY_EVENT";
    PacketType2[PacketType2["BINARY_ACK"] = 6] = "BINARY_ACK";
  })(PacketType = exports.PacketType || (exports.PacketType = {}));
  class Encoder {
    /**
     * Encode a packet as a single string if non-binary, or as a
     * buffer sequence, depending on packet type.
     *
     * @param {Object} obj - packet object
     */
    encode(obj) {
      debug2("encoding packet %j", obj);
      if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {
        if (is_binary_12.hasBinary(obj)) {
          obj.type = obj.type === PacketType.EVENT ? PacketType.BINARY_EVENT : PacketType.BINARY_ACK;
          return this.encodeAsBinary(obj);
        }
      }
      return [this.encodeAsString(obj)];
    }
    /**
     * Encode packet as string.
     */
    encodeAsString(obj) {
      let str = "" + obj.type;
      if (obj.type === PacketType.BINARY_EVENT || obj.type === PacketType.BINARY_ACK) {
        str += obj.attachments + "-";
      }
      if (obj.nsp && "/" !== obj.nsp) {
        str += obj.nsp + ",";
      }
      if (null != obj.id) {
        str += obj.id;
      }
      if (null != obj.data) {
        str += CircularJSON2.stringify(obj.data);
      }
      debug2("encoded %j as %s", obj, str);
      return str;
    }
    /**
     * Encode packet as 'buffer sequence' by removing blobs, and
     * deconstructing packet into object with placeholders and
     * a list of buffers.
     */
    encodeAsBinary(obj) {
      const deconstruction = binary_1.deconstructPacket(obj);
      const pack = this.encodeAsString(deconstruction.packet);
      const buffers = deconstruction.buffers;
      buffers.unshift(pack);
      return buffers;
    }
  }
  exports.Encoder = Encoder;
  class Decoder extends Emitter2 {
    constructor() {
      super();
    }
    /**
     * Decodes an encoded packet string into packet JSON.
     *
     * @param {String} obj - encoded packet
     */
    add(obj) {
      let packet;
      if (typeof obj === "string") {
        if (this.reconstructor) {
          throw new Error("got plaintext data when reconstructing a packet");
        }
        packet = this.decodeString(obj);
        if (packet.type === PacketType.BINARY_EVENT || packet.type === PacketType.BINARY_ACK) {
          this.reconstructor = new BinaryReconstructor(packet);
          if (packet.attachments === 0) {
            super.emit("decoded", packet);
          }
        } else {
          super.emit("decoded", packet);
        }
      } else if (is_binary_12.isBinary(obj) || obj.base64) {
        if (!this.reconstructor) {
          throw new Error("got binary data when not reconstructing a packet");
        } else {
          packet = this.reconstructor.takeBinaryData(obj);
          if (packet) {
            this.reconstructor = null;
            super.emit("decoded", packet);
          }
        }
      } else {
        throw new Error("Unknown type: " + obj);
      }
    }
    /**
     * Decode a packet String (JSON data)
     *
     * @param {String} str
     * @return {Object} packet
     */
    decodeString(str) {
      let i = 0;
      const p2 = {
        type: Number(str.charAt(0))
      };
      if (PacketType[p2.type] === void 0) {
        throw new Error("unknown packet type " + p2.type);
      }
      if (p2.type === PacketType.BINARY_EVENT || p2.type === PacketType.BINARY_ACK) {
        const start2 = i + 1;
        while (str.charAt(++i) !== "-" && i != str.length) {
        }
        const buf = str.substring(start2, i);
        if (buf != Number(buf) || str.charAt(i) !== "-") {
          throw new Error("Illegal attachments");
        }
        p2.attachments = Number(buf);
      }
      if ("/" === str.charAt(i + 1)) {
        const start2 = i + 1;
        while (++i) {
          const c2 = str.charAt(i);
          if ("," === c2)
            break;
          if (i === str.length)
            break;
        }
        p2.nsp = str.substring(start2, i);
      } else {
        p2.nsp = "/";
      }
      const next = str.charAt(i + 1);
      if ("" !== next && Number(next) == next) {
        const start2 = i + 1;
        while (++i) {
          const c2 = str.charAt(i);
          if (null == c2 || Number(c2) != c2) {
            --i;
            break;
          }
          if (i === str.length)
            break;
        }
        p2.id = Number(str.substring(start2, i + 1));
      }
      if (str.charAt(++i)) {
        const payload = tryParse(str.substr(i));
        if (Decoder.isPayloadValid(p2.type, payload)) {
          p2.data = payload;
        } else {
          throw new Error("invalid payload");
        }
      }
      debug2("decoded %s as %j", str, p2);
      return p2;
    }
    static isPayloadValid(type2, payload) {
      switch (type2) {
        case PacketType.CONNECT:
          return typeof payload === "object";
        case PacketType.DISCONNECT:
          return payload === void 0;
        case PacketType.CONNECT_ERROR:
          return typeof payload === "string" || typeof payload === "object";
        case PacketType.EVENT:
        case PacketType.BINARY_EVENT:
          return Array.isArray(payload) && payload.length > 0;
        case PacketType.ACK:
        case PacketType.BINARY_ACK:
          return Array.isArray(payload);
      }
    }
    /**
     * Deallocates a parser's resources
     */
    destroy() {
      if (this.reconstructor) {
        this.reconstructor.finishedReconstruction();
      }
    }
  }
  exports.Decoder = Decoder;
  function tryParse(str) {
    try {
      return CircularJSON2.parse(str);
    } catch (e) {
      return false;
    }
  }
  class BinaryReconstructor {
    constructor(packet) {
      this.packet = packet;
      this.buffers = [];
      this.reconPack = packet;
    }
    /**
     * Method to be called when binary data received from connection
     * after a BINARY_EVENT packet.
     *
     * @param {Buffer | ArrayBuffer} binData - the raw binary data received
     * @return {null | Object} returns null if more binary data is expected or
     *   a reconstructed packet object if all buffers have been received.
     */
    takeBinaryData(binData) {
      this.buffers.push(binData);
      if (this.buffers.length === this.reconPack.attachments) {
        const packet = binary_1.reconstructPacket(this.reconPack, this.buffers);
        this.finishedReconstruction();
        return packet;
      }
      return null;
    }
    /**
     * Cleans up binary packet reconstruction variables.
     */
    finishedReconstruction() {
      this.reconPack = null;
      this.buffers = [];
    }
  }
})(dist);
var on$1 = {};
Object.defineProperty(on$1, "__esModule", { value: true });
on$1.on = void 0;
function on(obj, ev, fn2) {
  obj.on(ev, fn2);
  return function subDestroy() {
    obj.off(ev, fn2);
  };
}
on$1.on = on;
var typedEvents = {};
Object.defineProperty(typedEvents, "__esModule", { value: true });
typedEvents.StrictEventEmitter = void 0;
const Emitter = componentEmitterExports;
class StrictEventEmitter extends Emitter {
  /**
   * Adds the `listener` function as an event listener for `ev`.
   *
   * @param ev Name of the event
   * @param listener Callback function
   */
  on(ev, listener) {
    super.on(ev, listener);
    return this;
  }
  /**
   * Adds a one-time `listener` function as an event listener for `ev`.
   *
   * @param ev Name of the event
   * @param listener Callback function
   */
  once(ev, listener) {
    super.once(ev, listener);
    return this;
  }
  /**
   * Emits an event.
   *
   * @param ev Name of the event
   * @param args Values to send to listeners of this event
   */
  emit(ev, ...args) {
    super.emit(ev, ...args);
    return this;
  }
  /**
   * Emits a reserved event.
   *
   * This method is `protected`, so that only a class extending
   * `StrictEventEmitter` can emit its own reserved events.
   *
   * @param ev Reserved event name
   * @param args Arguments to emit along with the event
   */
  emitReserved(ev, ...args) {
    super.emit(ev, ...args);
    return this;
  }
  /**
   * Returns the listeners listening to an event.
   *
   * @param event Event name
   * @returns Array of listeners subscribed to `event`
   */
  listeners(event) {
    return super.listeners(event);
  }
}
typedEvents.StrictEventEmitter = StrictEventEmitter;
Object.defineProperty(socket, "__esModule", { value: true });
socket.Socket = void 0;
const socket_io_parser_1 = dist;
const on_1$1 = on$1;
const typed_events_1$1 = typedEvents;
const debug$1 = browserExports("socket.io-client:socket");
const RESERVED_EVENTS = Object.freeze({
  connect: 1,
  connect_error: 1,
  disconnect: 1,
  disconnecting: 1,
  // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener
  newListener: 1,
  removeListener: 1
});
class Socket2 extends typed_events_1$1.StrictEventEmitter {
  /**
   * `Socket` constructor.
   *
   * @public
   */
  constructor(io2, nsp, opts) {
    super();
    this.receiveBuffer = [];
    this.sendBuffer = [];
    this.ids = 0;
    this.acks = {};
    this.flags = {};
    this.io = io2;
    this.nsp = nsp;
    this.ids = 0;
    this.acks = {};
    this.receiveBuffer = [];
    this.sendBuffer = [];
    this.connected = false;
    this.disconnected = true;
    this.flags = {};
    if (opts && opts.auth) {
      this.auth = opts.auth;
    }
    if (this.io._autoConnect)
      this.open();
  }
  /**
   * Subscribe to open, close and packet events
   *
   * @private
   */
  subEvents() {
    if (this.subs)
      return;
    const io2 = this.io;
    this.subs = [
      on_1$1.on(io2, "open", this.onopen.bind(this)),
      on_1$1.on(io2, "packet", this.onpacket.bind(this)),
      on_1$1.on(io2, "error", this.onerror.bind(this)),
      on_1$1.on(io2, "close", this.onclose.bind(this))
    ];
  }
  /**
   * Whether the Socket will try to reconnect when its Manager connects or reconnects
   */
  get active() {
    return !!this.subs;
  }
  /**
   * "Opens" the socket.
   *
   * @public
   */
  connect() {
    if (this.connected)
      return this;
    this.subEvents();
    if (!this.io["_reconnecting"])
      this.io.open();
    if ("open" === this.io._readyState)
      this.onopen();
    return this;
  }
  /**
   * Alias for connect()
   */
  open() {
    return this.connect();
  }
  /**
   * Sends a `message` event.
   *
   * @return self
   * @public
   */
  send(...args) {
    args.unshift("message");
    this.emit.apply(this, args);
    return this;
  }
  /**
   * Override `emit`.
   * If the event is in `events`, it's emitted normally.
   *
   * @return self
   * @public
   */
  emit(ev, ...args) {
    if (RESERVED_EVENTS.hasOwnProperty(ev)) {
      throw new Error('"' + ev + '" is a reserved event name');
    }
    args.unshift(ev);
    const packet = {
      type: socket_io_parser_1.PacketType.EVENT,
      data: args
    };
    packet.options = {};
    packet.options.compress = this.flags.compress !== false;
    if ("function" === typeof args[args.length - 1]) {
      debug$1("emitting packet with ack id %d", this.ids);
      this.acks[this.ids] = args.pop();
      packet.id = this.ids++;
    }
    const isTransportWritable = this.io.engine && this.io.engine.transport && this.io.engine.transport.writable;
    const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);
    if (discardPacket) {
      debug$1("discard packet as the transport is not currently writable");
    } else if (this.connected) {
      this.packet(packet);
    } else {
      this.sendBuffer.push(packet);
    }
    this.flags = {};
    return this;
  }
  /**
   * Sends a packet.
   *
   * @param packet
   * @private
   */
  packet(packet) {
    packet.nsp = this.nsp;
    this.io._packet(packet);
  }
  /**
   * Called upon engine `open`.
   *
   * @private
   */
  onopen() {
    debug$1("transport is open - connecting");
    if (typeof this.auth == "function") {
      this.auth((data) => {
        this.packet({ type: socket_io_parser_1.PacketType.CONNECT, data });
      });
    } else {
      this.packet({ type: socket_io_parser_1.PacketType.CONNECT, data: this.auth });
    }
  }
  /**
   * Called upon engine or manager `error`.
   *
   * @param err
   * @private
   */
  onerror(err) {
    if (!this.connected) {
      this.emitReserved("connect_error", err);
    }
  }
  /**
   * Called upon engine `close`.
   *
   * @param reason
   * @private
   */
  onclose(reason) {
    debug$1("close (%s)", reason);
    this.connected = false;
    this.disconnected = true;
    delete this.id;
    this.emitReserved("disconnect", reason);
  }
  /**
   * Called with socket packet.
   *
   * @param packet
   * @private
   */
  onpacket(packet) {
    const sameNamespace = packet.nsp === this.nsp;
    if (!sameNamespace)
      return;
    switch (packet.type) {
      case socket_io_parser_1.PacketType.CONNECT:
        if (packet.data && packet.data.sid) {
          const id2 = packet.data.sid;
          this.onconnect(id2);
        } else {
          this.emitReserved("connect_error", new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));
        }
        break;
      case socket_io_parser_1.PacketType.EVENT:
        this.onevent(packet);
        break;
      case socket_io_parser_1.PacketType.BINARY_EVENT:
        this.onevent(packet);
        break;
      case socket_io_parser_1.PacketType.ACK:
        this.onack(packet);
        break;
      case socket_io_parser_1.PacketType.BINARY_ACK:
        this.onack(packet);
        break;
      case socket_io_parser_1.PacketType.DISCONNECT:
        this.ondisconnect();
        break;
      case socket_io_parser_1.PacketType.CONNECT_ERROR:
        const err = new Error(packet.data.message);
        err.data = packet.data.data;
        this.emitReserved("connect_error", err);
        break;
    }
  }
  /**
   * Called upon a server event.
   *
   * @param packet
   * @private
   */
  onevent(packet) {
    const args = packet.data || [];
    debug$1("emitting event %j", args);
    if (null != packet.id) {
      debug$1("attaching ack callback to event");
      args.push(this.ack(packet.id));
    }
    if (this.connected) {
      this.emitEvent(args);
    } else {
      this.receiveBuffer.push(Object.freeze(args));
    }
  }
  emitEvent(args) {
    if (this._anyListeners && this._anyListeners.length) {
      const listeners2 = this._anyListeners.slice();
      for (const listener of listeners2) {
        listener.apply(this, args);
      }
    }
    super.emit.apply(this, args);
  }
  /**
   * Produces an ack callback to emit with an event.
   *
   * @private
   */
  ack(id2) {
    const self2 = this;
    let sent = false;
    return function(...args) {
      if (sent)
        return;
      sent = true;
      debug$1("sending ack %j", args);
      self2.packet({
        type: socket_io_parser_1.PacketType.ACK,
        id: id2,
        data: args
      });
    };
  }
  /**
   * Called upon a server acknowlegement.
   *
   * @param packet
   * @private
   */
  onack(packet) {
    const ack = this.acks[packet.id];
    if ("function" === typeof ack) {
      debug$1("calling ack %s with %j", packet.id, packet.data);
      ack.apply(this, packet.data);
      delete this.acks[packet.id];
    } else {
      debug$1("bad ack %s", packet.id);
    }
  }
  /**
   * Called upon server connect.
   *
   * @private
   */
  onconnect(id2) {
    debug$1("socket connected with id %s", id2);
    this.id = id2;
    this.connected = true;
    this.disconnected = false;
    this.emitReserved("connect");
    this.emitBuffered();
  }
  /**
   * Emit buffered events (received and emitted).
   *
   * @private
   */
  emitBuffered() {
    this.receiveBuffer.forEach((args) => this.emitEvent(args));
    this.receiveBuffer = [];
    this.sendBuffer.forEach((packet) => this.packet(packet));
    this.sendBuffer = [];
  }
  /**
   * Called upon server disconnect.
   *
   * @private
   */
  ondisconnect() {
    debug$1("server disconnect (%s)", this.nsp);
    this.destroy();
    this.onclose("io server disconnect");
  }
  /**
   * Called upon forced client/server side disconnections,
   * this method ensures the manager stops tracking us and
   * that reconnections don't get triggered for this.
   *
   * @private
   */
  destroy() {
    if (this.subs) {
      this.subs.forEach((subDestroy) => subDestroy());
      this.subs = void 0;
    }
    this.io["_destroy"](this);
  }
  /**
   * Disconnects the socket manually.
   *
   * @return self
   * @public
   */
  disconnect() {
    if (this.connected) {
      debug$1("performing disconnect (%s)", this.nsp);
      this.packet({ type: socket_io_parser_1.PacketType.DISCONNECT });
    }
    this.destroy();
    if (this.connected) {
      this.onclose("io client disconnect");
    }
    return this;
  }
  /**
   * Alias for disconnect()
   *
   * @return self
   * @public
   */
  close() {
    return this.disconnect();
  }
  /**
   * Sets the compress flag.
   *
   * @param compress - if `true`, compresses the sending data
   * @return self
   * @public
   */
  compress(compress) {
    this.flags.compress = compress;
    return this;
  }
  /**
   * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not
   * ready to send messages.
   *
   * @returns self
   * @public
   */
  get volatile() {
    this.flags.volatile = true;
    return this;
  }
  /**
   * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the
   * callback.
   *
   * @param listener
   * @public
   */
  onAny(listener) {
    this._anyListeners = this._anyListeners || [];
    this._anyListeners.push(listener);
    return this;
  }
  /**
   * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the
   * callback. The listener is added to the beginning of the listeners array.
   *
   * @param listener
   * @public
   */
  prependAny(listener) {
    this._anyListeners = this._anyListeners || [];
    this._anyListeners.unshift(listener);
    return this;
  }
  /**
   * Removes the listener that will be fired when any event is emitted.
   *
   * @param listener
   * @public
   */
  offAny(listener) {
    if (!this._anyListeners) {
      return this;
    }
    if (listener) {
      const listeners2 = this._anyListeners;
      for (let i = 0; i < listeners2.length; i++) {
        if (listener === listeners2[i]) {
          listeners2.splice(i, 1);
          return this;
        }
      }
    } else {
      this._anyListeners = [];
    }
    return this;
  }
  /**
   * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,
   * e.g. to remove listeners.
   *
   * @public
   */
  listenersAny() {
    return this._anyListeners || [];
  }
}
socket.Socket = Socket2;
var backo2 = Backoff$1;
function Backoff$1(opts) {
  opts = opts || {};
  this.ms = opts.min || 100;
  this.max = opts.max || 1e4;
  this.factor = opts.factor || 2;
  this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;
  this.attempts = 0;
}
Backoff$1.prototype.duration = function() {
  var ms2 = this.ms * Math.pow(this.factor, this.attempts++);
  if (this.jitter) {
    var rand = Math.random();
    var deviation = Math.floor(rand * this.jitter * ms2);
    ms2 = (Math.floor(rand * 10) & 1) == 0 ? ms2 - deviation : ms2 + deviation;
  }
  return Math.min(ms2, this.max) | 0;
};
Backoff$1.prototype.reset = function() {
  this.attempts = 0;
};
Backoff$1.prototype.setMin = function(min2) {
  this.ms = min2;
};
Backoff$1.prototype.setMax = function(max2) {
  this.max = max2;
};
Backoff$1.prototype.setJitter = function(jitter) {
  this.jitter = jitter;
};
Object.defineProperty(manager, "__esModule", { value: true });
manager.Manager = void 0;
const eio = libExports;
const socket_1 = socket;
const parser = dist;
const on_1 = on$1;
const Backoff = backo2;
const typed_events_1 = typedEvents;
const debug = browserExports("socket.io-client:manager");
class Manager extends typed_events_1.StrictEventEmitter {
  constructor(uri, opts) {
    super();
    this.nsps = {};
    this.subs = [];
    if (uri && "object" === typeof uri) {
      opts = uri;
      uri = void 0;
    }
    opts = opts || {};
    opts.path = opts.path || "/socket.io";
    this.opts = opts;
    this.reconnection(opts.reconnection !== false);
    this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);
    this.reconnectionDelay(opts.reconnectionDelay || 1e3);
    this.reconnectionDelayMax(opts.reconnectionDelayMax || 5e3);
    this.randomizationFactor(opts.randomizationFactor || 0.5);
    this.backoff = new Backoff({
      min: this.reconnectionDelay(),
      max: this.reconnectionDelayMax(),
      jitter: this.randomizationFactor()
    });
    this.timeout(null == opts.timeout ? 2e4 : opts.timeout);
    this._readyState = "closed";
    this.uri = uri;
    const _parser = opts.parser || parser;
    this.encoder = new _parser.Encoder();
    this.decoder = new _parser.Decoder();
    this._autoConnect = opts.autoConnect !== false;
    if (this._autoConnect)
      this.open();
  }
  reconnection(v2) {
    if (!arguments.length)
      return this._reconnection;
    this._reconnection = !!v2;
    return this;
  }
  reconnectionAttempts(v2) {
    if (v2 === void 0)
      return this._reconnectionAttempts;
    this._reconnectionAttempts = v2;
    return this;
  }
  reconnectionDelay(v2) {
    var _a3;
    if (v2 === void 0)
      return this._reconnectionDelay;
    this._reconnectionDelay = v2;
    (_a3 = this.backoff) === null || _a3 === void 0 ? void 0 : _a3.setMin(v2);
    return this;
  }
  randomizationFactor(v2) {
    var _a3;
    if (v2 === void 0)
      return this._randomizationFactor;
    this._randomizationFactor = v2;
    (_a3 = this.backoff) === null || _a3 === void 0 ? void 0 : _a3.setJitter(v2);
    return this;
  }
  reconnectionDelayMax(v2) {
    var _a3;
    if (v2 === void 0)
      return this._reconnectionDelayMax;
    this._reconnectionDelayMax = v2;
    (_a3 = this.backoff) === null || _a3 === void 0 ? void 0 : _a3.setMax(v2);
    return this;
  }
  timeout(v2) {
    if (!arguments.length)
      return this._timeout;
    this._timeout = v2;
    return this;
  }
  /**
   * Starts trying to reconnect if reconnection is enabled and we have not
   * started reconnecting yet
   *
   * @private
   */
  maybeReconnectOnOpen() {
    if (!this._reconnecting && this._reconnection && this.backoff.attempts === 0) {
      this.reconnect();
    }
  }
  /**
   * Sets the current transport `socket`.
   *
   * @param {Function} fn - optional, callback
   * @return self
   * @public
   */
  open(fn2) {
    debug("readyState %s", this._readyState);
    if (~this._readyState.indexOf("open"))
      return this;
    debug("opening %s", this.uri);
    this.engine = eio(this.uri, this.opts);
    const socket2 = this.engine;
    const self2 = this;
    this._readyState = "opening";
    this.skipReconnect = false;
    const openSubDestroy = on_1.on(socket2, "open", function() {
      self2.onopen();
      fn2 && fn2();
    });
    const errorSub = on_1.on(socket2, "error", (err) => {
      debug("error");
      self2.cleanup();
      self2._readyState = "closed";
      this.emitReserved("error", err);
      if (fn2) {
        fn2(err);
      } else {
        self2.maybeReconnectOnOpen();
      }
    });
    if (false !== this._timeout) {
      const timeout = this._timeout;
      debug("connect attempt will timeout after %d", timeout);
      if (timeout === 0) {
        openSubDestroy();
      }
      const timer = setTimeout(() => {
        debug("connect attempt timed out after %d", timeout);
        openSubDestroy();
        socket2.close();
        socket2.emit("error", new Error("timeout"));
      }, timeout);
      if (this.opts.autoUnref) {
        timer.unref();
      }
      this.subs.push(function subDestroy() {
        clearTimeout(timer);
      });
    }
    this.subs.push(openSubDestroy);
    this.subs.push(errorSub);
    return this;
  }
  /**
   * Alias for open()
   *
   * @return self
   * @public
   */
  connect(fn2) {
    return this.open(fn2);
  }
  /**
   * Called upon transport open.
   *
   * @private
   */
  onopen() {
    debug("open");
    this.cleanup();
    this._readyState = "open";
    this.emitReserved("open");
    const socket2 = this.engine;
    this.subs.push(on_1.on(socket2, "ping", this.onping.bind(this)), on_1.on(socket2, "data", this.ondata.bind(this)), on_1.on(socket2, "error", this.onerror.bind(this)), on_1.on(socket2, "close", this.onclose.bind(this)), on_1.on(this.decoder, "decoded", this.ondecoded.bind(this)));
  }
  /**
   * Called upon a ping.
   *
   * @private
   */
  onping() {
    this.emitReserved("ping");
  }
  /**
   * Called with data.
   *
   * @private
   */
  ondata(data) {
    this.decoder.add(data);
  }
  /**
   * Called when parser fully decodes a packet.
   *
   * @private
   */
  ondecoded(packet) {
    this.emitReserved("packet", packet);
  }
  /**
   * Called upon socket error.
   *
   * @private
   */
  onerror(err) {
    debug("error", err);
    this.emitReserved("error", err);
  }
  /**
   * Creates a new socket for the given `nsp`.
   *
   * @return {Socket}
   * @public
   */
  socket(nsp, opts) {
    let socket2 = this.nsps[nsp];
    if (!socket2) {
      socket2 = new socket_1.Socket(this, nsp, opts);
      this.nsps[nsp] = socket2;
    }
    return socket2;
  }
  /**
   * Called upon a socket close.
   *
   * @param socket
   * @private
   */
  _destroy(socket2) {
    const nsps = Object.keys(this.nsps);
    for (const nsp of nsps) {
      const socket3 = this.nsps[nsp];
      if (socket3.active) {
        debug("socket %s is still active, skipping close", nsp);
        return;
      }
    }
    this._close();
  }
  /**
   * Writes a packet.
   *
   * @param packet
   * @private
   */
  _packet(packet) {
    debug("writing packet %j", packet);
    const encodedPackets = this.encoder.encode(packet);
    for (let i = 0; i < encodedPackets.length; i++) {
      this.engine.write(encodedPackets[i], packet.options);
    }
  }
  /**
   * Clean up transport subscriptions and packet buffer.
   *
   * @private
   */
  cleanup() {
    debug("cleanup");
    this.subs.forEach((subDestroy) => subDestroy());
    this.subs.length = 0;
    this.decoder.destroy();
  }
  /**
   * Close the current socket.
   *
   * @private
   */
  _close() {
    debug("disconnect");
    this.skipReconnect = true;
    this._reconnecting = false;
    if ("opening" === this._readyState) {
      this.cleanup();
    }
    this.backoff.reset();
    this._readyState = "closed";
    if (this.engine)
      this.engine.close();
  }
  /**
   * Alias for close()
   *
   * @private
   */
  disconnect() {
    return this._close();
  }
  /**
   * Called upon engine close.
   *
   * @private
   */
  onclose(reason) {
    debug("onclose");
    this.cleanup();
    this.backoff.reset();
    this._readyState = "closed";
    this.emitReserved("close", reason);
    if (this._reconnection && !this.skipReconnect) {
      this.reconnect();
    }
  }
  /**
   * Attempt a reconnection.
   *
   * @private
   */
  reconnect() {
    if (this._reconnecting || this.skipReconnect)
      return this;
    const self2 = this;
    if (this.backoff.attempts >= this._reconnectionAttempts) {
      debug("reconnect failed");
      this.backoff.reset();
      this.emitReserved("reconnect_failed");
      this._reconnecting = false;
    } else {
      const delay = this.backoff.duration();
      debug("will wait %dms before reconnect attempt", delay);
      this._reconnecting = true;
      const timer = setTimeout(() => {
        if (self2.skipReconnect)
          return;
        debug("attempting reconnect");
        this.emitReserved("reconnect_attempt", self2.backoff.attempts);
        if (self2.skipReconnect)
          return;
        self2.open((err) => {
          if (err) {
            debug("reconnect attempt error");
            self2._reconnecting = false;
            self2.reconnect();
            this.emitReserved("reconnect_error", err);
          } else {
            debug("reconnect success");
            self2.onreconnect();
          }
        });
      }, delay);
      if (this.opts.autoUnref) {
        timer.unref();
      }
      this.subs.push(function subDestroy() {
        clearTimeout(timer);
      });
    }
  }
  /**
   * Called upon successful reconnect.
   *
   * @private
   */
  onreconnect() {
    const attempt = this.backoff.attempts;
    this._reconnecting = false;
    this.backoff.reset();
    this.emitReserved("reconnect", attempt);
  }
}
manager.Manager = Manager;
(function(module, exports) {
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.Socket = exports.io = exports.Manager = exports.protocol = void 0;
  const url_1 = url$1;
  const manager_1 = manager;
  const socket_12 = socket;
  Object.defineProperty(exports, "Socket", { enumerable: true, get: function() {
    return socket_12.Socket;
  } });
  const debug2 = browserExports("socket.io-client");
  module.exports = exports = lookup;
  const cache2 = exports.managers = {};
  function lookup(uri, opts) {
    if (typeof uri === "object") {
      opts = uri;
      uri = void 0;
    }
    opts = opts || {};
    const parsed = url_1.url(uri, opts.path);
    const source = parsed.source;
    const id2 = parsed.id;
    const path = parsed.path;
    const sameNamespace = cache2[id2] && path in cache2[id2]["nsps"];
    const newConnection = opts.forceNew || opts["force new connection"] || false === opts.multiplex || sameNamespace;
    let io2;
    if (newConnection) {
      debug2("ignoring socket cache for %s", source);
      io2 = new manager_1.Manager(source, opts);
    } else {
      if (!cache2[id2]) {
        debug2("new io instance for %s", source);
        cache2[id2] = new manager_1.Manager(source, opts);
      }
      io2 = cache2[id2];
    }
    if (parsed.query && !opts.query) {
      opts.query = parsed.queryKey;
    }
    return io2.socket(parsed.path, opts);
  }
  exports.io = lookup;
  var socket_io_parser_12 = dist;
  Object.defineProperty(exports, "protocol", { enumerable: true, get: function() {
    return socket_io_parser_12.protocol;
  } });
  exports.connect = lookup;
  var manager_2 = manager;
  Object.defineProperty(exports, "Manager", { enumerable: true, get: function() {
    return manager_2.Manager;
  } });
  exports.default = lookup;
})(build, buildExports);
const io = /* @__PURE__ */ getDefaultExportFromCjs(buildExports);
io.Manager;
function createWebsocket$1({ path, browserFamily }) {
  return io({
    path,
    // TODO(webkit): the websocket socket.io transport is busted in WebKit, need polling
    // https://github.com/cypress-io/cypress/issues/23807
    transports: browserFamily === "webkit" ? ["polling"] : ["websocket"]
  });
}
const baseHasOwnProperty = Object.prototype.hasOwnProperty;
function isObject$3(val) {
  return typeof val === "object" && val !== null;
}
function areGraphQLErrors(obj) {
  return Array.isArray(obj) && // must be at least one error
  obj.length > 0 && // error has at least a message
  obj.every((ob) => "message" in ob);
}
function hasOwnProperty$2(obj, prop2) {
  return baseHasOwnProperty.call(obj, prop2);
}
function hasOwnObjectProperty(obj, prop2) {
  return baseHasOwnProperty.call(obj, prop2) && isObject$3(obj[prop2]);
}
function hasOwnStringProperty(obj, prop2) {
  return baseHasOwnProperty.call(obj, prop2) && typeof obj[prop2] === "string";
}
function limitCloseReason(reason, whenTooLong) {
  return reason.length < 124 ? reason : whenTooLong;
}
const GRAPHQL_TRANSPORT_WS_PROTOCOL = "graphql-transport-ws";
var CloseCode;
(function(CloseCode2) {
  CloseCode2[CloseCode2["InternalServerError"] = 4500] = "InternalServerError";
  CloseCode2[CloseCode2["InternalClientError"] = 4005] = "InternalClientError";
  CloseCode2[CloseCode2["BadRequest"] = 4400] = "BadRequest";
  CloseCode2[CloseCode2["BadResponse"] = 4004] = "BadResponse";
  CloseCode2[CloseCode2["Unauthorized"] = 4401] = "Unauthorized";
  CloseCode2[CloseCode2["Forbidden"] = 4403] = "Forbidden";
  CloseCode2[CloseCode2["SubprotocolNotAcceptable"] = 4406] = "SubprotocolNotAcceptable";
  CloseCode2[CloseCode2["ConnectionInitialisationTimeout"] = 4408] = "ConnectionInitialisationTimeout";
  CloseCode2[CloseCode2["ConnectionAcknowledgementTimeout"] = 4504] = "ConnectionAcknowledgementTimeout";
  CloseCode2[CloseCode2["SubscriberAlreadyExists"] = 4409] = "SubscriberAlreadyExists";
  CloseCode2[CloseCode2["TooManyInitialisationRequests"] = 4429] = "TooManyInitialisationRequests";
})(CloseCode || (CloseCode = {}));
var MessageType;
(function(MessageType2) {
  MessageType2["ConnectionInit"] = "connection_init";
  MessageType2["ConnectionAck"] = "connection_ack";
  MessageType2["Ping"] = "ping";
  MessageType2["Pong"] = "pong";
  MessageType2["Subscribe"] = "subscribe";
  MessageType2["Next"] = "next";
  MessageType2["Error"] = "error";
  MessageType2["Complete"] = "complete";
})(MessageType || (MessageType = {}));
function isMessage(val) {
  if (isObject$3(val)) {
    if (!hasOwnStringProperty(val, "type")) {
      return false;
    }
    switch (val.type) {
      case MessageType.ConnectionInit:
        return !hasOwnProperty$2(val, "payload") || val.payload === void 0 || isObject$3(val.payload);
      case MessageType.ConnectionAck:
      case MessageType.Ping:
      case MessageType.Pong:
        return !hasOwnProperty$2(val, "payload") || val.payload === void 0 || isObject$3(val.payload);
      case MessageType.Subscribe:
        return hasOwnStringProperty(val, "id") && hasOwnObjectProperty(val, "payload") && (!hasOwnProperty$2(val.payload, "operationName") || val.payload.operationName === void 0 || val.payload.operationName === null || typeof val.payload.operationName === "string") && hasOwnStringProperty(val.payload, "query") && (!hasOwnProperty$2(val.payload, "variables") || val.payload.variables === void 0 || val.payload.variables === null || hasOwnObjectProperty(val.payload, "variables")) && (!hasOwnProperty$2(val.payload, "extensions") || val.payload.extensions === void 0 || val.payload.extensions === null || hasOwnObjectProperty(val.payload, "extensions"));
      case MessageType.Next:
        return hasOwnStringProperty(val, "id") && hasOwnObjectProperty(val, "payload");
      case MessageType.Error:
        return hasOwnStringProperty(val, "id") && areGraphQLErrors(val.payload);
      case MessageType.Complete:
        return hasOwnStringProperty(val, "id");
      default:
        return false;
    }
  }
  return false;
}
function parseMessage(data, reviver) {
  if (isMessage(data)) {
    return data;
  }
  if (typeof data !== "string") {
    throw new Error("Message not parsable");
  }
  const message = JSON.parse(data, reviver);
  if (!isMessage(message)) {
    throw new Error("Invalid message");
  }
  return message;
}
function stringifyMessage(msg, replacer2) {
  if (!isMessage(msg)) {
    throw new Error("Cannot stringify invalid message");
  }
  return JSON.stringify(msg, replacer2);
}
function createClient(options2) {
  const {
    url: url2,
    connectionParams,
    lazy = true,
    onNonLazyError = console.error,
    lazyCloseTimeout = 0,
    keepAlive = 0,
    disablePong,
    connectionAckWaitTimeout = 0,
    retryAttempts = 5,
    retryWait = async function randomisedExponentialBackoff(retries2) {
      let retryDelay = 1e3;
      for (let i = 0; i < retries2; i++) {
        retryDelay *= 2;
      }
      await new Promise((resolve3) => setTimeout(resolve3, retryDelay + // add random timeout from 300ms to 3s
      Math.floor(Math.random() * (3e3 - 300) + 300)));
    },
    isFatalConnectionProblem = (errOrCloseEvent) => (
      // non `CloseEvent`s are fatal by default
      !isLikeCloseEvent(errOrCloseEvent)
    ),
    on: on2,
    webSocketImpl,
    /**
     * Generates a v4 UUID to be used as the ID using `Math`
     * as the random number generator. Supply your own generator
     * in case you need more uniqueness.
     *
     * Reference: https://gist.github.com/jed/982883
     */
    generateID = function generateUUID() {
      return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c2) => {
        const r2 = Math.random() * 16 | 0, v2 = c2 == "x" ? r2 : r2 & 3 | 8;
        return v2.toString(16);
      });
    },
    jsonMessageReplacer: replacer2,
    jsonMessageReviver: reviver
  } = options2;
  let ws2;
  if (webSocketImpl) {
    if (!isWebSocket(webSocketImpl)) {
      throw new Error("Invalid WebSocket implementation provided");
    }
    ws2 = webSocketImpl;
  } else if (typeof WebSocket !== "undefined") {
    ws2 = WebSocket;
  } else if (typeof global !== "undefined") {
    ws2 = global.WebSocket || // @ts-expect-error: Support more browsers
    global.MozWebSocket;
  } else if (typeof window !== "undefined") {
    ws2 = window.WebSocket || // @ts-expect-error: Support more browsers
    window.MozWebSocket;
  }
  if (!ws2)
    throw new Error("WebSocket implementation missing");
  const WebSocketImpl = ws2;
  const emitter = (() => {
    const message = (() => {
      const listeners3 = {};
      return {
        on(id2, listener) {
          listeners3[id2] = listener;
          return () => {
            delete listeners3[id2];
          };
        },
        emit(message2) {
          var _a3;
          if ("id" in message2)
            (_a3 = listeners3[message2.id]) === null || _a3 === void 0 ? void 0 : _a3.call(listeners3, message2);
        }
      };
    })();
    const listeners2 = {
      connecting: (on2 === null || on2 === void 0 ? void 0 : on2.connecting) ? [on2.connecting] : [],
      opened: (on2 === null || on2 === void 0 ? void 0 : on2.opened) ? [on2.opened] : [],
      connected: (on2 === null || on2 === void 0 ? void 0 : on2.connected) ? [on2.connected] : [],
      ping: (on2 === null || on2 === void 0 ? void 0 : on2.ping) ? [on2.ping] : [],
      pong: (on2 === null || on2 === void 0 ? void 0 : on2.pong) ? [on2.pong] : [],
      message: (on2 === null || on2 === void 0 ? void 0 : on2.message) ? [message.emit, on2.message] : [message.emit],
      closed: (on2 === null || on2 === void 0 ? void 0 : on2.closed) ? [on2.closed] : [],
      error: (on2 === null || on2 === void 0 ? void 0 : on2.error) ? [on2.error] : []
    };
    return {
      onMessage: message.on,
      on(event, listener) {
        const l2 = listeners2[event];
        l2.push(listener);
        return () => {
          l2.splice(l2.indexOf(listener), 1);
        };
      },
      emit(event, ...args) {
        for (const listener of [...listeners2[event]]) {
          listener(...args);
        }
      }
    };
  })();
  function errorOrClosed(cb) {
    const listening = [
      // errors are fatal and more critical than close events, throw them first
      emitter.on("error", (err) => {
        listening.forEach((unlisten) => unlisten());
        cb(err);
      }),
      // closes can be graceful and not fatal, throw them second (if error didnt throw)
      emitter.on("closed", (event) => {
        listening.forEach((unlisten) => unlisten());
        cb(event);
      })
    ];
  }
  let connecting, locks = 0, retrying = false, retries = 0, disposed = false;
  async function connect() {
    const [socket2, throwOnClose] = await (connecting !== null && connecting !== void 0 ? connecting : connecting = new Promise((connected, denied) => (async () => {
      if (retrying) {
        await retryWait(retries);
        if (!locks) {
          connecting = void 0;
          return denied({ code: 1e3, reason: "All Subscriptions Gone" });
        }
        retries++;
      }
      emitter.emit("connecting");
      const socket3 = new WebSocketImpl(typeof url2 === "function" ? await url2() : url2, GRAPHQL_TRANSPORT_WS_PROTOCOL);
      let connectionAckTimeout, queuedPing;
      function enqueuePing() {
        if (isFinite(keepAlive) && keepAlive > 0) {
          clearTimeout(queuedPing);
          queuedPing = setTimeout(() => {
            if (socket3.readyState === WebSocketImpl.OPEN) {
              socket3.send(stringifyMessage({ type: MessageType.Ping }));
              emitter.emit("ping", false, void 0);
            }
          }, keepAlive);
        }
      }
      errorOrClosed((errOrEvent) => {
        connecting = void 0;
        clearTimeout(connectionAckTimeout);
        clearTimeout(queuedPing);
        denied(errOrEvent);
      });
      socket3.onerror = (err) => emitter.emit("error", err);
      socket3.onclose = (event) => emitter.emit("closed", event);
      socket3.onopen = async () => {
        try {
          emitter.emit("opened", socket3);
          const payload = typeof connectionParams === "function" ? await connectionParams() : connectionParams;
          socket3.send(stringifyMessage(payload ? {
            type: MessageType.ConnectionInit,
            payload
          } : {
            type: MessageType.ConnectionInit
            // payload is completely absent if not provided
          }, replacer2));
          if (isFinite(connectionAckWaitTimeout) && connectionAckWaitTimeout > 0) {
            connectionAckTimeout = setTimeout(() => {
              socket3.close(CloseCode.ConnectionAcknowledgementTimeout, "Connection acknowledgement timeout");
            }, connectionAckWaitTimeout);
          }
          enqueuePing();
        } catch (err) {
          emitter.emit("error", err);
          socket3.close(CloseCode.InternalClientError, limitCloseReason(err instanceof Error ? err.message : new Error(err).message, "Internal client error"));
        }
      };
      let acknowledged = false;
      socket3.onmessage = ({ data }) => {
        try {
          const message = parseMessage(data, reviver);
          emitter.emit("message", message);
          if (message.type === "ping" || message.type === "pong") {
            emitter.emit(message.type, true, message.payload);
            if (message.type === "pong") {
              enqueuePing();
            } else if (!disablePong) {
              socket3.send(stringifyMessage(message.payload ? {
                type: MessageType.Pong,
                payload: message.payload
              } : {
                type: MessageType.Pong
                // payload is completely absent if not provided
              }));
              emitter.emit("pong", false, message.payload);
            }
            return;
          }
          if (acknowledged)
            return;
          if (message.type !== MessageType.ConnectionAck)
            throw new Error(`First message cannot be of type ${message.type}`);
          clearTimeout(connectionAckTimeout);
          acknowledged = true;
          emitter.emit("connected", socket3, message.payload);
          retrying = false;
          retries = 0;
          connected([
            socket3,
            new Promise((_2, reject) => errorOrClosed(reject))
          ]);
        } catch (err) {
          socket3.onmessage = null;
          emitter.emit("error", err);
          socket3.close(CloseCode.BadResponse, limitCloseReason(err instanceof Error ? err.message : new Error(err).message, "Bad response"));
        }
      };
    })()));
    if (socket2.readyState === WebSocketImpl.CLOSING)
      await throwOnClose;
    let release = () => {
    };
    const released = new Promise((resolve3) => release = resolve3);
    return [
      socket2,
      release,
      Promise.race([
        // wait for
        released.then(() => {
          if (!locks) {
            const complete = () => socket2.close(1e3, "Normal Closure");
            if (isFinite(lazyCloseTimeout) && lazyCloseTimeout > 0) {
              setTimeout(() => {
                if (!locks && socket2.readyState === WebSocketImpl.OPEN)
                  complete();
              }, lazyCloseTimeout);
            } else {
              complete();
            }
          }
        }),
        // or
        throwOnClose
      ])
    ];
  }
  function shouldRetryConnectOrThrow(errOrCloseEvent) {
    if (isLikeCloseEvent(errOrCloseEvent) && (isFatalInternalCloseCode(errOrCloseEvent.code) || [
      CloseCode.InternalServerError,
      CloseCode.InternalClientError,
      CloseCode.BadRequest,
      CloseCode.BadResponse,
      CloseCode.Unauthorized,
      // CloseCode.Forbidden, might grant access out after retry
      CloseCode.SubprotocolNotAcceptable,
      // CloseCode.ConnectionInitialisationTimeout, might not time out after retry
      // CloseCode.ConnectionAcknowledgementTimeout, might not time out after retry
      CloseCode.SubscriberAlreadyExists,
      CloseCode.TooManyInitialisationRequests
    ].includes(errOrCloseEvent.code)))
      throw errOrCloseEvent;
    if (disposed)
      return false;
    if (isLikeCloseEvent(errOrCloseEvent) && errOrCloseEvent.code === 1e3)
      return locks > 0;
    if (!retryAttempts || retries >= retryAttempts)
      throw errOrCloseEvent;
    if (isFatalConnectionProblem(errOrCloseEvent))
      throw errOrCloseEvent;
    return retrying = true;
  }
  if (!lazy) {
    (async () => {
      locks++;
      for (; ; ) {
        try {
          const [, , throwOnClose] = await connect();
          await throwOnClose;
        } catch (errOrCloseEvent) {
          try {
            if (!shouldRetryConnectOrThrow(errOrCloseEvent))
              return;
          } catch (errOrCloseEvent2) {
            return onNonLazyError === null || onNonLazyError === void 0 ? void 0 : onNonLazyError(errOrCloseEvent2);
          }
        }
      }
    })();
  }
  return {
    on: emitter.on,
    subscribe(payload, sink) {
      const id2 = generateID();
      let done = false, errored = false, releaser = () => {
        locks--;
        done = true;
      };
      (async () => {
        locks++;
        for (; ; ) {
          try {
            const [socket2, release, waitForReleaseOrThrowOnClose] = await connect();
            if (done)
              return release();
            const unlisten = emitter.onMessage(id2, (message) => {
              switch (message.type) {
                case MessageType.Next: {
                  sink.next(message.payload);
                  return;
                }
                case MessageType.Error: {
                  errored = true, done = true;
                  sink.error(message.payload);
                  releaser();
                  return;
                }
                case MessageType.Complete: {
                  done = true;
                  releaser();
                  return;
                }
              }
            });
            socket2.send(stringifyMessage({
              id: id2,
              type: MessageType.Subscribe,
              payload
            }, replacer2));
            releaser = () => {
              if (!done && socket2.readyState === WebSocketImpl.OPEN)
                socket2.send(stringifyMessage({
                  id: id2,
                  type: MessageType.Complete
                }, replacer2));
              locks--;
              done = true;
              release();
            };
            await waitForReleaseOrThrowOnClose.finally(unlisten);
            return;
          } catch (errOrCloseEvent) {
            if (!shouldRetryConnectOrThrow(errOrCloseEvent))
              return;
          }
        }
      })().then(() => {
        if (!errored)
          sink.complete();
      }).catch((err) => {
        sink.error(err);
      });
      return () => {
        if (!done)
          releaser();
      };
    },
    async dispose() {
      disposed = true;
      if (connecting) {
        const [socket2] = await connecting;
        socket2.close(1e3, "Normal Closure");
      }
    }
  };
}
function isLikeCloseEvent(val) {
  return isObject$3(val) && "code" in val && "reason" in val;
}
function isFatalInternalCloseCode(code3) {
  if ([
    1e3,
    1001,
    1006,
    1005,
    1012,
    1013,
    1013
    // Bad Gateway
  ].includes(code3))
    return false;
  return code3 >= 1e3 && code3 <= 1999;
}
function isWebSocket(val) {
  return typeof val === "function" && "constructor" in val && "CLOSED" in val && "CLOSING" in val && "CONNECTING" in val && "OPEN" in val;
}
function _extends() {
  return (_extends = Object.assign || function(t2) {
    for (var e = 1; e < arguments.length; e++) {
      var n = arguments[e];
      for (var r2 in n) {
        if (Object.prototype.hasOwnProperty.call(n, r2)) {
          t2[r2] = n[r2];
        }
      }
    }
    return t2;
  }).apply(this, arguments);
}
function getName(e) {
  return e.name.value;
}
function getFragmentTypeName(e) {
  return e.typeCondition.name.value;
}
function getFieldAlias(e) {
  return e.alias ? e.alias.value : getName(e);
}
function getSelectionSet(e) {
  return e.selectionSet ? e.selectionSet.selections : [];
}
function getTypeCondition(e) {
  return e.typeCondition ? getName(e.typeCondition) : null;
}
function isFieldNode(e) {
  return e.kind === Kind.FIELD;
}
function isInlineFragment(e) {
  return e.kind === Kind.INLINE_FRAGMENT;
}
function getFieldArguments(e, t2) {
  var r2 = {};
  var i = 0;
  if (e.arguments && e.arguments.length) {
    for (var n = 0, a2 = e.arguments.length; n < a2; n++) {
      var o2 = e.arguments[n];
      var s2 = valueFromASTUntyped(o2.value, t2);
      if (null != s2) {
        r2[getName(o2)] = s2;
        i++;
      }
    }
  }
  return i > 0 ? r2 : null;
}
function filterVariables(e, t2) {
  if (!t2 || !e.variableDefinitions) {
    return;
  }
  var r2 = {};
  for (var i = 0, n = e.variableDefinitions.length; i < n; i++) {
    var a2 = getName(e.variableDefinitions[i].variable);
    r2[a2] = t2[a2];
  }
  return r2;
}
function normalizeVariables(e, t2) {
  var r2 = {};
  if (!t2) {
    return r2;
  }
  if (e.variableDefinitions) {
    for (var i = 0, n = e.variableDefinitions.length; i < n; i++) {
      var a2 = e.variableDefinitions[i];
      var o2 = getName(a2.variable);
      r2[o2] = void 0 === t2[o2] && a2.defaultValue ? valueFromASTUntyped(a2.defaultValue, t2) : t2[o2];
    }
  }
  for (var s2 in t2) {
    if (!(s2 in r2)) {
      r2[s2] = t2[s2];
    }
  }
  return r2;
}
var N = "\nhttps://bit.ly/2XbVrpR#";
function invariant$1(e, t2, r2) {
  if (!e) {
    var i = t2 || "Minfied Error #" + r2 + "\n";
    var n = new Error(i + N + r2);
    n.name = "Graphcache Error";
    throw n;
  }
}
function getMainOperation(e) {
  for (var t2 = 0; t2 < e.definitions.length; t2++) {
    if (e.definitions[t2].kind === Kind.OPERATION_DEFINITION) {
      return e.definitions[t2];
    }
  }
  invariant$1(false, "", 1);
}
function getFragments(e) {
  var t2 = {};
  for (var r2 = 0; r2 < e.definitions.length; r2++) {
    var i = e.definitions[r2];
    if (i.kind === Kind.FRAGMENT_DEFINITION) {
      t2[getName(i)] = i;
    }
  }
  return t2;
}
function shouldInclude(e, t2) {
  for (var r2 = 0; e.directives && r2 < e.directives.length; r2++) {
    var i = e.directives[r2];
    var n = getName(i);
    if (("include" === n || "skip" === n) && i.arguments && i.arguments[0] && "if" === getName(i.arguments[0])) {
      var a2 = valueFromASTUntyped(i.arguments[0].value, t2);
      return "include" === n ? !!a2 : !a2;
    }
  }
  return true;
}
function isDeferred(e, t2) {
  for (var r2 = 0; e.directives && r2 < e.directives.length; r2++) {
    var i = e.directives[r2];
    if ("defer" === getName(i)) {
      for (var n = 0; i.arguments && n < i.arguments.length; n++) {
        var a2 = i.arguments[r2];
        if ("if" === getName(a2)) {
          return !!valueFromASTUntyped(a2.value, t2);
        }
      }
      return true;
    }
  }
  return false;
}
function isFieldNullable(e, t2, r2) {
  var i = getField(e, t2, r2);
  return !!i && "NON_NULL" !== i.type.kind;
}
function isListNullable(e, t2, r2) {
  var i = getField(e, t2, r2);
  if (!i) {
    return false;
  }
  var n = "NON_NULL" === i.type.kind ? i.type.ofType : i.type;
  return "LIST" === n.kind && "NON_NULL" !== n.ofType.kind;
}
function isInterfaceOfType(e, t2, r2) {
  if (!r2) {
    return false;
  }
  var i = getTypeCondition(t2);
  if (!i || r2 === i) {
    return true;
  } else if (e.types[i] && "OBJECT" === e.types[i].kind) {
    return i === r2;
  }
  !function expectAbstractType(e2, t3) {
    invariant$1(e2.types[t3] && ("INTERFACE" === e2.types[t3].kind || "UNION" === e2.types[t3].kind), "", 5);
  }(e, i);
  expectObjectType(e, r2);
  return e.isSubType(i, r2);
}
function getField(e, t2, r2) {
  if (0 === r2.indexOf("__") || 0 === t2.indexOf("__")) {
    return;
  }
  expectObjectType(e, t2);
  var i = e.types[t2].fields[r2];
  return i;
}
function expectObjectType(e, t2) {
  invariant$1(e.types[t2] && "OBJECT" === e.types[t2].kind, "", 3);
}
function keyOfField(t2, r2) {
  return r2 ? t2 + "(" + stringifyVariables(r2) + ")" : t2;
}
function joinKeys(e, t2) {
  return e + "." + t2;
}
function fieldInfoOfKey(e) {
  var t2 = e.indexOf("(");
  if (t2 > -1) {
    return {
      fieldKey: e,
      fieldName: e.slice(0, t2),
      arguments: JSON.parse(e.slice(t2 + 1, -1))
    };
  } else {
    return {
      fieldKey: e,
      fieldName: e,
      arguments: null
    };
  }
}
function deserializeKeyInfo(e) {
  var t2 = e.indexOf(".");
  return {
    entityKey: e.slice(0, t2).replace(/%2e/g, "."),
    fieldKey: e.slice(t2 + 1)
  };
}
function makeDict() {
  return /* @__PURE__ */ Object.create(null);
}
var _ = null;
var E = null;
var b = null;
var D = null;
var w$1 = null;
var F = null;
var S$1 = false;
function makeNodeMap() {
  return {
    optimistic: makeDict(),
    base: /* @__PURE__ */ new Map()
  };
}
function makeData(e) {
  var t2;
  if (e) {
    if (_.has(e)) {
      return e;
    }
    t2 = E.get(e) || _extends({}, e);
    E.set(e, t2);
  } else {
    t2 = {};
  }
  _.add(t2);
  return t2;
}
function ownsData(e) {
  return !!e && _.has(e);
}
function initDataState(e, t2, r2, i) {
  _ = /* @__PURE__ */ new Set();
  E = /* @__PURE__ */ new Map();
  b = e;
  D = t2;
  w$1 = makeDict();
  S$1 = !!i;
  if (!r2) {
    F = null;
  } else if (i || t2.optimisticOrder.length > 0) {
    if (!i && !t2.commutativeKeys.has(r2)) {
      reserveLayer(t2, r2);
    } else if (i) {
      t2.commutativeKeys.delete(r2);
    }
    F = r2;
    !function createLayer(e2, t3) {
      if (-1 === e2.optimisticOrder.indexOf(t3)) {
        e2.optimisticOrder.unshift(t3);
      }
      if (!e2.refLock[t3]) {
        e2.refLock[t3] = makeDict();
        e2.links.optimistic[t3] = /* @__PURE__ */ new Map();
        e2.records.optimistic[t3] = /* @__PURE__ */ new Map();
      }
    }(t2, r2);
  } else {
    F = null;
    deleteLayer(t2, r2);
  }
}
function clearDataState() {
  var t2 = D;
  var r2 = F;
  S$1 = false;
  F = null;
  if (r2 && t2.optimisticOrder.indexOf(r2) > -1) {
    var i = t2.optimisticOrder.length;
    while (--i >= 0 && t2.refLock[t2.optimisticOrder[i]] && t2.commutativeKeys.has(t2.optimisticOrder[i]) && !t2.deferredKeys.has(t2.optimisticOrder[i])) {
      squashLayer(t2.optimisticOrder[i]);
    }
  }
  _ = null;
  E = null;
  b = null;
  D = null;
  w$1 = null;
  if (!t2.defer) {
    t2.defer = true;
    Promise.resolve().then(function() {
      initDataState("read", t2, null);
      !function gc() {
        D.gc.forEach(function(e, t3, r3) {
          if ((D.refCount[e] || 0) > 0) {
            r3.delete(e);
            return;
          }
          for (var i2 in D.refLock) {
            var n = D.refLock[i2];
            if ((n[e] || 0) > 0) {
              return;
            }
            delete n[e];
          }
          delete D.refCount[e];
          r3.delete(e);
          D.records.base.delete(e);
          var a2 = D.links.base.get(e);
          if (a2) {
            D.links.base.delete(e);
            for (var o2 in a2) {
              updateRCForLink(r3, D.refCount, a2[o2], -1);
            }
          }
        });
      }();
      !function persistData() {
        if (D.storage) {
          S$1 = true;
          b = "read";
          var t3 = makeDict();
          D.persist.forEach(function(r3) {
            var i2 = deserializeKeyInfo(r3);
            var n = i2.entityKey;
            var a2 = i2.fieldKey;
            var o2;
            if (void 0 !== (o2 = readLink(n, a2))) {
              t3[r3] = ":" + stringifyVariables(o2);
            } else if (void 0 !== (o2 = readRecord(n, a2))) {
              t3[r3] = stringifyVariables(o2);
            } else {
              t3[r3] = void 0;
            }
          });
          S$1 = false;
          D.storage.writeData(t3);
          D.persist.clear();
        }
      }();
      clearDataState();
      t2.defer = false;
    });
  }
}
function noopDataState(e, t2, r2) {
  if (t2 && !r2) {
    e.deferredKeys.delete(t2);
  }
  initDataState("read", e, t2, r2);
  clearDataState();
}
function getCurrentOperation() {
  invariant$1(null !== b, "", 2);
  return b;
}
function getCurrentDependencies() {
  invariant$1(null !== w$1, "", 2);
  return w$1;
}
function setNode(e, t2, r2, i) {
  var n = F ? e.optimistic[F] : e.base;
  var a2 = n.get(t2);
  if (void 0 === a2) {
    n.set(t2, a2 = makeDict());
  }
  if (void 0 === i && !F) {
    delete a2[r2];
  } else {
    a2[r2] = i;
  }
}
function getNode(e, t2, r2) {
  var i;
  var n = !S$1 && "read" === b && F && D.commutativeKeys.has(F);
  for (var a2 = 0, o2 = D.optimisticOrder.length; a2 < o2; a2++) {
    var s2 = D.optimisticOrder[a2];
    var u2 = e.optimistic[s2];
    n = n && s2 !== F;
    if (u2 && (!n || !D.commutativeKeys.has(s2)) && (!S$1 || "write" === b || D.commutativeKeys.has(s2)) && void 0 !== (i = u2.get(t2)) && r2 in i) {
      return i[r2];
    }
  }
  return void 0 !== (i = e.base.get(t2)) ? i[r2] : void 0;
}
function updateRCForEntity(e, t2, r2, i) {
  var n = void 0 !== t2[r2] ? t2[r2] : 0;
  var a2 = t2[r2] = n + i | 0;
  if (void 0 !== e) {
    if (a2 <= 0) {
      e.add(r2);
    } else if (n <= 0 && a2 > 0) {
      e.delete(r2);
    }
  }
}
function updateRCForLink(e, t2, r2, i) {
  if ("string" == typeof r2) {
    updateRCForEntity(e, t2, r2, i);
  } else if (Array.isArray(r2)) {
    for (var n = 0, a2 = r2.length; n < a2; n++) {
      if (Array.isArray(r2[n])) {
        updateRCForLink(e, t2, r2[n], i);
      } else if (r2[n]) {
        updateRCForEntity(e, t2, r2[n], i);
      }
    }
  }
}
function extractNodeFields(e, t2, r2) {
  if (void 0 !== r2) {
    for (var i in r2) {
      if (!t2.has(i)) {
        e.push(fieldInfoOfKey(i));
        t2.add(i);
      }
    }
  }
}
function extractNodeMapFields(e, t2, r2, i) {
  extractNodeFields(e, t2, i.base.get(r2));
  for (var n = 0, a2 = D.optimisticOrder.length; n < a2; n++) {
    var o2 = i.optimistic[D.optimisticOrder[n]];
    if (void 0 !== o2) {
      extractNodeFields(e, t2, o2.get(r2));
    }
  }
}
function updateDependencies(e, t2) {
  if ("__typename" !== t2) {
    if (e !== D.queryRootKey) {
      w$1[e] = true;
    } else if (void 0 !== t2) {
      w$1[joinKeys(e, t2)] = true;
    }
  }
}
function updatePersist(e, t2) {
  if (!S$1 && D.storage) {
    D.persist.add(function serializeKeys(e2, t3) {
      return e2.replace(/\./g, "%2e") + "." + t3;
    }(e, t2));
  }
}
function readRecord(e, t2) {
  updateDependencies(e, t2);
  return getNode(D.records, e, t2);
}
function readLink(e, t2) {
  updateDependencies(e, t2);
  return getNode(D.links, e, t2);
}
function writeRecord(e, t2, r2) {
  updateDependencies(e, t2);
  updatePersist(e, t2);
  setNode(D.records, e, t2, r2);
}
function writeLink(e, t2, r2) {
  var i = D;
  var n;
  var a2;
  var o2;
  if (F) {
    n = i.refLock[F] || (i.refLock[F] = makeDict());
    a2 = i.links.optimistic[F];
  } else {
    n = i.refCount;
    a2 = i.links.base;
    o2 = i.gc;
  }
  var s2 = a2 && a2.get(e);
  var u2 = s2 && s2[t2];
  updateDependencies(e, t2);
  updatePersist(e, t2);
  setNode(i.links, e, t2, r2);
  updateRCForLink(o2, n, u2, -1);
  updateRCForLink(o2, n, r2, 1);
}
function reserveLayer(e, t2, r2) {
  var i = e.optimisticOrder.indexOf(t2);
  if (-1 === i) {
    e.optimisticOrder.unshift(t2);
  } else if (!e.commutativeKeys.has(t2)) {
    clearLayer(e, t2);
    e.optimisticOrder.splice(i, 1);
    e.optimisticOrder.unshift(t2);
  }
  if (r2) {
    e.deferredKeys.add(t2);
  } else {
    e.deferredKeys.delete(t2);
  }
  e.commutativeKeys.add(t2);
}
function clearLayer(e, t2) {
  if (e.refLock[t2]) {
    delete e.refLock[t2];
    delete e.records.optimistic[t2];
    delete e.links.optimistic[t2];
    e.deferredKeys.delete(t2);
  }
}
function deleteLayer(e, t2) {
  var r2 = e.optimisticOrder.indexOf(t2);
  if (r2 > -1) {
    e.optimisticOrder.splice(r2, 1);
    e.commutativeKeys.delete(t2);
  }
  clearLayer(e, t2);
}
function squashLayer(e) {
  var t2 = w$1;
  w$1 = makeDict();
  var r2 = D.links.optimistic[e];
  if (r2) {
    r2.forEach(function(e2, t3) {
      for (var r3 in e2) {
        writeLink(t3, r3, e2[r3]);
      }
    });
  }
  var i = D.records.optimistic[e];
  if (i) {
    i.forEach(function(e2, t3) {
      for (var r3 in e2) {
        writeRecord(t3, r3, e2[r3]);
      }
    });
  }
  w$1 = t2;
  deleteLayer(D, e);
}
function inspectFields(e) {
  var t2 = D.links;
  var r2 = D.records;
  var i = [];
  var n = /* @__PURE__ */ new Set();
  updateDependencies(e);
  extractNodeMapFields(i, n, e, t2);
  extractNodeMapFields(i, n, e, r2);
  return i;
}
var L$1 = {
  current: null
};
var x$1 = {
  current: false
};
function getFieldError(e) {
  return e.__internal.path.length > 0 && e.__internal.errorMap ? e.__internal.errorMap[e.__internal.path.join(".")] : void 0;
}
function makeContext(e, t2, r2, i, n, a2, o2) {
  var s2 = {
    store: e,
    variables: t2,
    fragments: r2,
    parent: {
      __typename: i
    },
    parentTypeName: i,
    parentKey: n,
    parentFieldKey: "",
    fieldName: "",
    error: void 0,
    partial: false,
    optimistic: !!a2,
    __internal: {
      path: [],
      errorMap: void 0
    }
  };
  if (o2 && o2.graphQLErrors) {
    for (var u2 = 0; u2 < o2.graphQLErrors.length; u2++) {
      var c2 = o2.graphQLErrors[u2];
      if (c2.path && c2.path.length) {
        if (!s2.__internal.errorMap) {
          s2.__internal.errorMap = /* @__PURE__ */ Object.create(null);
        }
        s2.__internal.errorMap[c2.path.join(".")] = c2;
      }
    }
  }
  return s2;
}
function updateContext(e, t2, r2, i, n, a2) {
  L$1.current = e;
  e.parent = t2;
  e.parentTypeName = r2;
  e.parentKey = i;
  e.parentFieldKey = n;
  e.fieldName = a2;
  e.error = getFieldError(e);
}
function isFragmentHeuristicallyMatching(e, t2, r2, i) {
  if (!t2) {
    return false;
  }
  var n = getTypeCondition(e);
  if (!n || t2 === n) {
    return true;
  }
  return !getSelectionSet(e).some(function(e2) {
    if (!isFieldNode(e2)) {
      return false;
    }
    var t3 = keyOfField(getName(e2), getFieldArguments(e2, i));
    return !function hasField(e3, t4) {
      return void 0 !== readRecord(e3, t4) || void 0 !== readLink(e3, t4);
    }(r2, t3);
  });
}
function makeSelectionIterator(e, t2, r2, i) {
  var n = false;
  var a2;
  var o2 = 0;
  return function next() {
    if (!x$1.current && n) {
      x$1.current = n;
    }
    if (a2) {
      var s2 = a2();
      if (null != s2) {
        return s2;
      }
      a2 = void 0;
      n = false;
    }
    while (o2 < r2.length) {
      var u2 = r2[o2++];
      if (!shouldInclude(u2, i.variables)) {
        continue;
      } else if (!isFieldNode(u2)) {
        var c2 = !isInlineFragment(u2) ? i.fragments[getName(u2)] : u2;
        if (void 0 !== c2) {
          if (i.store.schema ? isInterfaceOfType(i.store.schema, c2, e) : isFragmentHeuristicallyMatching(c2, e, t2, i.variables)) {
            n = !!isDeferred(u2, i.variables);
            if (!x$1.current && n) {
              x$1.current = n;
            }
            return (a2 = makeSelectionIterator(e, t2, getSelectionSet(c2), i))();
          }
        }
      } else {
        return u2;
      }
    }
  };
}
function ensureData(e) {
  return null == e ? null : e;
}
function ensureLink(e, t2) {
  if (null == t2) {
    return t2;
  } else if (Array.isArray(t2)) {
    var r2 = new Array(t2.length);
    for (var i = 0, n = r2.length; i < n; i++) {
      r2[i] = ensureLink(e, t2[i]);
    }
    return r2;
  }
  var a2 = e.keyOfEntity(t2);
  return a2;
}
function write$1(e, t2, r2, i, n) {
  initDataState("write", e.data, n || null);
  var a2 = startWrite(e, t2, r2, i);
  clearDataState();
  return a2;
}
function startWrite(e, t2, r2, i, n) {
  var a2 = getMainOperation(t2.query);
  var o2 = {
    data: r2,
    dependencies: getCurrentDependencies()
  };
  var s2 = e.rootFields[a2.operation];
  var u2 = makeContext(e, normalizeVariables(a2, t2.variables), getFragments(t2.query), s2, s2, !!n, i);
  writeSelection(u2, s2, getSelectionSet(a2), r2);
  return o2;
}
function writeSelection(e, t2, r2, i) {
  var n = t2 === e.store.rootFields.query;
  var a2 = !n && !!e.store.rootNames[t2];
  var o2 = a2 || n ? t2 : i.__typename;
  if (!o2) {
    return;
  } else if (!a2 && !n && t2) {
    writeRecord(t2, "__typename", o2);
  }
  var s2 = makeSelectionIterator(o2, t2 || o2, r2, e);
  var u2;
  while (u2 = s2()) {
    var c2 = getName(u2);
    var l2 = getFieldArguments(u2, e.variables);
    var d2 = keyOfField(c2, l2);
    var f2 = getFieldAlias(u2);
    var p2 = i[f2];
    if ("__typename" === c2 || void 0 === p2 && x$1.current) {
      continue;
    }
    e.__internal.path.push(f2);
    if (e.optimistic && a2) {
      var v2 = e.store.optimisticMutations[c2];
      if (!v2) {
        continue;
      }
      updateContext(e, i, o2, o2, d2, c2);
      p2 = i[f2] = ensureData(v2(l2 || {}, e.store, e));
    }
    if (u2.selectionSet) {
      if (t2 && !a2) {
        var y2 = joinKeys(t2, d2);
        writeLink(t2 || o2, d2, writeField(e, getSelectionSet(u2), ensureData(p2), y2));
      } else {
        writeField(e, getSelectionSet(u2), ensureData(p2));
      }
    } else if (t2 && !a2) {
      writeRecord(t2 || o2, d2, null !== p2 || !getFieldError(e) ? p2 : void 0);
    }
    if (a2) {
      var m2 = e.store.updates[o2][c2];
      if (m2) {
        updateContext(e, i, o2, o2, joinKeys(o2, d2), c2);
        i[c2] = p2;
        m2(i, l2 || {}, e.store, e);
      }
    }
    e.__internal.path.pop();
  }
}
function writeField(e, t2, r2, i) {
  if (Array.isArray(r2)) {
    var n = new Array(r2.length);
    for (var a2 = 0, o2 = r2.length; a2 < o2; a2++) {
      e.__internal.path.push(a2);
      var s2 = i ? joinKeys(i, "" + a2) : void 0;
      var u2 = writeField(e, t2, r2[a2], s2);
      n[a2] = u2;
      e.__internal.path.pop();
    }
    return n;
  } else if (null === r2) {
    return getFieldError(e) ? void 0 : null;
  }
  var c2 = e.store.keyOfEntity(r2);
  r2.__typename;
  var d2 = c2 || i;
  writeSelection(e, d2, t2, r2);
  return d2 || null;
}
function Store(e) {
  var t2, r2;
  this.keyOfField = keyOfField;
  this.resolveFieldByKey = this.resolve;
  if (!e) {
    e = {};
  }
  this.resolvers = e.resolvers || {};
  this.optimisticMutations = e.optimistic || {};
  this.keys = e.keys || {};
  var i = "Query";
  var n = "Mutation";
  var a2 = "Subscription";
  if (e.schema) {
    var o2 = function buildClientSchema(e2) {
      var t3 = e2.__schema;
      var r3 = {};
      function buildNameMap(e3) {
        var t4 = {};
        for (var r4 = 0; r4 < e3.length; r4++) {
          t4[e3[r4].name] = e3[r4];
        }
        return t4;
      }
      function buildType(e3) {
        switch (e3.kind) {
          case "OBJECT":
          case "INTERFACE":
            return {
              name: e3.name,
              kind: e3.kind,
              interfaces: buildNameMap(e3.interfaces || []),
              fields: buildNameMap(e3.fields.map(function(e4) {
                return {
                  name: e4.name,
                  type: e4.type,
                  args: buildNameMap(e4.args)
                };
              }))
            };
          case "UNION":
            return {
              name: e3.name,
              kind: e3.kind,
              types: buildNameMap(e3.possibleTypes || [])
            };
        }
      }
      var i2 = {
        query: t3.queryType ? t3.queryType.name : null,
        mutation: t3.mutationType ? t3.mutationType.name : null,
        subscription: t3.subscriptionType ? t3.subscriptionType.name : null,
        types: void 0,
        isSubType: function isSubType(e3, t4) {
          var i3 = r3[e3];
          var n3 = r3[t4];
          if (!i3 || !n3) {
            return false;
          } else if ("UNION" === i3.kind) {
            return !!i3.types[t4];
          } else if ("OBJECT" !== i3.kind && "OBJECT" === n3.kind) {
            return !!n3.interfaces[e3];
          } else {
            return e3 === t4;
          }
        }
      };
      if (t3.types) {
        i2.types = r3;
        for (var n2 = 0; n2 < t3.types.length; n2++) {
          var a3 = t3.types[n2];
          if (a3 && a3.name) {
            var o3 = buildType(a3);
            if (o3) {
              r3[a3.name] = o3;
            }
          }
        }
      }
      return i2;
    }(e.schema);
    i = o2.query || i;
    n = o2.mutation || n;
    a2 = o2.subscription || a2;
    if (o2.types) {
      this.schema = o2;
    }
  }
  this.updates = ((t2 = {})[n] = e.updates && e.updates.Mutation || {}, t2[a2] = e.updates && e.updates.Subscription || {}, t2);
  this.rootFields = {
    query: i,
    mutation: n,
    subscription: a2
  };
  this.rootNames = ((r2 = {})[i] = "query", r2[n] = "mutation", r2[a2] = "subscription", r2);
  this.data = function make(e2) {
    return {
      defer: false,
      gc: /* @__PURE__ */ new Set(),
      persist: /* @__PURE__ */ new Set(),
      queryRootKey: e2,
      refCount: makeDict(),
      refLock: makeDict(),
      links: makeNodeMap(),
      records: makeNodeMap(),
      deferredKeys: /* @__PURE__ */ new Set(),
      commutativeKeys: /* @__PURE__ */ new Set(),
      optimisticOrder: [],
      storage: null
    };
  }(i);
  if (this.schema && false) {
    !function expectValidKeyingConfig(e2, t3) {
    }(this.schema, this.keys);
    !function expectValidUpdatesConfig(e2, t3) {
      {
        return;
      }
    }(this.schema, this.updates);
    !function expectValidResolversConfig(e2, t3) {
      {
        return;
      }
    }(this.schema, this.resolvers);
    !function expectValidOptimisticMutationsConfig(e2, t3) {
      {
        return;
      }
    }(this.schema, this.optimisticMutations);
  }
}
Store.prototype.keyOfEntity = function keyOfEntity(e) {
  if (L$1.current && e === L$1.current.parent) {
    return L$1.current.parentKey;
  }
  if (null == e || "string" == typeof e) {
    return e || null;
  }
  if (!e.__typename) {
    return null;
  }
  if (this.rootNames[e.__typename]) {
    return e.__typename;
  }
  var t2;
  if (this.keys[e.__typename]) {
    t2 = this.keys[e.__typename](e);
  } else if (null != e.id) {
    t2 = "" + e.id;
  } else if (null != e._id) {
    t2 = "" + e._id;
  }
  return t2 ? e.__typename + ":" + t2 : null;
};
Store.prototype.resolve = function resolve2(e, t2, r2) {
  var i = keyOfField(t2, r2);
  var n = this.keyOfEntity(e);
  if (!n) {
    return null;
  }
  var a2 = readRecord(n, i);
  if (void 0 !== a2) {
    return a2;
  }
  return readLink(n, i) || null;
};
Store.prototype.invalidate = function invalidate(e, t2, r2) {
  var i = this.keyOfEntity(e);
  invariant$1(i, "", 19);
  !function invalidateEntity(e2, t3, r3) {
    var i2 = t3 ? [{
      fieldKey: keyOfField(t3, r3)
    }] : inspectFields(e2);
    for (var n = 0, a2 = i2.length; n < a2; n++) {
      var o2 = i2[n].fieldKey;
      if (void 0 !== readLink(e2, o2)) {
        writeLink(e2, o2, void 0);
      } else {
        writeRecord(e2, o2, void 0);
      }
    }
  }(i, t2, r2);
};
Store.prototype.inspectFields = function inspectFields$1(e) {
  var t2 = this.keyOfEntity(e);
  return t2 ? inspectFields(t2) : [];
};
Store.prototype.updateQuery = function updateQuery(e, i) {
  var n = createRequest(e.query, e.variables);
  n.query = formatDocument(n.query);
  var a2 = i(this.readQuery(n));
  if (null !== a2) {
    startWrite(this, n, a2);
  }
};
Store.prototype.readQuery = function readQuery(e) {
  var i = createRequest(e.query, e.variables);
  i.query = formatDocument(i.query);
  return read$2(this, i).data;
};
Store.prototype.readFragment = function readFragment$1(e, t2, i) {
  return function readFragment(e2, t3, r2, i2) {
    var n = getFragments(t3);
    var a2 = Object.keys(n);
    var o2 = n[a2[0]];
    if (!o2) {
      return null;
    }
    var s2 = getFragmentTypeName(o2);
    if ("string" != typeof r2 && !r2.__typename) {
      r2.__typename = s2;
    }
    var u2 = e2.keyOfEntity(r2);
    if (!u2) {
      return null;
    }
    var c2 = readSelection(makeContext(e2, i2 || {}, n, s2, u2), u2, getSelectionSet(o2), makeData()) || null;
    return c2;
  }(this, formatDocument(e), t2, i);
};
Store.prototype.writeFragment = function writeFragment$1(e, t2, i) {
  !function writeFragment(e2, t3, r2, i2) {
    var n = getFragments(t3);
    var a2 = n[Object.keys(n)[0]];
    if (!a2) {
      return void 0;
    }
    var o2 = getFragmentTypeName(a2);
    var s2 = _extends({}, {
      __typename: o2
    }, r2);
    var u2 = e2.keyOfEntity(s2);
    if (!u2) {
      return void 0;
    }
    writeSelection(makeContext(e2, i2 || {}, n, o2, u2, void 0), u2, getSelectionSet(a2), s2);
  }(this, formatDocument(e), t2, i);
};
Store.prototype.link = function link(e, t2, r2, i) {
  var n = void 0 !== i ? r2 : null;
  var link4 = void 0 !== i ? i : r2;
  var a2 = ensureLink(this, e);
  if ("string" == typeof a2) {
    writeLink(a2, keyOfField(t2, n), ensureLink(this, link4));
  }
};
function query(e, t2, r2, i, n) {
  initDataState("read", e.data, n);
  var a2 = read$2(e, t2, r2, i);
  clearDataState();
  return a2;
}
function read$2(e, t2, r2, i) {
  var n = getMainOperation(t2.query);
  var a2 = e.rootFields[n.operation];
  var o2 = getSelectionSet(n);
  var s2 = makeContext(e, normalizeVariables(n, t2.variables), getFragments(t2.query), a2, a2, false, i);
  if (!r2) {
    r2 = makeData();
  }
  var u2 = a2 !== s2.store.rootFields.query ? readRoot(s2, a2, o2, r2) : readSelection(s2, a2, o2, r2);
  return {
    dependencies: getCurrentDependencies(),
    partial: s2.partial || !u2,
    data: u2 || null
  };
}
function readRoot(e, t2, r2, i) {
  if ("string" != typeof (e.store.rootNames[t2] ? t2 : i.__typename)) {
    return i;
  }
  var n = makeSelectionIterator(t2, t2, r2, e);
  var a2;
  var o2 = false;
  var s2 = makeData(i);
  while (a2 = n()) {
    var u2 = getFieldAlias(a2);
    var c2 = i[u2];
    e.__internal.path.push(u2);
    var l2 = void 0;
    if (a2.selectionSet && null !== c2) {
      l2 = readRootField(e, getSelectionSet(a2), ensureData(c2));
    } else {
      l2 = c2;
    }
    o2 = o2 || l2 !== c2;
    if (void 0 !== l2) {
      s2[u2] = l2;
    }
    e.__internal.path.pop();
  }
  return o2 ? s2 : i;
}
function readRootField(e, t2, r2) {
  if (Array.isArray(r2)) {
    var i = new Array(r2.length);
    var n = false;
    for (var a2 = 0, o2 = r2.length; a2 < o2; a2++) {
      e.__internal.path.push(a2);
      i[a2] = readRootField(e, t2, r2[a2]);
      n = n || i[a2] !== r2[a2];
      e.__internal.path.pop();
    }
    return n ? i : r2;
  } else if (null === r2) {
    return null;
  }
  var s2 = e.store.keyOfEntity(r2);
  if (null !== s2) {
    return readSelection(e, s2, t2, r2) || null;
  } else {
    return readRoot(e, r2.__typename, t2, r2);
  }
}
function readSelection(e, t2, r2, i, n) {
  var a2 = e.store;
  var o2 = t2 === a2.rootFields.query;
  var s2 = n && a2.keyOfEntity(n) || t2;
  var u2 = !o2 ? readRecord(s2, "__typename") || n && n.__typename : t2;
  if ("string" != typeof u2) {
    return;
  } else if (n && u2 !== n.__typename) {
    return;
  }
  var c2 = makeSelectionIterator(u2, s2, r2, e);
  var l2 = false;
  var d2 = false;
  var f2 = u2 !== i.__typename;
  var p2;
  var v2 = makeData(i);
  while (void 0 !== (p2 = c2())) {
    var y2 = getName(p2);
    var m2 = getFieldArguments(p2, e.variables);
    var h2 = getFieldAlias(p2);
    var g = keyOfField(y2, m2);
    var N2 = joinKeys(s2, g);
    var k2 = readRecord(s2, g);
    var O2 = n ? n[y2] : void 0;
    var _2 = a2.resolvers[u2];
    e.__internal.path.push(h2);
    var E2 = void 0;
    if ("__typename" === y2) {
      E2 = u2;
    } else if (void 0 !== O2 && void 0 === p2.selectionSet) {
      E2 = O2;
    } else if ("read" === getCurrentOperation() && _2 && "function" == typeof _2[y2]) {
      updateContext(e, v2, u2, s2, N2, y2);
      if (void 0 !== k2) {
        v2[h2] = k2;
      }
      E2 = _2[y2](v2, m2 || {}, a2, e);
      if (p2.selectionSet) {
        E2 = resolveResolverResult(e, u2, y2, N2, getSelectionSet(p2), void 0 !== v2[h2] ? v2[h2] : i[h2], E2, ownsData(i));
      }
      if (a2.schema && null === E2 && !isFieldNullable(a2.schema, u2, y2)) {
        return;
      }
    } else if (!p2.selectionSet) {
      E2 = k2;
    } else if (void 0 !== O2) {
      E2 = resolveResolverResult(e, u2, y2, N2, getSelectionSet(p2), void 0 !== v2[h2] ? v2[h2] : i[h2], O2, ownsData(i));
    } else {
      var b2 = readLink(s2, g);
      if (void 0 !== b2) {
        E2 = resolveLink(e, b2, u2, y2, getSelectionSet(p2), void 0 !== v2[h2] ? v2[h2] : i[h2], ownsData(i));
      } else if ("object" == typeof k2 && null !== k2) {
        E2 = k2;
      }
    }
    if (void 0 === E2 && x$1.current) {
      l2 = true;
    } else if (void 0 === E2 && (a2.schema && isFieldNullable(a2.schema, u2, y2) || getFieldError(e))) {
      d2 = true;
      E2 = null;
    } else if (void 0 === E2) {
      e.__internal.path.pop();
      return;
    } else {
      l2 = l2 || "__typename" !== y2;
    }
    e.__internal.path.pop();
    f2 = f2 || E2 !== i[h2];
    if (void 0 !== E2) {
      v2[h2] = E2;
    }
  }
  e.partial = e.partial || d2;
  return o2 && d2 && !l2 ? void 0 : f2 ? v2 : i;
}
function resolveResolverResult(e, t2, r2, i, n, a2, o2, s2) {
  if (Array.isArray(o2)) {
    var u2 = e.store;
    var c2 = u2.schema ? isListNullable(u2.schema, t2, r2) : false;
    var l2 = new Array(o2.length);
    var d2 = !Array.isArray(a2) || o2.length !== a2.length;
    for (var f2 = 0, p2 = o2.length; f2 < p2; f2++) {
      e.__internal.path.push(f2);
      var v2 = resolveResolverResult(e, t2, r2, joinKeys(i, "" + f2), n, null != a2 ? a2[f2] : void 0, o2[f2], s2);
      e.__internal.path.pop();
      if (void 0 === v2 && !c2) {
        return;
      } else {
        e.partial = e.partial || void 0 === v2 && c2;
        l2[f2] = null != v2 ? v2 : null;
        d2 = d2 || l2[f2] !== a2[f2];
      }
    }
    return d2 ? l2 : a2;
  } else if (null == o2) {
    return o2;
  } else if (s2 && null === a2) {
    return null;
  } else if (function isDataOrKey(e2) {
    return "string" == typeof e2 || "object" == typeof e2 && "string" == typeof e2.__typename;
  }(o2)) {
    var y2 = a2 || makeData();
    return "string" == typeof o2 ? readSelection(e, o2, n, y2) : readSelection(e, i, n, y2, o2);
  } else {
    return;
  }
}
function resolveLink(e, t2, r2, i, n, a2, o2) {
  if (Array.isArray(t2)) {
    var s2 = e.store;
    var u2 = s2.schema ? isListNullable(s2.schema, r2, i) : false;
    var c2 = new Array(t2.length);
    var l2 = !Array.isArray(a2) || c2.length !== a2.length;
    for (var d2 = 0, f2 = t2.length; d2 < f2; d2++) {
      e.__internal.path.push(d2);
      var p2 = resolveLink(e, t2[d2], r2, i, n, null != a2 ? a2[d2] : void 0, o2);
      e.__internal.path.pop();
      if (void 0 === p2 && !u2) {
        return;
      } else {
        e.partial = e.partial || void 0 === p2 && u2;
        c2[d2] = p2 || null;
        l2 = l2 || c2[d2] !== a2[d2];
      }
    }
    return l2 ? c2 : a2;
  } else if (null === t2 || null === a2 && o2) {
    return null;
  }
  return readSelection(e, t2, n, a2 || makeData());
}
function addCacheOutcome(e, t2) {
  return makeOperation(e.kind, e, _extends({}, e.context, {
    meta: _extends({}, e.context.meta, {
      cacheOutcome: t2
    })
  }));
}
function toRequestPolicy(e, t2) {
  return makeOperation(e.kind, e, _extends({}, e.context, {
    requestPolicy: t2
  }));
}
function cacheExchange(e) {
  return function(t2) {
    var v2 = t2.forward;
    var y2 = t2.client;
    t2.dispatchDebug;
    var h2 = new Store(e);
    var g;
    if (e && e.storage) {
      g = e.storage.readData().then(function(t3) {
        !function hydrateData(e2, t4, r2) {
          initDataState("write", e2, null);
          for (var i in r2) {
            var n = r2[i];
            if (void 0 !== n) {
              var a2 = deserializeKeyInfo(i);
              var o2 = a2.entityKey;
              var s2 = a2.fieldKey;
              if (":" === n[0]) {
                writeLink(o2, s2, JSON.parse(n.slice(1)));
              } else {
                writeRecord(o2, s2, JSON.parse(n));
              }
            }
          }
          clearDataState();
          e2.storage = t4;
        }(h2.data, e.storage, t3);
      });
    }
    var N2 = /* @__PURE__ */ new Map();
    var k2 = [];
    var O2 = /* @__PURE__ */ new Map();
    var _2 = /* @__PURE__ */ new Map();
    var E2 = makeDict();
    var b2 = /* @__PURE__ */ new Set();
    var D2 = makeDict();
    function isBlockedByOptimisticUpdate(e2) {
      for (var t3 in e2) {
        if (E2[t3]) {
          return true;
        }
      }
      return false;
    }
    function collectPendingOperations(e2, t3) {
      if (t3) {
        for (var r2 in t3) {
          var i = D2[r2];
          if (i) {
            D2[r2] = [];
            for (var n = 0, a2 = i.length; n < a2; n++) {
              e2.add(i[n]);
            }
          }
        }
      }
    }
    function executePendingOperations(e2, t3) {
      t3.forEach(function(t4) {
        if (t4 !== e2.key) {
          var r2 = O2.get(t4);
          if (r2) {
            O2.delete(t4);
            var i = "cache-first";
            if (b2.has(t4)) {
              b2.delete(t4);
              i = "cache-and-network";
            }
            y2.reexecuteOperation(toRequestPolicy(r2, i));
          }
        }
      });
    }
    function prepareForwardedOperation(e2) {
      if ("query" === e2.kind) {
        reserveLayer(h2.data, e2.key);
      } else if ("teardown" === e2.kind) {
        O2.delete(e2.key);
        _2.delete(e2.key);
        noopDataState(h2.data, e2.key);
      } else if ("mutation" === e2.kind && "network-only" !== e2.context.requestPolicy) {
        var t3 = function writeOptimistic(e3, t4, r2) {
          initDataState("write", e3.data, r2, true);
          var i = startWrite(e3, t4, {}, void 0, true);
          clearDataState();
          return i;
        }(h2, e2, e2.key).dependencies;
        if (!function isDictEmpty(e3) {
          for (var t4 in e3) {
            return false;
          }
          return true;
        }(t3)) {
          for (var n in t3) {
            E2[n] = true;
          }
          N2.set(e2.key, t3);
          var a2 = /* @__PURE__ */ new Set();
          collectPendingOperations(a2, t3);
          executePendingOperations(e2, a2);
        }
      }
      return makeOperation(e2.kind, {
        key: e2.key,
        query: formatDocument(e2.query),
        variables: e2.variables ? filterVariables(getMainOperation(e2.query), e2.variables) : e2.variables
      }, e2.context);
    }
    function updateDependencies2(e2, t3) {
      for (var r2 in t3) {
        (D2[r2] || (D2[r2] = [])).push(e2.key);
        O2.set(e2.key, e2);
      }
    }
    function operationResultFromCache(e2) {
      var t3 = query(h2, e2, _2.get(e2.key));
      var r2 = t3.data ? !t3.partial ? "hit" : "partial" : "miss";
      _2.set(e2.key, t3.data);
      updateDependencies2(e2, t3.dependencies);
      return {
        outcome: r2,
        operation: e2,
        data: t3.data,
        dependencies: t3.dependencies
      };
    }
    function updateCacheWithResult(e2, t3) {
      var r2 = e2.operation;
      var i = e2.error;
      var n = e2.extensions;
      var a2 = r2.key;
      if ("mutation" === r2.kind) {
        collectPendingOperations(t3, N2.get(a2));
        N2.delete(a2);
      }
      reserveLayer(h2.data, r2.key, e2.hasNext);
      var o2;
      var s2 = e2.data;
      if (s2) {
        collectPendingOperations(t3, write$1(h2, r2, s2, e2.error, a2).dependencies);
        var u2 = query(h2, r2, "query" === r2.kind ? _2.get(r2.key) || s2 : s2, e2.error, a2);
        s2 = u2.data;
        if ("query" === r2.kind) {
          collectPendingOperations(t3, o2 = u2.dependencies);
          _2.set(r2.key, e2.data);
        }
      } else {
        noopDataState(h2.data, r2.key);
      }
      if (o2) {
        updateDependencies2(e2.operation, o2);
      }
      return {
        data: s2,
        error: i,
        extensions: n,
        operation: r2
      };
    }
    return function(e2) {
      var t3 = share$1(e2);
      var r2 = g ? share$1(merge$1([D$1(p$1)(buffer$1(fromPromise$1(g))(t3)), skipUntil$1(fromPromise$1(g))(t3)])) : t3;
      var i = share$1(map$1$1(operationResultFromCache)(filter$1(function(e3) {
        return "query" === e3.kind && "network-only" !== e3.context.requestPolicy;
      })(r2)));
      var O3 = filter$1(function(e3) {
        return "query" !== e3.kind || "network-only" === e3.context.requestPolicy;
      })(r2);
      var _3 = map$1$1(function(e3) {
        return addCacheOutcome(e3.operation, "miss");
      })(filter$1(function(e3) {
        return "miss" === e3.outcome && "cache-only" !== e3.operation.context.requestPolicy && !isBlockedByOptimisticUpdate(e3.dependencies);
      })(i));
      var D3 = map$1$1(function(e3) {
        var t4 = e3.operation;
        var r3 = e3.outcome;
        var i2 = e3.dependencies;
        var n = {
          operation: addCacheOutcome(t4, r3),
          data: e3.data,
          error: e3.error,
          extensions: e3.extensions
        };
        if ("cache-and-network" === t4.context.requestPolicy || "cache-first" === t4.context.requestPolicy && "partial" === r3) {
          n.stale = true;
          if (!isBlockedByOptimisticUpdate(i2)) {
            y2.reexecuteOperation(toRequestPolicy(t4, "network-only"));
          } else if ("cache-and-network" === t4.context.requestPolicy) {
            b2.add(t4.key);
          }
        }
        return n;
      })(filter$1(function(e3) {
        return "miss" !== e3.outcome || "cache-only" === e3.operation.context.requestPolicy;
      })(i));
      var w2 = share$1(v2(map$1$1(prepareForwardedOperation)(merge$1([O3, _3]))));
      var F3 = map$1$1(function(e3) {
        var t4 = /* @__PURE__ */ new Set();
        var r3 = updateCacheWithResult(e3, t4);
        executePendingOperations(e3.operation, t4);
        return r3;
      })(filter$1(function(e3) {
        return !N2.has(e3.operation.key);
      })(w2));
      var S2 = D$1(function(e3) {
        if (k2.push(e3) < N2.size) {
          return u$1;
        }
        for (var t4 = 0; t4 < k2.length; t4++) {
          reserveLayer(h2.data, k2[t4].operation.key);
        }
        for (var r3 in E2) {
          delete E2[r3];
        }
        var i2 = [];
        var n = /* @__PURE__ */ new Set();
        var a2;
        while (a2 = k2.shift()) {
          i2.push(updateCacheWithResult(a2, n));
        }
        executePendingOperations(e3.operation, n);
        return p$1(i2);
      })(filter$1(function(e3) {
        return N2.has(e3.operation.key);
      })(w2));
      return merge$1([F3, S2, D3]);
    };
  };
}
var a = {
  __typename: "PageInfo",
  endCursor: null,
  startCursor: null,
  hasNextPage: false,
  hasPreviousPage: false
};
function ensureKey(e) {
  return "string" == typeof e ? e : null;
}
function concatEdges(e, r2, a2) {
  var n = /* @__PURE__ */ new Set();
  for (var t2 = 0, o2 = r2.length; t2 < o2; t2++) {
    var s2 = e.resolve(r2[t2], "node");
    if ("string" == typeof s2) {
      n.add(s2);
    }
  }
  var i = r2.slice();
  for (var f2 = 0, u2 = a2.length; f2 < u2; f2++) {
    var v2 = a2[f2];
    var l2 = e.resolve(v2, "node");
    if ("string" == typeof l2 && !n.has(l2)) {
      n.add(l2);
      i.push(v2);
    }
  }
  return i;
}
function concatNodes(e, r2) {
  var a2 = /* @__PURE__ */ new Set();
  for (var n = 0, t2 = e.length; n < t2; n++) {
    var o2 = e[n];
    if ("string" == typeof o2) {
      a2.add(o2);
    }
  }
  var s2 = e.slice();
  for (var i = 0, f2 = r2.length; i < f2; i++) {
    var u2 = r2[i];
    if ("string" == typeof u2 && !a2.has(u2)) {
      a2.add(u2);
      s2.push(u2);
    }
  }
  return s2;
}
function compareArgs(e, a2) {
  for (var n in a2) {
    if ("first" === n || "last" === n || "after" === n || "before" === n) {
      continue;
    } else if (!(n in e)) {
      return false;
    }
    var t2 = e[n];
    var o2 = a2[n];
    if (typeof t2 != typeof o2 || "object" != typeof t2 ? t2 !== o2 : stringifyVariables(t2) !== stringifyVariables(o2)) {
      return false;
    }
  }
  for (var s2 in e) {
    if ("first" === s2 || "last" === s2 || "after" === s2 || "before" === s2) {
      continue;
    }
    if (!(s2 in a2)) {
      return false;
    }
  }
  return true;
}
function getPage(e, r2, n) {
  var t2 = ensureKey(e.resolve(r2, n));
  if (!t2) {
    return null;
  }
  var o2 = e.resolve(t2, "__typename");
  var s2 = e.resolve(t2, "edges") || [];
  var i = e.resolve(t2, "nodes") || [];
  if ("string" != typeof o2) {
    return null;
  }
  var f2 = {
    __typename: o2,
    edges: s2,
    nodes: i,
    pageInfo: a
  };
  var u2 = e.resolve(t2, "pageInfo");
  if ("string" == typeof u2) {
    var v2 = ensureKey(e.resolve(u2, "__typename"));
    var l2 = ensureKey(e.resolve(u2, "endCursor"));
    var g = ensureKey(e.resolve(u2, "startCursor"));
    var c2 = e.resolve(u2, "hasNextPage");
    var d2 = e.resolve(u2, "hasPreviousPage");
    var p2 = f2.pageInfo = {
      __typename: "string" == typeof v2 ? v2 : "PageInfo",
      hasNextPage: "boolean" == typeof c2 ? c2 : !!l2,
      hasPreviousPage: "boolean" == typeof d2 ? d2 : !!g,
      endCursor: l2,
      startCursor: g
    };
    if (null === p2.endCursor) {
      var y2 = s2[s2.length - 1];
      if (y2) {
        var m2 = e.resolve(y2, "cursor");
        p2.endCursor = ensureKey(m2);
      }
    }
    if (null === p2.startCursor) {
      var h2 = s2[0];
      if (h2) {
        var P2 = e.resolve(h2, "cursor");
        p2.startCursor = ensureKey(P2);
      }
    }
  }
  return f2;
}
function relayPagination(r2) {
  if (void 0 === r2) {
    r2 = {};
  }
  var n = r2.mergeMode || "inwards";
  return function(r3, t2, o2, s2) {
    var i = s2.parentKey;
    var f2 = s2.fieldName;
    var u2 = o2.inspectFields(i).filter(function(e) {
      return e.fieldName === f2;
    });
    var v2 = u2.length;
    if (0 === v2) {
      return;
    }
    var l2 = null;
    var g = [];
    var c2 = [];
    var d2 = [];
    var p2 = [];
    var y2 = _extends({}, a);
    for (var m2 = 0; m2 < v2; m2++) {
      var h2 = u2[m2];
      var P2 = h2.fieldKey;
      var _2 = h2.arguments;
      if (null === _2 || !compareArgs(t2, _2)) {
        continue;
      }
      var N2 = getPage(o2, i, P2);
      if (null === N2) {
        continue;
      }
      if (!N2.nodes.length && !N2.edges.length && l2) {
        continue;
      }
      if ("inwards" === n && "number" == typeof _2.last && "number" == typeof _2.first) {
        var C2 = N2.edges.slice(0, _2.first + 1);
        var I = N2.edges.slice(-_2.last);
        var K2 = N2.nodes.slice(0, _2.first + 1);
        var b2 = N2.nodes.slice(-_2.last);
        g = concatEdges(o2, g, C2);
        c2 = concatEdges(o2, I, c2);
        d2 = concatNodes(d2, K2);
        p2 = concatNodes(b2, p2);
        y2 = N2.pageInfo;
      } else if (_2.after) {
        g = concatEdges(o2, g, N2.edges);
        d2 = concatNodes(d2, N2.nodes);
        y2.endCursor = N2.pageInfo.endCursor;
        y2.hasNextPage = N2.pageInfo.hasNextPage;
      } else if (_2.before) {
        c2 = concatEdges(o2, N2.edges, c2);
        p2 = concatNodes(N2.nodes, p2);
        y2.startCursor = N2.pageInfo.startCursor;
        y2.hasPreviousPage = N2.pageInfo.hasPreviousPage;
      } else if ("number" == typeof _2.last) {
        c2 = concatEdges(o2, N2.edges, c2);
        p2 = concatNodes(N2.nodes, p2);
        y2 = N2.pageInfo;
      } else {
        g = concatEdges(o2, g, N2.edges);
        d2 = concatNodes(d2, N2.nodes);
        y2 = N2.pageInfo;
      }
      if (N2.pageInfo.__typename !== y2.__typename) {
        y2.__typename = N2.pageInfo.__typename;
      }
      if (l2 !== N2.__typename) {
        l2 = N2.__typename;
      }
    }
    if ("string" != typeof l2) {
      return;
    }
    if (!!!ensureKey(o2.resolve(i, f2, t2))) {
      if (!s2.store.schema) {
        return;
      } else {
        s2.partial = true;
      }
    }
    return {
      __typename: l2,
      edges: "inwards" === n ? concatEdges(o2, g, c2) : concatEdges(o2, c2, g),
      nodes: "inwards" === n ? concatNodes(d2, p2) : concatNodes(p2, d2),
      pageInfo: {
        __typename: y2.__typename,
        endCursor: y2.endCursor,
        startCursor: y2.startCursor,
        hasNextPage: y2.hasNextPage,
        hasPreviousPage: y2.hasPreviousPage
      }
    };
  };
}
const urqlCacheKeys = {
  keys: {
    DevState: (data) => data.__typename,
    Wizard: (data) => data.__typename,
    Migration: (data) => data.__typename,
    CloudRunCommitInfo: () => null,
    GitInfo: () => null,
    MigrationFile: () => null,
    MigrationFilePart: () => null,
    CodeFrame: () => null,
    ProjectPreferences: (data) => data.__typename,
    VersionData: () => null,
    ScaffoldedFile: () => null,
    SpecDataAggregate: () => null,
    LocalSettings: (data) => data.__typename,
    LocalSettingsPreferences: () => null,
    AuthState: () => null,
    CloudProjectNotFound: (data) => data.__typename,
    CloudProjectSpecNotFound: (data) => null,
    CloudProjectUnauthorized: (data) => data.__typename,
    CloudLatestRunUpdateSpecData: (data) => null,
    CloudProjectSpecFlakyStatus: (data) => null,
    CloudPollingIntervals: (data) => null,
    GeneratedSpecError: () => null,
    GenerateSpecResponse: (data) => data.__typename,
    CloudFeatureNotEnabled: () => null,
    UsageLimitExceeded: () => null
  },
  resolvers: {
    CloudProject: {
      runs: relayPagination({ mergeMode: "outwards" })
    }
  }
};
const urqlSchema = {
  "__schema": {
    "queryType": {
      "name": "Query"
    },
    "mutationType": {
      "name": "Mutation"
    },
    "subscriptionType": {
      "name": "Subscription"
    },
    "types": [
      {
        "kind": "OBJECT",
        "name": "AuthState",
        "fields": [
          {
            "name": "browserOpened",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "message",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "Browser",
        "fields": [
          {
            "name": "channel",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "disabled",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "displayName",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "family",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isFocusSupported",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isSelected",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isVersionSupported",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "majorVersion",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "path",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "version",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "warning",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CachedUser",
        "fields": [
          {
            "name": "email",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "fullName",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudBrowserInfo",
        "fields": [
          {
            "name": "formattedName",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "formattedNameWithVersion",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "formattedVersion",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "unformattedName",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "unformattedVersion",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudCiBuildInfo",
        "fields": [
          {
            "name": "ciBuildNumber",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "ciBuildNumberFormatted",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "formattedProvider",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "provider",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "url",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudFeatureNotEnabled",
        "fields": [
          {
            "name": "message",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudLatestRunUpdateSpecData",
        "fields": [
          {
            "name": "mostRecentUpdate",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "pollingInterval",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudOperatingSystem",
        "fields": [
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "nameWithVersion",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "platform",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "unformattedName",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "version",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudOrganization",
        "fields": [
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "projects",
            "type": {
              "kind": "OBJECT",
              "name": "CloudProjectConnection",
              "ofType": null
            },
            "args": [
              {
                "name": "after",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "before",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "first",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "last",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudOrganizationConnection",
        "fields": [
          {
            "name": "edges",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudOrganizationEdge",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "nodes",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudOrganization",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "pageInfo",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "PageInfo",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudOrganizationEdge",
        "fields": [
          {
            "name": "cursor",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "node",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "CloudOrganization",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudPollingIntervals",
        "fields": [
          {
            "name": "runByNumber",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "runsByCommitShas",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudProject",
        "fields": [
          {
            "name": "cloudProjectSettingsUrl",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "cloudProjectUrl",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "latestRun",
            "type": {
              "kind": "OBJECT",
              "name": "CloudRun",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "organization",
            "type": {
              "kind": "OBJECT",
              "name": "CloudOrganization",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "recordKeys",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "NON_NULL",
                "ofType": {
                  "kind": "OBJECT",
                  "name": "CloudRecordKey",
                  "ofType": null
                }
              }
            },
            "args": []
          },
          {
            "name": "runByNumber",
            "type": {
              "kind": "OBJECT",
              "name": "CloudRun",
              "ofType": null
            },
            "args": [
              {
                "name": "runNumber",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "runs",
            "type": {
              "kind": "OBJECT",
              "name": "CloudRunConnection",
              "ofType": null
            },
            "args": [
              {
                "name": "after",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "before",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "cypressVersion",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "first",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "last",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "status",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "runsByCommitShas",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "OBJECT",
                "name": "CloudRun",
                "ofType": null
              }
            },
            "args": [
              {
                "name": "commitShas",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "LIST",
                    "ofType": {
                      "kind": "NON_NULL",
                      "ofType": {
                        "kind": "SCALAR",
                        "name": "Any"
                      }
                    }
                  }
                }
              },
              {
                "name": "runLimit",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "slug",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudProjectConnection",
        "fields": [
          {
            "name": "edges",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudProjectEdge",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "nodes",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudProject",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "pageInfo",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "PageInfo",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudProjectEdge",
        "fields": [
          {
            "name": "cursor",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "node",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "CloudProject",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudProjectNotFound",
        "fields": [
          {
            "name": "message",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "UNION",
        "name": "CloudProjectResult",
        "possibleTypes": [
          {
            "kind": "OBJECT",
            "name": "CloudProject"
          },
          {
            "kind": "OBJECT",
            "name": "CloudProjectNotFound"
          },
          {
            "kind": "OBJECT",
            "name": "CloudProjectUnauthorized"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudProjectSpec",
        "fields": [
          {
            "name": "averageDuration",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "fromBranch",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "averageDurationForRunIds",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "cloudRunIds",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "LIST",
                    "ofType": {
                      "kind": "NON_NULL",
                      "ofType": {
                        "kind": "SCALAR",
                        "name": "Any"
                      }
                    }
                  }
                }
              }
            ]
          },
          {
            "name": "flakyStatus",
            "type": {
              "kind": "UNION",
              "name": "CloudProjectSpecFlakyResult",
              "ofType": null
            },
            "args": [
              {
                "name": "flakyRunsWindow",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "fromBranch",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "flakyStatusForRunIds",
            "type": {
              "kind": "UNION",
              "name": "CloudProjectSpecFlakyResult",
              "ofType": null
            },
            "args": [
              {
                "name": "cloudRunIds",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "LIST",
                    "ofType": {
                      "kind": "NON_NULL",
                      "ofType": {
                        "kind": "SCALAR",
                        "name": "Any"
                      }
                    }
                  }
                }
              }
            ]
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isConsideredFlaky",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "fromBranch",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "isConsideredFlakyForRunIds",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "cloudRunIds",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "LIST",
                    "ofType": {
                      "kind": "NON_NULL",
                      "ofType": {
                        "kind": "SCALAR",
                        "name": "Any"
                      }
                    }
                  }
                }
              }
            ]
          },
          {
            "name": "retrievedAt",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "specPath",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "specRuns",
            "type": {
              "kind": "OBJECT",
              "name": "CloudSpecRunConnection",
              "ofType": null
            },
            "args": [
              {
                "name": "after",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "before",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "first",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "fromBranch",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "last",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "specRunsForRunIds",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "OBJECT",
                "name": "CloudSpecRun",
                "ofType": null
              }
            },
            "args": [
              {
                "name": "cloudRunIds",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "LIST",
                    "ofType": {
                      "kind": "NON_NULL",
                      "ofType": {
                        "kind": "SCALAR",
                        "name": "Any"
                      }
                    }
                  }
                }
              }
            ]
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "UNION",
        "name": "CloudProjectSpecFlakyResult",
        "possibleTypes": [
          {
            "kind": "OBJECT",
            "name": "CloudFeatureNotEnabled"
          },
          {
            "kind": "OBJECT",
            "name": "CloudProjectSpecFlakyStatus"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudProjectSpecFlakyStatus",
        "fields": [
          {
            "name": "dashboardUrl",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "flakyRuns",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "flakyRunsWindow",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "lastFlaky",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "lastFlakyRunCommitSha",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "lastFlakyRunNumber",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "severity",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudProjectSpecNotFound",
        "fields": [
          {
            "name": "message",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "retrievedAt",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "UNION",
        "name": "CloudProjectSpecResult",
        "possibleTypes": [
          {
            "kind": "OBJECT",
            "name": "CloudProjectSpec"
          },
          {
            "kind": "OBJECT",
            "name": "CloudProjectSpecNotFound"
          },
          {
            "kind": "OBJECT",
            "name": "CloudProjectUnauthorized"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudProjectUnauthorized",
        "fields": [
          {
            "name": "hasRequestedAccess",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "message",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudRecordKey",
        "fields": [
          {
            "name": "createdAt",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "key",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "lastUsedAt",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudRun",
        "fields": [
          {
            "name": "cancelOnFailure",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "cancelledAt",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "cancelledBy",
            "type": {
              "kind": "OBJECT",
              "name": "CloudUser",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "ci",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "CloudCiBuildInfo",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "commitInfo",
            "type": {
              "kind": "OBJECT",
              "name": "CloudRunCommitInfo",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "completedAt",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "completedInstanceCount",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "createdAt",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "errors",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "groups",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudRunGroup",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isHidden",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "overLimitActionType",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "overLimitActionUrl",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "reasonsRunIsHidden",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "UNION",
                  "name": "CloudRunHidingReason",
                  "ofType": null
                }
              }
            },
            "args": []
          },
          {
            "name": "runNumber",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "scheduledToCompleteAt",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "specs",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudSpecRun",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "status",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "tags",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "OBJECT",
                "name": "CloudRunTag",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "testsForReview",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudTestResult",
                    "ofType": null
                  }
                }
              }
            },
            "args": [
              {
                "name": "limit",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "totalDuration",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalFailed",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalFlakyTests",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalInstanceCount",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalPassed",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalPending",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalRunning",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalSkipped",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalTests",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "url",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudRunCommitInfo",
        "fields": [
          {
            "name": "authorAvatar",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "authorEmail",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "authorName",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "branch",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "branchUrl",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "message",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "truncate",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "sha",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "summary",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "url",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudRunConnection",
        "fields": [
          {
            "name": "edges",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudRunEdge",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "nodes",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudRun",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "pageInfo",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "PageInfo",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudRunEdge",
        "fields": [
          {
            "name": "cursor",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "node",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "CloudRun",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudRunGroup",
        "fields": [
          {
            "name": "browser",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "CloudBrowserInfo",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "completedAt",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "createdAt",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "duration",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "groupName",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "os",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "CloudOperatingSystem",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "status",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "testingType",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "totalFailures",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "totalPasses",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "totalPending",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "totalSkipped",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "UNION",
        "name": "CloudRunHidingReason",
        "possibleTypes": [
          {
            "kind": "OBJECT",
            "name": "DataRetentionLimitExceeded"
          },
          {
            "kind": "OBJECT",
            "name": "UsageLimitExceeded"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudRunInstance",
        "fields": [
          {
            "name": "groupId",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "hasReplay",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "hasScreenshots",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "hasStdout",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "hasVideo",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "replayUrl",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "screenshotsUrl",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "status",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "stdoutUrl",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalFailed",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalPassed",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalPending",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalRunning",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalSkipped",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "videoUrl",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudRunTag",
        "fields": [
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudSpecRun",
        "fields": [
          {
            "name": "basename",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "completedAt",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "createdAt",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "extension",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "groupCount",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "groupIds",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "path",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "runNumber",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "shortPath",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "specDuration",
            "type": {
              "kind": "OBJECT",
              "name": "SpecDataAggregate",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "status",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "testsFailed",
            "type": {
              "kind": "OBJECT",
              "name": "SpecDataAggregate",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "testsPassed",
            "type": {
              "kind": "OBJECT",
              "name": "SpecDataAggregate",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "testsPending",
            "type": {
              "kind": "OBJECT",
              "name": "SpecDataAggregate",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "testsSkipped",
            "type": {
              "kind": "OBJECT",
              "name": "SpecDataAggregate",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "url",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudSpecRunConnection",
        "fields": [
          {
            "name": "edges",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudSpecRunEdge",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "nodes",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudSpecRun",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "pageInfo",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "PageInfo",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudSpecRunEdge",
        "fields": [
          {
            "name": "cursor",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "node",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "CloudSpecRun",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudTestResult",
        "fields": [
          {
            "name": "duration",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "instance",
            "type": {
              "kind": "OBJECT",
              "name": "CloudRunInstance",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "isFlaky",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "specId",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "state",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "testUrl",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "thumbprint",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "title",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": [
              {
                "name": "depth",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "titleParts",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudUser",
        "fields": [
          {
            "name": "cloudOrganizationsUrl",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "cloudProfileUrl",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "createCloudOrganizationUrl",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "email",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "fullName",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "organizations",
            "type": {
              "kind": "OBJECT",
              "name": "CloudOrganizationConnection",
              "ofType": null
            },
            "args": [
              {
                "name": "after",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "before",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "first",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "last",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "userIsViewer",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CodeFrame",
        "fields": [
          {
            "name": "codeBlock",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "column",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "file",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "FileParts",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "line",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CodeGenGlobs",
        "fields": [
          {
            "name": "component",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "Cohort",
        "fields": [
          {
            "name": "cohort",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CommitInfo",
        "fields": [
          {
            "name": "message",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "sha",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CurrentProject",
        "fields": [
          {
            "name": "activeBrowser",
            "type": {
              "kind": "OBJECT",
              "name": "Browser",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "branch",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "browserStatus",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "browsers",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "NON_NULL",
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Browser",
                  "ofType": null
                }
              }
            },
            "args": []
          },
          {
            "name": "cloudProject",
            "type": {
              "kind": "UNION",
              "name": "CloudProjectResult",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "cloudProjectRemote",
            "type": {
              "kind": "OBJECT",
              "name": "RemoteFetchableCloudProjectResult",
              "ofType": null
            },
            "args": [
              {
                "name": "name",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "codeGenCandidates",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "OBJECT",
                "name": "FileParts",
                "ofType": null
              }
            },
            "args": [
              {
                "name": "glob",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "codeGenFramework",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "codeGenGlobs",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "CodeGenGlobs",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "config",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "configFile",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "configFileAbsolutePath",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "currentTestingType",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "defaultSpecFileName",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "fileExtensionToUse",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "hasNonExampleSpec",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "hasValidConfigFile",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isCTConfigured",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "isDefaultSpecPattern",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isE2EConfigured",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "isFullConfigReady",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "isLoadingConfigFile",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "isLoadingNodeEvents",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "isUsingTypeScript",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "needsLegacyConfigMigration",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "packageManager",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "preferences",
            "type": {
              "kind": "OBJECT",
              "name": "ProjectPreferences",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "projectId",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "projectRoot",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "savedState",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "serveConfig",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "specs",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "Spec",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "title",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          },
          {
            "kind": "INTERFACE",
            "name": "ProjectLike"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "DataRetentionLimitExceeded",
        "fields": [
          {
            "name": "dataRetentionDays",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "DevState",
        "fields": [
          {
            "name": "needsRelaunch",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "state",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "Editor",
        "fields": [
          {
            "name": "binary",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "ErrorWrapper",
        "fields": [
          {
            "name": "codeFrame",
            "type": {
              "kind": "OBJECT",
              "name": "CodeFrame",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "errorMessage",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "errorName",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "errorStack",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "errorType",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isUserCodeError",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "title",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "FileParts",
        "fields": [
          {
            "name": "absolute",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "baseName",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "column",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "contents",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "fileExtension",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "fileName",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "line",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "relative",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "GenerateSpecResponse",
        "fields": [
          {
            "name": "currentProject",
            "type": {
              "kind": "OBJECT",
              "name": "CurrentProject",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "generatedSpecResult",
            "type": {
              "kind": "UNION",
              "name": "GeneratedSpecResult",
              "ofType": null
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "GeneratedSpecError",
        "fields": [
          {
            "name": "erroredCodegenCandidate",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "fileName",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "UNION",
        "name": "GeneratedSpecResult",
        "possibleTypes": [
          {
            "kind": "OBJECT",
            "name": "GeneratedSpecError"
          },
          {
            "kind": "OBJECT",
            "name": "ScaffoldedFile"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "GitInfo",
        "fields": [
          {
            "name": "author",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "lastModifiedHumanReadable",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "lastModifiedTimestamp",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "shortHash",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "statusType",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "subject",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "GlobalProject",
        "fields": [
          {
            "name": "cloudProjectRemote",
            "type": {
              "kind": "OBJECT",
              "name": "RemoteFetchableCloudProjectResult",
              "ofType": null
            },
            "args": [
              {
                "name": "name",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "projectId",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "projectRoot",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "title",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          },
          {
            "kind": "INTERFACE",
            "name": "ProjectLike"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "LocalSettings",
        "fields": [
          {
            "name": "availableEditors",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "Editor",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "preferences",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "LocalSettingsPreferences",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "LocalSettingsPreferences",
        "fields": [
          {
            "name": "autoScrollingEnabled",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "debugSlideshowComplete",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "desktopNotificationsEnabled",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "dismissNotificationBannerUntil",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "isSideNavigationOpen",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "isSpecsListOpen",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "majorVersionWelcomeDismissed",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "notifyWhenRunCompletes",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "notifyWhenRunStarts",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "notifyWhenRunStartsFailing",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "preferredEditorBinary",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "proxyBypass",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "proxyServer",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "reporterWidth",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "specListWidth",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "wasBrowserSetInCLI",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "ManualMigration",
        "fields": [
          {
            "name": "completed",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "files",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "ManualMigrationFile",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "ManualMigrationFile",
        "fields": [
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "moved",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "relative",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "Migration",
        "fields": [
          {
            "name": "componentFolder",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "configAfterCode",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "configBeforeCode",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "configFileNameAfter",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "configFileNameBefore",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "filteredSteps",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "MigrationStep",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "hasComponentTesting",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "hasCustomComponentFolder",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "hasCustomComponentTestFiles",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "hasCustomIntegrationFolder",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "hasCustomIntegrationTestFiles",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "integrationFolder",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isUsingTypeScript",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "manualFiles",
            "type": {
              "kind": "OBJECT",
              "name": "ManualMigration",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "shouldMigratePreExtension",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "specFiles",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "MigrationFile",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "supportFiles",
            "type": {
              "kind": "OBJECT",
              "name": "MigrationFile",
              "ofType": null
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "MigrationFile",
        "fields": [
          {
            "name": "after",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "MigrationFileData",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "before",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "MigrationFileData",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "testingType",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "MigrationFileData",
        "fields": [
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "parts",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "MigrationFilePart",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "relative",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "MigrationFilePart",
        "fields": [
          {
            "name": "group",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "highlight",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "text",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "MigrationRegexp",
        "fields": [
          {
            "name": "afterComponent",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "afterE2E",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "beforeComponent",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "beforeE2E",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "MigrationStep",
        "fields": [
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "index",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isCompleted",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isCurrentStep",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "Mutation",
        "fields": [
          {
            "name": "_clearCloudCache",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "_cloudCacheInvalidate",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "args",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "_showUrqlCache",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "addProject",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "open",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "path",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "clearCurrentProject",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "clearCurrentTestingType",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "closeBrowser",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "cloudProjectCreate",
            "type": {
              "kind": "OBJECT",
              "name": "CloudProject",
              "ofType": null
            },
            "args": [
              {
                "name": "campaign",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "ciProviders",
                "type": {
                  "kind": "LIST",
                  "ofType": {
                    "kind": "NON_NULL",
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Any"
                    }
                  }
                }
              },
              {
                "name": "cohort",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "medium",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "name",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "orgId",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "public",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "source",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "cloudProjectRequestAccess",
            "type": {
              "kind": "UNION",
              "name": "CloudProjectResult",
              "ofType": null
            },
            "args": [
              {
                "name": "projectSlug",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "cloudRecordEvent",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "localTestCounts",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "completeSetup",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "copyTextToClipboard",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "text",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "determineCohort",
            "type": {
              "kind": "OBJECT",
              "name": "Cohort",
              "ofType": null
            },
            "args": [
              {
                "name": "cohortConfig",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "devRelaunch",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "action",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "dismissWarning",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "id",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "e2eExamples",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "ScaffoldedFile",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "finishedRenamingComponentSpecs",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "focusActiveBrowserWindow",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "generateSpecFromSource",
            "type": {
              "kind": "OBJECT",
              "name": "GenerateSpecResponse",
              "ofType": null
            },
            "args": [
              {
                "name": "codeGenCandidate",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "componentName",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "isDefault",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "type",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "getReactComponentsFromFile",
            "type": {
              "kind": "OBJECT",
              "name": "ReactComponentResponse",
              "ofType": null
            },
            "args": [
              {
                "name": "filePath",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "initializeCtFrameworks",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "internal_clearAllProjectPreferencesCache",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "internal_clearLatestProjectCache",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "internal_clearProjectPreferencesCache",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "projectTitle",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "launchOpenProject",
            "type": {
              "kind": "OBJECT",
              "name": "CurrentProject",
              "ofType": null
            },
            "args": [
              {
                "name": "shouldLaunchNewTab",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "specPath",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "launchpadSetBrowser",
            "type": {
              "kind": "OBJECT",
              "name": "CurrentProject",
              "ofType": null
            },
            "args": [
              {
                "name": "id",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "loadRemoteFetchables",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "INTERFACE",
                  "name": "RemoteFetchable",
                  "ofType": null
                }
              }
            },
            "args": [
              {
                "name": "ids",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "LIST",
                    "ofType": {
                      "kind": "NON_NULL",
                      "ofType": {
                        "kind": "SCALAR",
                        "name": "Any"
                      }
                    }
                  }
                }
              }
            ]
          },
          {
            "name": "login",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "utmContent",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "utmMedium",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "utmSource",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "logout",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "matchesSpecPattern",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": [
              {
                "name": "specFile",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "migrateCloseManualRenameWatcher",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "migrateComponentTesting",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "migrateConfigFile",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "migrateRenameSpecs",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "after",
                "type": {
                  "kind": "LIST",
                  "ofType": {
                    "kind": "NON_NULL",
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Any"
                    }
                  }
                }
              },
              {
                "name": "before",
                "type": {
                  "kind": "LIST",
                  "ofType": {
                    "kind": "NON_NULL",
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Any"
                    }
                  }
                }
              },
              {
                "name": "skip",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "migrateRenameSpecsFolder",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "migrateRenameSupport",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "migrateSkipManualRename",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "moveToRelevantRun",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "runNumber",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "openDirectoryInIDE",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "path",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "openExternal",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "includeGraphqlPort",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "url",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "openFileInIDE",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "input",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "openInFinder",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "path",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "pingBaseUrl",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "reconfigureProject",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "recordEvent",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "campaign",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "cohort",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "includeMachineId",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "medium",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "messageId",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "payload",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "refetchRemote",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "refreshCloudViewer",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "removeProject",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "path",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "resetAuthState",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "Query",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "resetErrorAndLoadConfig",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "id",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "resetLatestVersionTelemetry",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "resetWizard",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "runSpec",
            "type": {
              "kind": "UNION",
              "name": "RunSpecResult",
              "ofType": null
            },
            "args": [
              {
                "name": "specPath",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "scaffoldTestingType",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "setAndLoadCurrentTestingType",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "testingType",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "setCurrentProject",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "path",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "setPreferences",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "type",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "value",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "setProjectIdInConfigFile",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "projectId",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "setProjectPreferencesInGlobalCache",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "Query",
                "ofType": null
              }
            },
            "args": [
              {
                "name": "testingType",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "setPromptShown",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "slug",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "setRunAllSpecs",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "runAllSpecs",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "LIST",
                    "ofType": {
                      "kind": "NON_NULL",
                      "ofType": {
                        "kind": "SCALAR",
                        "name": "Any"
                      }
                    }
                  }
                }
              }
            ]
          },
          {
            "name": "setTestsForRun",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "testsBySpec",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "LIST",
                    "ofType": {
                      "kind": "NON_NULL",
                      "ofType": {
                        "kind": "SCALAR",
                        "name": "Any"
                      }
                    }
                  }
                }
              }
            ]
          },
          {
            "name": "showDebugForCloudRun",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "runNumber",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "showSystemNotification",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "body",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "title",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "switchTestingTypeAndRelaunch",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "testingType",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "testsForRun",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "NON_NULL",
                "ofType": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            },
            "args": [
              {
                "name": "spec",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "wizardUpdate",
            "type": {
              "kind": "OBJECT",
              "name": "Wizard",
              "ofType": null
            },
            "args": [
              {
                "name": "input",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          }
        ],
        "interfaces": []
      },
      {
        "kind": "INTERFACE",
        "name": "Node",
        "fields": [
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [],
        "possibleTypes": [
          {
            "kind": "OBJECT",
            "name": "Browser"
          },
          {
            "kind": "OBJECT",
            "name": "CachedUser"
          },
          {
            "kind": "OBJECT",
            "name": "CloudBrowserInfo"
          },
          {
            "kind": "OBJECT",
            "name": "CloudCiBuildInfo"
          },
          {
            "kind": "OBJECT",
            "name": "CloudOperatingSystem"
          },
          {
            "kind": "OBJECT",
            "name": "CloudOrganization"
          },
          {
            "kind": "OBJECT",
            "name": "CloudProject"
          },
          {
            "kind": "OBJECT",
            "name": "CloudProjectSpec"
          },
          {
            "kind": "OBJECT",
            "name": "CloudRecordKey"
          },
          {
            "kind": "OBJECT",
            "name": "CloudRun"
          },
          {
            "kind": "OBJECT",
            "name": "CloudRunGroup"
          },
          {
            "kind": "OBJECT",
            "name": "CloudRunInstance"
          },
          {
            "kind": "OBJECT",
            "name": "CloudRunTag"
          },
          {
            "kind": "OBJECT",
            "name": "CloudSpecRun"
          },
          {
            "kind": "OBJECT",
            "name": "CloudTestResult"
          },
          {
            "kind": "OBJECT",
            "name": "CloudUser"
          },
          {
            "kind": "OBJECT",
            "name": "CodeGenGlobs"
          },
          {
            "kind": "OBJECT",
            "name": "CurrentProject"
          },
          {
            "kind": "OBJECT",
            "name": "FileParts"
          },
          {
            "kind": "OBJECT",
            "name": "GlobalProject"
          },
          {
            "kind": "OBJECT",
            "name": "ManualMigration"
          },
          {
            "kind": "OBJECT",
            "name": "ManualMigrationFile"
          },
          {
            "kind": "OBJECT",
            "name": "MigrationFileData"
          },
          {
            "kind": "OBJECT",
            "name": "MigrationFilePart"
          },
          {
            "kind": "OBJECT",
            "name": "MigrationStep"
          },
          {
            "kind": "OBJECT",
            "name": "RemoteFetchableCloudProjectResult"
          },
          {
            "kind": "OBJECT",
            "name": "RemoteFetchableCloudProjectSpecResult"
          },
          {
            "kind": "OBJECT",
            "name": "Spec"
          },
          {
            "kind": "OBJECT",
            "name": "TestingTypeInfo"
          },
          {
            "kind": "OBJECT",
            "name": "WizardBundler"
          },
          {
            "kind": "OBJECT",
            "name": "WizardErroredFramework"
          },
          {
            "kind": "OBJECT",
            "name": "WizardFrontendFramework"
          },
          {
            "kind": "OBJECT",
            "name": "WizardNpmPackage"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "PageInfo",
        "fields": [
          {
            "name": "endCursor",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "hasNextPage",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "hasPreviousPage",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "startCursor",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "INTERFACE",
        "name": "ProjectLike",
        "fields": [
          {
            "name": "cloudProjectRemote",
            "type": {
              "kind": "OBJECT",
              "name": "RemoteFetchableCloudProjectResult",
              "ofType": null
            },
            "args": [
              {
                "name": "name",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "projectId",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "projectRoot",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "title",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [],
        "possibleTypes": [
          {
            "kind": "OBJECT",
            "name": "CurrentProject"
          },
          {
            "kind": "OBJECT",
            "name": "GlobalProject"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "ProjectPreferences",
        "fields": [
          {
            "name": "testingType",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "PushFragmentPayload",
        "fields": [
          {
            "name": "data",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "errors",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "fragment",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "invalidateCache",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "target",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "variables",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "Query",
        "fields": [
          {
            "name": "authState",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "AuthState",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "baseError",
            "type": {
              "kind": "OBJECT",
              "name": "ErrorWrapper",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "cachedUser",
            "type": {
              "kind": "OBJECT",
              "name": "CachedUser",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "cloudLatestRunUpdateSpecData",
            "type": {
              "kind": "OBJECT",
              "name": "CloudLatestRunUpdateSpecData",
              "ofType": null
            },
            "args": [
              {
                "name": "commitBranch",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "projectSlug",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "sinceDateTime",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "cloudNode",
            "type": {
              "kind": "INTERFACE",
              "name": "Node",
              "ofType": null
            },
            "args": [
              {
                "name": "id",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "cloudNodesByIds",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "INTERFACE",
                "name": "Node",
                "ofType": null
              }
            },
            "args": [
              {
                "name": "ids",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "LIST",
                    "ofType": {
                      "kind": "NON_NULL",
                      "ofType": {
                        "kind": "SCALAR",
                        "name": "Any"
                      }
                    }
                  }
                }
              }
            ]
          },
          {
            "name": "cloudProjectBySlug",
            "type": {
              "kind": "UNION",
              "name": "CloudProjectResult",
              "ofType": null
            },
            "args": [
              {
                "name": "slug",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "cloudProjectsBySlugs",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "UNION",
                "name": "CloudProjectResult",
                "ofType": null
              }
            },
            "args": [
              {
                "name": "slugs",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "LIST",
                    "ofType": {
                      "kind": "NON_NULL",
                      "ofType": {
                        "kind": "SCALAR",
                        "name": "Any"
                      }
                    }
                  }
                }
              }
            ]
          },
          {
            "name": "cloudSpecByPath",
            "type": {
              "kind": "UNION",
              "name": "CloudProjectSpecResult",
              "ofType": null
            },
            "args": [
              {
                "name": "projectSlug",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "specPath",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "cloudViewer",
            "type": {
              "kind": "OBJECT",
              "name": "CloudUser",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "cohort",
            "type": {
              "kind": "OBJECT",
              "name": "Cohort",
              "ofType": null
            },
            "args": [
              {
                "name": "name",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "currentProject",
            "type": {
              "kind": "OBJECT",
              "name": "CurrentProject",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "dev",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "DevState",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "invokedFromCli",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isGlobalMode",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "localSettings",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "LocalSettings",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "machineId",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "migration",
            "type": {
              "kind": "OBJECT",
              "name": "Migration",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "node",
            "type": {
              "kind": "INTERFACE",
              "name": "Node",
              "ofType": null
            },
            "args": [
              {
                "name": "id",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "pollingIntervals",
            "type": {
              "kind": "OBJECT",
              "name": "CloudPollingIntervals",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "projects",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "INTERFACE",
                    "name": "ProjectLike",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "scaffoldedFiles",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "NON_NULL",
                "ofType": {
                  "kind": "OBJECT",
                  "name": "ScaffoldedFile",
                  "ofType": null
                }
              }
            },
            "args": []
          },
          {
            "name": "versions",
            "type": {
              "kind": "OBJECT",
              "name": "VersionData",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "warnings",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "ErrorWrapper",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "wizard",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "Wizard",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "ReactComponentDescriptor",
        "fields": [
          {
            "name": "exportName",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isDefault",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "ReactComponentResponse",
        "fields": [
          {
            "name": "components",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "ReactComponentDescriptor",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "errored",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "RelevantRun",
        "fields": [
          {
            "name": "all",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "RelevantRunInfo",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "commitsAhead",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "currentCommitInfo",
            "type": {
              "kind": "OBJECT",
              "name": "CommitInfo",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "latest",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "RelevantRunInfo",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "selectedRunNumber",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "RelevantRunInfo",
        "fields": [
          {
            "name": "runId",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "runNumber",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "sha",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "status",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalFailed",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "INTERFACE",
        "name": "RemoteFetchable",
        "fields": [
          {
            "name": "dataRaw",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "error",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "fetchingStatus",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "operation",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "operationHash",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "operationVariables",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ],
        "possibleTypes": [
          {
            "kind": "OBJECT",
            "name": "RemoteFetchableCloudProjectResult"
          },
          {
            "kind": "OBJECT",
            "name": "RemoteFetchableCloudProjectSpecResult"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "RemoteFetchableCloudProjectResult",
        "fields": [
          {
            "name": "data",
            "type": {
              "kind": "UNION",
              "name": "CloudProjectResult",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "dataRaw",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "error",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "fetchingStatus",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "operation",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "operationHash",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "operationVariables",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          },
          {
            "kind": "INTERFACE",
            "name": "RemoteFetchable"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "RemoteFetchableCloudProjectSpecResult",
        "fields": [
          {
            "name": "data",
            "type": {
              "kind": "UNION",
              "name": "CloudProjectSpecResult",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "dataRaw",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "error",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "fetchingStatus",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "operation",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "operationHash",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "operationVariables",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          },
          {
            "kind": "INTERFACE",
            "name": "RemoteFetchable"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "RunSpecError",
        "fields": [
          {
            "name": "code",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "detailMessage",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "RunSpecResponse",
        "fields": [
          {
            "name": "browser",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "Browser",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "spec",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "Spec",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "testingType",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "UNION",
        "name": "RunSpecResult",
        "possibleTypes": [
          {
            "kind": "OBJECT",
            "name": "RunSpecError"
          },
          {
            "kind": "OBJECT",
            "name": "RunSpecResponse"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "ScaffoldedFile",
        "fields": [
          {
            "name": "description",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "file",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "FileParts",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "status",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "Spec",
        "fields": [
          {
            "name": "absolute",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "baseName",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "cloudSpec",
            "type": {
              "kind": "OBJECT",
              "name": "RemoteFetchableCloudProjectSpecResult",
              "ofType": null
            },
            "args": [
              {
                "name": "name",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "fileExtension",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "fileName",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "gitInfo",
            "type": {
              "kind": "OBJECT",
              "name": "GitInfo",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "relative",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "specFileExtension",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "specType",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "SpecDataAggregate",
        "fields": [
          {
            "name": "max",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "min",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "Subscription",
        "fields": [
          {
            "name": "authChange",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "branchChange",
            "type": {
              "kind": "OBJECT",
              "name": "CurrentProject",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "browserStatusChange",
            "type": {
              "kind": "OBJECT",
              "name": "CurrentProject",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "cloudViewerChange",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "configChange",
            "type": {
              "kind": "OBJECT",
              "name": "CurrentProject",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "devChange",
            "type": {
              "kind": "OBJECT",
              "name": "DevState",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "errorWarningChange",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "frameworkDetectionChange",
            "type": {
              "kind": "OBJECT",
              "name": "Wizard",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "gitInfoChange",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "OBJECT",
                "name": "Spec",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "pushFragment",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "PushFragmentPayload",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "relevantRunSpecChange",
            "type": {
              "kind": "OBJECT",
              "name": "CloudRun",
              "ofType": null
            },
            "args": [
              {
                "name": "runId",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "relevantRuns",
            "type": {
              "kind": "OBJECT",
              "name": "RelevantRun",
              "ofType": null
            },
            "args": [
              {
                "name": "location",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "specsChange",
            "type": {
              "kind": "OBJECT",
              "name": "CurrentProject",
              "ofType": null
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "TestingTypeInfo",
        "fields": [
          {
            "name": "description",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "title",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "type",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "UsageLimitExceeded",
        "fields": [
          {
            "name": "monthlyTests",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "Version",
        "fields": [
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "released",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "version",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "VersionData",
        "fields": [
          {
            "name": "current",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "Version",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "latest",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "Version",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "Wizard",
        "fields": [
          {
            "name": "allBundlers",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "WizardBundler",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "bundler",
            "type": {
              "kind": "OBJECT",
              "name": "WizardBundler",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "erroredFrameworks",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "WizardErroredFramework",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "framework",
            "type": {
              "kind": "OBJECT",
              "name": "WizardFrontendFramework",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "frameworks",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "WizardFrontendFramework",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "installDependenciesCommand",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "packagesToInstall",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "WizardNpmPackage",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "WizardBundler",
        "fields": [
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isDetected",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "type",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "WizardErroredFramework",
        "fields": [
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "path",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "WizardFrontendFramework",
        "fields": [
          {
            "name": "category",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "icon",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isDetected",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isSelected",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "supportStatus",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "supportedBundlers",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "WizardBundler",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "type",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "WizardNpmPackage",
        "fields": [
          {
            "name": "description",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "detectedVersion",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "minVersion",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "package",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "satisfied",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "SCALAR",
        "name": "Any"
      }
    ],
    "directives": []
  }
};
const pubSubExchange = (io2) => {
  return ({ client, forward }) => {
    const watchedOperations = /* @__PURE__ */ new Map();
    const observedOperations = /* @__PURE__ */ new Map();
    const awaitingMount = {};
    function reexecuteOperation2(op, refetchHeader = "true") {
      client.reexecuteOperation(
        client.createRequestOperation("query", op, {
          requestPolicy: "cache-and-network",
          fetchOptions: {
            headers: {
              "x-cypress-graphql-refetch": refetchHeader
            }
          }
        })
      );
    }
    io2.on("graphql-refetch", (refreshOnly) => {
      if (refreshOnly == null ? void 0 : refreshOnly.operation) {
        const fieldHeader = `${refreshOnly.operation}.${refreshOnly.field}`;
        const toRefresh = Array.from(watchedOperations.values()).find((o2) => getOperationName(o2.query) === refreshOnly.operation);
        if (!toRefresh) {
          awaitingMount[refreshOnly.operation] = refreshOnly;
        } else {
          reexecuteOperation2(toRefresh, fieldHeader);
        }
      } else {
        watchedOperations.forEach((op) => {
          reexecuteOperation2(op);
        });
      }
    });
    const processIncomingOperation = (op) => {
      if (op.kind === "teardown" && observedOperations.has(op.key)) {
        observedOperations.delete(op.key);
        watchedOperations.delete(op.key);
      }
    };
    const processResultOperation = (op) => {
      if (op.operation.kind === "query" && !observedOperations.has(op.operation.key)) {
        observedOperations.set(op.operation.key, 1);
        watchedOperations.set(op.operation.key, op.operation);
        const name2 = getOperationName(op.operation.query);
        if (name2 && awaitingMount[name2]) {
          const awaiting = awaitingMount[name2];
          delete awaitingMount[name2];
          reexecuteOperation2(op.operation, `${awaiting.operation}.${awaiting.field}`);
        }
      }
    };
    return (ops$) => {
      if (typeof window === "undefined") {
        return forward(ops$);
      }
      return pipe(forward(pipe(ops$, H(processIncomingOperation))), H(processResultOperation));
    };
  };
};
function getOperationName(query2) {
  var _a3, _b2;
  return (_b2 = (_a3 = getPrimaryOperation(query2)) == null ? void 0 : _a3.name) == null ? void 0 : _b2.value;
}
function getPrimaryOperation(query2) {
  return query2.definitions.find(isOperationDefinitionNode);
}
function isOperationDefinitionNode(node) {
  return node.kind === "OperationDefinition";
}
const namedRouteExchange = ({ client, forward }) => {
  return (ops$) => {
    return forward(pipe(
      ops$,
      map$1$1((o2) => {
        if (!o2.context.url.endsWith("/graphql")) {
          return o2;
        }
        return {
          ...o2,
          context: {
            ...o2.context,
            url: `${o2.context.url}/${o2.kind}-${getOperationName$1(o2.query)}`
          }
        };
      })
    ));
  };
};
const urqlFetchSocketAdapter = (io2) => {
  return (url2, fetchOptions = {}) => {
    return new Promise((resolve3, reject) => {
      if (fetchOptions.signal) {
        fetchOptions.signal.onabort = () => {
          reject(new DOMException("Aborted", "AbortError"));
        };
        if (fetchOptions.signal.aborted) {
          return reject(new DOMException("Aborted", "AbortError"));
        }
      }
      const uid2 = lodashExports.uniqueId("gql");
      io2.emit(`graphql:request`, uid2, fetchOptions.body, (payload) => {
        resolve3(new Response(JSON.stringify(payload), {
          status: 200,
          headers: {
            "Content-Type": "application/json"
          }
        }));
      });
    });
  };
};
gql`
 subscription GlobalSubscriptions_PushFragment {
   pushFragment {
     target
     fragment
     data
     errors
     variables
     invalidateCache
   }
 }
`;
gql`
subscription GlobalSubscriptions_ErrorWarningChange {
  errorWarningChange {
    baseError {
      id
      ...BaseError
    }
    warnings {
      id
      ...WarningContent
    }
  }
}
`;
gql`
fragment WarningContent on ErrorWrapper {
  id
  title
  errorType
  errorMessage
}
`;
function initializeGlobalSubscriptions(client) {
  const { unsubscribe: unsubscribeErrorWarning } = pipe(
    client.subscription(GlobalSubscriptions_ErrorWarningChangeDocument),
    N$1(() => {
    })
  );
  const { unsubscribe: unsubscribePushFragment } = pipe(
    client.subscription(GlobalSubscriptions_PushFragmentDocument),
    N$1((val) => {
    })
  );
  return () => {
    unsubscribeErrorWarning();
    unsubscribePushFragment();
  };
}
useToast();
function showError(error2) {
  var _a3, _b2, _c, _d, _e, _f, _g;
  `
    GraphQL Field Path: [${(_c = (_b2 = (_a3 = error2.graphQLErrors) == null ? void 0 : _a3[0]) == null ? void 0 : _b2.path) == null ? void 0 : _c.join(", ")}]:

    ${error2.message ?? ((_e = (_d = error2.graphQLErrors) == null ? void 0 : _d[0]) == null ? void 0 : _e.message)}

    ${error2.stack ?? ((_g = (_f = error2.graphQLErrors) == null ? void 0 : _f[0]) == null ? void 0 : _g.stack) ?? ""}
  `;
  console.error(error2);
}
function makeCacheExchange(schema = urqlSchema) {
  return cacheExchange({
    ...urqlCacheKeys,
    schema,
    updates: {
      Subscription: {
        pushFragment(parent, args, cache2, info) {
          var _a3;
          const { pushFragment } = parent;
          for (const toPush of pushFragment) {
            if (toPush.invalidateCache) {
              cache2.invalidate({ __typename: "Query" });
              continue;
            }
            cache2.writeFragment(toPush.fragment, toPush.data, toPush.variables ?? {});
            if ((_a3 = toPush.errors) == null ? void 0 : _a3.length) {
              showError({
                graphQLErrors: toPush.errors
              });
            }
          }
        }
      },
      Mutation: {
        logout(parent, args, cache2, info) {
          cache2.invalidate({ __typename: "Query" });
        }
      }
    }
  });
}
const cypressInRunMode = window.top === window && window.__CYPRESS_MODE__ === "run";
async function makeUrqlClient(config2) {
  const exchanges = [dedupExchange];
  const io2 = getPubSubSource(config2);
  const connectPromise = new Promise((resolve3) => {
    io2.once("connect", resolve3);
  });
  const socketClient = getSocketSource(config2);
  if (config2.target === "launchpad" || config2.target === "app" && !cypressInRunMode) {
    exchanges.push(pubSubExchange(io2));
  }
  exchanges.push(
    errorExchange({
      onError(error2) {
        showError(error2);
      }
    }),
    // https://formidable.com/open-source/urql/docs/graphcache/errors/
    makeCacheExchange(),
    namedRouteExchange,
    fetchExchange,
    subscriptionExchange({
      forwardSubscription(op) {
        return {
          subscribe: (sink) => {
            const dispose = socketClient.subscribe(op, sink);
            return {
              unsubscribe: dispose
            };
          }
        };
      }
    })
  );
  const url2 = config2.target === "launchpad" ? `/__launchpad/graphql` : `/${config2.namespace}/graphql`;
  const client2 = W({
    url: url2,
    requestPolicy: cypressInRunMode ? "cache-only" : "cache-first",
    exchanges,
    // Rather than authoring a custom exchange, let's just polyfill the "fetch"
    // exchange to adapt to a similar interface. This way it'll be simple to
    // swap in-and-out during integration tests.
    fetch: config2.target === "launchpad" || window.__CYPRESS_GQL_NO_SOCKET__ ? window.fetch : urqlFetchSocketAdapter(io2)
  });
  await connectPromise;
  if (window.__CYPRESS_MODE__ !== "run") {
    initializeGlobalSubscriptions(client2);
  }
  return client2;
}
function getPubSubSource(config2) {
  if (config2.target === "launchpad") {
    return io("/data-context", {
      path: "/__launchpad/socket",
      transports: ["websocket"]
    });
  }
  return io("/data-context", {
    path: config2.socketIoRoute,
    transports: ["websocket"]
  });
}
function getSocketSource(config2) {
  const protocol = window.location.protocol.replace("http", "ws");
  const wsUrl = config2.target === "launchpad" ? `ws://${window.location.host}/__launchpad/graphql-ws` : `${protocol}//${window.location.host}${config2.socketIoRoute}-graphql`;
  return createClient({
    url: wsUrl
  });
}
const _hoisted_1$10 = {
  key: 1,
  class: "w-[640px]"
};
const _hoisted_2$X = { key: 0 };
const _hoisted_3$P = { class: "flex font-normal my-[8px] text-[16px] leading-[24px] items-end justify-between" };
const _hoisted_4$x = { class: "" };
const _hoisted_5$l = { class: "flex font-normal text-[16px] leading-[24px] items-center justify-between" };
const _hoisted_6$d = { class: "text-gray-800" };
const _hoisted_7$a = /* @__PURE__ */ createBaseVNode("span", { class: "text-red-500" }, "*", -1);
const _hoisted_8$8 = { class: "flex font-normal mt-[24px] text-[16px] leading-[24px] items-center" };
const _hoisted_9$9 = {
  class: "grow",
  for: "projectName"
};
const _hoisted_10$7 = { class: "text-gray-800" };
const _hoisted_11$5 = /* @__PURE__ */ createBaseVNode("span", { class: "ml-[4px] text-red-500" }, "*", -1);
const _hoisted_12$5 = { class: "ml-[8px] text-gray-500" };
const _hoisted_13$5 = { class: "flex gap-[16px]" };
const _sfc_main$L = /* @__PURE__ */ defineComponent({
  __name: "SelectCloudProjectModal",
  props: {
    gql: null,
    utmMedium: null,
    utmContent: null
  },
  emits: ["success", "cancel", "update-projectId-failed"],
  setup(__props, { emit: emit3 }) {
    var _a3;
    const props = __props;
    const { t: t2 } = useI18n();
    const online = useOnline();
    gql`
fragment CloudProjectNode on CloudProject {
  id
  slug
  name
}
`;
    gql`
fragment SelectCloudProjectModal on Query {
  cloudViewer {
    id
    cloudOrganizationsUrl
    organizations(first: 100) { # Not expecting there will be > 100 orgs for a user. If there are we will implement pagination
      nodes {
        id
        name
        projects(first: 100) { # Not expecting there will be > 100 projects. If there are we will implement pagination
          nodes {
            id
            ...CloudProjectNode
          }
        }
      }
    }
  }
  currentProject{
    id
    title
    ...NeedManualUpdateModal
  }
}
`;
    gql`
mutation SelectCloudProjectModal_SetProjectId( $projectId: String! ) {
  setProjectIdInConfigFile(projectId: $projectId) {
    currentProject{
      id
      projectId
      cloudProject {
        __typename
        ... on CloudProject {
          id
          runs(first: 10) {
            nodes {
              id 
              createdAt
              status
              totalDuration
              url
              tags {
                id
                name
              }
              totalPassed
              totalFailed
              totalPending
              totalSkipped
              totalFlakyTests
              commitInfo {
                authorName
                authorEmail
                summary
                branch
              }
            }
          }
        }
      }
    }
  }
}
`;
    gql`
mutation SelectCloudProjectModal_CreateCloudProject( $name: String!, $orgId: ID!, $public: Boolean!, $campaign: String, $cohort: String, $medium: String, $source: String! ) {
  cloudProjectCreate(name: $name, orgId: $orgId, public: $public, campaign: $campaign, cohort: $cohort, medium: $medium, source: $source) {
    id
    slug
  }
}
`;
    const isInternalServerError = ref(false);
    const graphqlError = ref();
    const projectName = ref(((_a3 = props.gql.currentProject) == null ? void 0 : _a3.title) || "");
    const projectAccess = ref("private");
    const organizationOptions = computed(() => {
      var _a4, _b2, _c;
      const options2 = (_c = (_b2 = (_a4 = props.gql.cloudViewer) == null ? void 0 : _a4.organizations) == null ? void 0 : _b2.nodes) == null ? void 0 : _c.map((org) => {
        return {
          id: org.id,
          name: org.name,
          icon: FolderIcon
        };
      });
      return lodashExports.sortBy(options2 || [], "name");
    });
    const pickedOrganization = ref(organizationOptions.value.length >= 1 ? organizationOptions.value[0] : void 0);
    const projectOptions = computed(() => {
      var _a4, _b2, _c, _d, _e;
      const organization = (_c = (_b2 = (_a4 = props.gql.cloudViewer) == null ? void 0 : _a4.organizations) == null ? void 0 : _b2.nodes) == null ? void 0 : _c.find((org) => {
        var _a5;
        return org.id === ((_a5 = pickedOrganization == null ? void 0 : pickedOrganization.value) == null ? void 0 : _a5.id);
      });
      const options2 = (_e = (_d = organization == null ? void 0 : organization.projects) == null ? void 0 : _d.nodes) == null ? void 0 : _e.map((project) => {
        return {
          id: project.id,
          name: project.name,
          slug: project.slug
        };
      });
      return lodashExports.sortBy(options2 || [], "name");
    });
    const newProject = ref(projectOptions.value.length === 0);
    const pickedProject = ref();
    watch(projectOptions, (newVal, oldVal) => {
      if (lodashExports.isEqual(newVal, oldVal)) {
        return;
      }
      if (newVal.length === 1) {
        pickedProject.value = newVal[0];
      } else {
        pickedProject.value = newVal.find((p2) => p2.name === projectName.value);
      }
      newProject.value = newVal.length === 0;
    }, {
      immediate: true
    });
    const orgPlaceholder = t2("runs.connect.modal.selectProject.placeholderOrganizations");
    const projectPlaceholder = computed(() => {
      return pickedOrganization.value ? t2("runs.connect.modal.selectProject.placeholderProjects") : t2("runs.connect.modal.selectProject.placeholderProjectsPending");
    });
    const organizationUrl = computed(() => {
      var _a4;
      return (_a4 = props.gql.cloudViewer) == null ? void 0 : _a4.cloudOrganizationsUrl;
    });
    const createCloudProjectMutation = useMutation(SelectCloudProjectModal_CreateCloudProjectDocument);
    const setProjectIdMutation = useMutation(SelectCloudProjectModal_SetProjectIdDocument);
    async function createOrConnectProject() {
      var _a4, _b2, _c, _d, _e;
      let projectId;
      const isNewProject = Boolean(newProject.value && pickedOrganization.value);
      if (isNewProject) {
        const { data, error: error2 } = await createCloudProjectMutation.executeMutation({
          orgId: pickedOrganization.value.id,
          name: projectName.value,
          public: projectAccess.value === "public",
          campaign: "Create project",
          cohort: props.utmContent || "",
          medium: props.utmMedium,
          source: getUtmSource()
        });
        if (error2 == null ? void 0 : error2.graphQLErrors.length) {
          const err = error2.graphQLErrors[0];
          const extension = (_a4 = err.extensions) == null ? void 0 : _a4.code;
          isInternalServerError.value = extension === "INTERNAL_SERVER_ERROR";
          graphqlError.value = {
            extension,
            message: err.message
          };
        } else {
          graphqlError.value = void 0;
        }
        projectId = (_b2 = data == null ? void 0 : data.cloudProjectCreate) == null ? void 0 : _b2.slug;
      } else {
        projectId = (_c = pickedProject.value) == null ? void 0 : _c.slug;
      }
      if (projectId) {
        const { data } = await setProjectIdMutation.executeMutation({ projectId });
        const updatedProjectId = (_e = (_d = data == null ? void 0 : data.setProjectIdInConfigFile) == null ? void 0 : _d.currentProject) == null ? void 0 : _e.projectId;
        if (updatedProjectId === projectId) {
          emit3("success");
        } else {
          emit3("update-projectId-failed", projectId);
        }
      }
    }
    const isOnline = computed(() => online.value);
    const disableButton = computed(() => {
      if (newProject.value) {
        return !projectName.value;
      }
      return !pickedProject.value;
    });
    return (_ctx, _cache) => {
      const _component_i18n_t = resolveComponent("i18n-t");
      return openBlock(), createBlock(_sfc_main$S, {
        "model-value": "",
        title: newProject.value ? unref(t2)("runs.connect.modal.selectProject.createProject") : unref(t2)("runs.connect.modal.title"),
        "help-link": "https://on.cypress.io/adding-new-project",
        "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => emit3("cancel"))
      }, createSlots({
        default: withCtx(() => [
          !unref(isOnline) ? (openBlock(), createBlock(_sfc_main$_, {
            key: 0,
            class: "mt-[24px]"
          }, {
            default: withCtx(() => [
              createTextVNode(toDisplayString$1(unref(t2)("launchpadErrors.noInternet.message")), 1)
            ]),
            _: 1
          })) : (openBlock(), createElementBlock("div", _hoisted_1$10, [
            graphqlError.value ? (openBlock(), createBlock(_sfc_main$M, {
              key: 0,
              "v-model": Boolean(graphqlError.value),
              status: "error",
              title: isInternalServerError.value ? unref(t2)("runs.connect.errors.internalServerError.title") : unref(t2)("runs.connect.errors.baseError.title"),
              class: "mb-[16px]",
              icon: unref(WarningIcon),
              dismissible: isInternalServerError.value
            }, {
              default: withCtx(() => [
                !isInternalServerError.value ? (openBlock(), createElementBlock("p", _hoisted_2$X, toDisplayString$1(graphqlError.value.message), 1)) : (openBlock(), createBlock(_component_i18n_t, {
                  key: 1,
                  scope: "global",
                  keypath: "runs.connect.errors.internalServerError.description"
                }, {
                  default: withCtx(() => [
                    createVNode(_sfc_main$11, { href: "https://www.cypressstatus.com/" }, {
                      default: withCtx(() => [
                        createTextVNode(toDisplayString$1(unref(t2)("runs.connect.errors.internalServerError.link")), 1)
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                }))
              ]),
              _: 1
            }, 8, ["v-model", "title", "icon", "dismissible"])) : createCommentVNode("", true),
            createVNode(_sfc_main$R, {
              modelValue: pickedOrganization.value,
              "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => pickedOrganization.value = $event),
              options: unref(organizationOptions),
              "item-value": "name",
              "item-key": "id",
              placeholder: unref(orgPlaceholder),
              "data-cy": "selectOrganization"
            }, {
              label: withCtx(() => [
                createBaseVNode("span", _hoisted_3$P, [
                  createBaseVNode("span", _hoisted_4$x, toDisplayString$1(unref(t2)("runs.connect.modal.selectProject.organization")), 1),
                  unref(organizationUrl) ? (openBlock(), createBlock(_sfc_main$11, {
                    key: 0,
                    class: "cursor-pointer text-right text-indigo-500 hover:underline",
                    href: unref(organizationUrl)
                  }, {
                    default: withCtx(() => [
                      createTextVNode(toDisplayString$1(unref(t2)("runs.connect.modal.selectProject.manageOrgs")), 1)
                    ]),
                    _: 1
                  }, 8, ["href"])) : createCommentVNode("", true)
                ])
              ]),
              "input-prefix": withCtx(() => [
                createVNode(unref(OrganizationIcon), { class: "h-[16px] w-[16px] icon-dark-gray-500" })
              ]),
              "item-prefix": withCtx(() => [
                createVNode(unref(OrganizationIcon), { class: "h-[16px] w-[16px] icon-dark-gray-500" })
              ]),
              _: 1
            }, 8, ["modelValue", "options", "placeholder"]),
            !newProject.value ? (openBlock(), createBlock(_sfc_main$R, {
              key: 1,
              modelValue: pickedProject.value,
              "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => pickedProject.value = $event),
              class: normalizeClass(["mt-[16px] transition-all", pickedOrganization.value ? void 0 : "opacity-50"]),
              options: unref(projectOptions),
              "item-value": "name",
              "item-key": "id",
              disabled: !pickedOrganization.value,
              placeholder: unref(projectPlaceholder),
              "data-cy": "selectProject"
            }, {
              label: withCtx(() => [
                createBaseVNode("div", _hoisted_5$l, [
                  createBaseVNode("p", _hoisted_6$d, [
                    createTextVNode(toDisplayString$1(unref(t2)("runs.connect.modal.selectProject.project")) + " ", 1),
                    _hoisted_7$a
                  ]),
                  createBaseVNode("a", {
                    class: "cursor-pointer my-[8px] text-right text-indigo-500 hover:underline",
                    onClick: _cache[1] || (_cache[1] = ($event) => newProject.value = true)
                  }, toDisplayString$1(unref(t2)("runs.connect.modal.selectProject.createNewProject")), 1)
                ])
              ]),
              "input-prefix": withCtx(() => [
                createVNode(unref(FolderIcon), { class: "h-[16px] w-[16px] icon-dark-gray-500" })
              ]),
              "item-prefix": withCtx(() => [
                createVNode(unref(FolderIcon), { class: "h-[16px] w-[16px] icon-dark-gray-500" })
              ]),
              _: 1
            }, 8, ["modelValue", "class", "options", "disabled", "placeholder"])) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [
              createBaseVNode("div", _hoisted_8$8, [
                createBaseVNode("label", _hoisted_9$9, [
                  createBaseVNode("span", _hoisted_10$7, toDisplayString$1(unref(t2)("runs.connect.modal.selectProject.projectName")), 1),
                  _hoisted_11$5,
                  createBaseVNode("span", _hoisted_12$5, toDisplayString$1(unref(t2)("runs.connect.modal.selectProject.projectNameDisclaimer")), 1)
                ]),
                unref(projectOptions).length > 0 ? (openBlock(), createElementBlock("a", {
                  key: 0,
                  class: "cursor-pointer text-indigo-500 hover:underline",
                  onClick: _cache[3] || (_cache[3] = ($event) => newProject.value = false)
                }, toDisplayString$1(unref(t2)("runs.connect.modal.selectProject.chooseExistingProject")), 1)) : createCommentVNode("", true)
              ]),
              createVNode(Input, {
                id: "projectName",
                modelValue: projectName.value,
                "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => projectName.value = $event),
                class: "mt-[8px]",
                "input-classes": "h-[38px]",
                "prefix-icon": unref(FolderIcon),
                "prefix-icon-classes": "icon-dark-gray-500"
              }, null, 8, ["modelValue", "prefix-icon"]),
              createVNode(Radio, {
                value: projectAccess.value,
                "onUpdate:value": _cache[5] || (_cache[5] = ($event) => projectAccess.value = $event),
                name: "projectAccess",
                label: unref(t2)("runs.connect.modal.selectProject.newProjectAccess"),
                options: [
                  {
                    label: unref(t2)("runs.connect.modal.selectProject.privateLabel"),
                    description: unref(t2)("runs.connect.modal.selectProject.privateDescription"),
                    value: "private"
                  },
                  {
                    label: unref(t2)("runs.connect.modal.selectProject.publicLabel"),
                    description: unref(t2)("runs.connect.modal.selectProject.publicDescription"),
                    value: "public"
                  }
                ]
              }, null, 8, ["value", "label", "options"])
            ], 64))
          ]))
        ]),
        _: 2
      }, [
        unref(isOnline) ? {
          name: "footer",
          fn: withCtx(() => [
            createBaseVNode("div", _hoisted_13$5, [
              createVNode(_sfc_main$10, {
                size: "lg",
                "prefix-icon": newProject.value ? unref(__unplugin_components_1$6) : unref(ConnectIcon),
                "prefix-icon-class": "icon-dark-white",
                disabled: unref(disableButton),
                "data-cy": "connect-project",
                onClick: createOrConnectProject
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(newProject.value ? unref(t2)("runs.connect.modal.selectProject.createProject") : unref(t2)("runs.connect.modal.selectProject.connectProject")), 1)
                ]),
                _: 1
              }, 8, ["prefix-icon", "disabled"]),
              createVNode(_sfc_main$10, {
                variant: "outline",
                size: "lg",
                onClick: _cache[6] || (_cache[6] = ($event) => emit3("cancel"))
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)("runs.connect.modal.cancel")), 1)
                ]),
                _: 1
              })
            ])
          ]),
          key: "0"
        } : void 0
      ]), 1032, ["title"]);
    };
  }
});
const _hoisted_1$$ = {
  key: 1,
  class: "border border-dashed rounded border-gray-100 text-center p-[24px] w-[592px]"
};
const _hoisted_2$W = { class: "mb-[16px] text-gray-700" };
const _hoisted_3$O = { class: "flex gap-[16px]" };
const _sfc_main$K = /* @__PURE__ */ defineComponent({
  __name: "CreateCloudOrgModal",
  props: {
    gql: null
  },
  emits: ["cancel"],
  setup(__props, { emit: emit3 }) {
    const props = __props;
    const { t: t2 } = useI18n();
    const online = useOnline();
    gql`
fragment CreateCloudOrgModal on CloudUser {
  id
  createCloudOrganizationUrl
}
`;
    gql`
mutation CreateCloudOrgModal_CloudOrganizationsCheck {
  refreshCloudViewer {
    ...CloudConnectModals
  }
}
`;
    const refreshOrgs = useMutation(CreateCloudOrgModal_CloudOrganizationsCheckDocument);
    const refetch = useDebounceFn(() => refreshOrgs.executeMutation({}), 1e3);
    const waitingOrgToBeCreated = ref(false);
    let timer;
    function startWaitingOrgToBeCreated() {
      waitingOrgToBeCreated.value = true;
      timer = setTimeout(() => {
        waitingOrgToBeCreated.value = false;
      }, 6e4);
    }
    onBeforeUnmount(() => {
      window.clearTimeout(timer);
    });
    const createOrgUrl = computed(() => props.gql.createCloudOrganizationUrl);
    const isOnline = computed(() => online.value);
    return (_ctx, _cache) => {
      const _component_i_cy_office_building_x16 = OrganizationIcon;
      const _component_i_cy_loading_x16 = __unplugin_components_0$d;
      return openBlock(), createBlock(_sfc_main$S, {
        "model-value": "",
        title: unref(t2)("runs.connect.modal.title"),
        "help-link": "https://on.cypress.io/adding-new-project",
        "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => emit3("cancel"))
      }, createSlots({
        default: withCtx(() => [
          !unref(isOnline) ? (openBlock(), createBlock(_sfc_main$_, {
            key: 0,
            class: "mt-[24px]"
          }, {
            default: withCtx(() => [
              createTextVNode(toDisplayString$1(unref(t2)("launchpadErrors.noInternet.message")), 1)
            ]),
            _: 1
          })) : (openBlock(), createElementBlock("div", _hoisted_1$$, [
            createBaseVNode("p", _hoisted_2$W, toDisplayString$1(unref(t2)("runs.connect.modal.createOrg.description")), 1),
            unref(createOrgUrl) ? (openBlock(), createBlock(_sfc_main$11, {
              key: 0,
              class: "border rounded mx-auto outline-none bg-indigo-500 border-indigo-500 text-white max-h-[60px] py-[11px] px-[16px] inline-block hocus-default",
              href: unref(createOrgUrl),
              "include-graphql-port": true,
              onClick: _cache[0] || (_cache[0] = ($event) => startWaitingOrgToBeCreated())
            }, {
              default: withCtx(() => [
                createVNode(_component_i_cy_office_building_x16, { class: "inline-block icon-dark-white" }),
                createTextVNode(" " + toDisplayString$1(unref(t2)("runs.connect.modal.createOrg.button")), 1)
              ]),
              _: 1
            }, 8, ["href"])) : createCommentVNode("", true)
          ]))
        ]),
        _: 2
      }, [
        unref(isOnline) ? {
          name: "footer",
          fn: withCtx(() => [
            createBaseVNode("div", _hoisted_3$O, [
              waitingOrgToBeCreated.value ? (openBlock(), createBlock(_sfc_main$10, {
                key: 0,
                size: "lg",
                variant: "pending"
              }, {
                prefix: withCtx(() => [
                  createVNode(_component_i_cy_loading_x16, { class: "animate-spin icon-dark-white icon-light-gray-400" })
                ]),
                default: withCtx(() => [
                  createTextVNode(" " + toDisplayString$1(unref(t2)("runs.connect.modal.createOrg.waitingButton")), 1)
                ]),
                _: 1
              })) : (openBlock(), createBlock(_sfc_main$10, {
                key: 1,
                size: "lg",
                onClick: _cache[1] || (_cache[1] = ($event) => unref(refetch)())
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)("runs.connect.modal.createOrg.refreshButton")), 1)
                ]),
                _: 1
              })),
              createVNode(_sfc_main$10, {
                variant: "outline",
                size: "lg",
                onClick: _cache[2] || (_cache[2] = ($event) => emit3("cancel"))
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)("runs.connect.modal.cancel")), 1)
                ]),
                _: 1
              })
            ])
          ]),
          key: "0"
        } : void 0
      ]), 1032, ["title"]);
    };
  }
});
const information_for_contributors$8 = [
  "This file has been converted from https://github.com/atom/language-css/blob/master/grammars/css.cson",
  "If you want to provide a fix or improvement, please create a pull request against the original repository.",
  "Once accepted there, we are happy to receive an update request."
];
const version$8 = "https://github.com/atom/language-css/commit/033087e8caa1b87ca91ee5b211de118b6b3c311d";
const name$b = "css";
const scopeName$a = "source.css";
const patterns$a = [
  {
    include: "#comment-block"
  },
  {
    include: "#escapes"
  },
  {
    include: "#combinators"
  },
  {
    include: "#selector"
  },
  {
    include: "#at-rules"
  },
  {
    include: "#rule-list"
  }
];
const repository$a = {
  "at-rules": {
    patterns: [
      {
        begin: "\\A(?:\\xEF\\xBB\\xBF)?(?i:(?=\\s*@charset\\b))",
        end: ";|(?=$)",
        endCaptures: {
          "0": {
            name: "punctuation.terminator.rule.css"
          }
        },
        name: "meta.at-rule.charset.css",
        patterns: [
          {
            captures: {
              "1": {
                name: "invalid.illegal.not-lowercase.charset.css"
              },
              "2": {
                name: "invalid.illegal.leading-whitespace.charset.css"
              },
              "3": {
                name: "invalid.illegal.no-whitespace.charset.css"
              },
              "4": {
                name: "invalid.illegal.whitespace.charset.css"
              },
              "5": {
                name: "invalid.illegal.not-double-quoted.charset.css"
              },
              "6": {
                name: "invalid.illegal.unclosed-string.charset.css"
              },
              "7": {
                name: "invalid.illegal.unexpected-characters.charset.css"
              }
            },
            match: '(?x)        # Possible errors:\n\\G\n((?!@charset)@\\w+)   # Not lowercase (@charset is case-sensitive)\n|\n\\G(\\s+)             # Preceding whitespace\n|\n(@charset\\S[^;]*)    # No whitespace after @charset\n|\n(?<=@charset)         # Before quoted charset name\n(\\x20{2,}|\\t+)      # More than one space used, or a tab\n|\n(?<=@charset\\x20)    # Beginning of charset name\n([^";]+)              # Not double-quoted\n|\n("[^"]+$)             # Unclosed quote\n|\n(?<=")                # After charset name\n([^;]+)               # Unexpected junk instead of semicolon'
          },
          {
            captures: {
              "1": {
                name: "keyword.control.at-rule.charset.css"
              },
              "2": {
                name: "punctuation.definition.keyword.css"
              }
            },
            match: "((@)charset)(?=\\s)"
          },
          {
            begin: '"',
            beginCaptures: {
              "0": {
                name: "punctuation.definition.string.begin.css"
              }
            },
            end: '"|$',
            endCaptures: {
              "0": {
                name: "punctuation.definition.string.end.css"
              }
            },
            name: "string.quoted.double.css",
            patterns: [
              {
                begin: '(?:\\G|^)(?=(?:[^"])+$)',
                end: "$",
                name: "invalid.illegal.unclosed.string.css"
              }
            ]
          }
        ]
      },
      {
        begin: `(?i)((@)import)(?:\\s+|$|(?=['"]|/\\*))`,
        beginCaptures: {
          "1": {
            name: "keyword.control.at-rule.import.css"
          },
          "2": {
            name: "punctuation.definition.keyword.css"
          }
        },
        end: ";",
        endCaptures: {
          "0": {
            name: "punctuation.terminator.rule.css"
          }
        },
        name: "meta.at-rule.import.css",
        patterns: [
          {
            begin: "\\G\\s*(?=/\\*)",
            end: "(?<=\\*/)\\s*",
            patterns: [
              {
                include: "#comment-block"
              }
            ]
          },
          {
            include: "#string"
          },
          {
            include: "#url"
          },
          {
            include: "#media-query-list"
          }
        ]
      },
      {
        begin: "(?i)((@)font-face)(?=\\s*|{|/\\*|$)",
        beginCaptures: {
          "1": {
            name: "keyword.control.at-rule.font-face.css"
          },
          "2": {
            name: "punctuation.definition.keyword.css"
          }
        },
        end: "(?!\\G)",
        name: "meta.at-rule.font-face.css",
        patterns: [
          {
            include: "#comment-block"
          },
          {
            include: "#escapes"
          },
          {
            include: "#rule-list"
          }
        ]
      },
      {
        begin: "(?i)(@)page(?=[\\s:{]|/\\*|$)",
        captures: {
          "0": {
            name: "keyword.control.at-rule.page.css"
          },
          "1": {
            name: "punctuation.definition.keyword.css"
          }
        },
        end: "(?=\\s*($|[:{;]))",
        name: "meta.at-rule.page.css",
        patterns: [
          {
            include: "#rule-list"
          }
        ]
      },
      {
        begin: "(?i)(?=@media(\\s|\\(|/\\*|$))",
        end: "(?<=})(?!\\G)",
        patterns: [
          {
            begin: "(?i)\\G(@)media",
            beginCaptures: {
              "0": {
                name: "keyword.control.at-rule.media.css"
              },
              "1": {
                name: "punctuation.definition.keyword.css"
              }
            },
            end: "(?=\\s*[{;])",
            name: "meta.at-rule.media.header.css",
            patterns: [
              {
                include: "#media-query-list"
              }
            ]
          },
          {
            begin: "{",
            beginCaptures: {
              "0": {
                name: "punctuation.section.media.begin.bracket.curly.css"
              }
            },
            end: "}",
            endCaptures: {
              "0": {
                name: "punctuation.section.media.end.bracket.curly.css"
              }
            },
            name: "meta.at-rule.media.body.css",
            patterns: [
              {
                include: "$self"
              }
            ]
          }
        ]
      },
      {
        begin: `(?i)(?=@counter-style([\\s'"{;]|/\\*|$))`,
        end: "(?<=})(?!\\G)",
        patterns: [
          {
            begin: "(?i)\\G(@)counter-style",
            beginCaptures: {
              "0": {
                name: "keyword.control.at-rule.counter-style.css"
              },
              "1": {
                name: "punctuation.definition.keyword.css"
              }
            },
            end: "(?=\\s*{)",
            name: "meta.at-rule.counter-style.header.css",
            patterns: [
              {
                include: "#comment-block"
              },
              {
                include: "#escapes"
              },
              {
                captures: {
                  "0": {
                    patterns: [
                      {
                        include: "#escapes"
                      }
                    ]
                  }
                },
                match: "(?x)\n(?:[-a-zA-Z_]    | [^\\x00-\\x7F])     # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F]      # Remainder of identifier\n  |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",
                name: "variable.parameter.style-name.css"
              }
            ]
          },
          {
            begin: "{",
            beginCaptures: {
              "0": {
                name: "punctuation.section.property-list.begin.bracket.curly.css"
              }
            },
            end: "}",
            endCaptures: {
              "0": {
                name: "punctuation.section.property-list.end.bracket.curly.css"
              }
            },
            name: "meta.at-rule.counter-style.body.css",
            patterns: [
              {
                include: "#comment-block"
              },
              {
                include: "#escapes"
              },
              {
                include: "#rule-list-innards"
              }
            ]
          }
        ]
      },
      {
        begin: `(?i)(?=@document([\\s'"{;]|/\\*|$))`,
        end: "(?<=})(?!\\G)",
        patterns: [
          {
            begin: "(?i)\\G(@)document",
            beginCaptures: {
              "0": {
                name: "keyword.control.at-rule.document.css"
              },
              "1": {
                name: "punctuation.definition.keyword.css"
              }
            },
            end: "(?=\\s*[{;])",
            name: "meta.at-rule.document.header.css",
            patterns: [
              {
                begin: "(?i)(?<![\\w-])(url-prefix|domain|regexp)(\\()",
                beginCaptures: {
                  "1": {
                    name: "support.function.document-rule.css"
                  },
                  "2": {
                    name: "punctuation.section.function.begin.bracket.round.css"
                  }
                },
                end: "\\)",
                endCaptures: {
                  "0": {
                    name: "punctuation.section.function.end.bracket.round.css"
                  }
                },
                name: "meta.function.document-rule.css",
                patterns: [
                  {
                    include: "#string"
                  },
                  {
                    include: "#comment-block"
                  },
                  {
                    include: "#escapes"
                  },
                  {
                    match: `[^'")\\s]+`,
                    name: "variable.parameter.document-rule.css"
                  }
                ]
              },
              {
                include: "#url"
              },
              {
                include: "#commas"
              },
              {
                include: "#comment-block"
              },
              {
                include: "#escapes"
              }
            ]
          },
          {
            begin: "{",
            beginCaptures: {
              "0": {
                name: "punctuation.section.document.begin.bracket.curly.css"
              }
            },
            end: "}",
            endCaptures: {
              "0": {
                name: "punctuation.section.document.end.bracket.curly.css"
              }
            },
            name: "meta.at-rule.document.body.css",
            patterns: [
              {
                include: "$self"
              }
            ]
          }
        ]
      },
      {
        begin: `(?i)(?=@(?:-(?:webkit|moz|o|ms)-)?keyframes([\\s'"{;]|/\\*|$))`,
        end: "(?<=})(?!\\G)",
        patterns: [
          {
            begin: "(?i)\\G(@)(?:-(?:webkit|moz|o|ms)-)?keyframes",
            beginCaptures: {
              "0": {
                name: "keyword.control.at-rule.keyframes.css"
              },
              "1": {
                name: "punctuation.definition.keyword.css"
              }
            },
            end: "(?=\\s*{)",
            name: "meta.at-rule.keyframes.header.css",
            patterns: [
              {
                include: "#comment-block"
              },
              {
                include: "#escapes"
              },
              {
                captures: {
                  "0": {
                    patterns: [
                      {
                        include: "#escapes"
                      }
                    ]
                  }
                },
                match: "(?x)\n(?:[-a-zA-Z_]    | [^\\x00-\\x7F])     # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F]      # Remainder of identifier\n  |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",
                name: "variable.parameter.keyframe-list.css"
              }
            ]
          },
          {
            begin: "{",
            beginCaptures: {
              "0": {
                name: "punctuation.section.keyframes.begin.bracket.curly.css"
              }
            },
            end: "}",
            endCaptures: {
              "0": {
                name: "punctuation.section.keyframes.end.bracket.curly.css"
              }
            },
            name: "meta.at-rule.keyframes.body.css",
            patterns: [
              {
                include: "#comment-block"
              },
              {
                include: "#escapes"
              },
              {
                captures: {
                  "1": {
                    name: "entity.other.keyframe-offset.css"
                  },
                  "2": {
                    name: "entity.other.keyframe-offset.percentage.css"
                  }
                },
                match: "(?xi)\n(?<![\\w-]) (from|to) (?![\\w-])         # Keywords for 0% | 100%\n|\n([-+]?(?:\\d+(?:\\.\\d+)?|\\.\\d+)%)     # Percentile value"
              },
              {
                include: "#rule-list"
              }
            ]
          }
        ]
      },
      {
        begin: "(?i)(?=@supports(\\s|\\(|/\\*|$))",
        end: "(?<=})(?!\\G)|(?=;)",
        patterns: [
          {
            begin: "(?i)\\G(@)supports",
            beginCaptures: {
              "0": {
                name: "keyword.control.at-rule.supports.css"
              },
              "1": {
                name: "punctuation.definition.keyword.css"
              }
            },
            end: "(?=\\s*[{;])",
            name: "meta.at-rule.supports.header.css",
            patterns: [
              {
                include: "#feature-query-operators"
              },
              {
                include: "#feature-query"
              },
              {
                include: "#comment-block"
              },
              {
                include: "#escapes"
              }
            ]
          },
          {
            begin: "{",
            beginCaptures: {
              "0": {
                name: "punctuation.section.supports.begin.bracket.curly.css"
              }
            },
            end: "}",
            endCaptures: {
              "0": {
                name: "punctuation.section.supports.end.bracket.curly.css"
              }
            },
            name: "meta.at-rule.supports.body.css",
            patterns: [
              {
                include: "$self"
              }
            ]
          }
        ]
      },
      {
        begin: `(?i)((@)(-(ms|o)-)?viewport)(?=[\\s'"{;]|/\\*|$)`,
        beginCaptures: {
          "1": {
            name: "keyword.control.at-rule.viewport.css"
          },
          "2": {
            name: "punctuation.definition.keyword.css"
          }
        },
        end: "(?=\\s*[@{;])",
        name: "meta.at-rule.viewport.css",
        patterns: [
          {
            include: "#comment-block"
          },
          {
            include: "#escapes"
          }
        ]
      },
      {
        begin: `(?i)((@)font-feature-values)(?=[\\s'"{;]|/\\*|$)\\s*`,
        beginCaptures: {
          "1": {
            name: "keyword.control.at-rule.font-feature-values.css"
          },
          "2": {
            name: "punctuation.definition.keyword.css"
          }
        },
        contentName: "variable.parameter.font-name.css",
        end: "(?=\\s*[@{;])",
        name: "meta.at-rule.font-features.css",
        patterns: [
          {
            include: "#comment-block"
          },
          {
            include: "#escapes"
          }
        ]
      },
      {
        include: "#font-features"
      },
      {
        begin: `(?i)((@)namespace)(?=[\\s'";]|/\\*|$)`,
        beginCaptures: {
          "1": {
            name: "keyword.control.at-rule.namespace.css"
          },
          "2": {
            name: "punctuation.definition.keyword.css"
          }
        },
        end: ";|(?=[@{])",
        endCaptures: {
          "0": {
            name: "punctuation.terminator.rule.css"
          }
        },
        name: "meta.at-rule.namespace.css",
        patterns: [
          {
            include: "#url"
          },
          {
            captures: {
              "1": {
                patterns: [
                  {
                    include: "#comment-block"
                  }
                ]
              },
              "2": {
                name: "entity.name.function.namespace-prefix.css",
                patterns: [
                  {
                    include: "#escapes"
                  }
                ]
              }
            },
            match: "(?xi)\n(?:\\G|^|(?<=\\s))\n(?=\n  (?<=\\s|^)                             # Starts with whitespace\n  (?:[-a-zA-Z_]|[^\\x00-\\x7F])          # Then a valid identifier character\n  |\n  \\s*                                   # Possible adjoining whitespace\n  /\\*(?:[^*]|\\*[^/])*\\*/              # Injected comment\n)\n(.*?)                                    # Grouped to embed #comment-block\n(\n  (?:[-a-zA-Z_]    | [^\\x00-\\x7F])     # First letter\n  (?:[-a-zA-Z0-9_] | [^\\x00-\\x7F]      # Remainder of identifier\n    |\\\\(?:[0-9a-fA-F]{1,6}|.)\n  )*\n)"
          },
          {
            include: "#comment-block"
          },
          {
            include: "#escapes"
          },
          {
            include: "#string"
          }
        ]
      },
      {
        begin: "(?i)(?=@[\\w-]+[^;]+;s*$)",
        end: "(?<=;)(?!\\G)",
        patterns: [
          {
            begin: "(?i)\\G(@)[\\w-]+",
            beginCaptures: {
              "0": {
                name: "keyword.control.at-rule.css"
              },
              "1": {
                name: "punctuation.definition.keyword.css"
              }
            },
            end: ";",
            endCaptures: {
              "0": {
                name: "punctuation.terminator.rule.css"
              }
            },
            name: "meta.at-rule.header.css"
          }
        ]
      },
      {
        begin: "(?i)(?=@[\\w-]+(\\s|\\(|{|/\\*|$))",
        end: "(?<=})(?!\\G)",
        patterns: [
          {
            begin: "(?i)\\G(@)[\\w-]+",
            beginCaptures: {
              "0": {
                name: "keyword.control.at-rule.css"
              },
              "1": {
                name: "punctuation.definition.keyword.css"
              }
            },
            end: "(?=\\s*[{;])",
            name: "meta.at-rule.header.css"
          },
          {
            begin: "{",
            beginCaptures: {
              "0": {
                name: "punctuation.section.begin.bracket.curly.css"
              }
            },
            end: "}",
            endCaptures: {
              "0": {
                name: "punctuation.section.end.bracket.curly.css"
              }
            },
            name: "meta.at-rule.body.css",
            patterns: [
              {
                include: "$self"
              }
            ]
          }
        ]
      }
    ]
  },
  "color-keywords": {
    patterns: [
      {
        match: "(?i)(?<![\\w-])(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)(?![\\w-])",
        name: "support.constant.color.w3c-standard-color-name.css"
      },
      {
        match: "(?xi) (?<![\\w-])\n(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood\n|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan\n|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange\n|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise\n|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen\n|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki\n|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow\n|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray\n|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue\n|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise\n|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered\n|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum\n|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell\n|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato\n|transparent|turquoise|violet|wheat|whitesmoke|yellowgreen)\n(?![\\w-])",
        name: "support.constant.color.w3c-extended-color-name.css"
      },
      {
        match: "(?i)(?<![\\w-])currentColor(?![\\w-])",
        name: "support.constant.color.current.css"
      },
      {
        match: "(?xi) (?<![\\w-])\n(ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow\n|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption\n|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow\n|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText)\n(?![\\w-])",
        name: "invalid.deprecated.color.system.css"
      }
    ]
  },
  combinators: {
    patterns: [
      {
        match: "/deep/|>>>",
        name: "invalid.deprecated.combinator.css"
      },
      {
        match: ">>|>|\\+|~",
        name: "keyword.operator.combinator.css"
      }
    ]
  },
  commas: {
    match: ",",
    name: "punctuation.separator.list.comma.css"
  },
  "comment-block": {
    begin: "/\\*",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.comment.begin.css"
      }
    },
    end: "\\*/",
    endCaptures: {
      "0": {
        name: "punctuation.definition.comment.end.css"
      }
    },
    name: "comment.block.css"
  },
  escapes: {
    patterns: [
      {
        match: "\\\\[0-9a-fA-F]{1,6}",
        name: "constant.character.escape.codepoint.css"
      },
      {
        begin: "\\\\$\\s*",
        end: "^(?<!\\G)",
        name: "constant.character.escape.newline.css"
      },
      {
        match: "\\\\.",
        name: "constant.character.escape.css"
      }
    ]
  },
  "feature-query": {
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.condition.begin.bracket.round.css"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "punctuation.definition.condition.end.bracket.round.css"
      }
    },
    name: "meta.feature-query.css",
    patterns: [
      {
        include: "#feature-query-operators"
      },
      {
        include: "#feature-query"
      }
    ]
  },
  "feature-query-operators": {
    patterns: [
      {
        match: "(?i)(?<=[\\s()]|^|\\*/)(and|not|or)(?=[\\s()]|/\\*|$)",
        name: "keyword.operator.logical.feature.$1.css"
      },
      {
        include: "#rule-list-innards"
      }
    ]
  },
  "font-features": {
    begin: `(?xi)
((@)(annotation|character-variant|ornaments|styleset|stylistic|swash))
(?=[\\s@'"{;]|/\\*|$)`,
    beginCaptures: {
      "1": {
        name: "keyword.control.at-rule.${3:/downcase}.css"
      },
      "2": {
        name: "punctuation.definition.keyword.css"
      }
    },
    end: "(?<=})",
    name: "meta.at-rule.${3:/downcase}.css",
    patterns: [
      {
        begin: "{",
        beginCaptures: {
          "0": {
            name: "punctuation.section.property-list.begin.bracket.curly.css"
          }
        },
        end: "}",
        endCaptures: {
          "0": {
            name: "punctuation.section.property-list.end.bracket.curly.css"
          }
        },
        name: "meta.property-list.font-feature.css",
        patterns: [
          {
            captures: {
              "0": {
                patterns: [
                  {
                    include: "#escapes"
                  }
                ]
              }
            },
            match: "(?x)\n(?: [-a-zA-Z_]    | [^\\x00-\\x7F] )   # First letter\n(?: [-a-zA-Z0-9_] | [^\\x00-\\x7F]     # Remainder of identifier\n  | \\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",
            name: "variable.font-feature.css"
          },
          {
            include: "#rule-list-innards"
          }
        ]
      }
    ]
  },
  functions: {
    patterns: [
      {
        begin: "(?i)(?<![\\w-])(calc)(\\()",
        beginCaptures: {
          "1": {
            name: "support.function.calc.css"
          },
          "2": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        name: "meta.function.calc.css",
        patterns: [
          {
            match: "[*/]|(?<=\\s|^)[-+](?=\\s|$)",
            name: "keyword.operator.arithmetic.css"
          },
          {
            include: "#property-values"
          }
        ]
      },
      {
        begin: "(?i)(?<![\\w-])(rgba?|hsla?)(\\()",
        beginCaptures: {
          "1": {
            name: "support.function.misc.css"
          },
          "2": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        name: "meta.function.color.css",
        patterns: [
          {
            include: "#property-values"
          }
        ]
      },
      {
        begin: '(?xi) (?<![\\w-])\n(\n  (?:-webkit-|-moz-|-o-)?    # Accept prefixed/historical variants\n  (?:repeating-)?            # "Repeating"-type gradient\n  (?:linear|radial|conic)    # Shape\n  -gradient\n)\n(\\()',
        beginCaptures: {
          "1": {
            name: "support.function.gradient.css"
          },
          "2": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        name: "meta.function.gradient.css",
        patterns: [
          {
            match: "(?i)(?<![\\w-])(from|to|at)(?![\\w-])",
            name: "keyword.operator.gradient.css"
          },
          {
            include: "#property-values"
          }
        ]
      },
      {
        begin: "(?i)(?<![\\w-])(-webkit-gradient)(\\()",
        beginCaptures: {
          "1": {
            name: "invalid.deprecated.gradient.function.css"
          },
          "2": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        name: "meta.function.gradient.invalid.deprecated.gradient.css",
        patterns: [
          {
            begin: "(?i)(?<![\\w-])(from|to|color-stop)(\\()",
            beginCaptures: {
              "1": {
                name: "invalid.deprecated.function.css"
              },
              "2": {
                name: "punctuation.section.function.begin.bracket.round.css"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "punctuation.section.function.end.bracket.round.css"
              }
            },
            patterns: [
              {
                include: "#property-values"
              }
            ]
          },
          {
            include: "#property-values"
          }
        ]
      },
      {
        begin: "(?xi) (?<![\\w-])\n(annotation|attr|blur|brightness|character-variant|contrast|counters?\n|cross-fade|drop-shadow|element|fit-content|format|grayscale|hue-rotate\n|image-set|invert|local|minmax|opacity|ornaments|repeat|saturate|sepia\n|styleset|stylistic|swash|symbols)\n(\\()",
        beginCaptures: {
          "1": {
            name: "support.function.misc.css"
          },
          "2": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        name: "meta.function.misc.css",
        patterns: [
          {
            match: `(?i)(?<=[,\\s"]|\\*/|^)\\d+x(?=[\\s,"')]|/\\*|$)`,
            name: "constant.numeric.other.density.css"
          },
          {
            include: "#property-values"
          },
          {
            match: `[^'"),\\s]+`,
            name: "variable.parameter.misc.css"
          }
        ]
      },
      {
        begin: "(?i)(?<![\\w-])(circle|ellipse|inset|polygon|rect)(\\()",
        beginCaptures: {
          "1": {
            name: "support.function.shape.css"
          },
          "2": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        name: "meta.function.shape.css",
        patterns: [
          {
            match: "(?i)(?<=\\s|^|\\*/)(at|round)(?=\\s|/\\*|$)",
            name: "keyword.operator.shape.css"
          },
          {
            include: "#property-values"
          }
        ]
      },
      {
        begin: "(?i)(?<![\\w-])(cubic-bezier|steps)(\\()",
        beginCaptures: {
          "1": {
            name: "support.function.timing-function.css"
          },
          "2": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        name: "meta.function.timing-function.css",
        patterns: [
          {
            match: "(?i)(?<![\\w-])(start|end)(?=\\s*\\)|$)",
            name: "support.constant.step-direction.css"
          },
          {
            include: "#property-values"
          }
        ]
      },
      {
        begin: "(?xi) (?<![\\w-])\n( (?:translate|scale|rotate)(?:[XYZ]|3D)?\n| matrix(?:3D)?\n| skew[XY]?\n| perspective\n)\n(\\()",
        beginCaptures: {
          "1": {
            name: "support.function.transform.css"
          },
          "2": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        patterns: [
          {
            include: "#property-values"
          }
        ]
      },
      {
        include: "#url"
      },
      {
        begin: "(?i)(?<![\\w-])(var)(\\()",
        beginCaptures: {
          "1": {
            name: "support.function.misc.css"
          },
          "2": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        name: "meta.function.variable.css",
        patterns: [
          {
            name: "variable.argument.css",
            match: "(?x)\n--\n(?:[-a-zA-Z_]    | [^\\x00-\\x7F])     # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F]      # Remainder of identifier\n  |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*"
          },
          {
            include: "#property-values"
          }
        ]
      }
    ]
  },
  "functional-pseudo-classes": {
    patterns: [
      {
        begin: "(?i)((:)dir)(\\()",
        beginCaptures: {
          "1": {
            name: "entity.other.attribute-name.pseudo-class.css"
          },
          "2": {
            name: "punctuation.definition.entity.css"
          },
          "3": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        patterns: [
          {
            include: "#comment-block"
          },
          {
            include: "#escapes"
          },
          {
            match: "(?i)(?<![\\w-])(ltr|rtl)(?![\\w-])",
            name: "support.constant.text-direction.css"
          },
          {
            include: "#property-values"
          }
        ]
      },
      {
        begin: "(?i)((:)lang)(\\()",
        beginCaptures: {
          "1": {
            name: "entity.other.attribute-name.pseudo-class.css"
          },
          "2": {
            name: "punctuation.definition.entity.css"
          },
          "3": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        patterns: [
          {
            match: "(?<=[(,\\s])[a-zA-Z]+(-[a-zA-Z0-9]*|\\\\(?:[0-9a-fA-F]{1,6}|.))*(?=[),\\s])",
            name: "support.constant.language-range.css"
          },
          {
            begin: '"',
            beginCaptures: {
              "0": {
                name: "punctuation.definition.string.begin.css"
              }
            },
            end: '"',
            endCaptures: {
              "0": {
                name: "punctuation.definition.string.end.css"
              }
            },
            name: "string.quoted.double.css",
            patterns: [
              {
                include: "#escapes"
              },
              {
                match: '(?<=["\\s])[a-zA-Z*]+(-[a-zA-Z0-9*]*)*(?=["\\s])',
                name: "support.constant.language-range.css"
              }
            ]
          },
          {
            begin: "'",
            beginCaptures: {
              "0": {
                name: "punctuation.definition.string.begin.css"
              }
            },
            end: "'",
            endCaptures: {
              "0": {
                name: "punctuation.definition.string.end.css"
              }
            },
            name: "string.quoted.single.css",
            patterns: [
              {
                include: "#escapes"
              },
              {
                match: "(?<=['\\s])[a-zA-Z*]+(-[a-zA-Z0-9*]*)*(?=['\\s])",
                name: "support.constant.language-range.css"
              }
            ]
          },
          {
            include: "#commas"
          }
        ]
      },
      {
        begin: "(?i)((:)(?:not|has|matches))(\\()",
        beginCaptures: {
          "1": {
            name: "entity.other.attribute-name.pseudo-class.css"
          },
          "2": {
            name: "punctuation.definition.entity.css"
          },
          "3": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        patterns: [
          {
            include: "#selector-innards"
          }
        ]
      },
      {
        begin: "(?i)((:)nth-(?:last-)?(?:child|of-type))(\\()",
        beginCaptures: {
          "1": {
            name: "entity.other.attribute-name.pseudo-class.css"
          },
          "2": {
            name: "punctuation.definition.entity.css"
          },
          "3": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        patterns: [
          {
            match: "(?i)[+-]?(\\d+n?|n)(\\s*[+-]\\s*\\d+)?",
            name: "constant.numeric.css"
          },
          {
            match: "(?i)even|odd",
            name: "support.constant.parity.css"
          }
        ]
      }
    ]
  },
  "media-features": {
    captures: {
      "1": {
        name: "support.type.property-name.media.css"
      },
      "2": {
        name: "support.type.property-name.media.css"
      },
      "3": {
        name: "support.type.vendored.property-name.media.css"
      }
    },
    match: "(?xi)\n(?<=^|\\s|\\(|\\*/)           # Preceded by whitespace, bracket or comment\n(?:\n  # Standardised features\n  (\n    (?:min-|max-)?            # Range features\n    (?: height\n      | width\n      | aspect-ratio\n      | color\n      | color-index\n      | monochrome\n      | resolution\n    )\n    | grid                    # Discrete features\n    | scan\n    | orientation\n    | display-mode\n    | hover\n  )\n  |\n  # Deprecated features\n  (\n    (?:min-|max-)?            # Deprecated in Media Queries 4\n    device-\n    (?: height\n      | width\n      | aspect-ratio\n    )\n  )\n  |\n  # Vendor extensions\n  (\n    (?:\n      # Spec-compliant syntax\n      [-_]\n      (?: webkit              # Webkit/Blink\n        | apple|khtml         # Webkit aliases\n        | epub                # ePub3\n        | moz                 # Gecko\n        | ms                  # Microsoft\n        | o                   # Presto (pre-Opera 15)\n        | xv|ah|rim|atsc|     # Less common vendors\n          hp|tc|wap|ro\n      )\n      |\n      # Non-standard prefixes\n      (?: mso                 # Microsoft Office\n        | prince              # YesLogic\n      )\n    )\n    -\n    [\\w-]+                   # Feature name\n    (?=                       # Terminates correctly\n      \\s*                    # Possible whitespace\n      (?:                     # Possible injected comment\n        /\\*\n        (?:[^*]|\\*[^/])*\n        \\*/\n      )?\n      \\s*\n      [:)]                    # Ends with a colon or closed bracket\n    )\n  )\n)\n(?=\\s|$|[><:=]|\\)|/\\*)     # Terminates cleanly"
  },
  "media-feature-keywords": {
    match: "(?xi)\n(?<=^|\\s|:|\\*/)\n(?: portrait                  # Orientation\n  | landscape\n  | progressive               # Scan types\n  | interlace\n  | fullscreen                # Display modes\n  | standalone\n  | minimal-ui\n  | browser\n  | hover\n)\n(?=\\s|\\)|$)",
    name: "support.constant.property-value.css"
  },
  "media-query": {
    begin: "\\G",
    end: "(?=\\s*[{;])",
    patterns: [
      {
        include: "#comment-block"
      },
      {
        include: "#escapes"
      },
      {
        include: "#media-types"
      },
      {
        match: "(?i)(?<=\\s|^|,|\\*/)(only|not)(?=\\s|{|/\\*|$)",
        name: "keyword.operator.logical.$1.media.css"
      },
      {
        match: "(?i)(?<=\\s|^|\\*/|\\))and(?=\\s|/\\*|$)",
        name: "keyword.operator.logical.and.media.css"
      },
      {
        match: ",(?:(?:\\s*,)+|(?=\\s*[;){]))",
        name: "invalid.illegal.comma.css"
      },
      {
        include: "#commas"
      },
      {
        begin: "\\(",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.parameters.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.definition.parameters.end.bracket.round.css"
          }
        },
        patterns: [
          {
            include: "#media-features"
          },
          {
            include: "#media-feature-keywords"
          },
          {
            match: ":",
            name: "punctuation.separator.key-value.css"
          },
          {
            match: ">=|<=|=|<|>",
            name: "keyword.operator.comparison.css"
          },
          {
            captures: {
              "1": {
                name: "constant.numeric.css"
              },
              "2": {
                name: "keyword.operator.arithmetic.css"
              },
              "3": {
                name: "constant.numeric.css"
              }
            },
            match: "(\\d+)\\s*(/)\\s*(\\d+)",
            name: "meta.ratio.css"
          },
          {
            include: "#numeric-values"
          },
          {
            include: "#comment-block"
          }
        ]
      }
    ]
  },
  "media-query-list": {
    begin: "(?=\\s*[^{;])",
    end: "(?=\\s*[{;])",
    patterns: [
      {
        include: "#media-query"
      }
    ]
  },
  "media-types": {
    captures: {
      "1": {
        name: "support.constant.media.css"
      },
      "2": {
        name: "invalid.deprecated.constant.media.css"
      }
    },
    match: "(?xi)\n(?<=^|\\s|,|\\*/)\n(?:\n  # Valid media types\n  (all|print|screen|speech)\n  |\n  # Deprecated in Media Queries 4: http://dev.w3.org/csswg/mediaqueries/#media-types\n  (aural|braille|embossed|handheld|projection|tty|tv)\n)\n(?=$|[{,\\s;]|/\\*)"
  },
  "numeric-values": {
    patterns: [
      {
        captures: {
          "1": {
            name: "punctuation.definition.constant.css"
          }
        },
        match: "(#)(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\\b",
        name: "constant.other.color.rgb-value.hex.css"
      },
      {
        captures: {
          "1": {
            name: "keyword.other.unit.percentage.css"
          },
          "2": {
            name: "keyword.other.unit.${2:/downcase}.css"
          }
        },
        match: "(?xi) (?<![\\w-])\n[-+]?                               # Sign indicator\n\n(?:                                 # Numerals\n    [0-9]+ (?:\\.[0-9]+)?           # Integer/float with leading digits\n  | \\.[0-9]+                       # Float without leading digits\n)\n\n(?:                                 # Scientific notation\n  (?<=[0-9])                        # Exponent must follow a digit\n  E                                 # Exponent indicator\n  [-+]?                             # Possible sign indicator\n  [0-9]+                            # Exponent value\n)?\n\n(?:                                 # Possible unit for data-type:\n  (%)                               # - Percentage\n  | ( deg|grad|rad|turn             # - Angle\n    | Hz|kHz                        # - Frequency\n    | ch|cm|em|ex|fr|in|mm|mozmm|   # - Length\n      pc|pt|px|q|rem|vh|vmax|vmin|\n      vw\n    | dpi|dpcm|dppx                 # - Resolution\n    | s|ms                          # - Time\n    )\n  \\b                               # Boundary checking intentionally lax to\n)?                                  # facilitate embedding in CSS-like grammars",
        name: "constant.numeric.css"
      }
    ]
  },
  "property-keywords": {
    patterns: [
      {
        match: "(?xi) (?<![\\w-])\n(above|absolute|active|add|additive|after-edge|alias|all|all-petite-caps|all-scroll|all-small-caps|alpha|alphabetic|alternate|alternate-reverse\n|always|antialiased|auto|auto-pos|available|avoid|avoid-column|avoid-page|avoid-region|backwards|balance|baseline|before-edge|below|bevel\n|bidi-override|blink|block|block-axis|block-start|block-end|bold|bolder|border|border-box|both|bottom|bottom-outside|break-all|break-word|bullets\n|butt|capitalize|caption|cell|center|central|char|circle|clip|clone|close-quote|closest-corner|closest-side|col-resize|collapse|color|color-burn\n|color-dodge|column|column-reverse|common-ligatures|compact|condensed|contain|content|content-box|contents|context-menu|contextual|copy|cover\n|crisp-edges|crispEdges|crosshair|cyclic|darken|dashed|decimal|default|dense|diagonal-fractions|difference|digits|disabled|disc|discretionary-ligatures\n|distribute|distribute-all-lines|distribute-letter|distribute-space|dot|dotted|double|double-circle|downleft|downright|e-resize|each-line|ease|ease-in\n|ease-in-out|ease-out|economy|ellipse|ellipsis|embed|end|evenodd|ew-resize|exact|exclude|exclusion|expanded|extends|extra-condensed|extra-expanded\n|fallback|farthest-corner|farthest-side|fill|fill-available|fill-box|filled|fit-content|fixed|flat|flex|flex-end|flex-start|flip|flow-root|forwards|freeze\n|from-image|full-width|geometricPrecision|georgian|grab|grabbing|grayscale|grid|groove|hand|hanging|hard-light|help|hidden|hide\n|historical-forms|historical-ligatures|horizontal|horizontal-tb|hue|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space\n|ideographic|inactive|infinite|inherit|initial|inline|inline-axis|inline-block|inline-end|inline-flex|inline-grid|inline-list-item|inline-start\n|inline-table|inset|inside|inter-character|inter-ideograph|inter-word|intersect|invert|isolate|isolate-override|italic|jis04|jis78|jis83\n|jis90|justify|justify-all|kannada|keep-all|landscape|large|larger|left|lighten|lighter|line|line-edge|line-through|linear|linearRGB\n|lining-nums|list-item|local|loose|lowercase|lr|lr-tb|ltr|luminance|luminosity|main-size|mandatory|manipulation|manual|margin-box|match-parent\n|match-source|mathematical|max-content|medium|menu|message-box|middle|min-content|miter|mixed|move|multiply|n-resize|narrower|ne-resize\n|nearest-neighbor|nesw-resize|newspaper|no-change|no-clip|no-close-quote|no-common-ligatures|no-contextual|no-discretionary-ligatures\n|no-drop|no-historical-ligatures|no-open-quote|no-repeat|none|nonzero|normal|not-allowed|nowrap|ns-resize|numbers|numeric|nw-resize|nwse-resize\n|oblique|oldstyle-nums|open|open-quote|optimizeLegibility|optimizeQuality|optimizeSpeed|optional|ordinal|outset|outside|over|overlay|overline|padding\n|padding-box|page|painted|pan-down|pan-left|pan-right|pan-up|pan-x|pan-y|paused|petite-caps|pixelated|plaintext|pointer|portrait|pre|pre-line\n|pre-wrap|preserve-3d|progress|progressive|proportional-nums|proportional-width|proximity|radial|recto|region|relative|remove|repeat|repeat-[xy]\n|reset-size|reverse|revert|ridge|right|rl|rl-tb|round|row|row-resize|row-reverse|row-severse|rtl|ruby|ruby-base|ruby-base-container|ruby-text\n|ruby-text-container|run-in|running|s-resize|saturation|scale-down|screen|scroll|scroll-position|se-resize|semi-condensed|semi-expanded|separate\n|sesame|show|sideways|sideways-left|sideways-lr|sideways-right|sideways-rl|simplified|slashed-zero|slice|small|small-caps|small-caption|smaller\n|smooth|soft-light|solid|space|space-around|space-between|space-evenly|spell-out|square|sRGB|stacked-fractions|start|static|status-bar|swap\n|step-end|step-start|sticky|stretch|strict|stroke|stroke-box|style|sub|subgrid|subpixel-antialiased|subtract|super|sw-resize|symbolic|table\n|table-caption|table-cell|table-column|table-column-group|table-footer-group|table-header-group|table-row|table-row-group|tabular-nums|tb|tb-rl\n|text|text-after-edge|text-before-edge|text-bottom|text-top|thick|thin|titling-caps|top|top-outside|touch|traditional|transparent|triangle\n|ultra-condensed|ultra-expanded|under|underline|unicase|unset|upleft|uppercase|upright|use-glyph-orientation|use-script|verso|vertical\n|vertical-ideographic|vertical-lr|vertical-rl|vertical-text|view-box|visible|visibleFill|visiblePainted|visibleStroke|w-resize|wait|wavy\n|weight|whitespace|wider|words|wrap|wrap-reverse|x|x-large|x-small|xx-large|xx-small|y|zero|zoom-in|zoom-out)\n(?![\\w-])",
        name: "support.constant.property-value.css"
      },
      {
        match: "(?xi) (?<![\\w-])\n(arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|cjk-ideographic\n|decimal|decimal-leading-zero|devanagari|disc|disclosure-closed|disclosure-open|ethiopic-halehame-am\n|ethiopic-halehame-ti-e[rt]|ethiopic-numeric|georgian|gujarati|gurmukhi|hangul|hangul-consonant|hebrew\n|hiragana|hiragana-iroha|japanese-formal|japanese-informal|kannada|katakana|katakana-iroha|khmer\n|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek\n|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal\n|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian\n|upper-latin|upper-roman|urdu)\n(?![\\w-])",
        name: "support.constant.property-value.list-style-type.css"
      },
      {
        match: "(?<![\\w-])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[a-zA-Z-]+",
        name: "support.constant.vendored.property-value.css"
      },
      {
        match: "(?<![\\w-])(?i:arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system-ui|system|tahoma|times|trebuchet|ui-monospace|ui-rounded|ui-sans-serif|ui-serif|utopia|verdana|webdings|sans-serif|serif|monospace)(?![\\w-])",
        name: "support.constant.font-name.css"
      }
    ]
  },
  "property-names": {
    patterns: [
      {
        match: "(?xi) (?<![\\w-])\n(?:\n  # Standard CSS\n  additive-symbols|align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration\n  | animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backdrop-filter\n  | backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image\n  | background-origin|background-position|background-position-[xy]|background-repeat|background-size|bleed|block-size|border\n  | border-block-end|border-block-end-color|border-block-end-style|border-block-end-width|border-block-start|border-block-start-color\n  | border-block-start-style|border-block-start-width|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius\n  | border-bottom-style|border-bottom-width|border-collapse|border-color|border-end-end-radius|border-end-start-radius|border-image\n  | border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-inline-end\n  | border-inline-end-color|border-inline-end-style|border-inline-end-width|border-inline-start|border-inline-start-color\n  | border-inline-start-style|border-inline-start-width|border-left|border-left-color|border-left-style|border-left-width\n  | border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-start-end-radius\n  | border-start-start-radius|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style\n  | border-top-width|border-width|bottom|box-decoration-break|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side\n  | caret-color|clear|clip|clip-path|clip-rule|color|color-adjust|color-interpolation-filters|column-count|column-fill|column-gap\n  | column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|contain|content|counter-increment\n  | counter-reset|cursor|direction|display|empty-cells|enable-background|fallback|fill|fill-opacity|fill-rule|filter|flex|flex-basis\n  | flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|flood-color|flood-opacity|font|font-display|font-family\n  | font-feature-settings|font-kerning|font-language-override|font-optical-sizing|font-size|font-size-adjust|font-stretch\n  | font-style|font-synthesis|font-variant|font-variant-alternates|font-variant-caps|font-variant-east-asian|font-variant-ligatures\n  | font-variant-numeric|font-variant-position|font-variation-settings|font-weight|gap|glyph-orientation-horizontal|glyph-orientation-vertical\n  | grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-gap|grid-column-start\n  | grid-gap|grid-row|grid-row-end|grid-row-gap|grid-row-start|grid-template|grid-template-areas|grid-template-columns|grid-template-rows\n  | hanging-punctuation|height|hyphens|image-orientation|image-rendering|image-resolution|ime-mode|initial-letter|initial-letter-align\n  | inline-size|inset|inset-block|inset-block-end|inset-block-start|inset-inline|inset-inline-end|inset-inline-start|isolation\n  | justify-content|justify-items|justify-self|kerning|left|letter-spacing|lighting-color|line-break|line-clamp|line-height|list-style\n  | list-style-image|list-style-position|list-style-type|margin|margin-block-end|margin-block-start|margin-bottom|margin-inline-end|margin-inline-start\n  | margin-left|margin-right|margin-top|marker-end|marker-mid|marker-start|marks|mask|mask-border|mask-border-mode|mask-border-outset\n  | mask-border-repeat|mask-border-slice|mask-border-source|mask-border-width|mask-clip|mask-composite|mask-image|mask-mode\n  | mask-origin|mask-position|mask-repeat|mask-size|mask-type|max-block-size|max-height|max-inline-size|max-lines|max-width\n  | max-zoom|min-block-size|min-height|min-inline-size|min-width|min-zoom|mix-blend-mode|negative|object-fit|object-position\n  | offset|offset-anchor|offset-distance|offset-path|offset-position|offset-rotation|opacity|order|orientation|orphans\n  | outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-anchor|overflow-block|overflow-inline\n  | overflow-wrap|overflow-[xy]|overscroll-behavior|overscroll-behavior-block|overscroll-behavior-inline|overscroll-behavior-[xy]\n  | pad|padding|padding-block-end|padding-block-start|padding-bottom|padding-inline-end|padding-inline-start|padding-left\n  | padding-right|padding-top|page-break-after|page-break-before|page-break-inside|paint-order|perspective|perspective-origin\n  | place-content|place-items|place-self|pointer-events|position|prefix|quotes|range|resize|right|rotate|row-gap|ruby-align\n  | ruby-merge|ruby-position|scale|scroll-behavior|scroll-margin|scroll-margin-block|scroll-margin-block-end|scroll-margin-block-start\n  | scroll-margin-bottom|scroll-margin-inline|scroll-margin-inline-end|scroll-margin-inline-start|scroll-margin-left|scroll-margin-right\n  | scroll-margin-top|scroll-padding|scroll-padding-block|scroll-padding-block-end|scroll-padding-block-start|scroll-padding-bottom\n  | scroll-padding-inline|scroll-padding-inline-end|scroll-padding-inline-start|scroll-padding-left|scroll-padding-right\n  | scroll-padding-top|scroll-snap-align|scroll-snap-coordinate|scroll-snap-destination|scroll-snap-stop|scroll-snap-type\n  | scrollbar-color|scrollbar-gutter|scrollbar-width|shape-image-threshold|shape-margin|shape-outside|shape-rendering|size\n  | speak-as|src|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap|stroke-linejoin|stroke-miterlimit\n  | stroke-opacity|stroke-width|suffix|symbols|system|tab-size|table-layout|text-align|text-align-last|text-anchor|text-combine-upright\n  | text-decoration|text-decoration-color|text-decoration-line|text-decoration-skip|text-decoration-skip-ink|text-decoration-style\n  | text-emphasis|text-emphasis-color|text-emphasis-position|text-emphasis-style|text-indent|text-justify|text-orientation\n  | text-overflow|text-rendering|text-shadow|text-size-adjust|text-transform|text-underline-position|top|touch-action|transform\n  | transform-box|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function\n  | translate|unicode-bidi|unicode-range|user-select|user-zoom|vertical-align|visibility|white-space|widows|width|will-change\n  | word-break|word-spacing|word-wrap|writing-mode|z-index|zoom\n\n  # SVG attributes\n  | alignment-baseline|baseline-shift|clip-rule|color-interpolation|color-interpolation-filters|color-profile\n  | color-rendering|cx|cy|dominant-baseline|enable-background|fill|fill-opacity|fill-rule|flood-color|flood-opacity\n  | glyph-orientation-horizontal|glyph-orientation-vertical|height|kerning|lighting-color|marker-end|marker-mid\n  | marker-start|r|rx|ry|shape-rendering|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap\n  | stroke-linejoin|stroke-miterlimit|stroke-opacity|stroke-width|text-anchor|width|x|y\n\n  # Not listed on MDN; presumably deprecated\n  | adjust|after|align|align-last|alignment|alignment-adjust|appearance|attachment|azimuth|background-break\n  | balance|baseline|before|bidi|binding|bookmark|bookmark-label|bookmark-level|bookmark-target|border-length\n  | bottom-color|bottom-left-radius|bottom-right-radius|bottom-style|bottom-width|box|box-align|box-direction\n  | box-flex|box-flex-group|box-lines|box-ordinal-group|box-orient|box-pack|break|character|collapse|column\n  | column-break-after|column-break-before|count|counter|crop|cue|cue-after|cue-before|decoration|decoration-break\n  | delay|display-model|display-role|down|drop|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust\n  | drop-initial-before-align|drop-initial-size|drop-initial-value|duration|elevation|emphasis|family|fit|fit-position\n  | flex-group|float-offset|gap|grid-columns|grid-rows|hanging-punctuation|header|hyphenate|hyphenate-after|hyphenate-before\n  | hyphenate-character|hyphenate-lines|hyphenate-resource|icon|image|increment|indent|index|initial-after-adjust\n  | initial-after-align|initial-before-adjust|initial-before-align|initial-size|initial-value|inline-box-align|iteration-count\n  | justify|label|left-color|left-style|left-width|length|level|line|line-stacking|line-stacking-ruby|line-stacking-shift\n  | line-stacking-strategy|lines|list|mark|mark-after|mark-before|marks|marquee|marquee-direction|marquee-play-count|marquee-speed\n  | marquee-style|max|min|model|move-to|name|nav|nav-down|nav-index|nav-left|nav-right|nav-up|new|numeral|offset|ordinal-group\n  | orient|origin|overflow-style|overhang|pack|page|page-policy|pause|pause-after|pause-before|phonemes|pitch|pitch-range\n  | play-count|play-during|play-state|point|presentation|presentation-level|profile|property|punctuation|punctuation-trim\n  | radius|rate|rendering-intent|repeat|replace|reset|resolution|resource|respond-to|rest|rest-after|rest-before|richness\n  | right-color|right-style|right-width|role|rotation|rotation-point|rows|ruby|ruby-overhang|ruby-span|rule|rule-color\n  | rule-style|rule-width|shadow|size|size-adjust|sizing|space|space-collapse|spacing|span|speak|speak-header|speak-numeral\n  | speak-punctuation|speech|speech-rate|speed|stacking|stacking-ruby|stacking-shift|stacking-strategy|stress|stretch\n  | string-set|style|style-image|style-position|style-type|target|target-name|target-new|target-position|text|text-height\n  | text-justify|text-outline|text-replace|text-wrap|timing-function|top-color|top-left-radius|top-right-radius|top-style\n  | top-width|trim|unicode|up|user-select|variant|voice|voice-balance|voice-duration|voice-family|voice-pitch|voice-pitch-range\n  | voice-rate|voice-stress|voice-volume|volume|weight|white|white-space-collapse|word|wrap\n)\n(?![\\w-])",
        name: "support.type.property-name.css"
      },
      {
        match: "(?<![\\w-])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[a-zA-Z-]+",
        name: "support.type.vendored.property-name.css"
      }
    ]
  },
  "property-values": {
    patterns: [
      {
        include: "#commas"
      },
      {
        include: "#comment-block"
      },
      {
        include: "#escapes"
      },
      {
        include: "#functions"
      },
      {
        include: "#property-keywords"
      },
      {
        include: "#unicode-range"
      },
      {
        include: "#numeric-values"
      },
      {
        include: "#color-keywords"
      },
      {
        include: "#string"
      },
      {
        match: "!\\s*important(?![\\w-])",
        name: "keyword.other.important.css"
      }
    ]
  },
  "pseudo-classes": {
    captures: {
      "1": {
        name: "punctuation.definition.entity.css"
      },
      "2": {
        name: "invalid.illegal.colon.css"
      }
    },
    match: "(?xi)\n(:)(:*)\n(?: active|any-link|checked|default|disabled|empty|enabled|first\n  | (?:first|last|only)-(?:child|of-type)|focus|focus-visible|focus-within|fullscreen|host|hover\n  | in-range|indeterminate|invalid|left|link|optional|out-of-range\n  | read-only|read-write|required|right|root|scope|target|unresolved\n  | valid|visited\n)(?![\\w-]|\\s*[;}])",
    name: "entity.other.attribute-name.pseudo-class.css"
  },
  "pseudo-elements": {
    captures: {
      "1": {
        name: "punctuation.definition.entity.css"
      },
      "2": {
        name: "punctuation.definition.entity.css"
      }
    },
    match: "(?xi)\n(?:\n  (::?)                       # Elements using both : and :: notation\n  (?: after\n    | before\n    | first-letter\n    | first-line\n    | (?:-(?:ah|apple|atsc|epub|hp|khtml|moz\n            |ms|o|rim|ro|tc|wap|webkit|xv)\n        | (?:mso|prince))\n      -[a-z-]+\n  )\n  |\n  (::)                        # Double-colon only\n  (?: backdrop\n    | content\n    | grammar-error\n    | marker\n    | placeholder\n    | selection\n    | shadow\n    | spelling-error\n  )\n)\n(?![\\w-]|\\s*[;}])",
    name: "entity.other.attribute-name.pseudo-element.css"
  },
  "rule-list": {
    begin: "{",
    beginCaptures: {
      "0": {
        name: "punctuation.section.property-list.begin.bracket.curly.css"
      }
    },
    end: "}",
    endCaptures: {
      "0": {
        name: "punctuation.section.property-list.end.bracket.curly.css"
      }
    },
    name: "meta.property-list.css",
    patterns: [
      {
        include: "#rule-list-innards"
      }
    ]
  },
  "rule-list-innards": {
    patterns: [
      {
        include: "#comment-block"
      },
      {
        include: "#escapes"
      },
      {
        include: "#font-features"
      },
      {
        match: "(?x) (?<![\\w-])\n--\n(?:[-a-zA-Z_]    | [^\\x00-\\x7F])     # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F]      # Remainder of identifier\n  |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",
        name: "variable.css"
      },
      {
        begin: "(?<![-a-zA-Z])(?=[-a-zA-Z])",
        end: "$|(?![-a-zA-Z])",
        name: "meta.property-name.css",
        patterns: [
          {
            include: "#property-names"
          }
        ]
      },
      {
        begin: "(:)\\s*",
        beginCaptures: {
          "1": {
            name: "punctuation.separator.key-value.css"
          }
        },
        end: "\\s*(;)|\\s*(?=}|\\))",
        endCaptures: {
          "1": {
            name: "punctuation.terminator.rule.css"
          }
        },
        contentName: "meta.property-value.css",
        patterns: [
          {
            include: "#comment-block"
          },
          {
            include: "#property-values"
          }
        ]
      },
      {
        match: ";",
        name: "punctuation.terminator.rule.css"
      }
    ]
  },
  selector: {
    begin: "(?x)\n(?=\n  (?:\\|)?                    # Possible anonymous namespace prefix\n  (?:\n    [-\\[:.*\\#a-zA-Z_]       # Valid selector character\n    |\n    [^\\x00-\\x7F]            # Which can include non-ASCII symbols\n    |\n    \\\\                      # Or an escape sequence\n    (?:[0-9a-fA-F]{1,6}|.)\n  )\n)",
    end: "(?=\\s*[/@{)])",
    name: "meta.selector.css",
    patterns: [
      {
        include: "#selector-innards"
      }
    ]
  },
  "selector-innards": {
    patterns: [
      {
        include: "#comment-block"
      },
      {
        include: "#commas"
      },
      {
        include: "#escapes"
      },
      {
        include: "#combinators"
      },
      {
        captures: {
          "1": {
            name: "entity.other.namespace-prefix.css"
          },
          "2": {
            name: "punctuation.separator.css"
          }
        },
        match: "(?x)\n(?:^|(?<=[\\s,(};]))         # Follows whitespace, comma, semicolon, or bracket\n(?!\n  [-\\w*]+\n  \\|\n  (?!\n      [-\\[:.*\\#a-zA-Z_]    # Make sure there's a selector to match\n    | [^\\x00-\\x7F]\n  )\n)\n(\n  (?: [-a-zA-Z_]    | [^\\x00-\\x7F] )   # First letter\n  (?: [-a-zA-Z0-9_] | [^\\x00-\\x7F]     # Remainder of identifier\n    | \\\\(?:[0-9a-fA-F]{1,6}|.)\n  )*\n  |\n  \\*     # Universal namespace\n)?\n(\\|)     # Namespace separator"
      },
      {
        include: "#tag-names"
      },
      {
        match: "\\*",
        name: "entity.name.tag.wildcard.css"
      },
      {
        captures: {
          "1": {
            name: "punctuation.definition.entity.css"
          },
          "2": {
            patterns: [
              {
                include: "#escapes"
              }
            ]
          }
        },
        match: "(?x) (?<![@\\w-])\n([.\\#])\n# Invalid identifier\n(\n  (?:\n    # Starts with ASCII digits, with possible hyphen preceding it\n    -?[0-9]\n    |\n    # Consists of a hyphen only\n    -                                      # Terminated by either:\n    (?= $                                  # - End-of-line\n      | [\\s,.\\#)\\[:{>+~|]               # - Followed by another selector\n      | /\\*                               # - Followed by a block comment\n    )\n    |\n    # Name contains unescaped ASCII symbol\n    (?:                                    # Check for acceptable preceding characters\n        [-a-zA-Z_0-9]|[^\\x00-\\x7F]       # - Valid selector character\n      | \\\\(?:[0-9a-fA-F]{1,6}|.)         # - Escape sequence\n    )*\n    (?:                                    # Invalid punctuation\n      [!\"'%&(*;<?@^`|\\]}]                 # - NOTE: We exempt `)` from the list of checked\n      |                                    #   symbols to avoid matching `:not(.invalid)`\n      / (?!\\*)                            # - Avoid invalidating the start of a comment\n    )+\n  )\n  # Mark remainder of selector invalid\n  (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F]         # - Otherwise valid identifier characters\n    | \\\\(?:[0-9a-fA-F]{1,6}|.)           # - Escape sequence\n  )*\n)",
        name: "invalid.illegal.bad-identifier.css"
      },
      {
        captures: {
          "1": {
            name: "punctuation.definition.entity.css"
          },
          "2": {
            patterns: [
              {
                include: "#escapes"
              }
            ]
          }
        },
        match: "(?x)\n(\\.)                                  # Valid class-name\n(\n  (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F]     # Valid identifier characters\n    | \\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\n  )+\n)                                      # Followed by either:\n(?= $                                  # - End of the line\n  | [\\s,.\\#)\\[:{>+~|]               # - Another selector\n  | /\\*                               # - A block comment\n)",
        name: "entity.other.attribute-name.class.css"
      },
      {
        captures: {
          "1": {
            name: "punctuation.definition.entity.css"
          },
          "2": {
            patterns: [
              {
                include: "#escapes"
              }
            ]
          }
        },
        match: "(?x)\n(\\#)\n(\n  -?\n  (?![0-9])\n  (?:[-a-zA-Z0-9_]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+\n)\n(?=$|[\\s,.\\#)\\[:{>+~|]|/\\*)",
        name: "entity.other.attribute-name.id.css"
      },
      {
        begin: "\\[",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.entity.begin.bracket.square.css"
          }
        },
        end: "\\]",
        endCaptures: {
          "0": {
            name: "punctuation.definition.entity.end.bracket.square.css"
          }
        },
        name: "meta.attribute-selector.css",
        patterns: [
          {
            include: "#comment-block"
          },
          {
            include: "#string"
          },
          {
            captures: {
              "1": {
                name: "storage.modifier.ignore-case.css"
              }
            },
            match: `(?<=["'\\s]|^|\\*/)\\s*([iI])\\s*(?=[\\s\\]]|/\\*|$)`
          },
          {
            captures: {
              "1": {
                name: "string.unquoted.attribute-value.css",
                patterns: [
                  {
                    include: "#escapes"
                  }
                ]
              }
            },
            match: `(?x)(?<==)\\s*((?!/\\*)(?:[^\\\\"'\\s\\]]|\\\\.)+)`
          },
          {
            include: "#escapes"
          },
          {
            match: "[~|^$*]?=",
            name: "keyword.operator.pattern.css"
          },
          {
            match: "\\|",
            name: "punctuation.separator.css"
          },
          {
            captures: {
              "1": {
                name: "entity.other.namespace-prefix.css",
                patterns: [
                  {
                    include: "#escapes"
                  }
                ]
              }
            },
            match: "(?x)\n# Qualified namespace prefix\n( -?(?!\\d)(?:[\\w-]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+\n| \\*\n)\n# Lookahead to ensure there's a valid identifier ahead\n(?=\n  \\| (?!\\s|=|$|\\])\n  (?: -?(?!\\d)\n   |   [\\\\\\w-]\n   |   [^\\x00-\\x7F]\n   )\n)"
          },
          {
            captures: {
              "1": {
                name: "entity.other.attribute-name.css",
                patterns: [
                  {
                    include: "#escapes"
                  }
                ]
              }
            },
            match: "(?x)\n(-?(?!\\d)(?>[\\w-]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+)\n\\s*\n(?=[~|^\\]$*=]|/\\*)"
          }
        ]
      },
      {
        include: "#pseudo-classes"
      },
      {
        include: "#pseudo-elements"
      },
      {
        include: "#functional-pseudo-classes"
      },
      {
        match: "(?x) (?<![@\\w-])\n(?=            # Custom element names must:\n  [a-z]        # - start with a lowercase ASCII letter,\n  \\w* -       # - contain at least one dash\n)\n(?:\n  (?![A-Z])    # No uppercase ASCII letters are allowed\n  [\\w-]       # Allow any other word character or dash\n)+\n(?![(\\w-])",
        name: "entity.name.tag.custom.css"
      }
    ]
  },
  string: {
    patterns: [
      {
        begin: '"',
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.css"
          }
        },
        end: '"|(?<!\\\\)(?=$|\\n)',
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.css"
          }
        },
        name: "string.quoted.double.css",
        patterns: [
          {
            begin: '(?:\\G|^)(?=(?:[^\\\\"]|\\\\.)+$)',
            end: "$",
            name: "invalid.illegal.unclosed.string.css",
            patterns: [
              {
                include: "#escapes"
              }
            ]
          },
          {
            include: "#escapes"
          }
        ]
      },
      {
        begin: "'",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.css"
          }
        },
        end: "'|(?<!\\\\)(?=$|\\n)",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.css"
          }
        },
        name: "string.quoted.single.css",
        patterns: [
          {
            begin: "(?:\\G|^)(?=(?:[^\\\\']|\\\\.)+$)",
            end: "$",
            name: "invalid.illegal.unclosed.string.css",
            patterns: [
              {
                include: "#escapes"
              }
            ]
          },
          {
            include: "#escapes"
          }
        ]
      }
    ]
  },
  "tag-names": {
    match: "(?xi) (?<![\\w:-])\n(?:\n    # HTML\n    a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdi|bdo|bgsound\n  | big|blink|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command\n  | content|data|datalist|dd|del|details|dfn|dialog|dir|div|dl|dt|element|em|embed|fieldset\n  | figcaption|figure|font|footer|form|frame|frameset|h[1-6]|head|header|hgroup|hr|html|i\n  | iframe|image|img|input|ins|isindex|kbd|keygen|label|legend|li|link|listing|main|map|mark\n  | marquee|math|menu|menuitem|meta|meter|multicol|nav|nextid|nobr|noembed|noframes|noscript\n  | object|ol|optgroup|option|output|p|param|picture|plaintext|pre|progress|q|rb|rp|rt|rtc\n  | ruby|s|samp|script|section|select|shadow|slot|small|source|spacer|span|strike|strong\n  | style|sub|summary|sup|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr\n  | track|tt|u|ul|var|video|wbr|xmp\n\n  # SVG\n  | altGlyph|altGlyphDef|altGlyphItem|animate|animateColor|animateMotion|animateTransform\n  | circle|clipPath|color-profile|cursor|defs|desc|discard|ellipse|feBlend|feColorMatrix\n  | feComponentTransfer|feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap\n  | feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur\n  | feImage|feMerge|feMergeNode|feMorphology|feOffset|fePointLight|feSpecularLighting\n  | feSpotLight|feTile|feTurbulence|filter|font-face|font-face-format|font-face-name\n  | font-face-src|font-face-uri|foreignObject|g|glyph|glyphRef|hatch|hatchpath|hkern\n  | line|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|metadata\n  | missing-glyph|mpath|path|pattern|polygon|polyline|radialGradient|rect|set|solidcolor\n  | stop|svg|switch|symbol|text|textPath|tref|tspan|use|view|vkern\n\n  # MathML\n  | annotation|annotation-xml|maction|maligngroup|malignmark|math|menclose|merror|mfenced\n  | mfrac|mglyph|mi|mlabeledtr|mlongdiv|mmultiscripts|mn|mo|mover|mpadded|mphantom|mroot\n  | mrow|ms|mscarries|mscarry|msgroup|msline|mspace|msqrt|msrow|mstack|mstyle|msub|msubsup\n  | msup|mtable|mtd|mtext|mtr|munder|munderover|semantics\n)\n(?=[+~>\\s,.\\#|){\\[]|/\\*|:[^\\s]|$)",
    name: "entity.name.tag.css"
  },
  "unicode-range": {
    captures: {
      "0": {
        name: "constant.other.unicode-range.css"
      },
      "1": {
        name: "punctuation.separator.dash.unicode-range.css"
      }
    },
    match: "(?<![\\w-])[Uu]\\+[0-9A-Fa-f?]{1,6}(?:(-)[0-9A-Fa-f]{1,6})?(?![\\w-])"
  },
  url: {
    begin: "(?i)(?<![\\w@-])(url)(\\()",
    beginCaptures: {
      "1": {
        name: "support.function.url.css"
      },
      "2": {
        name: "punctuation.section.function.begin.bracket.round.css"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "punctuation.section.function.end.bracket.round.css"
      }
    },
    name: "meta.function.url.css",
    patterns: [
      {
        match: `[^'")\\s]+`,
        name: "variable.parameter.url.css"
      },
      {
        include: "#string"
      },
      {
        include: "#comment-block"
      },
      {
        include: "#escapes"
      }
    ]
  }
};
const css_tmLanguage = {
  information_for_contributors: information_for_contributors$8,
  version: version$8,
  name: name$b,
  scopeName: scopeName$a,
  patterns: patterns$a,
  repository: repository$a
};
const __vite_glob_0_0 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: css_tmLanguage,
  information_for_contributors: information_for_contributors$8,
  name: name$b,
  patterns: patterns$a,
  repository: repository$a,
  scopeName: scopeName$a,
  version: version$8
}, Symbol.toStringTag, { value: "Module" }));
const information_for_contributors$7 = [
  "This file has been converted from https://github.com/textmate/html.tmbundle/blob/master/Syntaxes/HTML.plist",
  "If you want to provide a fix or improvement, please create a pull request against the original repository.",
  "Once accepted there, we are happy to receive an update request."
];
const version$7 = "https://github.com/textmate/html.tmbundle/commit/0c3d5ee54de3a993f747f54186b73a4d2d3c44a2";
const name$a = "html";
const scopeName$9 = "text.html.basic";
const injections = {
  "R:text.html - (comment.block, text.html meta.embedded, meta.tag.*.*.html, meta.tag.*.*.*.html, meta.tag.*.*.*.*.html)": {
    comment: "Uses R: to ensure this matches after any other injections.",
    patterns: [
      {
        match: "<",
        name: "invalid.illegal.bad-angle-bracket.html"
      }
    ]
  }
};
const patterns$9 = [
  {
    include: "#xml-processing"
  },
  {
    include: "#comment"
  },
  {
    include: "#doctype"
  },
  {
    include: "#cdata"
  },
  {
    include: "#tags-valid"
  },
  {
    include: "#tags-invalid"
  },
  {
    include: "#entities"
  }
];
const repository$9 = {
  attribute: {
    patterns: [
      {
        begin: "(s(hape|cope|t(ep|art)|ize(s)?|p(ellcheck|an)|elected|lot|andbox|rc(set|doc|lang)?)|h(ttp-equiv|i(dden|gh)|e(ight|aders)|ref(lang)?)|n(o(nce|validate|module)|ame)|c(h(ecked|arset)|ite|o(nt(ent(editable)?|rols)|ords|l(s(pan)?|or))|lass|rossorigin)|t(ype(mustmatch)?|itle|a(rget|bindex)|ranslate)|i(s(map)?|n(tegrity|putmode)|tem(scope|type|id|prop|ref)|d)|op(timum|en)|d(i(sabled|r(name)?)|ownload|e(coding|f(er|ault))|at(etime|a)|raggable)|usemap|p(ing|oster|la(ysinline|ceholder)|attern|reload)|enctype|value|kind|for(m(novalidate|target|enctype|action|method)?)?|w(idth|rap)|l(ist|o(op|w)|a(ng|bel))|a(s(ync)?|c(ce(sskey|pt(-charset)?)|tion)|uto(c(omplete|apitalize)|play|focus)|l(t|low(usermedia|paymentrequest|fullscreen))|bbr)|r(ows(pan)?|e(versed|quired|ferrerpolicy|l|adonly))|m(in(length)?|u(ted|ltiple)|e(thod|dia)|a(nifest|x(length)?)))(?![\\w:-])",
        beginCaptures: {
          "0": {
            name: "entity.other.attribute-name.html"
          }
        },
        comment: "HTML5 attributes, not event handlers",
        end: "(?=\\s*+[^=\\s])",
        name: "meta.attribute.$1.html",
        patterns: [
          {
            include: "#attribute-interior"
          }
        ]
      },
      {
        begin: "style(?![\\w:-])",
        beginCaptures: {
          "0": {
            name: "entity.other.attribute-name.html"
          }
        },
        comment: "HTML5 style attribute",
        end: "(?=\\s*+[^=\\s])",
        name: "meta.attribute.style.html",
        patterns: [
          {
            begin: "=",
            beginCaptures: {
              "0": {
                name: "punctuation.separator.key-value.html"
              }
            },
            end: "(?<=[^\\s=])(?!\\s*=)|(?=/?>)",
            patterns: [
              {
                begin: "(?=[^\\s=<>`/]|/(?!>))",
                end: "(?!\\G)",
                name: "meta.embedded.line.css",
                patterns: [
                  {
                    captures: {
                      "0": {
                        name: "source.css"
                      }
                    },
                    match: "([^\\s\"'=<>`/]|/(?!>))+",
                    name: "string.unquoted.html"
                  },
                  {
                    begin: '"',
                    beginCaptures: {
                      "0": {
                        name: "punctuation.definition.string.begin.html"
                      }
                    },
                    contentName: "source.css",
                    end: '(")',
                    endCaptures: {
                      "0": {
                        name: "punctuation.definition.string.end.html"
                      },
                      "1": {
                        name: "source.css-ignored-vscode"
                      }
                    },
                    name: "string.quoted.double.html",
                    patterns: [
                      {
                        include: "#entities"
                      }
                    ]
                  },
                  {
                    begin: "'",
                    beginCaptures: {
                      "0": {
                        name: "punctuation.definition.string.begin.html"
                      }
                    },
                    contentName: "source.css",
                    end: "(')",
                    endCaptures: {
                      "0": {
                        name: "punctuation.definition.string.end.html"
                      },
                      "1": {
                        name: "source.css-ignored-vscode"
                      }
                    },
                    name: "string.quoted.single.html",
                    patterns: [
                      {
                        include: "#entities"
                      }
                    ]
                  }
                ]
              },
              {
                match: "=",
                name: "invalid.illegal.unexpected-equals-sign.html"
              }
            ]
          }
        ]
      },
      {
        begin: "on(s(croll|t(orage|alled)|u(spend|bmit)|e(curitypolicyviolation|ek(ing|ed)|lect))|hashchange|c(hange|o(ntextmenu|py)|u(t|echange)|l(ick|ose)|an(cel|play(through)?))|t(imeupdate|oggle)|in(put|valid)|o(nline|ffline)|d(urationchange|r(op|ag(start|over|e(n(ter|d)|xit)|leave)?)|blclick)|un(handledrejection|load)|p(opstate|lay(ing)?|a(ste|use|ge(show|hide))|rogress)|e(nded|rror|mptied)|volumechange|key(down|up|press)|focus|w(heel|aiting)|l(oad(start|e(nd|d(data|metadata)))?|anguagechange)|a(uxclick|fterprint|bort)|r(e(s(ize|et)|jectionhandled)|atechange)|m(ouse(o(ut|ver)|down|up|enter|leave|move)|essage(error)?)|b(efore(unload|print)|lur))(?![\\w:-])",
        beginCaptures: {
          "0": {
            name: "entity.other.attribute-name.html"
          }
        },
        comment: "HTML5 attributes, event handlers",
        end: "(?=\\s*+[^=\\s])",
        name: "meta.attribute.event-handler.$1.html",
        patterns: [
          {
            begin: "=",
            beginCaptures: {
              "0": {
                name: "punctuation.separator.key-value.html"
              }
            },
            end: "(?<=[^\\s=])(?!\\s*=)|(?=/?>)",
            patterns: [
              {
                begin: "(?=[^\\s=<>`/]|/(?!>))",
                end: "(?!\\G)",
                name: "meta.embedded.line.js",
                patterns: [
                  {
                    captures: {
                      "0": {
                        name: "source.js"
                      },
                      "1": {
                        patterns: [
                          {
                            include: "source.js"
                          }
                        ]
                      }
                    },
                    match: "(([^\\s\"'=<>`/]|/(?!>))+)",
                    name: "string.unquoted.html"
                  },
                  {
                    begin: '"',
                    beginCaptures: {
                      "0": {
                        name: "punctuation.definition.string.begin.html"
                      }
                    },
                    contentName: "source.js",
                    end: '(")',
                    endCaptures: {
                      "0": {
                        name: "punctuation.definition.string.end.html"
                      },
                      "1": {
                        name: "source.js-ignored-vscode"
                      }
                    },
                    name: "string.quoted.double.html",
                    patterns: [
                      {
                        captures: {
                          "0": {
                            patterns: [
                              {
                                include: "source.js"
                              }
                            ]
                          }
                        },
                        match: '([^\\n"/]|/(?![/*]))+'
                      },
                      {
                        begin: "//",
                        beginCaptures: {
                          "0": {
                            name: "punctuation.definition.comment.js"
                          }
                        },
                        end: '(?=")|\\n',
                        name: "comment.line.double-slash.js"
                      },
                      {
                        begin: "/\\*",
                        beginCaptures: {
                          "0": {
                            name: "punctuation.definition.comment.begin.js"
                          }
                        },
                        end: '(?=")|\\*/',
                        endCaptures: {
                          "0": {
                            name: "punctuation.definition.comment.end.js"
                          }
                        },
                        name: "comment.block.js"
                      }
                    ]
                  },
                  {
                    begin: "'",
                    beginCaptures: {
                      "0": {
                        name: "punctuation.definition.string.begin.html"
                      }
                    },
                    contentName: "source.js",
                    end: "(')",
                    endCaptures: {
                      "0": {
                        name: "punctuation.definition.string.end.html"
                      },
                      "1": {
                        name: "source.js-ignored-vscode"
                      }
                    },
                    name: "string.quoted.single.html",
                    patterns: [
                      {
                        captures: {
                          "0": {
                            patterns: [
                              {
                                include: "source.js"
                              }
                            ]
                          }
                        },
                        match: "([^\\n'/]|/(?![/*]))+"
                      },
                      {
                        begin: "//",
                        beginCaptures: {
                          "0": {
                            name: "punctuation.definition.comment.js"
                          }
                        },
                        end: "(?=')|\\n",
                        name: "comment.line.double-slash.js"
                      },
                      {
                        begin: "/\\*",
                        beginCaptures: {
                          "0": {
                            name: "punctuation.definition.comment.begin.js"
                          }
                        },
                        end: "(?=')|\\*/",
                        endCaptures: {
                          "0": {
                            name: "punctuation.definition.comment.end.js"
                          }
                        },
                        name: "comment.block.js"
                      }
                    ]
                  }
                ]
              },
              {
                match: "=",
                name: "invalid.illegal.unexpected-equals-sign.html"
              }
            ]
          }
        ]
      },
      {
        begin: "(data-[a-z\\-]+)(?![\\w:-])",
        beginCaptures: {
          "0": {
            name: "entity.other.attribute-name.html"
          }
        },
        comment: "HTML5 attributes, data-*",
        end: "(?=\\s*+[^=\\s])",
        name: "meta.attribute.data-x.$1.html",
        patterns: [
          {
            include: "#attribute-interior"
          }
        ]
      },
      {
        begin: "(align|bgcolor|border)(?![\\w:-])",
        beginCaptures: {
          "0": {
            name: "invalid.deprecated.entity.other.attribute-name.html"
          }
        },
        comment: "HTML attributes, deprecated",
        end: "(?=\\s*+[^=\\s])",
        name: "meta.attribute.$1.html",
        patterns: [
          {
            include: "#attribute-interior"
          }
        ]
      },
      {
        begin: `([^\\x{0020}"'<>/=\\x{0000}-\\x{001F}\\x{007F}-\\x{009F}\\x{FDD0}-\\x{FDEF}\\x{FFFE}\\x{FFFF}\\x{1FFFE}\\x{1FFFF}\\x{2FFFE}\\x{2FFFF}\\x{3FFFE}\\x{3FFFF}\\x{4FFFE}\\x{4FFFF}\\x{5FFFE}\\x{5FFFF}\\x{6FFFE}\\x{6FFFF}\\x{7FFFE}\\x{7FFFF}\\x{8FFFE}\\x{8FFFF}\\x{9FFFE}\\x{9FFFF}\\x{AFFFE}\\x{AFFFF}\\x{BFFFE}\\x{BFFFF}\\x{CFFFE}\\x{CFFFF}\\x{DFFFE}\\x{DFFFF}\\x{EFFFE}\\x{EFFFF}\\x{FFFFE}\\x{FFFFF}\\x{10FFFE}\\x{10FFFF}]+)`,
        beginCaptures: {
          "0": {
            name: "entity.other.attribute-name.html"
          }
        },
        comment: "Anything else that is valid",
        end: "(?=\\s*+[^=\\s])",
        name: "meta.attribute.unrecognized.$1.html",
        patterns: [
          {
            include: "#attribute-interior"
          }
        ]
      },
      {
        match: "[^\\s>]+",
        name: "invalid.illegal.character-not-allowed-here.html"
      }
    ]
  },
  "attribute-interior": {
    patterns: [
      {
        begin: "=",
        beginCaptures: {
          "0": {
            name: "punctuation.separator.key-value.html"
          }
        },
        end: "(?<=[^\\s=])(?!\\s*=)|(?=/?>)",
        patterns: [
          {
            match: "([^\\s\"'=<>`/]|/(?!>))+",
            name: "string.unquoted.html"
          },
          {
            begin: '"',
            beginCaptures: {
              "0": {
                name: "punctuation.definition.string.begin.html"
              }
            },
            end: '"',
            endCaptures: {
              "0": {
                name: "punctuation.definition.string.end.html"
              }
            },
            name: "string.quoted.double.html",
            patterns: [
              {
                include: "#entities"
              }
            ]
          },
          {
            begin: "'",
            beginCaptures: {
              "0": {
                name: "punctuation.definition.string.begin.html"
              }
            },
            end: "'",
            endCaptures: {
              "0": {
                name: "punctuation.definition.string.end.html"
              }
            },
            name: "string.quoted.single.html",
            patterns: [
              {
                include: "#entities"
              }
            ]
          },
          {
            match: "=",
            name: "invalid.illegal.unexpected-equals-sign.html"
          }
        ]
      }
    ]
  },
  cdata: {
    begin: "<!\\[CDATA\\[",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.tag.begin.html"
      }
    },
    contentName: "string.other.inline-data.html",
    end: "]]>",
    endCaptures: {
      "0": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    name: "meta.tag.metadata.cdata.html"
  },
  comment: {
    begin: "<!--",
    captures: {
      "0": {
        name: "punctuation.definition.comment.html"
      }
    },
    end: "-->",
    name: "comment.block.html",
    patterns: [
      {
        match: "\\G-?>",
        name: "invalid.illegal.characters-not-allowed-here.html"
      },
      {
        match: "<!--(?!>)|<!-(?=-->)",
        name: "invalid.illegal.characters-not-allowed-here.html"
      },
      {
        match: "--!>",
        name: "invalid.illegal.characters-not-allowed-here.html"
      }
    ]
  },
  "core-minus-invalid": {
    comment: "This should be the root pattern array includes minus #tags-invalid",
    patterns: [
      {
        include: "#xml-processing"
      },
      {
        include: "#comment"
      },
      {
        include: "#doctype"
      },
      {
        include: "#cdata"
      },
      {
        include: "#tags-valid"
      },
      {
        include: "#entities"
      }
    ]
  },
  doctype: {
    begin: "<!(?=(?i:DOCTYPE\\s))",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.tag.begin.html"
      }
    },
    end: ">",
    endCaptures: {
      "0": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    name: "meta.tag.metadata.doctype.html",
    patterns: [
      {
        match: "\\G(?i:DOCTYPE)",
        name: "entity.name.tag.html"
      },
      {
        begin: '"',
        end: '"',
        name: "string.quoted.double.html"
      },
      {
        match: "[^\\s>]+",
        name: "entity.other.attribute-name.html"
      }
    ]
  },
  entities: {
    patterns: [
      {
        captures: {
          "1": {
            name: "punctuation.definition.entity.html"
          },
          "912": {
            name: "punctuation.definition.entity.html"
          }
        },
        comment: "Yes this is a bit ridiculous, there are quite a lot of these",
        match: "(?x)\n						(&)	(?=[a-zA-Z])\n						(\n							(a(s(ymp(eq)?|cr|t)|n(d(slope|d|v|and)?|g(s(t|ph)|zarr|e|le|rt(vb(d)?)?|msd(a(h|c|d|e|f|a|g|b))?)?)|c(y|irc|d|ute|E)?|tilde|o(pf|gon)|uml|p(id|os|prox(eq)?|e|E|acir)?|elig|f(r)?|w(conint|int)|l(pha|e(ph|fsym))|acute|ring|grave|m(p|a(cr|lg))|breve)|A(s(sign|cr)|nd|MP|c(y|irc)|tilde|o(pf|gon)|uml|pplyFunction|fr|Elig|lpha|acute|ring|grave|macr|breve))\n						  | (B(scr|cy|opf|umpeq|e(cause|ta|rnoullis)|fr|a(ckslash|r(v|wed))|reve)|b(s(cr|im(e)?|ol(hsub|b)?|emi)|n(ot|e(quiv)?)|c(y|ong)|ig(s(tar|qcup)|c(irc|up|ap)|triangle(down|up)|o(times|dot|plus)|uplus|vee|wedge)|o(t(tom)?|pf|wtie|x(h(d|u|D|U)?|times|H(d|u|D|U)?|d(R|l|r|L)|u(R|l|r|L)|plus|D(R|l|r|L)|v(R|h|H|l|r|L)?|U(R|l|r|L)|V(R|h|H|l|r|L)?|minus|box))|Not|dquo|u(ll(et)?|mp(e(q)?|E)?)|prime|e(caus(e)?|t(h|ween|a)|psi|rnou|mptyv)|karow|fr|l(ock|k(1(2|4)|34)|a(nk|ck(square|triangle(down|left|right)?|lozenge)))|a(ck(sim(eq)?|cong|prime|epsilon)|r(vee|wed(ge)?))|r(eve|vbar)|brk(tbrk)?))\n						  | (c(s(cr|u(p(e)?|b(e)?))|h(cy|i|eck(mark)?)|ylcty|c(irc|ups(sm)?|edil|a(ps|ron))|tdot|ir(scir|c(eq|le(d(R|circ|S|dash|ast)|arrow(left|right)))?|e|fnint|E|mid)?|o(n(int|g(dot)?)|p(y(sr)?|f|rod)|lon(e(q)?)?|m(p(fn|le(xes|ment))?|ma(t)?))|dot|u(darr(l|r)|p(s|c(up|ap)|or|dot|brcap)?|e(sc|pr)|vee|wed|larr(p)?|r(vearrow(left|right)|ly(eq(succ|prec)|vee|wedge)|arr(m)?|ren))|e(nt(erdot)?|dil|mptyv)|fr|w(conint|int)|lubs(uit)?|a(cute|p(s|c(up|ap)|dot|and|brcup)?|r(on|et))|r(oss|arr))|C(scr|hi|c(irc|onint|edil|aron)|ircle(Minus|Times|Dot|Plus)|Hcy|o(n(tourIntegral|int|gruent)|unterClockwiseContourIntegral|p(f|roduct)|lon(e)?)|dot|up(Cap)?|OPY|e(nterDot|dilla)|fr|lo(seCurly(DoubleQuote|Quote)|ckwiseContourIntegral)|a(yleys|cute|p(italDifferentialD)?)|ross))\n						  | (d(s(c(y|r)|trok|ol)|har(l|r)|c(y|aron)|t(dot|ri(f)?)|i(sin|e|v(ide(ontimes)?|onx)?|am(s|ond(suit)?)?|gamma)|Har|z(cy|igrarr)|o(t(square|plus|eq(dot)?|minus)?|ublebarwedge|pf|wn(harpoon(left|right)|downarrows|arrow)|llar)|d(otseq|a(rr|gger))?|u(har|arr)|jcy|e(lta|g|mptyv)|f(isht|r)|wangle|lc(orn|rop)|a(sh(v)?|leth|rr|gger)|r(c(orn|rop)|bkarow)|b(karow|lac)|Arr)|D(s(cr|trok)|c(y|aron)|Scy|i(fferentialD|a(critical(Grave|Tilde|Do(t|ubleAcute)|Acute)|mond))|o(t(Dot|Equal)?|uble(Right(Tee|Arrow)|ContourIntegral|Do(t|wnArrow)|Up(DownArrow|Arrow)|VerticalBar|L(ong(RightArrow|Left(RightArrow|Arrow))|eft(RightArrow|Tee|Arrow)))|pf|wn(Right(TeeVector|Vector(Bar)?)|Breve|Tee(Arrow)?|arrow|Left(RightVector|TeeVector|Vector(Bar)?)|Arrow(Bar|UpArrow)?))|Zcy|el(ta)?|D(otrahd)?|Jcy|fr|a(shv|rr|gger)))\n						  | (e(s(cr|im|dot)|n(sp|g)|c(y|ir(c)?|olon|aron)|t(h|a)|o(pf|gon)|dot|u(ro|ml)|p(si(v|lon)?|lus|ar(sl)?)|e|D(ot|Dot)|q(s(im|lant(less|gtr))|c(irc|olon)|u(iv(DD)?|est|als)|vparsl)|f(Dot|r)|l(s(dot)?|inters|l)?|a(ster|cute)|r(Dot|arr)|g(s(dot)?|rave)?|x(cl|ist|p(onentiale|ectation))|m(sp(1(3|4))?|pty(set|v)?|acr))|E(s(cr|im)|c(y|irc|aron)|ta|o(pf|gon)|NG|dot|uml|TH|psilon|qu(ilibrium|al(Tilde)?)|fr|lement|acute|grave|x(ists|ponentialE)|m(pty(SmallSquare|VerySmallSquare)|acr)))\n						  | (f(scr|nof|cy|ilig|o(pf|r(k(v)?|all))|jlig|partint|emale|f(ilig|l(ig|lig)|r)|l(tns|lig|at)|allingdotseq|r(own|a(sl|c(1(2|8|3|4|5|6)|78|2(3|5)|3(8|4|5)|45|5(8|6)))))|F(scr|cy|illed(SmallSquare|VerySmallSquare)|o(uriertrf|pf|rAll)|fr))\n						  | (G(scr|c(y|irc|edil)|t|opf|dot|T|Jcy|fr|amma(d)?|reater(Greater|SlantEqual|Tilde|Equal(Less)?|FullEqual|Less)|g|breve)|g(s(cr|im(e|l)?)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|irc)|t(c(c|ir)|dot|quest|lPar|r(sim|dot|eq(qless|less)|less|a(pprox|rr)))?|imel|opf|dot|jcy|e(s(cc|dot(o(l)?)?|l(es)?)?|q(slant|q)?|l)?|v(nE|ertneqq)|fr|E(l)?|l(j|E|a)?|a(cute|p|mma(d)?)|rave|g(g)?|breve))\n						  | (h(s(cr|trok|lash)|y(phen|bull)|circ|o(ok(leftarrow|rightarrow)|pf|arr|rbar|mtht)|e(llip|arts(uit)?|rcon)|ks(earow|warow)|fr|a(irsp|lf|r(dcy|r(cir|w)?)|milt)|bar|Arr)|H(s(cr|trok)|circ|ilbertSpace|o(pf|rizontalLine)|ump(DownHump|Equal)|fr|a(cek|t)|ARDcy))\n						  | (i(s(cr|in(s(v)?|dot|v|E)?)|n(care|t(cal|prod|e(rcal|gers)|larhk)?|odot|fin(tie)?)?|c(y|irc)?|t(ilde)?|i(nfin|i(nt|int)|ota)?|o(cy|ta|pf|gon)|u(kcy|ml)|jlig|prod|e(cy|xcl)|quest|f(f|r)|acute|grave|m(of|ped|a(cr|th|g(part|e|line))))|I(scr|n(t(e(rsection|gral))?|visible(Comma|Times))|c(y|irc)|tilde|o(ta|pf|gon)|dot|u(kcy|ml)|Ocy|Jlig|fr|Ecy|acute|grave|m(plies|a(cr|ginaryI))?))\n						  | (j(s(cr|ercy)|c(y|irc)|opf|ukcy|fr|math)|J(s(cr|ercy)|c(y|irc)|opf|ukcy|fr))\n						  | (k(scr|hcy|c(y|edil)|opf|jcy|fr|appa(v)?|green)|K(scr|c(y|edil)|Hcy|opf|Jcy|fr|appa))\n						  | (l(s(h|cr|trok|im(e|g)?|q(uo(r)?|b)|aquo)|h(ar(d|u(l)?)|blk)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|ub|e(il|dil)|aron)|Barr|t(hree|c(c|ir)|imes|dot|quest|larr|r(i(e|f)?|Par))?|Har|o(ng(left(arrow|rightarrow)|rightarrow|mapsto)|times|z(enge|f)?|oparrow(left|right)|p(f|lus|ar)|w(ast|bar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|r(dhar|ushar))|ur(dshar|uhar)|jcy|par(lt)?|e(s(s(sim|dot|eq(qgtr|gtr)|approx|gtr)|cc|dot(o(r)?)?|g(es)?)?|q(slant|q)?|ft(harpoon(down|up)|threetimes|leftarrows|arrow(tail)?|right(squigarrow|harpoons|arrow(s)?))|g)?|v(nE|ertneqq)|f(isht|loor|r)|E(g)?|l(hard|corner|tri|arr)?|a(ng(d|le)?|cute|t(e(s)?|ail)?|p|emptyv|quo|rr(sim|hk|tl|pl|fs|lp|b(fs)?)?|gran|mbda)|r(har(d)?|corner|tri|arr|m)|g(E)?|m(idot|oust(ache)?)|b(arr|r(k(sl(d|u)|e)|ac(e|k))|brk)|A(tail|arr|rr))|L(s(h|cr|trok)|c(y|edil|aron)|t|o(ng(RightArrow|left(arrow|rightarrow)|rightarrow|Left(RightArrow|Arrow))|pf|wer(RightArrow|LeftArrow))|T|e(ss(Greater|SlantEqual|Tilde|EqualGreater|FullEqual|Less)|ft(Right(Vector|Arrow)|Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|rightarrow|Floor|A(ngleBracket|rrow(RightArrow|Bar)?)))|Jcy|fr|l(eftarrow)?|a(ng|cute|placetrf|rr|mbda)|midot))\n						  | (M(scr|cy|inusPlus|opf|u|e(diumSpace|llintrf)|fr|ap)|m(s(cr|tpos)|ho|nplus|c(y|omma)|i(nus(d(u)?|b)?|cro|d(cir|dot|ast)?)|o(dels|pf)|dash|u(ltimap|map)?|p|easuredangle|DDot|fr|l(cp|dr)|a(cr|p(sto(down|up|left)?)?|l(t(ese)?|e)|rker)))\n						  | (n(s(hort(parallel|mid)|c(cue|e|r)?|im(e(q)?)?|u(cc(eq)?|p(set(eq(q)?)?|e|E)?|b(set(eq(q)?)?|e|E)?)|par|qsu(pe|be)|mid)|Rightarrow|h(par|arr|Arr)|G(t(v)?|g)|c(y|ong(dot)?|up|edil|a(p|ron))|t(ilde|lg|riangle(left(eq)?|right(eq)?)|gl)|i(s(d)?|v)?|o(t(ni(v(c|a|b))?|in(dot|v(c|a|b)|E)?)?|pf)|dash|u(m(sp|ero)?)?|jcy|p(olint|ar(sl|t|allel)?|r(cue|e(c(eq)?)?)?)|e(s(im|ear)|dot|quiv|ar(hk|r(ow)?)|xist(s)?|Arr)?|v(sim|infin|Harr|dash|Dash|l(t(rie)?|e|Arr)|ap|r(trie|Arr)|g(t|e))|fr|w(near|ar(hk|r(ow)?)|Arr)|V(dash|Dash)|l(sim|t(ri(e)?)?|dr|e(s(s)?|q(slant|q)?|ft(arrow|rightarrow))?|E|arr|Arr)|a(ng|cute|tur(al(s)?)?|p(id|os|prox|E)?|bla)|r(tri(e)?|ightarrow|arr(c|w)?|Arr)|g(sim|t(r)?|e(s|q(slant|q)?)?|E)|mid|L(t(v)?|eft(arrow|rightarrow)|l)|b(sp|ump(e)?))|N(scr|c(y|edil|aron)|tilde|o(nBreakingSpace|Break|t(R(ightTriangle(Bar|Equal)?|everseElement)|Greater(Greater|SlantEqual|Tilde|Equal|FullEqual|Less)?|S(u(cceeds(SlantEqual|Tilde|Equal)?|perset(Equal)?|bset(Equal)?)|quareSu(perset(Equal)?|bset(Equal)?))|Hump(DownHump|Equal)|Nested(GreaterGreater|LessLess)|C(ongruent|upCap)|Tilde(Tilde|Equal|FullEqual)?|DoubleVerticalBar|Precedes(SlantEqual|Equal)?|E(qual(Tilde)?|lement|xists)|VerticalBar|Le(ss(Greater|SlantEqual|Tilde|Equal|Less)?|ftTriangle(Bar|Equal)?))?|pf)|u|e(sted(GreaterGreater|LessLess)|wLine|gative(MediumSpace|Thi(nSpace|ckSpace)|VeryThinSpace))|Jcy|fr|acute))\n						  | (o(s(cr|ol|lash)|h(m|bar)|c(y|ir(c)?)|ti(lde|mes(as)?)|S|int|opf|d(sold|iv|ot|ash|blac)|uml|p(erp|lus|ar)|elig|vbar|f(cir|r)|l(c(ir|ross)|t|ine|arr)|a(st|cute)|r(slope|igof|or|d(er(of)?|f|m)?|v|arr)?|g(t|on|rave)|m(i(nus|cron|d)|ega|acr))|O(s(cr|lash)|c(y|irc)|ti(lde|mes)|opf|dblac|uml|penCurly(DoubleQuote|Quote)|ver(B(ar|rac(e|ket))|Parenthesis)|fr|Elig|acute|r|grave|m(icron|ega|acr)))\n						  | (p(s(cr|i)|h(i(v)?|one|mmat)|cy|i(tchfork|v)?|o(intint|und|pf)|uncsp|er(cnt|tenk|iod|p|mil)|fr|l(us(sim|cir|two|d(o|u)|e|acir|mn|b)?|an(ck(h)?|kv))|ar(s(im|l)|t|a(llel)?)?|r(sim|n(sim|E|ap)|cue|ime(s)?|o(d|p(to)?|f(surf|line|alar))|urel|e(c(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?)?|E|ap)?|m)|P(s(cr|i)|hi|cy|i|o(incareplane|pf)|fr|lusMinus|artialD|r(ime|o(duct|portion(al)?)|ecedes(SlantEqual|Tilde|Equal)?)?))\n						  | (q(scr|int|opf|u(ot|est(eq)?|at(int|ernions))|prime|fr)|Q(scr|opf|UOT|fr))\n						  | (R(s(h|cr)|ho|c(y|edil|aron)|Barr|ight(Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|Floor|A(ngleBracket|rrow(Bar|LeftArrow)?))|o(undImplies|pf)|uleDelayed|e(verse(UpEquilibrium|E(quilibrium|lement)))?|fr|EG|a(ng|cute|rr(tl)?)|rightarrow)|r(s(h|cr|q(uo(r)?|b)|aquo)|h(o(v)?|ar(d|u(l)?))|nmid|c(y|ub|e(il|dil)|aron)|Barr|t(hree|imes|ri(e|f|ltri)?)|i(singdotseq|ng|ght(squigarrow|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(tail)?|rightarrows))|Har|o(times|p(f|lus|ar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|ldhar)|uluhar|p(polint|ar(gt)?)|e(ct|al(s|ine|part)?|g)|f(isht|loor|r)|l(har|arr|m)|a(ng(d|e|le)?|c(ute|e)|t(io(nals)?|ail)|dic|emptyv|quo|rr(sim|hk|c|tl|pl|fs|w|lp|ap|b(fs)?)?)|rarr|x|moust(ache)?|b(arr|r(k(sl(d|u)|e)|ac(e|k))|brk)|A(tail|arr|rr)))\n						  | (s(s(cr|tarf|etmn|mile)|h(y|c(hcy|y)|ort(parallel|mid)|arp)|c(sim|y|n(sim|E|ap)|cue|irc|polint|e(dil)?|E|a(p|ron))?|t(ar(f)?|r(ns|aight(phi|epsilon)))|i(gma(v|f)?|m(ne|dot|plus|e(q)?|l(E)?|rarr|g(E)?)?)|zlig|o(pf|ftcy|l(b(ar)?)?)|dot(e|b)?|u(ng|cc(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?|p(s(im|u(p|b)|et(neq(q)?|eq(q)?)?)|hs(ol|ub)|1|n(e|E)|2|d(sub|ot)|3|plus|e(dot)?|E|larr|mult)?|m|b(s(im|u(p|b)|et(neq(q)?|eq(q)?)?)|n(e|E)|dot|plus|e(dot)?|E|rarr|mult)?)|pa(des(uit)?|r)|e(swar|ct|tm(n|inus)|ar(hk|r(ow)?)|xt|mi|Arr)|q(su(p(set(eq)?|e)?|b(set(eq)?|e)?)|c(up(s)?|ap(s)?)|u(f|ar(e|f))?)|fr(own)?|w(nwar|ar(hk|r(ow)?)|Arr)|larr|acute|rarr|m(t(e(s)?)?|i(d|le)|eparsl|a(shp|llsetminus))|bquo)|S(scr|hort(RightArrow|DownArrow|UpArrow|LeftArrow)|c(y|irc|edil|aron)?|tar|igma|H(cy|CHcy)|opf|u(c(hThat|ceeds(SlantEqual|Tilde|Equal)?)|p(set|erset(Equal)?)?|m|b(set(Equal)?)?)|OFTcy|q(uare(Su(perset(Equal)?|bset(Equal)?)|Intersection|Union)?|rt)|fr|acute|mallCircle))\n						  | (t(s(hcy|c(y|r)|trok)|h(i(nsp|ck(sim|approx))|orn|e(ta(sym|v)?|re(4|fore))|k(sim|ap))|c(y|edil|aron)|i(nt|lde|mes(d|b(ar)?)?)|o(sa|p(cir|f(ork)?|bot)?|ea)|dot|prime|elrec|fr|w(ixt|ohead(leftarrow|rightarrow))|a(u|rget)|r(i(sb|time|dot|plus|e|angle(down|q|left(eq)?|right(eq)?)?|minus)|pezium|ade)|brk)|T(s(cr|trok)|RADE|h(i(nSpace|ckSpace)|e(ta|refore))|c(y|edil|aron)|S(cy|Hcy)|ilde(Tilde|Equal|FullEqual)?|HORN|opf|fr|a(u|b)|ripleDot))\n						  | (u(scr|h(ar(l|r)|blk)|c(y|irc)|t(ilde|dot|ri(f)?)|Har|o(pf|gon)|d(har|arr|blac)|u(arr|ml)|p(si(h|lon)?|harpoon(left|right)|downarrow|uparrows|lus|arrow)|f(isht|r)|wangle|l(c(orn(er)?|rop)|tri)|a(cute|rr)|r(c(orn(er)?|rop)|tri|ing)|grave|m(l|acr)|br(cy|eve)|Arr)|U(scr|n(ion(Plus)?|der(B(ar|rac(e|ket))|Parenthesis))|c(y|irc)|tilde|o(pf|gon)|dblac|uml|p(si(lon)?|downarrow|Tee(Arrow)?|per(RightArrow|LeftArrow)|DownArrow|Equilibrium|arrow|Arrow(Bar|DownArrow)?)|fr|a(cute|rr(ocir)?)|ring|grave|macr|br(cy|eve)))\n						  | (v(s(cr|u(pn(e|E)|bn(e|E)))|nsu(p|b)|cy|Bar(v)?|zigzag|opf|dash|prop|e(e(eq|bar)?|llip|r(t|bar))|Dash|fr|ltri|a(ngrt|r(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|t(heta|riangle(left|right))|p(hi|i|ropto)|epsilon|kappa|r(ho)?))|rtri|Arr)|V(scr|cy|opf|dash(l)?|e(e|r(yThinSpace|t(ical(Bar|Separator|Tilde|Line))?|bar))|Dash|vdash|fr|bar))\n						  | (w(scr|circ|opf|p|e(ierp|d(ge(q)?|bar))|fr|r(eath)?)|W(scr|circ|opf|edge|fr))\n						  | (X(scr|i|opf|fr)|x(s(cr|qcup)|h(arr|Arr)|nis|c(irc|up|ap)|i|o(time|dot|p(f|lus))|dtri|u(tri|plus)|vee|fr|wedge|l(arr|Arr)|r(arr|Arr)|map))\n						  | (y(scr|c(y|irc)|icy|opf|u(cy|ml)|en|fr|ac(y|ute))|Y(scr|c(y|irc)|opf|uml|Icy|Ucy|fr|acute|Acy))\n						  | (z(scr|hcy|c(y|aron)|igrarr|opf|dot|e(ta|etrf)|fr|w(nj|j)|acute)|Z(scr|c(y|aron)|Hcy|opf|dot|e(ta|roWidthSpace)|fr|acute))\n						)\n						(;)\n					",
        name: "constant.character.entity.named.$2.html"
      },
      {
        captures: {
          "1": {
            name: "punctuation.definition.entity.html"
          },
          "3": {
            name: "punctuation.definition.entity.html"
          }
        },
        match: "(&)#[0-9]+(;)",
        name: "constant.character.entity.numeric.decimal.html"
      },
      {
        captures: {
          "1": {
            name: "punctuation.definition.entity.html"
          },
          "3": {
            name: "punctuation.definition.entity.html"
          }
        },
        match: "(&)#[xX][0-9a-fA-F]+(;)",
        name: "constant.character.entity.numeric.hexadecimal.html"
      },
      {
        match: "&(?=[a-zA-Z0-9]+;)",
        name: "invalid.illegal.ambiguous-ampersand.html"
      }
    ]
  },
  math: {
    patterns: [
      {
        begin: `(?i)(<)(math)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
        beginCaptures: {
          "0": {
            name: "meta.tag.structure.$2.start.html"
          },
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            patterns: [
              {
                include: "#attribute"
              }
            ]
          },
          "5": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?i)(</)(\\2)\\s*(>)",
        endCaptures: {
          "0": {
            name: "meta.tag.structure.$2.end.html"
          },
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.element.structure.$2.html",
        patterns: [
          {
            begin: "(?<!>)\\G",
            end: ">",
            endCaptures: {
              "0": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.tag.structure.start.html",
            patterns: [
              {
                include: "#attribute"
              }
            ]
          },
          {
            include: "#tags"
          }
        ]
      }
    ],
    repository: {
      attribute: {
        patterns: [
          {
            begin: "(s(hift|ymmetric|cript(sizemultiplier|level|minsize)|t(ackalign|retchy)|ide|u(pscriptshift|bscriptshift)|e(parator(s)?|lection)|rc)|h(eight|ref)|n(otation|umalign)|c(haralign|olumn(spa(n|cing)|width|lines|align)|lose|rossout)|i(n(dent(shift(first|last)?|target|align(first|last)?)|fixlinebreakstyle)|d)|o(pen|verflow)|d(i(splay(style)?|r)|e(nomalign|cimalpoint|pth))|position|e(dge|qual(columns|rows))|voffset|f(orm|ence|rame(spacing)?)|width|l(space|ine(thickness|leading|break(style|multchar)?)|o(ngdivstyle|cation)|ength|quote|argeop)|a(c(cent(under)?|tiontype)|l(t(text|img(-(height|valign|width))?)|ign(mentscope)?))|r(space|ow(spa(n|cing)|lines|align)|quote)|groupalign|x(link:href|mlns)|m(in(size|labelspacing)|ovablelimits|a(th(size|color|variant|background)|xsize))|bevelled)(?![\\w:-])",
            beginCaptures: {
              "0": {
                name: "entity.other.attribute-name.html"
              }
            },
            end: "(?=\\s*+[^=\\s])",
            name: "meta.attribute.$1.html",
            patterns: [
              {
                include: "#attribute-interior"
              }
            ]
          },
          {
            begin: `([^\\x{0020}"'<>/=\\x{0000}-\\x{001F}\\x{007F}-\\x{009F}\\x{FDD0}-\\x{FDEF}\\x{FFFE}\\x{FFFF}\\x{1FFFE}\\x{1FFFF}\\x{2FFFE}\\x{2FFFF}\\x{3FFFE}\\x{3FFFF}\\x{4FFFE}\\x{4FFFF}\\x{5FFFE}\\x{5FFFF}\\x{6FFFE}\\x{6FFFF}\\x{7FFFE}\\x{7FFFF}\\x{8FFFE}\\x{8FFFF}\\x{9FFFE}\\x{9FFFF}\\x{AFFFE}\\x{AFFFF}\\x{BFFFE}\\x{BFFFF}\\x{CFFFE}\\x{CFFFF}\\x{DFFFE}\\x{DFFFF}\\x{EFFFE}\\x{EFFFF}\\x{FFFFE}\\x{FFFFF}\\x{10FFFE}\\x{10FFFF}]+)`,
            beginCaptures: {
              "0": {
                name: "entity.other.attribute-name.html"
              }
            },
            comment: "Anything else that is valid",
            end: "(?=\\s*+[^=\\s])",
            name: "meta.attribute.unrecognized.$1.html",
            patterns: [
              {
                include: "#attribute-interior"
              }
            ]
          },
          {
            match: "[^\\s>]+",
            name: "invalid.illegal.character-not-allowed-here.html"
          }
        ]
      },
      tags: {
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#cdata"
          },
          {
            captures: {
              "0": {
                name: "meta.tag.structure.math.$2.void.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            match: `(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,
            name: "meta.element.structure.math.$2.html"
          },
          {
            begin: `(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
            beginCaptures: {
              "0": {
                name: "meta.tag.structure.math.$2.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            end: "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
            endCaptures: {
              "0": {
                name: "meta.tag.structure.math.$2.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "punctuation.definition.tag.end.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.element.structure.math.$2.html",
            patterns: [
              {
                begin: "(?<!>)\\G",
                end: "(?=/>)|>",
                endCaptures: {
                  "0": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                name: "meta.tag.structure.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                include: "#tags"
              }
            ]
          },
          {
            captures: {
              "0": {
                name: "meta.tag.inline.math.$2.void.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            match: `(?i)(<)(mi|mn|mo|ms|mspace|mtext|maligngroup|malignmark)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,
            name: "meta.element.inline.math.$2.html"
          },
          {
            begin: `(?i)(<)(mi|mn|mo|ms|mspace|mtext|maligngroup|malignmark)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
            beginCaptures: {
              "0": {
                name: "meta.tag.inline.math.$2.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            end: "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
            endCaptures: {
              "0": {
                name: "meta.tag.inline.math.$2.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "punctuation.definition.tag.end.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.element.inline.math.$2.html",
            patterns: [
              {
                begin: "(?<!>)\\G",
                end: "(?=/>)|>",
                endCaptures: {
                  "0": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                name: "meta.tag.inline.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                include: "#tags"
              }
            ]
          },
          {
            captures: {
              "0": {
                name: "meta.tag.object.math.$2.void.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            match: `(?i)(<)(mglyph)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,
            name: "meta.element.object.math.$2.html"
          },
          {
            begin: `(?i)(<)(mglyph)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
            beginCaptures: {
              "0": {
                name: "meta.tag.object.math.$2.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            end: "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
            endCaptures: {
              "0": {
                name: "meta.tag.object.math.$2.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "punctuation.definition.tag.end.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.element.object.math.$2.html",
            patterns: [
              {
                begin: "(?<!>)\\G",
                end: "(?=/>)|>",
                endCaptures: {
                  "0": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                name: "meta.tag.object.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                include: "#tags"
              }
            ]
          },
          {
            captures: {
              "0": {
                name: "meta.tag.other.invalid.void.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "invalid.illegal.unrecognized-tag.html"
              },
              "4": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "6": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            match: `(?i)(<)(([\\w:]+))(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,
            name: "meta.element.other.invalid.html"
          },
          {
            begin: `(?i)(<)((\\w[^\\s>]*))(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
            beginCaptures: {
              "0": {
                name: "meta.tag.other.invalid.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "invalid.illegal.unrecognized-tag.html"
              },
              "4": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "6": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            end: "(?i)(</)((\\2))\\s*(>)|(/>)|(?=</\\w+)",
            endCaptures: {
              "0": {
                name: "meta.tag.other.invalid.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "invalid.illegal.unrecognized-tag.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.element.other.invalid.html",
            patterns: [
              {
                begin: "(?<!>)\\G",
                end: "(?=/>)|>",
                endCaptures: {
                  "0": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                name: "meta.tag.other.invalid.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                include: "#tags"
              }
            ]
          },
          {
            include: "#tags-invalid"
          }
        ]
      }
    }
  },
  svg: {
    patterns: [
      {
        begin: `(?i)(<)(svg)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
        beginCaptures: {
          "0": {
            name: "meta.tag.structure.$2.start.html"
          },
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            patterns: [
              {
                include: "#attribute"
              }
            ]
          },
          "5": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?i)(</)(\\2)\\s*(>)",
        endCaptures: {
          "0": {
            name: "meta.tag.structure.$2.end.html"
          },
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.element.structure.$2.html",
        patterns: [
          {
            begin: "(?<!>)\\G",
            end: ">",
            endCaptures: {
              "0": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.tag.structure.start.html",
            patterns: [
              {
                include: "#attribute"
              }
            ]
          },
          {
            include: "#tags"
          }
        ]
      }
    ],
    repository: {
      attribute: {
        patterns: [
          {
            begin: "(s(hape-rendering|ystemLanguage|cale|t(yle|itchTiles|op-(color|opacity)|dDeviation|em(h|v)|artOffset|r(i(ng|kethrough-(thickness|position))|oke(-(opacity|dash(offset|array)|width|line(cap|join)|miterlimit))?))|urfaceScale|p(e(cular(Constant|Exponent)|ed)|acing|readMethod)|eed|lope)|h(oriz-(origin-x|adv-x)|eight|anging|ref(lang)?)|y(1|2|ChannelSelector)?|n(umOctaves|ame)|c(y|o(ntentS(criptType|tyleType)|lor(-(interpolation(-filters)?|profile|rendering))?)|ursor|l(ip(-(path|rule)|PathUnits)?|ass)|a(p-height|lcMode)|x)|t(ype|o|ext(-(decoration|anchor|rendering)|Length)|a(rget(X|Y)?|b(index|leValues))|ransform)|i(n(tercept|2)?|d(eographic)?|mage-rendering)|z(oomAndPan)?|o(p(erator|acity)|ver(flow|line-(thickness|position))|ffset|r(i(ent(ation)?|gin)|der))|d(y|i(splay|visor|ffuseConstant|rection)|ominant-baseline|ur|e(scent|celerate)|x)?|u(1|n(i(code(-(range|bidi))?|ts-per-em)|derline-(thickness|position))|2)|p(ing|oint(s(At(X|Y|Z))?|er-events)|a(nose-1|t(h(Length)?|tern(ContentUnits|Transform|Units))|int-order)|r(imitiveUnits|eserveA(spectRatio|lpha)))|e(n(d|able-background)|dgeMode|levation|x(ternalResourcesRequired|ponent))|v(i(sibility|ew(Box|Target))|-(hanging|ideographic|alphabetic|mathematical)|e(ctor-effect|r(sion|t-(origin-(y|x)|adv-y)))|alues)|k(1|2|3|e(y(Splines|Times|Points)|rn(ing|el(Matrix|UnitLength)))|4)?|f(y|il(ter(Res|Units)?|l(-(opacity|rule))?)|o(nt-(s(t(yle|retch)|ize(-adjust)?)|variant|family|weight)|rmat)|lood-(color|opacity)|r(om)?|x)|w(idth(s)?|ord-spacing|riting-mode)|l(i(ghting-color|mitingConeAngle)|ocal|e(ngthAdjust|tter-spacing)|ang)|a(scent|cc(umulate|ent-height)|ttribute(Name|Type)|zimuth|dditive|utoReverse|l(ignment-baseline|phabetic|lowReorder)|rabic-form|mplitude)|r(y|otate|e(s(tart|ult)|ndering-intent|peat(Count|Dur)|quired(Extensions|Features)|f(X|Y|errerPolicy)|l)|adius|x)?|g(1|2|lyph(Ref|-(name|orientation-(horizontal|vertical)))|radient(Transform|Units))|x(1|2|ChannelSelector|-height|link:(show|href|t(ype|itle)|a(ctuate|rcrole)|role)|ml:(space|lang|base))?|m(in|ode|e(thod|dia)|a(sk(ContentUnits|Units)?|thematical|rker(Height|-(start|end|mid)|Units|Width)|x))|b(y|ias|egin|ase(Profile|line-shift|Frequency)|box))(?![\\w:-])",
            beginCaptures: {
              "0": {
                name: "entity.other.attribute-name.html"
              }
            },
            end: "(?=\\s*+[^=\\s])",
            name: "meta.attribute.$1.html",
            patterns: [
              {
                include: "#attribute-interior"
              }
            ]
          },
          {
            begin: `([^\\x{0020}"'<>/=\\x{0000}-\\x{001F}\\x{007F}-\\x{009F}\\x{FDD0}-\\x{FDEF}\\x{FFFE}\\x{FFFF}\\x{1FFFE}\\x{1FFFF}\\x{2FFFE}\\x{2FFFF}\\x{3FFFE}\\x{3FFFF}\\x{4FFFE}\\x{4FFFF}\\x{5FFFE}\\x{5FFFF}\\x{6FFFE}\\x{6FFFF}\\x{7FFFE}\\x{7FFFF}\\x{8FFFE}\\x{8FFFF}\\x{9FFFE}\\x{9FFFF}\\x{AFFFE}\\x{AFFFF}\\x{BFFFE}\\x{BFFFF}\\x{CFFFE}\\x{CFFFF}\\x{DFFFE}\\x{DFFFF}\\x{EFFFE}\\x{EFFFF}\\x{FFFFE}\\x{FFFFF}\\x{10FFFE}\\x{10FFFF}]+)`,
            beginCaptures: {
              "0": {
                name: "entity.other.attribute-name.html"
              }
            },
            comment: "Anything else that is valid",
            end: "(?=\\s*+[^=\\s])",
            name: "meta.attribute.unrecognized.$1.html",
            patterns: [
              {
                include: "#attribute-interior"
              }
            ]
          },
          {
            match: "[^\\s>]+",
            name: "invalid.illegal.character-not-allowed-here.html"
          }
        ]
      },
      tags: {
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#cdata"
          },
          {
            captures: {
              "0": {
                name: "meta.tag.metadata.svg.$2.void.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            match: `(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,
            name: "meta.element.metadata.svg.$2.html"
          },
          {
            begin: `(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
            beginCaptures: {
              "0": {
                name: "meta.tag.metadata.svg.$2.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            end: "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
            endCaptures: {
              "0": {
                name: "meta.tag.metadata.svg.$2.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "punctuation.definition.tag.end.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.element.metadata.svg.$2.html",
            patterns: [
              {
                begin: "(?<!>)\\G",
                end: "(?=/>)|>",
                endCaptures: {
                  "0": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                name: "meta.tag.metadata.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                include: "#tags"
              }
            ]
          },
          {
            captures: {
              "0": {
                name: "meta.tag.structure.svg.$2.void.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            match: `(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,
            name: "meta.element.structure.svg.$2.html"
          },
          {
            begin: `(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
            beginCaptures: {
              "0": {
                name: "meta.tag.structure.svg.$2.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            end: "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
            endCaptures: {
              "0": {
                name: "meta.tag.structure.svg.$2.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "punctuation.definition.tag.end.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.element.structure.svg.$2.html",
            patterns: [
              {
                begin: "(?<!>)\\G",
                end: "(?=/>)|>",
                endCaptures: {
                  "0": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                name: "meta.tag.structure.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                include: "#tags"
              }
            ]
          },
          {
            captures: {
              "0": {
                name: "meta.tag.inline.svg.$2.void.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            match: `(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,
            name: "meta.element.inline.svg.$2.html"
          },
          {
            begin: `(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
            beginCaptures: {
              "0": {
                name: "meta.tag.inline.svg.$2.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            end: "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
            endCaptures: {
              "0": {
                name: "meta.tag.inline.svg.$2.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "punctuation.definition.tag.end.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.element.inline.svg.$2.html",
            patterns: [
              {
                begin: "(?<!>)\\G",
                end: "(?=/>)|>",
                endCaptures: {
                  "0": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                name: "meta.tag.inline.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                include: "#tags"
              }
            ]
          },
          {
            captures: {
              "0": {
                name: "meta.tag.object.svg.$2.void.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            match: `(?i)(<)(circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,
            name: "meta.element.object.svg.$2.html"
          },
          {
            begin: `(?i)(<)(a|circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
            beginCaptures: {
              "0": {
                name: "meta.tag.object.svg.$2.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            end: "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
            endCaptures: {
              "0": {
                name: "meta.tag.object.svg.$2.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "punctuation.definition.tag.end.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.element.object.svg.$2.html",
            patterns: [
              {
                begin: "(?<!>)\\G",
                end: "(?=/>)|>",
                endCaptures: {
                  "0": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                name: "meta.tag.object.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                include: "#tags"
              }
            ]
          },
          {
            captures: {
              "0": {
                name: "meta.tag.other.svg.$2.void.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "invalid.deprecated.html"
              },
              "4": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "6": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            match: `(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,
            name: "meta.element.other.svg.$2.html"
          },
          {
            begin: `(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
            beginCaptures: {
              "0": {
                name: "meta.tag.other.svg.$2.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "invalid.deprecated.html"
              },
              "4": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "6": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            end: "(?i)(</)((\\2))\\s*(>)|(/>)|(?=</\\w+)",
            endCaptures: {
              "0": {
                name: "meta.tag.other.svg.$2.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "invalid.deprecated.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.element.other.svg.$2.html",
            patterns: [
              {
                begin: "(?<!>)\\G",
                end: "(?=/>)|>",
                endCaptures: {
                  "0": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                name: "meta.tag.other.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                include: "#tags"
              }
            ]
          },
          {
            captures: {
              "0": {
                name: "meta.tag.other.invalid.void.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "invalid.illegal.unrecognized-tag.html"
              },
              "4": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "6": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            match: `(?i)(<)(([\\w:]+))(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,
            name: "meta.element.other.invalid.html"
          },
          {
            begin: `(?i)(<)((\\w[^\\s>]*))(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
            beginCaptures: {
              "0": {
                name: "meta.tag.other.invalid.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "invalid.illegal.unrecognized-tag.html"
              },
              "4": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "6": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            end: "(?i)(</)((\\2))\\s*(>)|(/>)|(?=</\\w+)",
            endCaptures: {
              "0": {
                name: "meta.tag.other.invalid.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "invalid.illegal.unrecognized-tag.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.element.other.invalid.html",
            patterns: [
              {
                begin: "(?<!>)\\G",
                end: "(?=/>)|>",
                endCaptures: {
                  "0": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                name: "meta.tag.other.invalid.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                include: "#tags"
              }
            ]
          },
          {
            include: "#tags-invalid"
          }
        ]
      }
    }
  },
  "tags-invalid": {
    patterns: [
      {
        begin: "(</?)((\\w[^\\s>]*))(?<!/)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.illegal.unrecognized-tag.html"
          }
        },
        end: "((?: ?/)?>)",
        endCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.other.$2.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      }
    ]
  },
  "tags-valid": {
    patterns: [
      {
        begin: "(^[ \\t]+)?(?=<(?i:style)\\b(?!-))",
        beginCaptures: {
          "1": {
            name: "punctuation.whitespace.embedded.leading.html"
          }
        },
        end: "(?!\\G)([ \\t]*$\\n?)?",
        endCaptures: {
          "1": {
            name: "punctuation.whitespace.embedded.trailing.html"
          }
        },
        patterns: [
          {
            begin: "(?i)(<)(style)(?=\\s|/?>)",
            beginCaptures: {
              "0": {
                name: "meta.tag.metadata.style.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              }
            },
            end: "(?i)((<)/)(style)\\s*(>)",
            endCaptures: {
              "0": {
                name: "meta.tag.metadata.style.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "source.css-ignored-vscode"
              },
              "3": {
                name: "entity.name.tag.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.embedded.block.html",
            patterns: [
              {
                begin: "\\G",
                captures: {
                  "1": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                end: "(>)",
                name: "meta.tag.metadata.style.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                begin: "(?!\\G)",
                end: "(?=</(?i:style))",
                name: "source.css",
                patterns: [
                  {
                    include: "source.css"
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        begin: "(^[ \\t]+)?(?=<(?i:script)\\b(?!-))",
        beginCaptures: {
          "1": {
            name: "punctuation.whitespace.embedded.leading.html"
          }
        },
        end: "(?!\\G)([ \\t]*$\\n?)?",
        endCaptures: {
          "1": {
            name: "punctuation.whitespace.embedded.trailing.html"
          }
        },
        patterns: [
          {
            begin: "(<)((?i:script))\\b",
            beginCaptures: {
              "0": {
                name: "meta.tag.metadata.script.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              }
            },
            end: "(/)((?i:script))(>)",
            endCaptures: {
              "0": {
                name: "meta.tag.metadata.script.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.embedded.block.html",
            patterns: [
              {
                begin: "\\G",
                end: "(?=/)",
                patterns: [
                  {
                    begin: "(>)",
                    beginCaptures: {
                      "0": {
                        name: "meta.tag.metadata.script.start.html"
                      },
                      "1": {
                        name: "punctuation.definition.tag.end.html"
                      }
                    },
                    end: "((<))(?=/(?i:script))",
                    endCaptures: {
                      "0": {
                        name: "meta.tag.metadata.script.end.html"
                      },
                      "1": {
                        name: "punctuation.definition.tag.begin.html"
                      },
                      "2": {
                        name: "source.js-ignored-vscode"
                      }
                    },
                    patterns: [
                      {
                        begin: "\\G",
                        end: "(?=</(?i:script))",
                        name: "source.js",
                        patterns: [
                          {
                            begin: "(^[ \\t]+)?(?=//)",
                            beginCaptures: {
                              "1": {
                                name: "punctuation.whitespace.comment.leading.js"
                              }
                            },
                            end: "(?!\\G)",
                            patterns: [
                              {
                                begin: "//",
                                beginCaptures: {
                                  "0": {
                                    name: "punctuation.definition.comment.js"
                                  }
                                },
                                end: "(?=<\/script)|\\n",
                                name: "comment.line.double-slash.js"
                              }
                            ]
                          },
                          {
                            begin: "/\\*",
                            captures: {
                              "0": {
                                name: "punctuation.definition.comment.js"
                              }
                            },
                            end: "\\*/|(?=<\/script)",
                            name: "comment.block.js"
                          },
                          {
                            include: "source.js"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    begin: "\\G",
                    end: `(?ix:
												(?=>											# Tag without type attribute
												  | type(?=[\\s=])
												  	(?!\\s*=\\s*
														(
															''								# Empty
														  | ""									#   Values
														  | ('|"|)
															(
																text/							# Text mime-types
																(
																	javascript(1\\.[0-5])?
																  | x-javascript
																  | jscript
																  | livescript
																  | (x-)?ecmascript
																  | babel						# Javascript variant currently
																  								#   recognized as such
															  	)
															  | application/					# Application mime-types
															  	(
																	(x-)?javascript
																  | (x-)?ecmascript
																)
															  | module
														  	)
															[\\s"'>]
														)
													)
												)
											)`,
                    name: "meta.tag.metadata.script.start.html",
                    patterns: [
                      {
                        include: "#attribute"
                      }
                    ]
                  },
                  {
                    begin: `(?ix:
												(?=
													type\\s*=\\s*
													('|"|)
													text/
													(
														x-handlebars
													  | (x-(handlebars-)?|ng-)?template
													  | html
													)
													[\\s"'>]
												)
											)`,
                    end: "((<))(?=/(?i:script))",
                    endCaptures: {
                      "0": {
                        name: "meta.tag.metadata.script.end.html"
                      },
                      "1": {
                        name: "punctuation.definition.tag.begin.html"
                      },
                      "2": {
                        name: "text.html.basic"
                      }
                    },
                    patterns: [
                      {
                        begin: "\\G",
                        end: "(>)",
                        endCaptures: {
                          "1": {
                            name: "punctuation.definition.tag.end.html"
                          }
                        },
                        name: "meta.tag.metadata.script.start.html",
                        patterns: [
                          {
                            include: "#attribute"
                          }
                        ]
                      },
                      {
                        begin: "(?!\\G)",
                        end: "(?=</(?i:script))",
                        name: "text.html.basic",
                        patterns: [
                          {
                            include: "text.html.basic"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    begin: "(?=(?i:type))",
                    end: "(<)(?=/(?i:script))",
                    endCaptures: {
                      "0": {
                        name: "meta.tag.metadata.script.end.html"
                      },
                      "1": {
                        name: "punctuation.definition.tag.begin.html"
                      }
                    },
                    patterns: [
                      {
                        begin: "\\G",
                        end: "(>)",
                        endCaptures: {
                          "1": {
                            name: "punctuation.definition.tag.end.html"
                          }
                        },
                        name: "meta.tag.metadata.script.start.html",
                        patterns: [
                          {
                            include: "#attribute"
                          }
                        ]
                      },
                      {
                        begin: "(?!\\G)",
                        end: "(?=</(?i:script))",
                        name: "source.unknown"
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        begin: "(?i)(<)(base|link|meta)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: "/?>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.metadata.$2.void.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)(noscript|title)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.metadata.$2.start.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(</)(noscript|title)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.metadata.$2.end.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)(col|hr|input)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: "/?>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.structure.$2.void.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.structure.$2.start.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(</)(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.structure.$2.end.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)(area|br|wbr)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: "/?>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.inline.$2.void.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.inline.$2.start.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(</)(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.inline.$2.end.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)(embed|img|param|source|track)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: "/?>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.object.$2.void.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)(audio|canvas|iframe|object|picture|video)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.object.$2.start.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(</)(audio|canvas|iframe|object|picture|video)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.object.$2.end.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)((basefont|isindex))(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.deprecated.html"
          }
        },
        end: "/?>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.metadata.$2.void.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)((center|frameset|noembed|noframes))(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.deprecated.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.structure.$2.start.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(</)((center|frameset|noembed|noframes))(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.deprecated.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.structure.$2.end.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)((acronym|big|blink|font|strike|tt|xmp))(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.deprecated.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.inline.$2.start.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(</)((acronym|big|blink|font|strike|tt|xmp))(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.deprecated.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.inline.$2.end.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)((frame))(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.deprecated.html"
          }
        },
        end: "/?>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.object.$2.void.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)((applet))(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.deprecated.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.object.$2.start.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(</)((applet))(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.deprecated.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.object.$2.end.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.illegal.no-longer-supported.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.other.$2.start.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(</)((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.illegal.no-longer-supported.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.other.$2.end.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        include: "#math"
      },
      {
        include: "#svg"
      },
      {
        begin: "(<)([a-zA-Z][.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*-[\\-.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: "/?>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.custom.start.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(</)([a-zA-Z][.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*-[\\-.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.custom.end.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      }
    ]
  },
  "xml-processing": {
    begin: "(<\\?)(xml)",
    captures: {
      "1": {
        name: "punctuation.definition.tag.html"
      },
      "2": {
        name: "entity.name.tag.html"
      }
    },
    end: "(\\?>)",
    name: "meta.tag.metadata.processing.xml.html",
    patterns: [
      {
        include: "#attribute"
      }
    ]
  }
};
const html_tmLanguage = {
  information_for_contributors: information_for_contributors$7,
  version: version$7,
  name: name$a,
  scopeName: scopeName$9,
  injections,
  patterns: patterns$9,
  repository: repository$9
};
const __vite_glob_0_1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: html_tmLanguage,
  information_for_contributors: information_for_contributors$7,
  injections,
  name: name$a,
  patterns: patterns$9,
  repository: repository$9,
  scopeName: scopeName$9,
  version: version$7
}, Symbol.toStringTag, { value: "Module" }));
const information_for_contributors$6 = [
  "This file has been converted from https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScriptReact.tmLanguage",
  "If you want to provide a fix or improvement, please create a pull request against the original repository.",
  "Once accepted there, we are happy to receive an update request."
];
const version$6 = "https://github.com/microsoft/TypeScript-TmLanguage/commit/33d8371c344f0b54746586313a939f742f9bcd3a";
const name$9 = "javascript";
const scopeName$8 = "source.js";
const patterns$8 = [
  {
    include: "#directives"
  },
  {
    include: "#statements"
  },
  {
    include: "#shebang"
  }
];
const repository$8 = {
  shebang: {
    name: "comment.line.shebang.js",
    match: "\\A(#!).*(?=$)",
    captures: {
      "1": {
        name: "punctuation.definition.comment.js"
      }
    }
  },
  statements: {
    patterns: [
      {
        include: "#declaration"
      },
      {
        include: "#control-statement"
      },
      {
        include: "#after-operator-block-as-object-literal"
      },
      {
        include: "#decl-block"
      },
      {
        include: "#label"
      },
      {
        include: "#expression"
      },
      {
        include: "#punctuation-semicolon"
      },
      {
        include: "#string"
      },
      {
        include: "#comment"
      }
    ]
  },
  declaration: {
    patterns: [
      {
        include: "#decorator"
      },
      {
        include: "#var-expr"
      },
      {
        include: "#function-declaration"
      },
      {
        include: "#class-declaration"
      },
      {
        include: "#interface-declaration"
      },
      {
        include: "#enum-declaration"
      },
      {
        include: "#namespace-declaration"
      },
      {
        include: "#type-alias-declaration"
      },
      {
        include: "#import-equals-declaration"
      },
      {
        include: "#import-declaration"
      },
      {
        include: "#export-declaration"
      },
      {
        name: "storage.modifier.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "control-statement": {
    patterns: [
      {
        include: "#switch-statement"
      },
      {
        include: "#for-loop"
      },
      {
        name: "keyword.control.trycatch.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.control.loop.js"
          },
          "2": {
            name: "entity.name.label.js"
          }
        }
      },
      {
        name: "keyword.control.loop.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "0": {
            name: "keyword.control.flow.js"
          }
        },
        end: "(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "keyword.control.switch.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#if-statement"
      },
      {
        name: "keyword.control.conditional.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.control.with.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.control.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.other.debugger.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  label: {
    patterns: [
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*\\{)",
        beginCaptures: {
          "1": {
            name: "entity.name.label.js"
          },
          "2": {
            name: "punctuation.separator.label.js"
          }
        },
        end: "(?<=\\})",
        patterns: [
          {
            include: "#decl-block"
          }
        ]
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)",
        captures: {
          "1": {
            name: "entity.name.label.js"
          },
          "2": {
            name: "punctuation.separator.label.js"
          }
        }
      }
    ]
  },
  expression: {
    patterns: [
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        include: "#identifiers"
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  expressionWithoutIdentifiers: {
    patterns: [
      {
        include: "#jsx"
      },
      {
        include: "#string"
      },
      {
        include: "#regex"
      },
      {
        include: "#comment"
      },
      {
        include: "#function-expression"
      },
      {
        include: "#class-expression"
      },
      {
        include: "#arrow-function"
      },
      {
        include: "#paren-expression-possibly-arrow"
      },
      {
        include: "#cast"
      },
      {
        include: "#ternary-expression"
      },
      {
        include: "#new-expr"
      },
      {
        include: "#instanceof-expr"
      },
      {
        include: "#object-literal"
      },
      {
        include: "#expression-operators"
      },
      {
        include: "#function-call"
      },
      {
        include: "#literal"
      },
      {
        include: "#support-objects"
      },
      {
        include: "#paren-expression"
      }
    ]
  },
  expressionPunctuations: {
    patterns: [
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-accessor"
      }
    ]
  },
  decorator: {
    name: "meta.decorator.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@",
    beginCaptures: {
      "0": {
        name: "punctuation.decorator.js"
      }
    },
    end: "(?=\\s)",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "var-expr": {
    patterns: [
      {
        name: "meta.var.expr.js",
        begin: "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
        end: "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|((?<!^let|[^\\._$[:alnum:]]let|^var|[^\\._$[:alnum:]]var)(?=\\s*$)))",
        patterns: [
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
            beginCaptures: {
              "1": {
                name: "keyword.control.export.js"
              },
              "2": {
                name: "storage.modifier.js"
              },
              "3": {
                name: "storage.type.js"
              }
            },
            end: "(?=\\S)"
          },
          {
            include: "#destructuring-variable"
          },
          {
            include: "#var-single-variable"
          },
          {
            include: "#variable-initializer"
          },
          {
            include: "#comment"
          },
          {
            begin: "(,)\\s*((?!\\S)|(?=\\/\\/))",
            beginCaptures: {
              "1": {
                name: "punctuation.separator.comma.js"
              }
            },
            end: "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
            patterns: [
              {
                include: "#single-line-comment-consuming-line-ending"
              },
              {
                include: "#comment"
              },
              {
                include: "#destructuring-variable"
              },
              {
                include: "#var-single-variable"
              },
              {
                include: "#punctuation-comma"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      },
      {
        name: "meta.var.expr.js",
        begin: "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.js"
          },
          "2": {
            name: "storage.modifier.js"
          },
          "3": {
            name: "storage.type.js"
          }
        },
        end: "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|((?<!^const|[^\\._$[:alnum:]]const)(?=\\s*$)))",
        patterns: [
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
            beginCaptures: {
              "1": {
                name: "keyword.control.export.js"
              },
              "2": {
                name: "storage.modifier.js"
              },
              "3": {
                name: "storage.type.js"
              }
            },
            end: "(?=\\S)"
          },
          {
            include: "#destructuring-const"
          },
          {
            include: "#var-single-const"
          },
          {
            include: "#variable-initializer"
          },
          {
            include: "#comment"
          },
          {
            begin: "(,)\\s*((?!\\S)|(?=\\/\\/))",
            beginCaptures: {
              "1": {
                name: "punctuation.separator.comma.js"
              }
            },
            end: "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
            patterns: [
              {
                include: "#single-line-comment-consuming-line-ending"
              },
              {
                include: "#comment"
              },
              {
                include: "#destructuring-const"
              },
              {
                include: "#var-single-const"
              },
              {
                include: "#punctuation-comma"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "var-single-variable": {
    patterns: [
      {
        name: "meta.var-single-variable.expr.js",
        begin: "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\!)?(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.js entity.name.function.js"
          },
          "2": {
            name: "keyword.operator.definiteassignment.js"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.js",
        begin: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\!)?",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.js variable.other.constant.js"
          },
          "2": {
            name: "keyword.operator.definiteassignment.js"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.js",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)(\\!)?",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.js variable.other.readwrite.js"
          },
          "2": {
            name: "keyword.operator.definiteassignment.js"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      }
    ]
  },
  "var-single-const": {
    patterns: [
      {
        name: "meta.var-single-variable.expr.js",
        begin: "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.js variable.other.constant.js entity.name.function.js"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.js",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.js variable.other.constant.js"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      }
    ]
  },
  "var-single-variable-type-annotation": {
    patterns: [
      {
        include: "#type-annotation"
      },
      {
        include: "#string"
      },
      {
        include: "#comment"
      }
    ]
  },
  "destructuring-variable": {
    patterns: [
      {
        name: "meta.object-binding-pattern-variable.js",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#object-binding-pattern"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      },
      {
        name: "meta.array-binding-pattern-variable.js",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#array-binding-pattern"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      }
    ]
  },
  "destructuring-const": {
    patterns: [
      {
        name: "meta.object-binding-pattern-variable.js",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#object-binding-pattern-const"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      },
      {
        name: "meta.array-binding-pattern-variable.js",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#array-binding-pattern-const"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      }
    ]
  },
  "object-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#binding-element"
          }
        ]
      },
      {
        include: "#object-binding-pattern"
      },
      {
        include: "#destructuring-variable-rest"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "object-binding-element-const": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#binding-element-const"
          }
        ]
      },
      {
        include: "#object-binding-pattern-const"
      },
      {
        include: "#destructuring-variable-rest-const"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "object-binding-element-propertyName": {
    begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
    end: "(:)",
    endCaptures: {
      "0": {
        name: "punctuation.destructuring.js"
      }
    },
    patterns: [
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        name: "variable.object.property.js",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#object-binding-pattern"
      },
      {
        include: "#array-binding-pattern"
      },
      {
        include: "#destructuring-variable-rest"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "binding-element-const": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#object-binding-pattern-const"
      },
      {
        include: "#array-binding-pattern-const"
      },
      {
        include: "#destructuring-variable-rest-const"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "destructuring-variable-rest": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.js"
      },
      "2": {
        name: "meta.definition.variable.js variable.other.readwrite.js"
      }
    }
  },
  "destructuring-variable-rest-const": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.js"
      },
      "2": {
        name: "meta.definition.variable.js variable.other.constant.js"
      }
    }
  },
  "object-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.js"
      }
    },
    patterns: [
      {
        include: "#object-binding-element"
      }
    ]
  },
  "object-binding-pattern-const": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.js"
      }
    },
    patterns: [
      {
        include: "#object-binding-element-const"
      }
    ]
  },
  "array-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.js"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.js"
      }
    },
    patterns: [
      {
        include: "#binding-element"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "array-binding-pattern-const": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.js"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.js"
      }
    },
    patterns: [
      {
        include: "#binding-element-const"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "parameter-name": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
        captures: {
          "1": {
            name: "storage.modifier.js"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "storage.modifier.js"
          },
          "2": {
            name: "keyword.operator.rest.js"
          },
          "3": {
            name: "entity.name.function.js variable.language.this.js"
          },
          "4": {
            name: "entity.name.function.js"
          },
          "5": {
            name: "keyword.operator.optional.js"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)",
        captures: {
          "1": {
            name: "storage.modifier.js"
          },
          "2": {
            name: "keyword.operator.rest.js"
          },
          "3": {
            name: "variable.parameter.js variable.language.this.js"
          },
          "4": {
            name: "variable.parameter.js"
          },
          "5": {
            name: "keyword.operator.optional.js"
          }
        }
      }
    ]
  },
  "destructuring-parameter": {
    patterns: [
      {
        name: "meta.parameter.object-binding-pattern.js",
        begin: "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\{)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.rest.js"
          },
          "2": {
            name: "punctuation.definition.binding-pattern.object.js"
          }
        },
        end: "\\}",
        endCaptures: {
          "0": {
            name: "punctuation.definition.binding-pattern.object.js"
          }
        },
        patterns: [
          {
            include: "#parameter-object-binding-element"
          }
        ]
      },
      {
        name: "meta.paramter.array-binding-pattern.js",
        begin: "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\[)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.rest.js"
          },
          "2": {
            name: "punctuation.definition.binding-pattern.array.js"
          }
        },
        end: "\\]",
        endCaptures: {
          "0": {
            name: "punctuation.definition.binding-pattern.array.js"
          }
        },
        patterns: [
          {
            include: "#parameter-binding-element"
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "parameter-object-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#parameter-binding-element"
          }
        ]
      },
      {
        include: "#parameter-object-binding-pattern"
      },
      {
        include: "#destructuring-parameter-rest"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "parameter-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#parameter-object-binding-pattern"
      },
      {
        include: "#parameter-array-binding-pattern"
      },
      {
        include: "#destructuring-parameter-rest"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "destructuring-parameter-rest": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.js"
      },
      "2": {
        name: "variable.parameter.js"
      }
    }
  },
  "parameter-object-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.js"
      }
    },
    patterns: [
      {
        include: "#parameter-object-binding-element"
      }
    ]
  },
  "parameter-array-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.js"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.js"
      }
    },
    patterns: [
      {
        include: "#parameter-binding-element"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "field-declaration": {
    name: "meta.field.declaration.js",
    begin: "(?x)(?<!\\()(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s+)?(?=\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|\\}|$))",
    beginCaptures: {
      "1": {
        name: "storage.modifier.js"
      }
    },
    end: "(?x)(?=\\}|;|,|$|(^(?!\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|$))))|(?<=\\})",
    patterns: [
      {
        include: "#variable-initializer"
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#comment"
      },
      {
        match: "(?x)(\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\?)|(\\!))?(?=\\s*\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "meta.definition.property.js entity.name.function.js"
          },
          "2": {
            name: "keyword.operator.optional.js"
          },
          "3": {
            name: "keyword.operator.definiteassignment.js"
          }
        }
      },
      {
        name: "meta.definition.property.js variable.object.property.js",
        match: "\\#?[_$[:alpha:]][_$[:alnum:]]*"
      },
      {
        name: "keyword.operator.optional.js",
        match: "\\?"
      },
      {
        name: "keyword.operator.definiteassignment.js",
        match: "\\!"
      }
    ]
  },
  "variable-initializer": {
    patterns: [
      {
        begin: "(?<!=|!)(=)(?!=)(?=\\s*\\S)(?!\\s*.*=>\\s*$)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.js"
          }
        },
        end: "(?=$|^|[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        begin: "(?<!=|!)(=)(?!=)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.js"
          }
        },
        end: "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<=\\S)(?<!=)(?=\\s*$)",
        patterns: [
          {
            include: "#expression"
          }
        ]
      }
    ]
  },
  "function-declaration": {
    name: "meta.function.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js"
      },
      "2": {
        name: "storage.modifier.js"
      },
      "3": {
        name: "storage.modifier.async.js"
      },
      "4": {
        name: "storage.type.function.js"
      },
      "5": {
        name: "keyword.generator.asterisk.js"
      },
      "6": {
        name: "meta.definition.function.js entity.name.function.js"
      }
    },
    end: "(?=;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|(?<=\\})",
    patterns: [
      {
        include: "#function-name"
      },
      {
        include: "#function-body"
      }
    ]
  },
  "function-expression": {
    name: "meta.function.expression.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
    beginCaptures: {
      "1": {
        name: "storage.modifier.async.js"
      },
      "2": {
        name: "storage.type.function.js"
      },
      "3": {
        name: "keyword.generator.asterisk.js"
      },
      "4": {
        name: "meta.definition.function.js entity.name.function.js"
      }
    },
    end: "(?=;)|(?<=\\})",
    patterns: [
      {
        include: "#function-name"
      },
      {
        include: "#single-line-comment-consuming-line-ending"
      },
      {
        include: "#function-body"
      }
    ]
  },
  "function-name": {
    name: "meta.definition.function.js entity.name.function.js",
    match: "[_$[:alpha:]][_$[:alnum:]]*"
  },
  "function-body": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#function-parameters"
      },
      {
        include: "#return-type"
      },
      {
        include: "#type-function-return-type"
      },
      {
        include: "#decl-block"
      },
      {
        name: "keyword.generator.asterisk.js",
        match: "\\*"
      }
    ]
  },
  "method-declaration": {
    patterns: [
      {
        name: "meta.method.declaration.js",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?\\s*\\b(constructor)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "1": {
            name: "storage.modifier.js"
          },
          "2": {
            name: "storage.modifier.js"
          },
          "3": {
            name: "storage.modifier.js"
          },
          "4": {
            name: "storage.modifier.async.js"
          },
          "5": {
            name: "storage.type.js"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.method.declaration.js",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:(?:\\s*\\b(new)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|(?:(\\*)\\s*)?)(?=\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.js"
          },
          "2": {
            name: "storage.modifier.js"
          },
          "3": {
            name: "storage.modifier.js"
          },
          "4": {
            name: "storage.modifier.async.js"
          },
          "5": {
            name: "keyword.operator.new.js"
          },
          "6": {
            name: "keyword.generator.asterisk.js"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.method.declaration.js",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.js"
          },
          "2": {
            name: "storage.modifier.js"
          },
          "3": {
            name: "storage.modifier.js"
          },
          "4": {
            name: "storage.modifier.async.js"
          },
          "5": {
            name: "storage.type.property.js"
          },
          "6": {
            name: "keyword.generator.asterisk.js"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      }
    ]
  },
  "object-literal-method-declaration": {
    name: "meta.method.declaration.js",
    begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
    beginCaptures: {
      "1": {
        name: "storage.modifier.async.js"
      },
      "2": {
        name: "storage.type.property.js"
      },
      "3": {
        name: "keyword.generator.asterisk.js"
      }
    },
    end: "(?=\\}|;|,)|(?<=\\})",
    patterns: [
      {
        include: "#method-declaration-name"
      },
      {
        include: "#function-body"
      },
      {
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.js"
          },
          "2": {
            name: "storage.type.property.js"
          },
          "3": {
            name: "keyword.generator.asterisk.js"
          }
        },
        end: "(?=\\(|\\<)",
        patterns: [
          {
            include: "#method-declaration-name"
          }
        ]
      }
    ]
  },
  "method-declaration-name": {
    begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])",
    end: "(?=\\(|\\<)",
    patterns: [
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        name: "meta.definition.method.js entity.name.function.js",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      },
      {
        name: "keyword.operator.optional.js",
        match: "\\?"
      }
    ]
  },
  "arrow-function": {
    patterns: [
      {
        name: "meta.arrow.js",
        match: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)",
        captures: {
          "1": {
            name: "storage.modifier.async.js"
          },
          "2": {
            name: "variable.parameter.js"
          }
        }
      },
      {
        name: "meta.arrow.js",
        begin: "(?x) (?:\n  (?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\n)? ((?<![})!\\]])\\s*\n  (?=\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  )\n)",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.js"
          }
        },
        end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-parameters"
          },
          {
            include: "#function-parameters"
          },
          {
            include: "#arrow-return-type"
          },
          {
            include: "#possibly-arrow-return-type"
          }
        ]
      },
      {
        name: "meta.arrow.js",
        begin: "=>",
        beginCaptures: {
          "0": {
            name: "storage.type.function.arrow.js"
          }
        },
        end: "((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",
        patterns: [
          {
            include: "#single-line-comment-consuming-line-ending"
          },
          {
            include: "#decl-block"
          },
          {
            include: "#expression"
          }
        ]
      }
    ]
  },
  "indexer-declaration": {
    name: "meta.indexer.declaration.js",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)",
    beginCaptures: {
      "1": {
        name: "storage.modifier.js"
      },
      "2": {
        name: "meta.brace.square.js"
      },
      "3": {
        name: "variable.parameter.js"
      }
    },
    end: "(\\])\\s*(\\?\\s*)?|$",
    endCaptures: {
      "1": {
        name: "meta.brace.square.js"
      },
      "2": {
        name: "keyword.operator.optional.js"
      }
    },
    patterns: [
      {
        include: "#type-annotation"
      }
    ]
  },
  "indexer-mapped-type-declaration": {
    name: "meta.indexer.mappedtype.declaration.js",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([+-])?(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s+(in)\\s+",
    beginCaptures: {
      "1": {
        name: "keyword.operator.type.modifier.js"
      },
      "2": {
        name: "storage.modifier.js"
      },
      "3": {
        name: "meta.brace.square.js"
      },
      "4": {
        name: "entity.name.type.js"
      },
      "5": {
        name: "keyword.operator.expression.in.js"
      }
    },
    end: "(\\])([+-])?\\s*(\\?\\s*)?|$",
    endCaptures: {
      "1": {
        name: "meta.brace.square.js"
      },
      "2": {
        name: "keyword.operator.type.modifier.js"
      },
      "3": {
        name: "keyword.operator.optional.js"
      }
    },
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        captures: {
          "1": {
            name: "keyword.control.as.js"
          }
        }
      },
      {
        include: "#type"
      }
    ]
  },
  "function-parameters": {
    name: "meta.parameters.js",
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.parameters.begin.js"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "punctuation.definition.parameters.end.js"
      }
    },
    patterns: [
      {
        include: "#function-parameters-body"
      }
    ]
  },
  "function-parameters-body": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#decorator"
      },
      {
        include: "#destructuring-parameter"
      },
      {
        include: "#parameter-name"
      },
      {
        include: "#parameter-type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        name: "punctuation.separator.parameter.js",
        match: ","
      }
    ]
  },
  "class-declaration": {
    name: "meta.class.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js"
      },
      "2": {
        name: "storage.modifier.js"
      },
      "3": {
        name: "storage.modifier.js"
      },
      "4": {
        name: "storage.type.class.js"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#class-declaration-or-expression-patterns"
      }
    ]
  },
  "class-expression": {
    name: "meta.class.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])",
    beginCaptures: {
      "1": {
        name: "storage.modifier.js"
      },
      "2": {
        name: "storage.type.class.js"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#class-declaration-or-expression-patterns"
      }
    ]
  },
  "class-declaration-or-expression-patterns": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        match: "[_$[:alpha:]][_$[:alnum:]]*",
        captures: {
          "0": {
            name: "entity.name.type.class.js"
          }
        }
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#class-or-interface-body"
      }
    ]
  },
  "interface-declaration": {
    name: "meta.interface.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js"
      },
      "2": {
        name: "storage.modifier.js"
      },
      "3": {
        name: "storage.modifier.js"
      },
      "4": {
        name: "storage.type.interface.js"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        match: "[_$[:alpha:]][_$[:alnum:]]*",
        captures: {
          "0": {
            name: "entity.name.type.interface.js"
          }
        }
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#class-or-interface-body"
      }
    ]
  },
  "class-or-interface-heritage": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(extends|implements)\\b)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "storage.modifier.js"
      }
    },
    end: "(?=\\{)",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)",
        captures: {
          "1": {
            name: "entity.name.type.module.js"
          },
          "2": {
            name: "punctuation.accessor.js"
          },
          "3": {
            name: "punctuation.accessor.optional.js"
          }
        }
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "entity.other.inherited-class.js"
          }
        }
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  "class-or-interface-body": {
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#decorator"
      },
      {
        begin: "(?<=:)\\s*",
        end: "(?=\\s|[;),}\\]:\\-\\+]|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        include: "#method-declaration"
      },
      {
        include: "#indexer-declaration"
      },
      {
        include: "#field-declaration"
      },
      {
        include: "#string"
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#access-modifier"
      },
      {
        include: "#property-accessor"
      },
      {
        include: "#async-modifier"
      },
      {
        include: "#after-operator-block-as-object-literal"
      },
      {
        include: "#decl-block"
      },
      {
        include: "#expression"
      },
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-semicolon"
      }
    ]
  },
  "access-modifier": {
    name: "storage.modifier.js",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "property-accessor": {
    name: "storage.type.property.js",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "async-modifier": {
    name: "storage.modifier.async.js",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "enum-declaration": {
    name: "meta.enum.declaration.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js"
      },
      "2": {
        name: "storage.modifier.js"
      },
      "3": {
        name: "storage.modifier.js"
      },
      "4": {
        name: "storage.type.enum.js"
      },
      "5": {
        name: "entity.name.type.enum.js"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "\\{",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.block.js"
          }
        },
        end: "\\}",
        endCaptures: {
          "0": {
            name: "punctuation.definition.block.js"
          }
        },
        patterns: [
          {
            include: "#comment"
          },
          {
            begin: "([_$[:alpha:]][_$[:alnum:]]*)",
            beginCaptures: {
              "0": {
                name: "variable.other.enummember.js"
              }
            },
            end: "(?=,|\\}|$)",
            patterns: [
              {
                include: "#comment"
              },
              {
                include: "#variable-initializer"
              }
            ]
          },
          {
            begin: "(?=((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))",
            end: "(?=,|\\}|$)",
            patterns: [
              {
                include: "#string"
              },
              {
                include: "#array-literal"
              },
              {
                include: "#comment"
              },
              {
                include: "#variable-initializer"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "namespace-declaration": {
    name: "meta.namespace.declaration.js",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`]))",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js"
      },
      "2": {
        name: "storage.modifier.js"
      },
      "3": {
        name: "storage.type.namespace.js"
      }
    },
    end: "(?<=\\})|(?=;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        name: "entity.name.type.module.js",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      },
      {
        include: "#punctuation-accessor"
      },
      {
        include: "#decl-block"
      }
    ]
  },
  "type-alias-declaration": {
    name: "meta.type.declaration.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(type)\\b\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js"
      },
      "2": {
        name: "storage.modifier.js"
      },
      "3": {
        name: "storage.type.type.js"
      },
      "4": {
        name: "entity.name.type.alias.js"
      }
    },
    end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-parameters"
      },
      {
        begin: "(=)\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.js"
          },
          "2": {
            name: "keyword.control.intrinsic.js"
          }
        },
        end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        begin: "(=)\\s*",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.js"
          }
        },
        end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "import-equals-declaration": {
    patterns: [
      {
        name: "meta.import-equals.external.js",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(require)\\s*(\\()",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.js"
          },
          "2": {
            name: "storage.modifier.js"
          },
          "3": {
            name: "keyword.control.import.js"
          },
          "4": {
            name: "keyword.control.type.js"
          },
          "5": {
            name: "variable.other.readwrite.alias.js"
          },
          "6": {
            name: "keyword.operator.assignment.js"
          },
          "7": {
            name: "keyword.control.require.js"
          },
          "8": {
            name: "meta.brace.round.js"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.js"
          }
        },
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#string"
          }
        ]
      },
      {
        name: "meta.import-equals.internal.js",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(?!require\\b)",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.js"
          },
          "2": {
            name: "storage.modifier.js"
          },
          "3": {
            name: "keyword.control.import.js"
          },
          "4": {
            name: "keyword.control.type.js"
          },
          "5": {
            name: "variable.other.readwrite.alias.js"
          },
          "6": {
            name: "keyword.operator.assignment.js"
          }
        },
        end: "(?=;|$|^)",
        patterns: [
          {
            include: "#single-line-comment-consuming-line-ending"
          },
          {
            include: "#comment"
          },
          {
            match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
            captures: {
              "1": {
                name: "entity.name.type.module.js"
              },
              "2": {
                name: "punctuation.accessor.js"
              },
              "3": {
                name: "punctuation.accessor.optional.js"
              }
            }
          },
          {
            name: "variable.other.readwrite.js",
            match: "([_$[:alpha:]][_$[:alnum:]]*)"
          }
        ]
      }
    ]
  },
  "import-declaration": {
    name: "meta.import.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type)(?!\\s+from))?(?!\\s*[:\\(])(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js"
      },
      "2": {
        name: "storage.modifier.js"
      },
      "3": {
        name: "keyword.control.import.js"
      },
      "4": {
        name: "keyword.control.type.js"
      }
    },
    end: "(?<!^import|[^\\._$[:alnum:]]import)(?=;|$|^)",
    patterns: [
      {
        include: "#single-line-comment-consuming-line-ending"
      },
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        begin: `(?<=^import|[^\\._$[:alnum:]]import)(?!\\s*["'])`,
        end: "\\bfrom\\b",
        endCaptures: {
          "0": {
            name: "keyword.control.from.js"
          }
        },
        patterns: [
          {
            include: "#import-export-declaration"
          }
        ]
      },
      {
        include: "#import-export-declaration"
      }
    ]
  },
  "export-declaration": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "keyword.control.export.js"
          },
          "2": {
            name: "keyword.control.as.js"
          },
          "3": {
            name: "storage.type.namespace.js"
          },
          "4": {
            name: "entity.name.type.module.js"
          }
        }
      },
      {
        name: "meta.export.default.js",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.js"
          },
          "2": {
            name: "keyword.control.type.js"
          },
          "3": {
            name: "keyword.operator.assignment.js"
          },
          "4": {
            name: "keyword.control.default.js"
          }
        },
        end: "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#interface-declaration"
          },
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.export.js",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?\\b(?!(\\$)|(\\s*:))((?=\\s*[\\{*])|((?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s|,))(?!\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.js"
          },
          "2": {
            name: "keyword.control.type.js"
          }
        },
        end: "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#import-export-declaration"
          }
        ]
      }
    ]
  },
  "import-export-declaration": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#import-export-block"
      },
      {
        name: "keyword.control.from.js",
        match: "\\bfrom\\b"
      },
      {
        include: "#import-export-clause"
      }
    ]
  },
  "import-export-block": {
    name: "meta.block.js",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    patterns: [
      {
        include: "#import-export-clause"
      }
    ]
  },
  "import-export-clause": {
    patterns: [
      {
        include: "#comment"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*))",
        captures: {
          "1": {
            name: "keyword.control.default.js"
          },
          "2": {
            name: "constant.language.import-export-all.js"
          },
          "3": {
            name: "variable.other.readwrite.js"
          },
          "4": {
            name: "keyword.control.as.js"
          },
          "5": {
            name: "keyword.control.default.js"
          },
          "6": {
            name: "variable.other.readwrite.alias.js"
          }
        }
      },
      {
        include: "#punctuation-comma"
      },
      {
        name: "constant.language.import-export-all.js",
        match: "\\*"
      },
      {
        name: "keyword.control.default.js",
        match: "\\b(default)\\b"
      },
      {
        name: "variable.other.readwrite.alias.js",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "switch-statement": {
    name: "switch-statement.expr.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()",
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "switch-expression.expr.js",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(switch)\\s*(\\()",
        beginCaptures: {
          "1": {
            name: "keyword.control.switch.js"
          },
          "2": {
            name: "meta.brace.round.js"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.js"
          }
        },
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "switch-block.expr.js",
        begin: "\\{",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.block.js"
          }
        },
        end: "(?=\\})",
        patterns: [
          {
            name: "case-clause.expr.js",
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
            beginCaptures: {
              "1": {
                name: "keyword.control.switch.js"
              }
            },
            end: "(?=:)",
            patterns: [
              {
                include: "#expression"
              }
            ]
          },
          {
            begin: "(:)\\s*(\\{)",
            beginCaptures: {
              "1": {
                name: "case-clause.expr.js punctuation.definition.section.case-statement.js"
              },
              "2": {
                name: "meta.block.js punctuation.definition.block.js"
              }
            },
            end: "\\}",
            endCaptures: {
              "0": {
                name: "meta.block.js punctuation.definition.block.js"
              }
            },
            contentName: "meta.block.js",
            patterns: [
              {
                include: "#statements"
              }
            ]
          },
          {
            match: "(:)",
            captures: {
              "0": {
                name: "case-clause.expr.js punctuation.definition.section.case-statement.js"
              }
            }
          },
          {
            include: "#statements"
          }
        ]
      }
    ]
  },
  "for-loop": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())",
    beginCaptures: {
      "0": {
        name: "keyword.control.loop.js"
      }
    },
    end: "(?<=\\))",
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "keyword.control.loop.js",
        match: "await"
      },
      {
        begin: "\\(",
        beginCaptures: {
          "0": {
            name: "meta.brace.round.js"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.js"
          }
        },
        patterns: [
          {
            include: "#var-expr"
          },
          {
            include: "#expression"
          },
          {
            include: "#punctuation-semicolon"
          }
        ]
      }
    ]
  },
  "if-statement": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bif\\s*(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))\\s*(?!\\{))",
        end: "(?=;|$|\\})",
        patterns: [
          {
            include: "#comment"
          },
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(if)\\s*(\\()",
            beginCaptures: {
              "1": {
                name: "keyword.control.conditional.js"
              },
              "2": {
                name: "meta.brace.round.js"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.js"
              }
            },
            patterns: [
              {
                include: "#expression"
              }
            ]
          },
          {
            name: "string.regexp.js",
            begin: "(?<=\\))\\s*\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
            beginCaptures: {
              "0": {
                name: "punctuation.definition.string.begin.js"
              }
            },
            end: "(/)([dgimsuy]*)",
            endCaptures: {
              "1": {
                name: "punctuation.definition.string.end.js"
              },
              "2": {
                name: "keyword.other.js"
              }
            },
            patterns: [
              {
                include: "#regexp"
              }
            ]
          },
          {
            include: "#statements"
          }
        ]
      }
    ]
  },
  "decl-block": {
    name: "meta.block.js",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    patterns: [
      {
        include: "#statements"
      }
    ]
  },
  "after-operator-block-as-object-literal": {
    name: "meta.objectliteral.js",
    begin: "(?<!\\+\\+|--)(?<=[:=(,\\[?+!>]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.block.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    patterns: [
      {
        include: "#object-member"
      }
    ]
  },
  "object-literal": {
    name: "meta.objectliteral.js",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    patterns: [
      {
        include: "#object-member"
      }
    ]
  },
  "object-member": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#object-literal-method-declaration"
      },
      {
        name: "meta.object.member.js meta.object-literal.key.js",
        begin: "(?=\\[)",
        end: "(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#array-literal"
          }
        ]
      },
      {
        name: "meta.object.member.js meta.object-literal.key.js",
        begin: "(?=[\\'\\\"\\`])",
        end: "(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as)\\s+))))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#string"
          }
        ]
      },
      {
        name: "meta.object.member.js meta.object-literal.key.js",
        begin: "(?x)(?=(\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$)))",
        end: "(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as\\s+))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#numeric-literal"
          }
        ]
      },
      {
        name: "meta.method.declaration.js",
        begin: "(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])",
        end: "(?=\\}|;|,)|(?<=\\})",
        patterns: [
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.object.member.js",
        match: "(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
        captures: {
          "0": {
            name: "meta.object-literal.key.js"
          },
          "1": {
            name: "constant.numeric.decimal.js"
          }
        }
      },
      {
        name: "meta.object.member.js",
        match: "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "0": {
            name: "meta.object-literal.key.js"
          },
          "1": {
            name: "entity.name.function.js"
          }
        }
      },
      {
        name: "meta.object.member.js",
        match: "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
        captures: {
          "0": {
            name: "meta.object-literal.key.js"
          }
        }
      },
      {
        name: "meta.object.member.js",
        begin: "\\.\\.\\.",
        beginCaptures: {
          "0": {
            name: "keyword.operator.spread.js"
          }
        },
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.object.member.js",
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",
        captures: {
          "1": {
            name: "variable.other.readwrite.js"
          }
        }
      },
      {
        name: "meta.object.member.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))",
        captures: {
          "1": {
            name: "keyword.control.as.js"
          },
          "2": {
            name: "storage.modifier.js"
          }
        }
      },
      {
        name: "meta.object.member.js",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        beginCaptures: {
          "1": {
            name: "keyword.control.as.js"
          }
        },
        end: "(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "meta.object.member.js",
        begin: "(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",
        end: "(?=,|\\}|$|\\/\\/|\\/\\*)",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.object.member.js",
        begin: ":",
        beginCaptures: {
          "0": {
            name: "meta.object-literal.key.js punctuation.separator.key-value.js"
          }
        },
        end: "(?=,|\\})",
        patterns: [
          {
            begin: "(?<=:)\\s*(async)?(?=\\s*(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.js"
              }
            },
            end: "(?<=\\))",
            patterns: [
              {
                include: "#type-parameters"
              },
              {
                begin: "\\(",
                beginCaptures: {
                  "0": {
                    name: "meta.brace.round.js"
                  }
                },
                end: "\\)",
                endCaptures: {
                  "0": {
                    name: "meta.brace.round.js"
                  }
                },
                patterns: [
                  {
                    include: "#expression-inside-possibly-arrow-parens"
                  }
                ]
              }
            ]
          },
          {
            begin: "(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.js"
              },
              "2": {
                name: "meta.brace.round.js"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.js"
              }
            },
            patterns: [
              {
                include: "#expression-inside-possibly-arrow-parens"
              }
            ]
          },
          {
            begin: "(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.js"
              }
            },
            end: "(?<=\\>)",
            patterns: [
              {
                include: "#type-parameters"
              }
            ]
          },
          {
            begin: "(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "meta.brace.round.js"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.js"
              }
            },
            patterns: [
              {
                include: "#expression-inside-possibly-arrow-parens"
              }
            ]
          },
          {
            include: "#possibly-arrow-return-type"
          },
          {
            include: "#expression"
          }
        ]
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "ternary-expression": {
    begin: "(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.ternary.js"
      }
    },
    end: "\\s*(:)",
    endCaptures: {
      "1": {
        name: "keyword.operator.ternary.js"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "function-call": {
    patterns: [
      {
        begin: "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
        end: "(?<=\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
        patterns: [
          {
            name: "meta.function-call.js",
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
            patterns: [
              {
                include: "#function-call-target"
              }
            ]
          },
          {
            include: "#comment"
          },
          {
            include: "#function-call-optionals"
          },
          {
            include: "#type-arguments"
          },
          {
            include: "#paren-expression"
          }
        ]
      },
      {
        begin: "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
        end: "(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
        patterns: [
          {
            name: "meta.function-call.js",
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=(<\\s*[\\{\\[\\(]\\s*$))",
            patterns: [
              {
                include: "#function-call-target"
              }
            ]
          },
          {
            include: "#comment"
          },
          {
            include: "#function-call-optionals"
          },
          {
            include: "#type-arguments"
          }
        ]
      }
    ]
  },
  "function-call-target": {
    patterns: [
      {
        include: "#support-function-call-identifiers"
      },
      {
        name: "entity.name.function.js",
        match: "(\\#?[_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "function-call-optionals": {
    patterns: [
      {
        name: "meta.function-call.js punctuation.accessor.optional.js",
        match: "\\?\\."
      },
      {
        name: "meta.function-call.js keyword.operator.definiteassignment.js",
        match: "\\!"
      }
    ]
  },
  "support-function-call-identifiers": {
    patterns: [
      {
        include: "#literal"
      },
      {
        include: "#support-objects"
      },
      {
        include: "#object-identifiers"
      },
      {
        include: "#punctuation-accessor"
      },
      {
        name: "keyword.operator.expression.import.js",
        match: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))"
      }
    ]
  },
  "new-expr": {
    name: "new.expr.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.operator.new.js"
      }
    },
    end: "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "instanceof-expr": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.operator.expression.instanceof.js"
      }
    },
    end: "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
    patterns: [
      {
        include: "#type"
      }
    ]
  },
  "paren-expression-possibly-arrow": {
    patterns: [
      {
        begin: "(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.js"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#paren-expression-possibly-arrow-with-typeparameters"
          }
        ]
      },
      {
        begin: "(?<=[(=,]|=>|^return|[^\\._$[:alnum:]]return)\\s*(async)?(?=\\s*((((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<))\\s*$)",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.js"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#paren-expression-possibly-arrow-with-typeparameters"
          }
        ]
      },
      {
        include: "#possibly-arrow-return-type"
      }
    ]
  },
  "paren-expression-possibly-arrow-with-typeparameters": {
    patterns: [
      {
        include: "#type-parameters"
      },
      {
        begin: "\\(",
        beginCaptures: {
          "0": {
            name: "meta.brace.round.js"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.js"
          }
        },
        patterns: [
          {
            include: "#expression-inside-possibly-arrow-parens"
          }
        ]
      }
    ]
  },
  "expression-inside-possibly-arrow-parens": {
    patterns: [
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#decorator"
      },
      {
        include: "#destructuring-parameter"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
        captures: {
          "1": {
            name: "storage.modifier.js"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "storage.modifier.js"
          },
          "2": {
            name: "keyword.operator.rest.js"
          },
          "3": {
            name: "entity.name.function.js variable.language.this.js"
          },
          "4": {
            name: "entity.name.function.js"
          },
          "5": {
            name: "keyword.operator.optional.js"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)",
        captures: {
          "1": {
            name: "storage.modifier.js"
          },
          "2": {
            name: "keyword.operator.rest.js"
          },
          "3": {
            name: "variable.parameter.js variable.language.this.js"
          },
          "4": {
            name: "variable.parameter.js"
          },
          "5": {
            name: "keyword.operator.optional.js"
          }
        }
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        name: "punctuation.separator.parameter.js",
        match: ","
      },
      {
        include: "#identifiers"
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  "paren-expression": {
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "meta.brace.round.js"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "meta.brace.round.js"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  cast: {
    patterns: [
      {
        include: "#jsx"
      }
    ]
  },
  "expression-operators": {
    patterns: [
      {
        name: "keyword.control.flow.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?=\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*\\*)",
        beginCaptures: {
          "1": {
            name: "keyword.control.flow.js"
          }
        },
        end: "\\*",
        endCaptures: {
          "0": {
            name: "keyword.generator.asterisk.js"
          }
        },
        patterns: [
          {
            include: "#comment"
          }
        ]
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?",
        captures: {
          "1": {
            name: "keyword.control.flow.js"
          },
          "2": {
            name: "keyword.generator.asterisk.js"
          }
        }
      },
      {
        name: "keyword.operator.expression.delete.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.expression.in.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
      },
      {
        name: "keyword.operator.expression.of.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
      },
      {
        name: "keyword.operator.expression.instanceof.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.new.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#typeof-operator"
      },
      {
        name: "keyword.operator.expression.void.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))",
        captures: {
          "1": {
            name: "keyword.control.as.js"
          },
          "2": {
            name: "storage.modifier.js"
          }
        }
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        beginCaptures: {
          "1": {
            name: "keyword.control.as.js"
          }
        },
        end: "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+)|(\\s+\\<))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "keyword.operator.spread.js",
        match: "\\.\\.\\."
      },
      {
        name: "keyword.operator.assignment.compound.js",
        match: "\\*=|(?<!\\()/=|%=|\\+=|\\-="
      },
      {
        name: "keyword.operator.assignment.compound.bitwise.js",
        match: "\\&=|\\^=|<<=|>>=|>>>=|\\|="
      },
      {
        name: "keyword.operator.bitwise.shift.js",
        match: "<<|>>>|>>"
      },
      {
        name: "keyword.operator.comparison.js",
        match: "===|!==|==|!="
      },
      {
        name: "keyword.operator.relational.js",
        match: "<=|>=|<>|<|>"
      },
      {
        match: "(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))",
        captures: {
          "1": {
            name: "keyword.operator.logical.js"
          },
          "2": {
            name: "keyword.operator.assignment.compound.js"
          },
          "3": {
            name: "keyword.operator.arithmetic.js"
          }
        }
      },
      {
        name: "keyword.operator.logical.js",
        match: "\\!|&&|\\|\\||\\?\\?"
      },
      {
        name: "keyword.operator.bitwise.js",
        match: "\\&|~|\\^|\\|"
      },
      {
        name: "keyword.operator.assignment.js",
        match: "\\="
      },
      {
        name: "keyword.operator.decrement.js",
        match: "--"
      },
      {
        name: "keyword.operator.increment.js",
        match: "\\+\\+"
      },
      {
        name: "keyword.operator.arithmetic.js",
        match: "%|\\*|/|-|\\+"
      },
      {
        begin: "(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",
        end: "(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",
        endCaptures: {
          "1": {
            name: "keyword.operator.assignment.compound.js"
          },
          "2": {
            name: "keyword.operator.arithmetic.js"
          }
        },
        patterns: [
          {
            include: "#comment"
          }
        ]
      },
      {
        match: "(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))",
        captures: {
          "1": {
            name: "keyword.operator.assignment.compound.js"
          },
          "2": {
            name: "keyword.operator.arithmetic.js"
          }
        }
      }
    ]
  },
  "typeof-operator": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "0": {
        name: "keyword.operator.expression.typeof.js"
      }
    },
    end: "(?=[,);}\\]=>:&|{\\?]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  literal: {
    patterns: [
      {
        include: "#numeric-literal"
      },
      {
        include: "#boolean-literal"
      },
      {
        include: "#null-literal"
      },
      {
        include: "#undefined-literal"
      },
      {
        include: "#numericConstant-literal"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#this-literal"
      },
      {
        include: "#super-literal"
      }
    ]
  },
  "array-literal": {
    name: "meta.array.literal.js",
    begin: "\\s*(\\[)",
    beginCaptures: {
      "1": {
        name: "meta.brace.square.js"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "meta.brace.square.js"
      }
    },
    patterns: [
      {
        include: "#expression"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "numeric-literal": {
    patterns: [
      {
        name: "constant.numeric.hex.js",
        match: "\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.js"
          }
        }
      },
      {
        name: "constant.numeric.binary.js",
        match: "\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.js"
          }
        }
      },
      {
        name: "constant.numeric.octal.js",
        match: "\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.js"
          }
        }
      },
      {
        match: "(?x)\n(?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$)",
        captures: {
          "0": {
            name: "constant.numeric.decimal.js"
          },
          "1": {
            name: "meta.delimiter.decimal.period.js"
          },
          "2": {
            name: "storage.type.numeric.bigint.js"
          },
          "3": {
            name: "meta.delimiter.decimal.period.js"
          },
          "4": {
            name: "storage.type.numeric.bigint.js"
          },
          "5": {
            name: "meta.delimiter.decimal.period.js"
          },
          "6": {
            name: "storage.type.numeric.bigint.js"
          },
          "7": {
            name: "storage.type.numeric.bigint.js"
          },
          "8": {
            name: "meta.delimiter.decimal.period.js"
          },
          "9": {
            name: "storage.type.numeric.bigint.js"
          },
          "10": {
            name: "meta.delimiter.decimal.period.js"
          },
          "11": {
            name: "storage.type.numeric.bigint.js"
          },
          "12": {
            name: "meta.delimiter.decimal.period.js"
          },
          "13": {
            name: "storage.type.numeric.bigint.js"
          },
          "14": {
            name: "storage.type.numeric.bigint.js"
          }
        }
      }
    ]
  },
  "boolean-literal": {
    patterns: [
      {
        name: "constant.language.boolean.true.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "constant.language.boolean.false.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "null-literal": {
    name: "constant.language.null.js",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "this-literal": {
    name: "variable.language.this.js",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)"
  },
  "super-literal": {
    name: "variable.language.super.js",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)"
  },
  "undefined-literal": {
    name: "constant.language.undefined.js",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "numericConstant-literal": {
    patterns: [
      {
        name: "constant.language.nan.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "constant.language.infinity.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "support-objects": {
    patterns: [
      {
        name: "variable.language.arguments.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)"
      },
      {
        name: "support.class.builtin.js",
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Array|ArrayBuffer|Atomics|BigInt|BigInt64Array|BigUint64Array|Boolean|DataView|Date|Float32Array\n  |Float64Array|Function|Generator|GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Proxy\n  |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray\n  |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\\b(?!\\$)"
      },
      {
        name: "support.class.error.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))((Eval|Internal|Range|Reference|Syntax|Type|URI)?Error)\\b(?!\\$)"
      },
      {
        name: "support.class.promise.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)"
      },
      {
        name: "support.function.js",
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(clear(Interval|Timeout)|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|\n  isFinite|isNaN|parseFloat|parseInt|require|set(Interval|Timeout)|super|unescape|uneval)(?=\\s*\\()"
      },
      {
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Math)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n  (abs|acos|acosh|asin|asinh|atan|atan2|atanh|cbrt|ceil|clz32|cos|cosh|exp|\n  expm1|floor|fround|hypot|imul|log|log10|log1p|log2|max|min|pow|random|\n  round|sign|sin|sinh|sqrt|tan|tanh|trunc)\n  |\n  (E|LN10|LN2|LOG10E|LOG2E|PI|SQRT1_2|SQRT2)))?\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.constant.math.js"
          },
          "2": {
            name: "punctuation.accessor.js"
          },
          "3": {
            name: "punctuation.accessor.optional.js"
          },
          "4": {
            name: "support.function.math.js"
          },
          "5": {
            name: "support.constant.property.math.js"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(JSON)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(parse|stringify))?\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.constant.json.js"
          },
          "2": {
            name: "punctuation.accessor.js"
          },
          "3": {
            name: "punctuation.accessor.optional.js"
          },
          "4": {
            name: "support.function.json.js"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\b(?!\\$)",
        captures: {
          "1": {
            name: "keyword.control.import.js"
          },
          "2": {
            name: "punctuation.accessor.js"
          },
          "3": {
            name: "punctuation.accessor.optional.js"
          },
          "4": {
            name: "support.variable.property.importmeta.js"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\b(?!\\$)",
        captures: {
          "1": {
            name: "keyword.operator.new.js"
          },
          "2": {
            name: "punctuation.accessor.js"
          },
          "3": {
            name: "punctuation.accessor.optional.js"
          },
          "4": {
            name: "support.variable.property.target.js"
          }
        }
      },
      {
        match: "(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?:\n  (?:(constructor|length|prototype|__proto__)\\b(?!\\$|\\s*(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\())\n  |\n  (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\b(?!\\$)))",
        captures: {
          "1": {
            name: "punctuation.accessor.js"
          },
          "2": {
            name: "punctuation.accessor.optional.js"
          },
          "3": {
            name: "support.variable.property.js"
          },
          "4": {
            name: "support.constant.js"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.type.object.module.js"
          },
          "2": {
            name: "support.type.object.module.js"
          },
          "3": {
            name: "punctuation.accessor.js"
          },
          "4": {
            name: "punctuation.accessor.optional.js"
          },
          "5": {
            name: "support.type.object.module.js"
          }
        }
      }
    ]
  },
  identifiers: {
    patterns: [
      {
        include: "#object-identifiers"
      },
      {
        match: "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n))",
        captures: {
          "1": {
            name: "punctuation.accessor.js"
          },
          "2": {
            name: "punctuation.accessor.optional.js"
          },
          "3": {
            name: "entity.name.function.js"
          }
        }
      },
      {
        match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",
        captures: {
          "1": {
            name: "punctuation.accessor.js"
          },
          "2": {
            name: "punctuation.accessor.optional.js"
          },
          "3": {
            name: "variable.other.constant.property.js"
          }
        }
      },
      {
        match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "punctuation.accessor.js"
          },
          "2": {
            name: "punctuation.accessor.optional.js"
          },
          "3": {
            name: "variable.other.property.js"
          }
        }
      },
      {
        name: "variable.other.constant.js",
        match: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"
      },
      {
        name: "variable.other.readwrite.js",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      }
    ]
  },
  "object-identifiers": {
    patterns: [
      {
        name: "support.class.js",
        match: "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))"
      },
      {
        match: "(?x)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n  (\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\n  (\\#?[_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "punctuation.accessor.js"
          },
          "2": {
            name: "punctuation.accessor.optional.js"
          },
          "3": {
            name: "variable.other.constant.object.property.js"
          },
          "4": {
            name: "variable.other.object.property.js"
          }
        }
      },
      {
        match: "(?x)(?:\n  ([[:upper:]][_$[:digit:][:upper:]]*) |\n  ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "variable.other.constant.object.js"
          },
          "2": {
            name: "variable.other.object.js"
          }
        }
      }
    ]
  },
  "type-annotation": {
    patterns: [
      {
        name: "meta.type.annotation.js",
        begin: "(:)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.js"
          }
        },
        end: "(?<![:|&])((?=$|^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "meta.type.annotation.js",
        begin: "(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.js"
          }
        },
        end: "(?<![:|&])((?=[,);\\}\\]]|//)|(?==[^>])|(?=^\\s*$)|((?<=\\S)(?=\\s*$))|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "parameter-type-annotation": {
    patterns: [
      {
        name: "meta.type.annotation.js",
        begin: "(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.js"
          }
        },
        end: "(?=[,)])|(?==[^>])",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "return-type": {
    patterns: [
      {
        name: "meta.return.type.js",
        begin: "(?<=\\))\\s*(:)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.js"
          }
        },
        end: "(?<![:|&])(?=$|^|[{};,]|//)",
        patterns: [
          {
            include: "#return-type-core"
          }
        ]
      },
      {
        name: "meta.return.type.js",
        begin: "(?<=\\))\\s*(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.js"
          }
        },
        end: "(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
        patterns: [
          {
            include: "#return-type-core"
          }
        ]
      }
    ]
  },
  "return-type-core": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?<=[:|&])(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "arrow-return-type": {
    name: "meta.return.type.arrow.js",
    begin: "(?<=\\))\\s*(:)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.type.annotation.js"
      }
    },
    end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
    patterns: [
      {
        include: "#arrow-return-type-body"
      }
    ]
  },
  "possibly-arrow-return-type": {
    begin: "(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",
    beginCaptures: {
      "1": {
        name: "meta.arrow.js meta.return.type.arrow.js keyword.operator.type.annotation.js"
      }
    },
    end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
    contentName: "meta.arrow.js meta.return.type.arrow.js",
    patterns: [
      {
        include: "#arrow-return-type-body"
      }
    ]
  },
  "arrow-return-type-body": {
    patterns: [
      {
        begin: "(?<=[:])(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-parameters": {
    name: "meta.type.parameters.js",
    begin: "(<)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.typeparameters.begin.js"
      }
    },
    end: "(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.typeparameters.end.js"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "storage.modifier.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      },
      {
        name: "keyword.operator.assignment.js",
        match: "(=)(?!>)"
      }
    ]
  },
  "type-arguments": {
    name: "meta.type.parameters.js",
    begin: "\\<",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.typeparameters.begin.js"
      }
    },
    end: "\\>",
    endCaptures: {
      "0": {
        name: "punctuation.definition.typeparameters.end.js"
      }
    },
    patterns: [
      {
        include: "#type-arguments-body"
      }
    ]
  },
  "type-arguments-body": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "0": {
            name: "keyword.operator.type.js"
          }
        }
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  type: {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#type-primitive"
      },
      {
        include: "#type-builtin-literals"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#type-tuple"
      },
      {
        include: "#type-object"
      },
      {
        include: "#type-conditional"
      },
      {
        include: "#type-operators"
      },
      {
        include: "#type-fn-type-parameters"
      },
      {
        include: "#type-paren-or-function-parameters"
      },
      {
        include: "#type-function-return-type"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
        captures: {
          "1": {
            name: "storage.modifier.js"
          }
        }
      },
      {
        include: "#type-name"
      }
    ]
  },
  "type-primitive": {
    name: "support.type.primitive.js",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "type-builtin-literals": {
    name: "support.type.builtin.js",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "type-tuple": {
    name: "meta.type.tuple.js",
    begin: "\\[",
    beginCaptures: {
      "0": {
        name: "meta.brace.square.js"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "meta.brace.square.js"
      }
    },
    patterns: [
      {
        name: "keyword.operator.rest.js",
        match: "\\.\\.\\."
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
        captures: {
          "1": {
            name: "entity.name.label.js"
          },
          "2": {
            name: "keyword.operator.optional.js"
          },
          "3": {
            name: "punctuation.separator.label.js"
          }
        }
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "type-object": {
    name: "meta.object.type.js",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#method-declaration"
      },
      {
        include: "#indexer-declaration"
      },
      {
        include: "#indexer-mapped-type-declaration"
      },
      {
        include: "#field-declaration"
      },
      {
        include: "#type-annotation"
      },
      {
        begin: "\\.\\.\\.",
        beginCaptures: {
          "0": {
            name: "keyword.operator.spread.js"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-semicolon"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-conditional": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
        beginCaptures: {
          "1": {
            name: "storage.modifier.js"
          }
        },
        end: "(?<=:)",
        patterns: [
          {
            begin: "\\?",
            beginCaptures: {
              "0": {
                name: "keyword.operator.ternary.js"
              }
            },
            end: ":",
            endCaptures: {
              "0": {
                name: "keyword.operator.ternary.js"
              }
            },
            patterns: [
              {
                include: "#type"
              }
            ]
          },
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "type-paren-or-function-parameters": {
    name: "meta.type.paren.cover.js",
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "meta.brace.round.js"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "meta.brace.round.js"
      }
    },
    patterns: [
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
        captures: {
          "1": {
            name: "storage.modifier.js"
          },
          "2": {
            name: "keyword.operator.rest.js"
          },
          "3": {
            name: "entity.name.function.js variable.language.this.js"
          },
          "4": {
            name: "entity.name.function.js"
          },
          "5": {
            name: "keyword.operator.optional.js"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
        captures: {
          "1": {
            name: "storage.modifier.js"
          },
          "2": {
            name: "keyword.operator.rest.js"
          },
          "3": {
            name: "variable.parameter.js variable.language.this.js"
          },
          "4": {
            name: "variable.parameter.js"
          },
          "5": {
            name: "keyword.operator.optional.js"
          }
        }
      },
      {
        include: "#type-annotation"
      },
      {
        name: "punctuation.separator.parameter.js",
        match: ","
      },
      {
        include: "#type"
      }
    ]
  },
  "type-fn-type-parameters": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
        beginCaptures: {
          "1": {
            name: "meta.type.constructor.js storage.modifier.js"
          },
          "2": {
            name: "meta.type.constructor.js keyword.control.new.js"
          }
        },
        end: "(?<=>)",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-parameters"
          }
        ]
      },
      {
        name: "meta.type.constructor.js",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
        beginCaptures: {
          "1": {
            name: "storage.modifier.js"
          },
          "2": {
            name: "keyword.control.new.js"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#function-parameters"
          }
        ]
      },
      {
        name: "meta.type.function.js",
        begin: "(?x)(\n  (?=\n    [(]\\s*(\n      ([)]) |\n      (\\.\\.\\.) |\n      ([_$[:alnum:]]+\\s*(\n        ([:,?=])|\n        ([)]\\s*=>)\n      ))\n    )\n  )\n)",
        end: "(?<=\\))",
        patterns: [
          {
            include: "#function-parameters"
          }
        ]
      }
    ]
  },
  "type-function-return-type": {
    patterns: [
      {
        name: "meta.type.function.return.js",
        begin: "(=>)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "storage.type.function.arrow.js"
          }
        },
        end: "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
        patterns: [
          {
            include: "#type-function-return-type-core"
          }
        ]
      },
      {
        name: "meta.type.function.return.js",
        begin: "=>",
        beginCaptures: {
          "0": {
            name: "storage.type.function.arrow.js"
          }
        },
        end: "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
        patterns: [
          {
            include: "#type-function-return-type-core"
          }
        ]
      }
    ]
  },
  "type-function-return-type-core": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?<==>)(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-operators": {
    patterns: [
      {
        include: "#typeof-operator"
      },
      {
        begin: "([&|])(?=\\s*\\{)",
        beginCaptures: {
          "0": {
            name: "keyword.operator.type.js"
          }
        },
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        begin: "[&|]",
        beginCaptures: {
          "0": {
            name: "keyword.operator.type.js"
          }
        },
        end: "(?=\\S)"
      },
      {
        name: "keyword.operator.expression.keyof.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.ternary.js",
        match: "(\\?|\\:)"
      },
      {
        name: "keyword.operator.expression.infer.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))infer(?=\\s+[_$[:alpha:]])"
      },
      {
        name: "keyword.operator.expression.import.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"
      }
    ]
  },
  "type-predicate-operator": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.operator.type.asserts.js"
          },
          "2": {
            name: "variable.parameter.js variable.language.this.js"
          },
          "3": {
            name: "variable.parameter.js"
          },
          "4": {
            name: "keyword.operator.expression.is.js"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.operator.type.asserts.js"
          },
          "2": {
            name: "variable.parameter.js variable.language.this.js"
          },
          "3": {
            name: "variable.parameter.js"
          }
        }
      },
      {
        name: "keyword.operator.type.asserts.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.expression.is.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "type-name": {
    patterns: [
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
        captures: {
          "1": {
            name: "entity.name.type.module.js"
          },
          "2": {
            name: "punctuation.accessor.js"
          },
          "3": {
            name: "punctuation.accessor.optional.js"
          },
          "4": {
            name: "meta.type.parameters.js punctuation.definition.typeparameters.begin.js"
          }
        },
        end: "(>)",
        endCaptures: {
          "1": {
            name: "meta.type.parameters.js punctuation.definition.typeparameters.end.js"
          }
        },
        contentName: "meta.type.parameters.js",
        patterns: [
          {
            include: "#type-arguments-body"
          }
        ]
      },
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
        beginCaptures: {
          "1": {
            name: "entity.name.type.js"
          },
          "2": {
            name: "meta.type.parameters.js punctuation.definition.typeparameters.begin.js"
          }
        },
        end: "(>)",
        endCaptures: {
          "1": {
            name: "meta.type.parameters.js punctuation.definition.typeparameters.end.js"
          }
        },
        contentName: "meta.type.parameters.js",
        patterns: [
          {
            include: "#type-arguments-body"
          }
        ]
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
        captures: {
          "1": {
            name: "entity.name.type.module.js"
          },
          "2": {
            name: "punctuation.accessor.js"
          },
          "3": {
            name: "punctuation.accessor.optional.js"
          }
        }
      },
      {
        name: "entity.name.type.js",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      }
    ]
  },
  "punctuation-comma": {
    name: "punctuation.separator.comma.js",
    match: ","
  },
  "punctuation-semicolon": {
    name: "punctuation.terminator.statement.js",
    match: ";"
  },
  "punctuation-accessor": {
    match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
    captures: {
      "1": {
        name: "punctuation.accessor.js"
      },
      "2": {
        name: "punctuation.accessor.optional.js"
      }
    }
  },
  string: {
    patterns: [
      {
        include: "#qstring-single"
      },
      {
        include: "#qstring-double"
      },
      {
        include: "#template"
      }
    ]
  },
  "qstring-double": {
    name: "string.quoted.double.js",
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.js"
      }
    },
    end: '(")|((?:[^\\\\\\n])$)',
    endCaptures: {
      "1": {
        name: "punctuation.definition.string.end.js"
      },
      "2": {
        name: "invalid.illegal.newline.js"
      }
    },
    patterns: [
      {
        include: "#string-character-escape"
      }
    ]
  },
  "qstring-single": {
    name: "string.quoted.single.js",
    begin: "'",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.js"
      }
    },
    end: "(\\')|((?:[^\\\\\\n])$)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.string.end.js"
      },
      "2": {
        name: "invalid.illegal.newline.js"
      }
    },
    patterns: [
      {
        include: "#string-character-escape"
      }
    ]
  },
  "string-character-escape": {
    name: "constant.character.escape.js",
    match: "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
  },
  template: {
    patterns: [
      {
        include: "#template-call"
      },
      {
        name: "string.template.js",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.js"
          },
          "2": {
            name: "punctuation.definition.string.template.begin.js"
          }
        },
        end: "`",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.template.end.js"
          }
        },
        patterns: [
          {
            include: "#template-substitution-element"
          },
          {
            include: "#string-character-escape"
          }
        ]
      }
    ]
  },
  "template-call": {
    patterns: [
      {
        name: "string.template.js",
        begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
        end: "(?=`)",
        patterns: [
          {
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
            patterns: [
              {
                include: "#support-function-call-identifiers"
              },
              {
                name: "entity.name.function.tagged-template.js",
                match: "([_$[:alpha:]][_$[:alnum:]]*)"
              }
            ]
          },
          {
            include: "#type-arguments"
          }
        ]
      },
      {
        name: "string.template.js",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.js"
          }
        },
        end: "(?=`)",
        patterns: [
          {
            include: "#type-arguments"
          }
        ]
      }
    ]
  },
  "template-substitution-element": {
    name: "meta.template.expression.js",
    begin: "\\$\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.begin.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.end.js"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ],
    contentName: "meta.embedded.line.js"
  },
  "type-string": {
    patterns: [
      {
        include: "#qstring-single"
      },
      {
        include: "#qstring-double"
      },
      {
        include: "#template-type"
      }
    ]
  },
  "template-type": {
    patterns: [
      {
        include: "#template-call"
      },
      {
        name: "string.template.js",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.js"
          },
          "2": {
            name: "punctuation.definition.string.template.begin.js"
          }
        },
        end: "`",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.template.end.js"
          }
        },
        patterns: [
          {
            include: "#template-type-substitution-element"
          },
          {
            include: "#string-character-escape"
          }
        ]
      }
    ]
  },
  "template-type-substitution-element": {
    name: "meta.template.expression.js",
    begin: "\\$\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.begin.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.end.js"
      }
    },
    patterns: [
      {
        include: "#type"
      }
    ],
    contentName: "meta.embedded.line.js"
  },
  regex: {
    patterns: [
      {
        name: "string.regexp.js",
        begin: "(?<!\\+\\+|--|})(?<=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=>|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.string.begin.js"
          }
        },
        end: "(/)([dgimsuy]*)",
        endCaptures: {
          "1": {
            name: "punctuation.definition.string.end.js"
          },
          "2": {
            name: "keyword.other.js"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "string.regexp.js",
        begin: "((?<![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?<=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.js"
          }
        },
        end: "(/)([dgimsuy]*)",
        endCaptures: {
          "1": {
            name: "punctuation.definition.string.end.js"
          },
          "2": {
            name: "keyword.other.js"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      }
    ]
  },
  regexp: {
    patterns: [
      {
        name: "keyword.control.anchor.regexp",
        match: "\\\\[bB]|\\^|\\$"
      },
      {
        match: "\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>",
        captures: {
          "0": {
            name: "keyword.other.back-reference.regexp"
          },
          "1": {
            name: "variable.other.regexp"
          }
        }
      },
      {
        name: "keyword.operator.quantifier.regexp",
        match: "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"
      },
      {
        name: "keyword.operator.or.regexp",
        match: "\\|"
      },
      {
        name: "meta.group.assertion.regexp",
        begin: "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.group.regexp"
          },
          "2": {
            name: "punctuation.definition.group.assertion.regexp"
          },
          "3": {
            name: "meta.assertion.look-ahead.regexp"
          },
          "4": {
            name: "meta.assertion.negative-look-ahead.regexp"
          },
          "5": {
            name: "meta.assertion.look-behind.regexp"
          },
          "6": {
            name: "meta.assertion.negative-look-behind.regexp"
          }
        },
        end: "(\\))",
        endCaptures: {
          "1": {
            name: "punctuation.definition.group.regexp"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "meta.group.regexp",
        begin: "\\((?:(\\?:)|(?:\\?<([a-zA-Z_$][\\w$]*)>))?",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.group.regexp"
          },
          "1": {
            name: "punctuation.definition.group.no-capture.regexp"
          },
          "2": {
            name: "variable.other.regexp"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.definition.group.regexp"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "constant.other.character-class.set.regexp",
        begin: "(\\[)(\\^)?",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.character-class.regexp"
          },
          "2": {
            name: "keyword.operator.negation.regexp"
          }
        },
        end: "(\\])",
        endCaptures: {
          "1": {
            name: "punctuation.definition.character-class.regexp"
          }
        },
        patterns: [
          {
            name: "constant.other.character-class.range.regexp",
            match: "(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",
            captures: {
              "1": {
                name: "constant.character.numeric.regexp"
              },
              "2": {
                name: "constant.character.control.regexp"
              },
              "3": {
                name: "constant.character.escape.backslash.regexp"
              },
              "4": {
                name: "constant.character.numeric.regexp"
              },
              "5": {
                name: "constant.character.control.regexp"
              },
              "6": {
                name: "constant.character.escape.backslash.regexp"
              }
            }
          },
          {
            include: "#regex-character-class"
          }
        ]
      },
      {
        include: "#regex-character-class"
      }
    ]
  },
  "regex-character-class": {
    patterns: [
      {
        name: "constant.other.character-class.regexp",
        match: "\\\\[wWsSdDtrnvf]|\\."
      },
      {
        name: "constant.character.numeric.regexp",
        match: "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})"
      },
      {
        name: "constant.character.control.regexp",
        match: "\\\\c[A-Z]"
      },
      {
        name: "constant.character.escape.backslash.regexp",
        match: "\\\\."
      }
    ]
  },
  comment: {
    patterns: [
      {
        name: "comment.block.documentation.js",
        begin: "/\\*\\*(?!/)",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.comment.js"
          }
        },
        end: "\\*/",
        endCaptures: {
          "0": {
            name: "punctuation.definition.comment.js"
          }
        },
        patterns: [
          {
            include: "#docblock"
          }
        ]
      },
      {
        name: "comment.block.js",
        begin: "(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.comment.js"
          },
          "2": {
            name: "storage.type.internaldeclaration.js"
          },
          "3": {
            name: "punctuation.decorator.internaldeclaration.js"
          }
        },
        end: "\\*/",
        endCaptures: {
          "0": {
            name: "punctuation.definition.comment.js"
          }
        }
      },
      {
        begin: "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
        beginCaptures: {
          "1": {
            name: "punctuation.whitespace.comment.leading.js"
          },
          "2": {
            name: "comment.line.double-slash.js"
          },
          "3": {
            name: "punctuation.definition.comment.js"
          },
          "4": {
            name: "storage.type.internaldeclaration.js"
          },
          "5": {
            name: "punctuation.decorator.internaldeclaration.js"
          }
        },
        end: "(?=$)",
        contentName: "comment.line.double-slash.js"
      }
    ]
  },
  "single-line-comment-consuming-line-ending": {
    begin: "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
    beginCaptures: {
      "1": {
        name: "punctuation.whitespace.comment.leading.js"
      },
      "2": {
        name: "comment.line.double-slash.js"
      },
      "3": {
        name: "punctuation.definition.comment.js"
      },
      "4": {
        name: "storage.type.internaldeclaration.js"
      },
      "5": {
        name: "punctuation.decorator.internaldeclaration.js"
      }
    },
    end: "(?=^)",
    contentName: "comment.line.double-slash.js"
  },
  directives: {
    name: "comment.line.triple-slash.directive.js",
    begin: "^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.comment.js"
      }
    },
    end: "(?=$)",
    patterns: [
      {
        name: "meta.tag.js",
        begin: "(<)(reference|amd-dependency|amd-module)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.directive.js"
          },
          "2": {
            name: "entity.name.tag.directive.js"
          }
        },
        end: "/>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.directive.js"
          }
        },
        patterns: [
          {
            name: "entity.other.attribute-name.directive.js",
            match: "path|types|no-default-lib|lib|name"
          },
          {
            name: "keyword.operator.assignment.js",
            match: "="
          },
          {
            include: "#string"
          }
        ]
      }
    ]
  },
  docblock: {
    patterns: [
      {
        match: "(?x)\n((@)(?:access|api))\n\\s+\n(private|protected|public)\n\\b",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "constant.language.access-type.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)author)\n\\s+\n(\n  [^@\\s<>*/]\n  (?:[^@<>*/]|\\*[^/])*\n)\n(?:\n  \\s*\n  (<)\n  ([^>\\s]+)\n  (>)\n)?",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          },
          "4": {
            name: "punctuation.definition.bracket.angle.begin.jsdoc"
          },
          "5": {
            name: "constant.other.email.link.underline.jsdoc"
          },
          "6": {
            name: "punctuation.definition.bracket.angle.end.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)borrows) \\s+\n((?:[^@\\s*/]|\\*[^/])+)    # <that namepath>\n\\s+ (as) \\s+              # as\n((?:[^@\\s*/]|\\*[^/])+)    # <this namepath>",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          },
          "4": {
            name: "keyword.operator.control.jsdoc"
          },
          "5": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        name: "meta.example.jsdoc",
        begin: "((@)example)\\s+",
        end: "(?=@|\\*/)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        patterns: [
          {
            match: "^\\s\\*\\s+"
          },
          {
            contentName: "constant.other.description.jsdoc",
            begin: "\\G(<)caption(>)",
            beginCaptures: {
              "0": {
                name: "entity.name.tag.inline.jsdoc"
              },
              "1": {
                name: "punctuation.definition.bracket.angle.begin.jsdoc"
              },
              "2": {
                name: "punctuation.definition.bracket.angle.end.jsdoc"
              }
            },
            end: "(</)caption(>)|(?=\\*/)",
            endCaptures: {
              "0": {
                name: "entity.name.tag.inline.jsdoc"
              },
              "1": {
                name: "punctuation.definition.bracket.angle.begin.jsdoc"
              },
              "2": {
                name: "punctuation.definition.bracket.angle.end.jsdoc"
              }
            }
          },
          {
            match: "[^\\s@*](?:[^*]|\\*[^/])*",
            captures: {
              "0": {
                name: "source.embedded.js"
              }
            }
          }
        ]
      },
      {
        match: "(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "constant.language.symbol-type.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)see)\n\\s+\n(?:\n  # URL\n  (\n    (?=https?://)\n    (?:[^\\s*]|\\*[^/])+\n  )\n  |\n  # JSDoc namepath\n  (\n    (?!\n      # Avoid matching bare URIs (also acceptable as links)\n      https?://\n      |\n      # Avoid matching {@inline tags}; we match those below\n      (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag}\n      {@(?:link|linkcode|linkplain|tutorial)\\b\n    )\n    # Matched namepath\n    (?:[^@\\s*/]|\\*[^/])+\n  )\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.link.underline.jsdoc"
          },
          "4": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)template)\n\\s+\n# One or more valid identifiers\n(\n  [A-Za-z_$]         # First character: non-numeric word character\n  [\\w$.\\[\\]]*        # Rest of identifier\n  (?:                # Possible list of additional identifiers\n    \\s* , \\s*\n    [A-Za-z_$]\n    [\\w$.\\[\\]]*\n  )*\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n(\n  (@)\n  (?:arg|argument|const|constant|member|namespace|param|var)\n)\n\\s+\n(\n  [A-Za-z_$]\n  [\\w$.\\[\\]]*\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        begin: "((@)typedef)\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          },
          {
            name: "entity.name.type.instance.jsdoc",
            match: "(?:[^@\\s*/]|\\*[^/])+"
          }
        ]
      },
      {
        begin: "((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          },
          {
            name: "variable.other.jsdoc",
            match: "([A-Za-z_$][\\w$.\\[\\]]*)"
          },
          {
            name: "variable.other.jsdoc",
            match: `(?x)
(\\[)\\s*
[\\w$]+
(?:
  (?:\\[\\])?                                        # Foo[ ].bar properties within an array
  \\.                                                # Foo.Bar namespaced parameter
  [\\w$]+
)*
(?:
  \\s*
  (=)                                                # [foo=bar] Default parameter value
  \\s*
  (
    # The inner regexes are to stop the match early at */ and to not stop at escaped quotes
    (?>
      "(?:(?:\\*(?!/))|(?:\\\\(?!"))|[^*\\\\])*?" |                      # [foo="bar"] Double-quoted
      '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' |                      # [foo='bar'] Single-quoted
      \\[ (?:(?:\\*(?!/))|[^*])*? \\] |                                # [foo=[1,2]] Array literal
      (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])*   # Everything else
    )*
  )
)?
\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))`,
            captures: {
              "1": {
                name: "punctuation.definition.optional-value.begin.bracket.square.jsdoc"
              },
              "2": {
                name: "keyword.operator.assignment.jsdoc"
              },
              "3": {
                name: "source.embedded.js"
              },
              "4": {
                name: "punctuation.definition.optional-value.end.bracket.square.jsdoc"
              },
              "5": {
                name: "invalid.illegal.syntax.jsdoc"
              }
            }
          }
        ]
      },
      {
        begin: "(?x)\n(\n  (@)\n  (?:define|enum|exception|export|extends|lends|implements|modifies\n  |namespace|private|protected|returns?|suppress|this|throws|type\n  |yields?)\n)\n\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          }
        ]
      },
      {
        match: "(?x)\n(\n  (@)\n  (?:alias|augments|callback|constructs|emits|event|fires|exports?\n  |extends|external|function|func|host|lends|listens|interface|memberof!?\n  |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\n)\n\\s+\n(\n  (?:\n    [^{}@\\s*] | \\*[^/]\n  )+\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        contentName: "variable.other.jsdoc",
        begin: `((@)(?:default(?:value)?|license|version))\\s+(([''"]))`,
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          },
          "4": {
            name: "punctuation.definition.string.begin.jsdoc"
          }
        },
        end: "(\\3)|(?=$|\\*/)",
        endCaptures: {
          "0": {
            name: "variable.other.jsdoc"
          },
          "1": {
            name: "punctuation.definition.string.end.jsdoc"
          }
        }
      },
      {
        match: "((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        name: "storage.type.class.jsdoc",
        match: "(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",
        captures: {
          "1": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        }
      },
      {
        include: "#inline-tags"
      },
      {
        match: "((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        }
      }
    ]
  },
  brackets: {
    patterns: [
      {
        begin: "{",
        end: "}|(?=\\*/)",
        patterns: [
          {
            include: "#brackets"
          }
        ]
      },
      {
        begin: "\\[",
        end: "\\]|(?=\\*/)",
        patterns: [
          {
            include: "#brackets"
          }
        ]
      }
    ]
  },
  "inline-tags": {
    patterns: [
      {
        name: "constant.other.description.jsdoc",
        match: "(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",
        captures: {
          "1": {
            name: "punctuation.definition.bracket.square.begin.jsdoc"
          },
          "2": {
            name: "punctuation.definition.bracket.square.end.jsdoc"
          }
        }
      },
      {
        name: "entity.name.type.instance.jsdoc",
        begin: "({)((@)(?:link(?:code|plain)?|tutorial))\\s*",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.bracket.curly.begin.jsdoc"
          },
          "2": {
            name: "storage.type.class.jsdoc"
          },
          "3": {
            name: "punctuation.definition.inline.tag.jsdoc"
          }
        },
        end: "}|(?=\\*/)",
        endCaptures: {
          "0": {
            name: "punctuation.definition.bracket.curly.end.jsdoc"
          }
        },
        patterns: [
          {
            match: "\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?",
            captures: {
              "1": {
                name: "variable.other.link.underline.jsdoc"
              },
              "2": {
                name: "punctuation.separator.pipe.jsdoc"
              }
            }
          },
          {
            match: "\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?",
            captures: {
              "1": {
                name: "variable.other.description.jsdoc"
              },
              "2": {
                name: "punctuation.separator.pipe.jsdoc"
              }
            }
          }
        ]
      }
    ]
  },
  jsdoctype: {
    patterns: [
      {
        contentName: "entity.name.type.instance.jsdoc",
        begin: "\\G({)",
        beginCaptures: {
          "0": {
            name: "entity.name.type.instance.jsdoc"
          },
          "1": {
            name: "punctuation.definition.bracket.curly.begin.jsdoc"
          }
        },
        end: "((}))\\s*|(?=\\*/)",
        endCaptures: {
          "1": {
            name: "entity.name.type.instance.jsdoc"
          },
          "2": {
            name: "punctuation.definition.bracket.curly.end.jsdoc"
          }
        },
        patterns: [
          {
            include: "#brackets"
          }
        ]
      }
    ]
  },
  jsx: {
    patterns: [
      {
        include: "#jsx-tag-without-attributes-in-expression"
      },
      {
        include: "#jsx-tag-in-expression"
      }
    ]
  },
  "jsx-tag-without-attributes-in-expression": {
    begin: "(?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
    end: "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
    patterns: [
      {
        include: "#jsx-tag-without-attributes"
      }
    ]
  },
  "jsx-tag-without-attributes": {
    name: "meta.tag.without-attributes.js",
    begin: "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",
    end: "(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.js"
      },
      "2": {
        name: "entity.name.tag.namespace.js"
      },
      "3": {
        name: "punctuation.separator.namespace.js"
      },
      "4": {
        name: "entity.name.tag.js"
      },
      "5": {
        name: "support.class.component.js"
      },
      "6": {
        name: "punctuation.definition.tag.end.js"
      }
    },
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.js"
      },
      "2": {
        name: "entity.name.tag.namespace.js"
      },
      "3": {
        name: "punctuation.separator.namespace.js"
      },
      "4": {
        name: "entity.name.tag.js"
      },
      "5": {
        name: "support.class.component.js"
      },
      "6": {
        name: "punctuation.definition.tag.end.js"
      }
    },
    contentName: "meta.jsx.children.js",
    patterns: [
      {
        include: "#jsx-children"
      }
    ]
  },
  "jsx-tag-in-expression": {
    begin: "(?x)\n  (?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*\n  (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow\n  (?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
    end: "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
    patterns: [
      {
        include: "#jsx-tag"
      }
    ]
  },
  "jsx-tag": {
    name: "meta.tag.js",
    begin: "(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
    end: "(/>)|(?:(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.js"
      },
      "2": {
        name: "punctuation.definition.tag.begin.js"
      },
      "3": {
        name: "entity.name.tag.namespace.js"
      },
      "4": {
        name: "punctuation.separator.namespace.js"
      },
      "5": {
        name: "entity.name.tag.js"
      },
      "6": {
        name: "support.class.component.js"
      },
      "7": {
        name: "punctuation.definition.tag.end.js"
      }
    },
    patterns: [
      {
        begin: "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.js"
          },
          "2": {
            name: "entity.name.tag.namespace.js"
          },
          "3": {
            name: "punctuation.separator.namespace.js"
          },
          "4": {
            name: "entity.name.tag.js"
          },
          "5": {
            name: "support.class.component.js"
          }
        },
        end: "(?=[/]?>)",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-arguments"
          },
          {
            include: "#jsx-tag-attributes"
          }
        ]
      },
      {
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.js"
          }
        },
        end: "(?=</)",
        contentName: "meta.jsx.children.js",
        patterns: [
          {
            include: "#jsx-children"
          }
        ]
      }
    ]
  },
  "jsx-children": {
    patterns: [
      {
        include: "#jsx-tag-without-attributes"
      },
      {
        include: "#jsx-tag"
      },
      {
        include: "#jsx-evaluated-code"
      },
      {
        include: "#jsx-entities"
      }
    ]
  },
  "jsx-evaluated-code": {
    contentName: "meta.embedded.expression.js",
    begin: "\\{",
    end: "\\}",
    beginCaptures: {
      "0": {
        name: "punctuation.section.embedded.begin.js"
      }
    },
    endCaptures: {
      "0": {
        name: "punctuation.section.embedded.end.js"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "jsx-entities": {
    patterns: [
      {
        name: "constant.character.entity.js",
        match: "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
        captures: {
          "1": {
            name: "punctuation.definition.entity.js"
          },
          "3": {
            name: "punctuation.definition.entity.js"
          }
        }
      },
      {
        name: "invalid.illegal.bad-ampersand.js",
        match: "&"
      }
    ]
  },
  "jsx-tag-attributes": {
    name: "meta.tag.attributes.js",
    begin: "\\s+",
    end: "(?=[/]?>)",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#jsx-tag-attribute-name"
      },
      {
        include: "#jsx-tag-attribute-assignment"
      },
      {
        include: "#jsx-string-double-quoted"
      },
      {
        include: "#jsx-string-single-quoted"
      },
      {
        include: "#jsx-evaluated-code"
      },
      {
        include: "#jsx-tag-attributes-illegal"
      }
    ]
  },
  "jsx-tag-attribute-name": {
    match: "(?x)\n  \\s*\n  (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))?\n  ([_$[:alpha:]][-_$[:alnum:]]*)\n  (?=\\s|=|/?>|/\\*|//)",
    captures: {
      "1": {
        name: "entity.other.attribute-name.namespace.js"
      },
      "2": {
        name: "punctuation.separator.namespace.js"
      },
      "3": {
        name: "entity.other.attribute-name.js"
      }
    }
  },
  "jsx-tag-attribute-assignment": {
    name: "keyword.operator.assignment.js",
    match: `=(?=\\s*(?:'|"|{|/\\*|//|\\n))`
  },
  "jsx-string-double-quoted": {
    name: "string.quoted.double.js",
    begin: '"',
    end: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.js"
      }
    },
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.js"
      }
    },
    patterns: [
      {
        include: "#jsx-entities"
      }
    ]
  },
  "jsx-string-single-quoted": {
    name: "string.quoted.single.js",
    begin: "'",
    end: "'",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.js"
      }
    },
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.js"
      }
    },
    patterns: [
      {
        include: "#jsx-entities"
      }
    ]
  },
  "jsx-tag-attributes-illegal": {
    name: "invalid.illegal.attribute.js",
    match: "\\S+"
  }
};
const javascript_tmLanguage = {
  information_for_contributors: information_for_contributors$6,
  version: version$6,
  name: name$9,
  scopeName: scopeName$8,
  patterns: patterns$8,
  repository: repository$8
};
const __vite_glob_0_2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: javascript_tmLanguage,
  information_for_contributors: information_for_contributors$6,
  name: name$9,
  patterns: patterns$8,
  repository: repository$8,
  scopeName: scopeName$8,
  version: version$6
}, Symbol.toStringTag, { value: "Module" }));
const information_for_contributors$5 = [
  "This file has been converted from https://github.com/microsoft/vscode-JSON.tmLanguage/blob/master/JSON.tmLanguage",
  "If you want to provide a fix or improvement, please create a pull request against the original repository.",
  "Once accepted there, we are happy to receive an update request."
];
const version$5 = "https://github.com/microsoft/vscode-JSON.tmLanguage/commit/9bd83f1c252b375e957203f21793316203f61f70";
const name$8 = "json";
const scopeName$7 = "source.json";
const patterns$7 = [
  {
    include: "#value"
  }
];
const repository$7 = {
  array: {
    begin: "\\[",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.array.begin.json"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.array.end.json"
      }
    },
    name: "meta.structure.array.json",
    patterns: [
      {
        include: "#value"
      },
      {
        match: ",",
        name: "punctuation.separator.array.json"
      },
      {
        match: "[^\\s\\]]",
        name: "invalid.illegal.expected-array-separator.json"
      }
    ]
  },
  comments: {
    patterns: [
      {
        begin: "/\\*\\*(?!/)",
        captures: {
          "0": {
            name: "punctuation.definition.comment.json"
          }
        },
        end: "\\*/",
        name: "comment.block.documentation.json"
      },
      {
        begin: "/\\*",
        captures: {
          "0": {
            name: "punctuation.definition.comment.json"
          }
        },
        end: "\\*/",
        name: "comment.block.json"
      },
      {
        captures: {
          "1": {
            name: "punctuation.definition.comment.json"
          }
        },
        match: "(//).*$\\n?",
        name: "comment.line.double-slash.js"
      }
    ]
  },
  constant: {
    match: "\\b(?:true|false|null)\\b",
    name: "constant.language.json"
  },
  number: {
    match: "(?x)        # turn on extended mode\n  -?        # an optional minus\n  (?:\n    0       # a zero\n    |       # ...or...\n    [1-9]   # a 1-9 character\n    \\d*     # followed by zero or more digits\n  )\n  (?:\n    (?:\n      \\.    # a period\n      \\d+   # followed by one or more digits\n    )?\n    (?:\n      [eE]  # an e character\n      [+-]? # followed by an option +/-\n      \\d+   # followed by one or more digits\n    )?      # make exponent optional\n  )?        # make decimal portion optional",
    name: "constant.numeric.json"
  },
  object: {
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.dictionary.begin.json"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.dictionary.end.json"
      }
    },
    name: "meta.structure.dictionary.json",
    patterns: [
      {
        comment: "the JSON object key",
        include: "#objectkey"
      },
      {
        include: "#comments"
      },
      {
        begin: ":",
        beginCaptures: {
          "0": {
            name: "punctuation.separator.dictionary.key-value.json"
          }
        },
        end: "(,)|(?=\\})",
        endCaptures: {
          "1": {
            name: "punctuation.separator.dictionary.pair.json"
          }
        },
        name: "meta.structure.dictionary.value.json",
        patterns: [
          {
            comment: "the JSON object value",
            include: "#value"
          },
          {
            match: "[^\\s,]",
            name: "invalid.illegal.expected-dictionary-separator.json"
          }
        ]
      },
      {
        match: "[^\\s\\}]",
        name: "invalid.illegal.expected-dictionary-separator.json"
      }
    ]
  },
  string: {
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.json"
      }
    },
    end: '"',
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.json"
      }
    },
    name: "string.quoted.double.json",
    patterns: [
      {
        include: "#stringcontent"
      }
    ]
  },
  objectkey: {
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.support.type.property-name.begin.json"
      }
    },
    end: '"',
    endCaptures: {
      "0": {
        name: "punctuation.support.type.property-name.end.json"
      }
    },
    name: "string.json support.type.property-name.json",
    patterns: [
      {
        include: "#stringcontent"
      }
    ]
  },
  stringcontent: {
    patterns: [
      {
        match: '(?x)                # turn on extended mode\n  \\\\                # a literal backslash\n  (?:               # ...followed by...\n    ["\\\\/bfnrt]     # one of these characters\n    |               # ...or...\n    u               # a u\n    [0-9a-fA-F]{4}) # and four hex digits',
        name: "constant.character.escape.json"
      },
      {
        match: "\\\\.",
        name: "invalid.illegal.unrecognized-string-escape.json"
      }
    ]
  },
  value: {
    patterns: [
      {
        include: "#constant"
      },
      {
        include: "#number"
      },
      {
        include: "#string"
      },
      {
        include: "#array"
      },
      {
        include: "#object"
      },
      {
        include: "#comments"
      }
    ]
  }
};
const json_tmLanguage = {
  information_for_contributors: information_for_contributors$5,
  version: version$5,
  name: name$8,
  scopeName: scopeName$7,
  patterns: patterns$7,
  repository: repository$7
};
const __vite_glob_0_3 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: json_tmLanguage,
  information_for_contributors: information_for_contributors$5,
  name: name$8,
  patterns: patterns$7,
  repository: repository$7,
  scopeName: scopeName$7,
  version: version$5
}, Symbol.toStringTag, { value: "Module" }));
const information_for_contributors$4 = [
  "This file has been converted from https://github.com/microsoft/vscode-JSON.tmLanguage/blob/master/JSON.tmLanguage",
  "If you want to provide a fix or improvement, please create a pull request against the original repository.",
  "Once accepted there, we are happy to receive an update request."
];
const version$4 = "https://github.com/microsoft/vscode-JSON.tmLanguage/commit/9bd83f1c252b375e957203f21793316203f61f70";
const name$7 = "jsonc";
const scopeName$6 = "source.json.comments";
const patterns$6 = [
  {
    include: "#value"
  }
];
const repository$6 = {
  array: {
    begin: "\\[",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.array.begin.json.comments"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.array.end.json.comments"
      }
    },
    name: "meta.structure.array.json.comments",
    patterns: [
      {
        include: "#value"
      },
      {
        match: ",",
        name: "punctuation.separator.array.json.comments"
      },
      {
        match: "[^\\s\\]]",
        name: "invalid.illegal.expected-array-separator.json.comments"
      }
    ]
  },
  comments: {
    patterns: [
      {
        begin: "/\\*\\*(?!/)",
        captures: {
          "0": {
            name: "punctuation.definition.comment.json.comments"
          }
        },
        end: "\\*/",
        name: "comment.block.documentation.json.comments"
      },
      {
        begin: "/\\*",
        captures: {
          "0": {
            name: "punctuation.definition.comment.json.comments"
          }
        },
        end: "\\*/",
        name: "comment.block.json.comments"
      },
      {
        captures: {
          "1": {
            name: "punctuation.definition.comment.json.comments"
          }
        },
        match: "(//).*$\\n?",
        name: "comment.line.double-slash.js"
      }
    ]
  },
  constant: {
    match: "\\b(?:true|false|null)\\b",
    name: "constant.language.json.comments"
  },
  number: {
    match: "(?x)        # turn on extended mode\n  -?        # an optional minus\n  (?:\n    0       # a zero\n    |       # ...or...\n    [1-9]   # a 1-9 character\n    \\d*     # followed by zero or more digits\n  )\n  (?:\n    (?:\n      \\.    # a period\n      \\d+   # followed by one or more digits\n    )?\n    (?:\n      [eE]  # an e character\n      [+-]? # followed by an option +/-\n      \\d+   # followed by one or more digits\n    )?      # make exponent optional\n  )?        # make decimal portion optional",
    name: "constant.numeric.json.comments"
  },
  object: {
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.dictionary.begin.json.comments"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.dictionary.end.json.comments"
      }
    },
    name: "meta.structure.dictionary.json.comments",
    patterns: [
      {
        comment: "the JSON object key",
        include: "#objectkey"
      },
      {
        include: "#comments"
      },
      {
        begin: ":",
        beginCaptures: {
          "0": {
            name: "punctuation.separator.dictionary.key-value.json.comments"
          }
        },
        end: "(,)|(?=\\})",
        endCaptures: {
          "1": {
            name: "punctuation.separator.dictionary.pair.json.comments"
          }
        },
        name: "meta.structure.dictionary.value.json.comments",
        patterns: [
          {
            comment: "the JSON object value",
            include: "#value"
          },
          {
            match: "[^\\s,]",
            name: "invalid.illegal.expected-dictionary-separator.json.comments"
          }
        ]
      },
      {
        match: "[^\\s\\}]",
        name: "invalid.illegal.expected-dictionary-separator.json.comments"
      }
    ]
  },
  string: {
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.json.comments"
      }
    },
    end: '"',
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.json.comments"
      }
    },
    name: "string.quoted.double.json.comments",
    patterns: [
      {
        include: "#stringcontent"
      }
    ]
  },
  objectkey: {
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.support.type.property-name.begin.json.comments"
      }
    },
    end: '"',
    endCaptures: {
      "0": {
        name: "punctuation.support.type.property-name.end.json.comments"
      }
    },
    name: "string.json.comments support.type.property-name.json.comments",
    patterns: [
      {
        include: "#stringcontent"
      }
    ]
  },
  stringcontent: {
    patterns: [
      {
        match: '(?x)                # turn on extended mode\n  \\\\                # a literal backslash\n  (?:               # ...followed by...\n    ["\\\\/bfnrt]     # one of these characters\n    |               # ...or...\n    u               # a u\n    [0-9a-fA-F]{4}) # and four hex digits',
        name: "constant.character.escape.json.comments"
      },
      {
        match: "\\\\.",
        name: "invalid.illegal.unrecognized-string-escape.json.comments"
      }
    ]
  },
  value: {
    patterns: [
      {
        include: "#constant"
      },
      {
        include: "#number"
      },
      {
        include: "#string"
      },
      {
        include: "#array"
      },
      {
        include: "#object"
      },
      {
        include: "#comments"
      }
    ]
  }
};
const jsonc_tmLanguage = {
  information_for_contributors: information_for_contributors$4,
  version: version$4,
  name: name$7,
  scopeName: scopeName$6,
  patterns: patterns$6,
  repository: repository$6
};
const __vite_glob_0_4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: jsonc_tmLanguage,
  information_for_contributors: information_for_contributors$4,
  name: name$7,
  patterns: patterns$6,
  repository: repository$6,
  scopeName: scopeName$6,
  version: version$4
}, Symbol.toStringTag, { value: "Module" }));
const information_for_contributors$3 = [
  "This file has been converted from https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScriptReact.tmLanguage",
  "If you want to provide a fix or improvement, please create a pull request against the original repository.",
  "Once accepted there, we are happy to receive an update request."
];
const version$3 = "https://github.com/microsoft/TypeScript-TmLanguage/commit/33d8371c344f0b54746586313a939f742f9bcd3a";
const name$6 = "jsx";
const scopeName$5 = "source.js.jsx";
const patterns$5 = [
  {
    include: "#directives"
  },
  {
    include: "#statements"
  },
  {
    include: "#shebang"
  }
];
const repository$5 = {
  shebang: {
    name: "comment.line.shebang.js.jsx",
    match: "\\A(#!).*(?=$)",
    captures: {
      "1": {
        name: "punctuation.definition.comment.js.jsx"
      }
    }
  },
  statements: {
    patterns: [
      {
        include: "#declaration"
      },
      {
        include: "#control-statement"
      },
      {
        include: "#after-operator-block-as-object-literal"
      },
      {
        include: "#decl-block"
      },
      {
        include: "#label"
      },
      {
        include: "#expression"
      },
      {
        include: "#punctuation-semicolon"
      },
      {
        include: "#string"
      },
      {
        include: "#comment"
      }
    ]
  },
  declaration: {
    patterns: [
      {
        include: "#decorator"
      },
      {
        include: "#var-expr"
      },
      {
        include: "#function-declaration"
      },
      {
        include: "#class-declaration"
      },
      {
        include: "#interface-declaration"
      },
      {
        include: "#enum-declaration"
      },
      {
        include: "#namespace-declaration"
      },
      {
        include: "#type-alias-declaration"
      },
      {
        include: "#import-equals-declaration"
      },
      {
        include: "#import-declaration"
      },
      {
        include: "#export-declaration"
      },
      {
        name: "storage.modifier.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "control-statement": {
    patterns: [
      {
        include: "#switch-statement"
      },
      {
        include: "#for-loop"
      },
      {
        name: "keyword.control.trycatch.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.control.loop.js.jsx"
          },
          "2": {
            name: "entity.name.label.js.jsx"
          }
        }
      },
      {
        name: "keyword.control.loop.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "0": {
            name: "keyword.control.flow.js.jsx"
          }
        },
        end: "(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "keyword.control.switch.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#if-statement"
      },
      {
        name: "keyword.control.conditional.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.control.with.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.control.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.other.debugger.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  label: {
    patterns: [
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*\\{)",
        beginCaptures: {
          "1": {
            name: "entity.name.label.js.jsx"
          },
          "2": {
            name: "punctuation.separator.label.js.jsx"
          }
        },
        end: "(?<=\\})",
        patterns: [
          {
            include: "#decl-block"
          }
        ]
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)",
        captures: {
          "1": {
            name: "entity.name.label.js.jsx"
          },
          "2": {
            name: "punctuation.separator.label.js.jsx"
          }
        }
      }
    ]
  },
  expression: {
    patterns: [
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        include: "#identifiers"
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  expressionWithoutIdentifiers: {
    patterns: [
      {
        include: "#jsx"
      },
      {
        include: "#string"
      },
      {
        include: "#regex"
      },
      {
        include: "#comment"
      },
      {
        include: "#function-expression"
      },
      {
        include: "#class-expression"
      },
      {
        include: "#arrow-function"
      },
      {
        include: "#paren-expression-possibly-arrow"
      },
      {
        include: "#cast"
      },
      {
        include: "#ternary-expression"
      },
      {
        include: "#new-expr"
      },
      {
        include: "#instanceof-expr"
      },
      {
        include: "#object-literal"
      },
      {
        include: "#expression-operators"
      },
      {
        include: "#function-call"
      },
      {
        include: "#literal"
      },
      {
        include: "#support-objects"
      },
      {
        include: "#paren-expression"
      }
    ]
  },
  expressionPunctuations: {
    patterns: [
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-accessor"
      }
    ]
  },
  decorator: {
    name: "meta.decorator.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@",
    beginCaptures: {
      "0": {
        name: "punctuation.decorator.js.jsx"
      }
    },
    end: "(?=\\s)",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "var-expr": {
    patterns: [
      {
        name: "meta.var.expr.js.jsx",
        begin: "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
        end: "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|((?<!^let|[^\\._$[:alnum:]]let|^var|[^\\._$[:alnum:]]var)(?=\\s*$)))",
        patterns: [
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
            beginCaptures: {
              "1": {
                name: "keyword.control.export.js.jsx"
              },
              "2": {
                name: "storage.modifier.js.jsx"
              },
              "3": {
                name: "storage.type.js.jsx"
              }
            },
            end: "(?=\\S)"
          },
          {
            include: "#destructuring-variable"
          },
          {
            include: "#var-single-variable"
          },
          {
            include: "#variable-initializer"
          },
          {
            include: "#comment"
          },
          {
            begin: "(,)\\s*((?!\\S)|(?=\\/\\/))",
            beginCaptures: {
              "1": {
                name: "punctuation.separator.comma.js.jsx"
              }
            },
            end: "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
            patterns: [
              {
                include: "#single-line-comment-consuming-line-ending"
              },
              {
                include: "#comment"
              },
              {
                include: "#destructuring-variable"
              },
              {
                include: "#var-single-variable"
              },
              {
                include: "#punctuation-comma"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      },
      {
        name: "meta.var.expr.js.jsx",
        begin: "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.js.jsx"
          },
          "2": {
            name: "storage.modifier.js.jsx"
          },
          "3": {
            name: "storage.type.js.jsx"
          }
        },
        end: "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|((?<!^const|[^\\._$[:alnum:]]const)(?=\\s*$)))",
        patterns: [
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
            beginCaptures: {
              "1": {
                name: "keyword.control.export.js.jsx"
              },
              "2": {
                name: "storage.modifier.js.jsx"
              },
              "3": {
                name: "storage.type.js.jsx"
              }
            },
            end: "(?=\\S)"
          },
          {
            include: "#destructuring-const"
          },
          {
            include: "#var-single-const"
          },
          {
            include: "#variable-initializer"
          },
          {
            include: "#comment"
          },
          {
            begin: "(,)\\s*((?!\\S)|(?=\\/\\/))",
            beginCaptures: {
              "1": {
                name: "punctuation.separator.comma.js.jsx"
              }
            },
            end: "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
            patterns: [
              {
                include: "#single-line-comment-consuming-line-ending"
              },
              {
                include: "#comment"
              },
              {
                include: "#destructuring-const"
              },
              {
                include: "#var-single-const"
              },
              {
                include: "#punctuation-comma"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "var-single-variable": {
    patterns: [
      {
        name: "meta.var-single-variable.expr.js.jsx",
        begin: "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\!)?(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.js.jsx entity.name.function.js.jsx"
          },
          "2": {
            name: "keyword.operator.definiteassignment.js.jsx"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.js.jsx",
        begin: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\!)?",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.js.jsx variable.other.constant.js.jsx"
          },
          "2": {
            name: "keyword.operator.definiteassignment.js.jsx"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.js.jsx",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)(\\!)?",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.js.jsx variable.other.readwrite.js.jsx"
          },
          "2": {
            name: "keyword.operator.definiteassignment.js.jsx"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      }
    ]
  },
  "var-single-const": {
    patterns: [
      {
        name: "meta.var-single-variable.expr.js.jsx",
        begin: "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.js.jsx variable.other.constant.js.jsx entity.name.function.js.jsx"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.js.jsx",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.js.jsx variable.other.constant.js.jsx"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      }
    ]
  },
  "var-single-variable-type-annotation": {
    patterns: [
      {
        include: "#type-annotation"
      },
      {
        include: "#string"
      },
      {
        include: "#comment"
      }
    ]
  },
  "destructuring-variable": {
    patterns: [
      {
        name: "meta.object-binding-pattern-variable.js.jsx",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#object-binding-pattern"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      },
      {
        name: "meta.array-binding-pattern-variable.js.jsx",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#array-binding-pattern"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      }
    ]
  },
  "destructuring-const": {
    patterns: [
      {
        name: "meta.object-binding-pattern-variable.js.jsx",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#object-binding-pattern-const"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      },
      {
        name: "meta.array-binding-pattern-variable.js.jsx",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#array-binding-pattern-const"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      }
    ]
  },
  "object-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#binding-element"
          }
        ]
      },
      {
        include: "#object-binding-pattern"
      },
      {
        include: "#destructuring-variable-rest"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "object-binding-element-const": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#binding-element-const"
          }
        ]
      },
      {
        include: "#object-binding-pattern-const"
      },
      {
        include: "#destructuring-variable-rest-const"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "object-binding-element-propertyName": {
    begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
    end: "(:)",
    endCaptures: {
      "0": {
        name: "punctuation.destructuring.js.jsx"
      }
    },
    patterns: [
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        name: "variable.object.property.js.jsx",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#object-binding-pattern"
      },
      {
        include: "#array-binding-pattern"
      },
      {
        include: "#destructuring-variable-rest"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "binding-element-const": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#object-binding-pattern-const"
      },
      {
        include: "#array-binding-pattern-const"
      },
      {
        include: "#destructuring-variable-rest-const"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "destructuring-variable-rest": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.js.jsx"
      },
      "2": {
        name: "meta.definition.variable.js.jsx variable.other.readwrite.js.jsx"
      }
    }
  },
  "destructuring-variable-rest-const": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.js.jsx"
      },
      "2": {
        name: "meta.definition.variable.js.jsx variable.other.constant.js.jsx"
      }
    }
  },
  "object-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js.jsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.js.jsx"
      }
    },
    patterns: [
      {
        include: "#object-binding-element"
      }
    ]
  },
  "object-binding-pattern-const": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js.jsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.js.jsx"
      }
    },
    patterns: [
      {
        include: "#object-binding-element-const"
      }
    ]
  },
  "array-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js.jsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.js.jsx"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.js.jsx"
      }
    },
    patterns: [
      {
        include: "#binding-element"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "array-binding-pattern-const": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js.jsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.js.jsx"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.js.jsx"
      }
    },
    patterns: [
      {
        include: "#binding-element-const"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "parameter-name": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
        captures: {
          "1": {
            name: "storage.modifier.js.jsx"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "storage.modifier.js.jsx"
          },
          "2": {
            name: "keyword.operator.rest.js.jsx"
          },
          "3": {
            name: "entity.name.function.js.jsx variable.language.this.js.jsx"
          },
          "4": {
            name: "entity.name.function.js.jsx"
          },
          "5": {
            name: "keyword.operator.optional.js.jsx"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)",
        captures: {
          "1": {
            name: "storage.modifier.js.jsx"
          },
          "2": {
            name: "keyword.operator.rest.js.jsx"
          },
          "3": {
            name: "variable.parameter.js.jsx variable.language.this.js.jsx"
          },
          "4": {
            name: "variable.parameter.js.jsx"
          },
          "5": {
            name: "keyword.operator.optional.js.jsx"
          }
        }
      }
    ]
  },
  "destructuring-parameter": {
    patterns: [
      {
        name: "meta.parameter.object-binding-pattern.js.jsx",
        begin: "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\{)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.rest.js.jsx"
          },
          "2": {
            name: "punctuation.definition.binding-pattern.object.js.jsx"
          }
        },
        end: "\\}",
        endCaptures: {
          "0": {
            name: "punctuation.definition.binding-pattern.object.js.jsx"
          }
        },
        patterns: [
          {
            include: "#parameter-object-binding-element"
          }
        ]
      },
      {
        name: "meta.paramter.array-binding-pattern.js.jsx",
        begin: "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\[)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.rest.js.jsx"
          },
          "2": {
            name: "punctuation.definition.binding-pattern.array.js.jsx"
          }
        },
        end: "\\]",
        endCaptures: {
          "0": {
            name: "punctuation.definition.binding-pattern.array.js.jsx"
          }
        },
        patterns: [
          {
            include: "#parameter-binding-element"
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "parameter-object-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#parameter-binding-element"
          }
        ]
      },
      {
        include: "#parameter-object-binding-pattern"
      },
      {
        include: "#destructuring-parameter-rest"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "parameter-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#parameter-object-binding-pattern"
      },
      {
        include: "#parameter-array-binding-pattern"
      },
      {
        include: "#destructuring-parameter-rest"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "destructuring-parameter-rest": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.js.jsx"
      },
      "2": {
        name: "variable.parameter.js.jsx"
      }
    }
  },
  "parameter-object-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js.jsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.js.jsx"
      }
    },
    patterns: [
      {
        include: "#parameter-object-binding-element"
      }
    ]
  },
  "parameter-array-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js.jsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.js.jsx"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.js.jsx"
      }
    },
    patterns: [
      {
        include: "#parameter-binding-element"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "field-declaration": {
    name: "meta.field.declaration.js.jsx",
    begin: "(?x)(?<!\\()(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s+)?(?=\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|\\}|$))",
    beginCaptures: {
      "1": {
        name: "storage.modifier.js.jsx"
      }
    },
    end: "(?x)(?=\\}|;|,|$|(^(?!\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|$))))|(?<=\\})",
    patterns: [
      {
        include: "#variable-initializer"
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#comment"
      },
      {
        match: "(?x)(\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\?)|(\\!))?(?=\\s*\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "meta.definition.property.js.jsx entity.name.function.js.jsx"
          },
          "2": {
            name: "keyword.operator.optional.js.jsx"
          },
          "3": {
            name: "keyword.operator.definiteassignment.js.jsx"
          }
        }
      },
      {
        name: "meta.definition.property.js.jsx variable.object.property.js.jsx",
        match: "\\#?[_$[:alpha:]][_$[:alnum:]]*"
      },
      {
        name: "keyword.operator.optional.js.jsx",
        match: "\\?"
      },
      {
        name: "keyword.operator.definiteassignment.js.jsx",
        match: "\\!"
      }
    ]
  },
  "variable-initializer": {
    patterns: [
      {
        begin: "(?<!=|!)(=)(?!=)(?=\\s*\\S)(?!\\s*.*=>\\s*$)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.js.jsx"
          }
        },
        end: "(?=$|^|[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        begin: "(?<!=|!)(=)(?!=)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.js.jsx"
          }
        },
        end: "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<=\\S)(?<!=)(?=\\s*$)",
        patterns: [
          {
            include: "#expression"
          }
        ]
      }
    ]
  },
  "function-declaration": {
    name: "meta.function.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js.jsx"
      },
      "2": {
        name: "storage.modifier.js.jsx"
      },
      "3": {
        name: "storage.modifier.async.js.jsx"
      },
      "4": {
        name: "storage.type.function.js.jsx"
      },
      "5": {
        name: "keyword.generator.asterisk.js.jsx"
      },
      "6": {
        name: "meta.definition.function.js.jsx entity.name.function.js.jsx"
      }
    },
    end: "(?=;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|(?<=\\})",
    patterns: [
      {
        include: "#function-name"
      },
      {
        include: "#function-body"
      }
    ]
  },
  "function-expression": {
    name: "meta.function.expression.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
    beginCaptures: {
      "1": {
        name: "storage.modifier.async.js.jsx"
      },
      "2": {
        name: "storage.type.function.js.jsx"
      },
      "3": {
        name: "keyword.generator.asterisk.js.jsx"
      },
      "4": {
        name: "meta.definition.function.js.jsx entity.name.function.js.jsx"
      }
    },
    end: "(?=;)|(?<=\\})",
    patterns: [
      {
        include: "#function-name"
      },
      {
        include: "#single-line-comment-consuming-line-ending"
      },
      {
        include: "#function-body"
      }
    ]
  },
  "function-name": {
    name: "meta.definition.function.js.jsx entity.name.function.js.jsx",
    match: "[_$[:alpha:]][_$[:alnum:]]*"
  },
  "function-body": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#function-parameters"
      },
      {
        include: "#return-type"
      },
      {
        include: "#type-function-return-type"
      },
      {
        include: "#decl-block"
      },
      {
        name: "keyword.generator.asterisk.js.jsx",
        match: "\\*"
      }
    ]
  },
  "method-declaration": {
    patterns: [
      {
        name: "meta.method.declaration.js.jsx",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?\\s*\\b(constructor)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "1": {
            name: "storage.modifier.js.jsx"
          },
          "2": {
            name: "storage.modifier.js.jsx"
          },
          "3": {
            name: "storage.modifier.js.jsx"
          },
          "4": {
            name: "storage.modifier.async.js.jsx"
          },
          "5": {
            name: "storage.type.js.jsx"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.method.declaration.js.jsx",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:(?:\\s*\\b(new)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|(?:(\\*)\\s*)?)(?=\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.js.jsx"
          },
          "2": {
            name: "storage.modifier.js.jsx"
          },
          "3": {
            name: "storage.modifier.js.jsx"
          },
          "4": {
            name: "storage.modifier.async.js.jsx"
          },
          "5": {
            name: "keyword.operator.new.js.jsx"
          },
          "6": {
            name: "keyword.generator.asterisk.js.jsx"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.method.declaration.js.jsx",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.js.jsx"
          },
          "2": {
            name: "storage.modifier.js.jsx"
          },
          "3": {
            name: "storage.modifier.js.jsx"
          },
          "4": {
            name: "storage.modifier.async.js.jsx"
          },
          "5": {
            name: "storage.type.property.js.jsx"
          },
          "6": {
            name: "keyword.generator.asterisk.js.jsx"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      }
    ]
  },
  "object-literal-method-declaration": {
    name: "meta.method.declaration.js.jsx",
    begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
    beginCaptures: {
      "1": {
        name: "storage.modifier.async.js.jsx"
      },
      "2": {
        name: "storage.type.property.js.jsx"
      },
      "3": {
        name: "keyword.generator.asterisk.js.jsx"
      }
    },
    end: "(?=\\}|;|,)|(?<=\\})",
    patterns: [
      {
        include: "#method-declaration-name"
      },
      {
        include: "#function-body"
      },
      {
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.js.jsx"
          },
          "2": {
            name: "storage.type.property.js.jsx"
          },
          "3": {
            name: "keyword.generator.asterisk.js.jsx"
          }
        },
        end: "(?=\\(|\\<)",
        patterns: [
          {
            include: "#method-declaration-name"
          }
        ]
      }
    ]
  },
  "method-declaration-name": {
    begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])",
    end: "(?=\\(|\\<)",
    patterns: [
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        name: "meta.definition.method.js.jsx entity.name.function.js.jsx",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      },
      {
        name: "keyword.operator.optional.js.jsx",
        match: "\\?"
      }
    ]
  },
  "arrow-function": {
    patterns: [
      {
        name: "meta.arrow.js.jsx",
        match: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)",
        captures: {
          "1": {
            name: "storage.modifier.async.js.jsx"
          },
          "2": {
            name: "variable.parameter.js.jsx"
          }
        }
      },
      {
        name: "meta.arrow.js.jsx",
        begin: "(?x) (?:\n  (?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\n)? ((?<![})!\\]])\\s*\n  (?=\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  )\n)",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.js.jsx"
          }
        },
        end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-parameters"
          },
          {
            include: "#function-parameters"
          },
          {
            include: "#arrow-return-type"
          },
          {
            include: "#possibly-arrow-return-type"
          }
        ]
      },
      {
        name: "meta.arrow.js.jsx",
        begin: "=>",
        beginCaptures: {
          "0": {
            name: "storage.type.function.arrow.js.jsx"
          }
        },
        end: "((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",
        patterns: [
          {
            include: "#single-line-comment-consuming-line-ending"
          },
          {
            include: "#decl-block"
          },
          {
            include: "#expression"
          }
        ]
      }
    ]
  },
  "indexer-declaration": {
    name: "meta.indexer.declaration.js.jsx",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)",
    beginCaptures: {
      "1": {
        name: "storage.modifier.js.jsx"
      },
      "2": {
        name: "meta.brace.square.js.jsx"
      },
      "3": {
        name: "variable.parameter.js.jsx"
      }
    },
    end: "(\\])\\s*(\\?\\s*)?|$",
    endCaptures: {
      "1": {
        name: "meta.brace.square.js.jsx"
      },
      "2": {
        name: "keyword.operator.optional.js.jsx"
      }
    },
    patterns: [
      {
        include: "#type-annotation"
      }
    ]
  },
  "indexer-mapped-type-declaration": {
    name: "meta.indexer.mappedtype.declaration.js.jsx",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([+-])?(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s+(in)\\s+",
    beginCaptures: {
      "1": {
        name: "keyword.operator.type.modifier.js.jsx"
      },
      "2": {
        name: "storage.modifier.js.jsx"
      },
      "3": {
        name: "meta.brace.square.js.jsx"
      },
      "4": {
        name: "entity.name.type.js.jsx"
      },
      "5": {
        name: "keyword.operator.expression.in.js.jsx"
      }
    },
    end: "(\\])([+-])?\\s*(\\?\\s*)?|$",
    endCaptures: {
      "1": {
        name: "meta.brace.square.js.jsx"
      },
      "2": {
        name: "keyword.operator.type.modifier.js.jsx"
      },
      "3": {
        name: "keyword.operator.optional.js.jsx"
      }
    },
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        captures: {
          "1": {
            name: "keyword.control.as.js.jsx"
          }
        }
      },
      {
        include: "#type"
      }
    ]
  },
  "function-parameters": {
    name: "meta.parameters.js.jsx",
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.parameters.begin.js.jsx"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "punctuation.definition.parameters.end.js.jsx"
      }
    },
    patterns: [
      {
        include: "#function-parameters-body"
      }
    ]
  },
  "function-parameters-body": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#decorator"
      },
      {
        include: "#destructuring-parameter"
      },
      {
        include: "#parameter-name"
      },
      {
        include: "#parameter-type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        name: "punctuation.separator.parameter.js.jsx",
        match: ","
      }
    ]
  },
  "class-declaration": {
    name: "meta.class.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js.jsx"
      },
      "2": {
        name: "storage.modifier.js.jsx"
      },
      "3": {
        name: "storage.modifier.js.jsx"
      },
      "4": {
        name: "storage.type.class.js.jsx"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#class-declaration-or-expression-patterns"
      }
    ]
  },
  "class-expression": {
    name: "meta.class.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])",
    beginCaptures: {
      "1": {
        name: "storage.modifier.js.jsx"
      },
      "2": {
        name: "storage.type.class.js.jsx"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#class-declaration-or-expression-patterns"
      }
    ]
  },
  "class-declaration-or-expression-patterns": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        match: "[_$[:alpha:]][_$[:alnum:]]*",
        captures: {
          "0": {
            name: "entity.name.type.class.js.jsx"
          }
        }
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#class-or-interface-body"
      }
    ]
  },
  "interface-declaration": {
    name: "meta.interface.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js.jsx"
      },
      "2": {
        name: "storage.modifier.js.jsx"
      },
      "3": {
        name: "storage.modifier.js.jsx"
      },
      "4": {
        name: "storage.type.interface.js.jsx"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        match: "[_$[:alpha:]][_$[:alnum:]]*",
        captures: {
          "0": {
            name: "entity.name.type.interface.js.jsx"
          }
        }
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#class-or-interface-body"
      }
    ]
  },
  "class-or-interface-heritage": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(extends|implements)\\b)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "storage.modifier.js.jsx"
      }
    },
    end: "(?=\\{)",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)",
        captures: {
          "1": {
            name: "entity.name.type.module.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.js.jsx"
          },
          "3": {
            name: "punctuation.accessor.optional.js.jsx"
          }
        }
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "entity.other.inherited-class.js.jsx"
          }
        }
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  "class-or-interface-body": {
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#decorator"
      },
      {
        begin: "(?<=:)\\s*",
        end: "(?=\\s|[;),}\\]:\\-\\+]|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        include: "#method-declaration"
      },
      {
        include: "#indexer-declaration"
      },
      {
        include: "#field-declaration"
      },
      {
        include: "#string"
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#access-modifier"
      },
      {
        include: "#property-accessor"
      },
      {
        include: "#async-modifier"
      },
      {
        include: "#after-operator-block-as-object-literal"
      },
      {
        include: "#decl-block"
      },
      {
        include: "#expression"
      },
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-semicolon"
      }
    ]
  },
  "access-modifier": {
    name: "storage.modifier.js.jsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "property-accessor": {
    name: "storage.type.property.js.jsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "async-modifier": {
    name: "storage.modifier.async.js.jsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "enum-declaration": {
    name: "meta.enum.declaration.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js.jsx"
      },
      "2": {
        name: "storage.modifier.js.jsx"
      },
      "3": {
        name: "storage.modifier.js.jsx"
      },
      "4": {
        name: "storage.type.enum.js.jsx"
      },
      "5": {
        name: "entity.name.type.enum.js.jsx"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "\\{",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.block.js.jsx"
          }
        },
        end: "\\}",
        endCaptures: {
          "0": {
            name: "punctuation.definition.block.js.jsx"
          }
        },
        patterns: [
          {
            include: "#comment"
          },
          {
            begin: "([_$[:alpha:]][_$[:alnum:]]*)",
            beginCaptures: {
              "0": {
                name: "variable.other.enummember.js.jsx"
              }
            },
            end: "(?=,|\\}|$)",
            patterns: [
              {
                include: "#comment"
              },
              {
                include: "#variable-initializer"
              }
            ]
          },
          {
            begin: "(?=((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))",
            end: "(?=,|\\}|$)",
            patterns: [
              {
                include: "#string"
              },
              {
                include: "#array-literal"
              },
              {
                include: "#comment"
              },
              {
                include: "#variable-initializer"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "namespace-declaration": {
    name: "meta.namespace.declaration.js.jsx",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`]))",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js.jsx"
      },
      "2": {
        name: "storage.modifier.js.jsx"
      },
      "3": {
        name: "storage.type.namespace.js.jsx"
      }
    },
    end: "(?<=\\})|(?=;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        name: "entity.name.type.module.js.jsx",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      },
      {
        include: "#punctuation-accessor"
      },
      {
        include: "#decl-block"
      }
    ]
  },
  "type-alias-declaration": {
    name: "meta.type.declaration.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(type)\\b\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js.jsx"
      },
      "2": {
        name: "storage.modifier.js.jsx"
      },
      "3": {
        name: "storage.type.type.js.jsx"
      },
      "4": {
        name: "entity.name.type.alias.js.jsx"
      }
    },
    end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-parameters"
      },
      {
        begin: "(=)\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.js.jsx"
          },
          "2": {
            name: "keyword.control.intrinsic.js.jsx"
          }
        },
        end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        begin: "(=)\\s*",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.js.jsx"
          }
        },
        end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "import-equals-declaration": {
    patterns: [
      {
        name: "meta.import-equals.external.js.jsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(require)\\s*(\\()",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.js.jsx"
          },
          "2": {
            name: "storage.modifier.js.jsx"
          },
          "3": {
            name: "keyword.control.import.js.jsx"
          },
          "4": {
            name: "keyword.control.type.js.jsx"
          },
          "5": {
            name: "variable.other.readwrite.alias.js.jsx"
          },
          "6": {
            name: "keyword.operator.assignment.js.jsx"
          },
          "7": {
            name: "keyword.control.require.js.jsx"
          },
          "8": {
            name: "meta.brace.round.js.jsx"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.js.jsx"
          }
        },
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#string"
          }
        ]
      },
      {
        name: "meta.import-equals.internal.js.jsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(?!require\\b)",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.js.jsx"
          },
          "2": {
            name: "storage.modifier.js.jsx"
          },
          "3": {
            name: "keyword.control.import.js.jsx"
          },
          "4": {
            name: "keyword.control.type.js.jsx"
          },
          "5": {
            name: "variable.other.readwrite.alias.js.jsx"
          },
          "6": {
            name: "keyword.operator.assignment.js.jsx"
          }
        },
        end: "(?=;|$|^)",
        patterns: [
          {
            include: "#single-line-comment-consuming-line-ending"
          },
          {
            include: "#comment"
          },
          {
            match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
            captures: {
              "1": {
                name: "entity.name.type.module.js.jsx"
              },
              "2": {
                name: "punctuation.accessor.js.jsx"
              },
              "3": {
                name: "punctuation.accessor.optional.js.jsx"
              }
            }
          },
          {
            name: "variable.other.readwrite.js.jsx",
            match: "([_$[:alpha:]][_$[:alnum:]]*)"
          }
        ]
      }
    ]
  },
  "import-declaration": {
    name: "meta.import.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type)(?!\\s+from))?(?!\\s*[:\\(])(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js.jsx"
      },
      "2": {
        name: "storage.modifier.js.jsx"
      },
      "3": {
        name: "keyword.control.import.js.jsx"
      },
      "4": {
        name: "keyword.control.type.js.jsx"
      }
    },
    end: "(?<!^import|[^\\._$[:alnum:]]import)(?=;|$|^)",
    patterns: [
      {
        include: "#single-line-comment-consuming-line-ending"
      },
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        begin: `(?<=^import|[^\\._$[:alnum:]]import)(?!\\s*["'])`,
        end: "\\bfrom\\b",
        endCaptures: {
          "0": {
            name: "keyword.control.from.js.jsx"
          }
        },
        patterns: [
          {
            include: "#import-export-declaration"
          }
        ]
      },
      {
        include: "#import-export-declaration"
      }
    ]
  },
  "export-declaration": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "keyword.control.export.js.jsx"
          },
          "2": {
            name: "keyword.control.as.js.jsx"
          },
          "3": {
            name: "storage.type.namespace.js.jsx"
          },
          "4": {
            name: "entity.name.type.module.js.jsx"
          }
        }
      },
      {
        name: "meta.export.default.js.jsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.js.jsx"
          },
          "2": {
            name: "keyword.control.type.js.jsx"
          },
          "3": {
            name: "keyword.operator.assignment.js.jsx"
          },
          "4": {
            name: "keyword.control.default.js.jsx"
          }
        },
        end: "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#interface-declaration"
          },
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.export.js.jsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?\\b(?!(\\$)|(\\s*:))((?=\\s*[\\{*])|((?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s|,))(?!\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.js.jsx"
          },
          "2": {
            name: "keyword.control.type.js.jsx"
          }
        },
        end: "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#import-export-declaration"
          }
        ]
      }
    ]
  },
  "import-export-declaration": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#import-export-block"
      },
      {
        name: "keyword.control.from.js.jsx",
        match: "\\bfrom\\b"
      },
      {
        include: "#import-export-clause"
      }
    ]
  },
  "import-export-block": {
    name: "meta.block.js.jsx",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    patterns: [
      {
        include: "#import-export-clause"
      }
    ]
  },
  "import-export-clause": {
    patterns: [
      {
        include: "#comment"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*))",
        captures: {
          "1": {
            name: "keyword.control.default.js.jsx"
          },
          "2": {
            name: "constant.language.import-export-all.js.jsx"
          },
          "3": {
            name: "variable.other.readwrite.js.jsx"
          },
          "4": {
            name: "keyword.control.as.js.jsx"
          },
          "5": {
            name: "keyword.control.default.js.jsx"
          },
          "6": {
            name: "variable.other.readwrite.alias.js.jsx"
          }
        }
      },
      {
        include: "#punctuation-comma"
      },
      {
        name: "constant.language.import-export-all.js.jsx",
        match: "\\*"
      },
      {
        name: "keyword.control.default.js.jsx",
        match: "\\b(default)\\b"
      },
      {
        name: "variable.other.readwrite.alias.js.jsx",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "switch-statement": {
    name: "switch-statement.expr.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()",
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "switch-expression.expr.js.jsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(switch)\\s*(\\()",
        beginCaptures: {
          "1": {
            name: "keyword.control.switch.js.jsx"
          },
          "2": {
            name: "meta.brace.round.js.jsx"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.js.jsx"
          }
        },
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "switch-block.expr.js.jsx",
        begin: "\\{",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.block.js.jsx"
          }
        },
        end: "(?=\\})",
        patterns: [
          {
            name: "case-clause.expr.js.jsx",
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
            beginCaptures: {
              "1": {
                name: "keyword.control.switch.js.jsx"
              }
            },
            end: "(?=:)",
            patterns: [
              {
                include: "#expression"
              }
            ]
          },
          {
            begin: "(:)\\s*(\\{)",
            beginCaptures: {
              "1": {
                name: "case-clause.expr.js.jsx punctuation.definition.section.case-statement.js.jsx"
              },
              "2": {
                name: "meta.block.js.jsx punctuation.definition.block.js.jsx"
              }
            },
            end: "\\}",
            endCaptures: {
              "0": {
                name: "meta.block.js.jsx punctuation.definition.block.js.jsx"
              }
            },
            contentName: "meta.block.js.jsx",
            patterns: [
              {
                include: "#statements"
              }
            ]
          },
          {
            match: "(:)",
            captures: {
              "0": {
                name: "case-clause.expr.js.jsx punctuation.definition.section.case-statement.js.jsx"
              }
            }
          },
          {
            include: "#statements"
          }
        ]
      }
    ]
  },
  "for-loop": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())",
    beginCaptures: {
      "0": {
        name: "keyword.control.loop.js.jsx"
      }
    },
    end: "(?<=\\))",
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "keyword.control.loop.js.jsx",
        match: "await"
      },
      {
        begin: "\\(",
        beginCaptures: {
          "0": {
            name: "meta.brace.round.js.jsx"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.js.jsx"
          }
        },
        patterns: [
          {
            include: "#var-expr"
          },
          {
            include: "#expression"
          },
          {
            include: "#punctuation-semicolon"
          }
        ]
      }
    ]
  },
  "if-statement": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bif\\s*(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))\\s*(?!\\{))",
        end: "(?=;|$|\\})",
        patterns: [
          {
            include: "#comment"
          },
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(if)\\s*(\\()",
            beginCaptures: {
              "1": {
                name: "keyword.control.conditional.js.jsx"
              },
              "2": {
                name: "meta.brace.round.js.jsx"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.js.jsx"
              }
            },
            patterns: [
              {
                include: "#expression"
              }
            ]
          },
          {
            name: "string.regexp.js.jsx",
            begin: "(?<=\\))\\s*\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
            beginCaptures: {
              "0": {
                name: "punctuation.definition.string.begin.js.jsx"
              }
            },
            end: "(/)([dgimsuy]*)",
            endCaptures: {
              "1": {
                name: "punctuation.definition.string.end.js.jsx"
              },
              "2": {
                name: "keyword.other.js.jsx"
              }
            },
            patterns: [
              {
                include: "#regexp"
              }
            ]
          },
          {
            include: "#statements"
          }
        ]
      }
    ]
  },
  "decl-block": {
    name: "meta.block.js.jsx",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    patterns: [
      {
        include: "#statements"
      }
    ]
  },
  "after-operator-block-as-object-literal": {
    name: "meta.objectliteral.js.jsx",
    begin: "(?<!\\+\\+|--)(?<=[:=(,\\[?+!>]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    patterns: [
      {
        include: "#object-member"
      }
    ]
  },
  "object-literal": {
    name: "meta.objectliteral.js.jsx",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    patterns: [
      {
        include: "#object-member"
      }
    ]
  },
  "object-member": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#object-literal-method-declaration"
      },
      {
        name: "meta.object.member.js.jsx meta.object-literal.key.js.jsx",
        begin: "(?=\\[)",
        end: "(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#array-literal"
          }
        ]
      },
      {
        name: "meta.object.member.js.jsx meta.object-literal.key.js.jsx",
        begin: "(?=[\\'\\\"\\`])",
        end: "(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as)\\s+))))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#string"
          }
        ]
      },
      {
        name: "meta.object.member.js.jsx meta.object-literal.key.js.jsx",
        begin: "(?x)(?=(\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$)))",
        end: "(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as\\s+))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#numeric-literal"
          }
        ]
      },
      {
        name: "meta.method.declaration.js.jsx",
        begin: "(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])",
        end: "(?=\\}|;|,)|(?<=\\})",
        patterns: [
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.object.member.js.jsx",
        match: "(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
        captures: {
          "0": {
            name: "meta.object-literal.key.js.jsx"
          },
          "1": {
            name: "constant.numeric.decimal.js.jsx"
          }
        }
      },
      {
        name: "meta.object.member.js.jsx",
        match: "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "0": {
            name: "meta.object-literal.key.js.jsx"
          },
          "1": {
            name: "entity.name.function.js.jsx"
          }
        }
      },
      {
        name: "meta.object.member.js.jsx",
        match: "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
        captures: {
          "0": {
            name: "meta.object-literal.key.js.jsx"
          }
        }
      },
      {
        name: "meta.object.member.js.jsx",
        begin: "\\.\\.\\.",
        beginCaptures: {
          "0": {
            name: "keyword.operator.spread.js.jsx"
          }
        },
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.object.member.js.jsx",
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",
        captures: {
          "1": {
            name: "variable.other.readwrite.js.jsx"
          }
        }
      },
      {
        name: "meta.object.member.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))",
        captures: {
          "1": {
            name: "keyword.control.as.js.jsx"
          },
          "2": {
            name: "storage.modifier.js.jsx"
          }
        }
      },
      {
        name: "meta.object.member.js.jsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        beginCaptures: {
          "1": {
            name: "keyword.control.as.js.jsx"
          }
        },
        end: "(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "meta.object.member.js.jsx",
        begin: "(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",
        end: "(?=,|\\}|$|\\/\\/|\\/\\*)",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.object.member.js.jsx",
        begin: ":",
        beginCaptures: {
          "0": {
            name: "meta.object-literal.key.js.jsx punctuation.separator.key-value.js.jsx"
          }
        },
        end: "(?=,|\\})",
        patterns: [
          {
            begin: "(?<=:)\\s*(async)?(?=\\s*(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.js.jsx"
              }
            },
            end: "(?<=\\))",
            patterns: [
              {
                include: "#type-parameters"
              },
              {
                begin: "\\(",
                beginCaptures: {
                  "0": {
                    name: "meta.brace.round.js.jsx"
                  }
                },
                end: "\\)",
                endCaptures: {
                  "0": {
                    name: "meta.brace.round.js.jsx"
                  }
                },
                patterns: [
                  {
                    include: "#expression-inside-possibly-arrow-parens"
                  }
                ]
              }
            ]
          },
          {
            begin: "(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.js.jsx"
              },
              "2": {
                name: "meta.brace.round.js.jsx"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.js.jsx"
              }
            },
            patterns: [
              {
                include: "#expression-inside-possibly-arrow-parens"
              }
            ]
          },
          {
            begin: "(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.js.jsx"
              }
            },
            end: "(?<=\\>)",
            patterns: [
              {
                include: "#type-parameters"
              }
            ]
          },
          {
            begin: "(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "meta.brace.round.js.jsx"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.js.jsx"
              }
            },
            patterns: [
              {
                include: "#expression-inside-possibly-arrow-parens"
              }
            ]
          },
          {
            include: "#possibly-arrow-return-type"
          },
          {
            include: "#expression"
          }
        ]
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "ternary-expression": {
    begin: "(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.ternary.js.jsx"
      }
    },
    end: "\\s*(:)",
    endCaptures: {
      "1": {
        name: "keyword.operator.ternary.js.jsx"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "function-call": {
    patterns: [
      {
        begin: "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
        end: "(?<=\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
        patterns: [
          {
            name: "meta.function-call.js.jsx",
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
            patterns: [
              {
                include: "#function-call-target"
              }
            ]
          },
          {
            include: "#comment"
          },
          {
            include: "#function-call-optionals"
          },
          {
            include: "#type-arguments"
          },
          {
            include: "#paren-expression"
          }
        ]
      },
      {
        begin: "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
        end: "(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
        patterns: [
          {
            name: "meta.function-call.js.jsx",
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=(<\\s*[\\{\\[\\(]\\s*$))",
            patterns: [
              {
                include: "#function-call-target"
              }
            ]
          },
          {
            include: "#comment"
          },
          {
            include: "#function-call-optionals"
          },
          {
            include: "#type-arguments"
          }
        ]
      }
    ]
  },
  "function-call-target": {
    patterns: [
      {
        include: "#support-function-call-identifiers"
      },
      {
        name: "entity.name.function.js.jsx",
        match: "(\\#?[_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "function-call-optionals": {
    patterns: [
      {
        name: "meta.function-call.js.jsx punctuation.accessor.optional.js.jsx",
        match: "\\?\\."
      },
      {
        name: "meta.function-call.js.jsx keyword.operator.definiteassignment.js.jsx",
        match: "\\!"
      }
    ]
  },
  "support-function-call-identifiers": {
    patterns: [
      {
        include: "#literal"
      },
      {
        include: "#support-objects"
      },
      {
        include: "#object-identifiers"
      },
      {
        include: "#punctuation-accessor"
      },
      {
        name: "keyword.operator.expression.import.js.jsx",
        match: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))"
      }
    ]
  },
  "new-expr": {
    name: "new.expr.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.operator.new.js.jsx"
      }
    },
    end: "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "instanceof-expr": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.operator.expression.instanceof.js.jsx"
      }
    },
    end: "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
    patterns: [
      {
        include: "#type"
      }
    ]
  },
  "paren-expression-possibly-arrow": {
    patterns: [
      {
        begin: "(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.js.jsx"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#paren-expression-possibly-arrow-with-typeparameters"
          }
        ]
      },
      {
        begin: "(?<=[(=,]|=>|^return|[^\\._$[:alnum:]]return)\\s*(async)?(?=\\s*((((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<))\\s*$)",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.js.jsx"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#paren-expression-possibly-arrow-with-typeparameters"
          }
        ]
      },
      {
        include: "#possibly-arrow-return-type"
      }
    ]
  },
  "paren-expression-possibly-arrow-with-typeparameters": {
    patterns: [
      {
        include: "#type-parameters"
      },
      {
        begin: "\\(",
        beginCaptures: {
          "0": {
            name: "meta.brace.round.js.jsx"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.js.jsx"
          }
        },
        patterns: [
          {
            include: "#expression-inside-possibly-arrow-parens"
          }
        ]
      }
    ]
  },
  "expression-inside-possibly-arrow-parens": {
    patterns: [
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#decorator"
      },
      {
        include: "#destructuring-parameter"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
        captures: {
          "1": {
            name: "storage.modifier.js.jsx"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "storage.modifier.js.jsx"
          },
          "2": {
            name: "keyword.operator.rest.js.jsx"
          },
          "3": {
            name: "entity.name.function.js.jsx variable.language.this.js.jsx"
          },
          "4": {
            name: "entity.name.function.js.jsx"
          },
          "5": {
            name: "keyword.operator.optional.js.jsx"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)",
        captures: {
          "1": {
            name: "storage.modifier.js.jsx"
          },
          "2": {
            name: "keyword.operator.rest.js.jsx"
          },
          "3": {
            name: "variable.parameter.js.jsx variable.language.this.js.jsx"
          },
          "4": {
            name: "variable.parameter.js.jsx"
          },
          "5": {
            name: "keyword.operator.optional.js.jsx"
          }
        }
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        name: "punctuation.separator.parameter.js.jsx",
        match: ","
      },
      {
        include: "#identifiers"
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  "paren-expression": {
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "meta.brace.round.js.jsx"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "meta.brace.round.js.jsx"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  cast: {
    patterns: [
      {
        include: "#jsx"
      }
    ]
  },
  "expression-operators": {
    patterns: [
      {
        name: "keyword.control.flow.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?=\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*\\*)",
        beginCaptures: {
          "1": {
            name: "keyword.control.flow.js.jsx"
          }
        },
        end: "\\*",
        endCaptures: {
          "0": {
            name: "keyword.generator.asterisk.js.jsx"
          }
        },
        patterns: [
          {
            include: "#comment"
          }
        ]
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?",
        captures: {
          "1": {
            name: "keyword.control.flow.js.jsx"
          },
          "2": {
            name: "keyword.generator.asterisk.js.jsx"
          }
        }
      },
      {
        name: "keyword.operator.expression.delete.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.expression.in.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
      },
      {
        name: "keyword.operator.expression.of.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
      },
      {
        name: "keyword.operator.expression.instanceof.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.new.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#typeof-operator"
      },
      {
        name: "keyword.operator.expression.void.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))",
        captures: {
          "1": {
            name: "keyword.control.as.js.jsx"
          },
          "2": {
            name: "storage.modifier.js.jsx"
          }
        }
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        beginCaptures: {
          "1": {
            name: "keyword.control.as.js.jsx"
          }
        },
        end: "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+)|(\\s+\\<))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "keyword.operator.spread.js.jsx",
        match: "\\.\\.\\."
      },
      {
        name: "keyword.operator.assignment.compound.js.jsx",
        match: "\\*=|(?<!\\()/=|%=|\\+=|\\-="
      },
      {
        name: "keyword.operator.assignment.compound.bitwise.js.jsx",
        match: "\\&=|\\^=|<<=|>>=|>>>=|\\|="
      },
      {
        name: "keyword.operator.bitwise.shift.js.jsx",
        match: "<<|>>>|>>"
      },
      {
        name: "keyword.operator.comparison.js.jsx",
        match: "===|!==|==|!="
      },
      {
        name: "keyword.operator.relational.js.jsx",
        match: "<=|>=|<>|<|>"
      },
      {
        match: "(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))",
        captures: {
          "1": {
            name: "keyword.operator.logical.js.jsx"
          },
          "2": {
            name: "keyword.operator.assignment.compound.js.jsx"
          },
          "3": {
            name: "keyword.operator.arithmetic.js.jsx"
          }
        }
      },
      {
        name: "keyword.operator.logical.js.jsx",
        match: "\\!|&&|\\|\\||\\?\\?"
      },
      {
        name: "keyword.operator.bitwise.js.jsx",
        match: "\\&|~|\\^|\\|"
      },
      {
        name: "keyword.operator.assignment.js.jsx",
        match: "\\="
      },
      {
        name: "keyword.operator.decrement.js.jsx",
        match: "--"
      },
      {
        name: "keyword.operator.increment.js.jsx",
        match: "\\+\\+"
      },
      {
        name: "keyword.operator.arithmetic.js.jsx",
        match: "%|\\*|/|-|\\+"
      },
      {
        begin: "(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",
        end: "(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",
        endCaptures: {
          "1": {
            name: "keyword.operator.assignment.compound.js.jsx"
          },
          "2": {
            name: "keyword.operator.arithmetic.js.jsx"
          }
        },
        patterns: [
          {
            include: "#comment"
          }
        ]
      },
      {
        match: "(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))",
        captures: {
          "1": {
            name: "keyword.operator.assignment.compound.js.jsx"
          },
          "2": {
            name: "keyword.operator.arithmetic.js.jsx"
          }
        }
      }
    ]
  },
  "typeof-operator": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "0": {
        name: "keyword.operator.expression.typeof.js.jsx"
      }
    },
    end: "(?=[,);}\\]=>:&|{\\?]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  literal: {
    patterns: [
      {
        include: "#numeric-literal"
      },
      {
        include: "#boolean-literal"
      },
      {
        include: "#null-literal"
      },
      {
        include: "#undefined-literal"
      },
      {
        include: "#numericConstant-literal"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#this-literal"
      },
      {
        include: "#super-literal"
      }
    ]
  },
  "array-literal": {
    name: "meta.array.literal.js.jsx",
    begin: "\\s*(\\[)",
    beginCaptures: {
      "1": {
        name: "meta.brace.square.js.jsx"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "meta.brace.square.js.jsx"
      }
    },
    patterns: [
      {
        include: "#expression"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "numeric-literal": {
    patterns: [
      {
        name: "constant.numeric.hex.js.jsx",
        match: "\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.js.jsx"
          }
        }
      },
      {
        name: "constant.numeric.binary.js.jsx",
        match: "\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.js.jsx"
          }
        }
      },
      {
        name: "constant.numeric.octal.js.jsx",
        match: "\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.js.jsx"
          }
        }
      },
      {
        match: "(?x)\n(?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$)",
        captures: {
          "0": {
            name: "constant.numeric.decimal.js.jsx"
          },
          "1": {
            name: "meta.delimiter.decimal.period.js.jsx"
          },
          "2": {
            name: "storage.type.numeric.bigint.js.jsx"
          },
          "3": {
            name: "meta.delimiter.decimal.period.js.jsx"
          },
          "4": {
            name: "storage.type.numeric.bigint.js.jsx"
          },
          "5": {
            name: "meta.delimiter.decimal.period.js.jsx"
          },
          "6": {
            name: "storage.type.numeric.bigint.js.jsx"
          },
          "7": {
            name: "storage.type.numeric.bigint.js.jsx"
          },
          "8": {
            name: "meta.delimiter.decimal.period.js.jsx"
          },
          "9": {
            name: "storage.type.numeric.bigint.js.jsx"
          },
          "10": {
            name: "meta.delimiter.decimal.period.js.jsx"
          },
          "11": {
            name: "storage.type.numeric.bigint.js.jsx"
          },
          "12": {
            name: "meta.delimiter.decimal.period.js.jsx"
          },
          "13": {
            name: "storage.type.numeric.bigint.js.jsx"
          },
          "14": {
            name: "storage.type.numeric.bigint.js.jsx"
          }
        }
      }
    ]
  },
  "boolean-literal": {
    patterns: [
      {
        name: "constant.language.boolean.true.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "constant.language.boolean.false.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "null-literal": {
    name: "constant.language.null.js.jsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "this-literal": {
    name: "variable.language.this.js.jsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)"
  },
  "super-literal": {
    name: "variable.language.super.js.jsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)"
  },
  "undefined-literal": {
    name: "constant.language.undefined.js.jsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "numericConstant-literal": {
    patterns: [
      {
        name: "constant.language.nan.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "constant.language.infinity.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "support-objects": {
    patterns: [
      {
        name: "variable.language.arguments.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)"
      },
      {
        name: "support.class.builtin.js.jsx",
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Array|ArrayBuffer|Atomics|BigInt|BigInt64Array|BigUint64Array|Boolean|DataView|Date|Float32Array\n  |Float64Array|Function|Generator|GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Proxy\n  |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray\n  |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\\b(?!\\$)"
      },
      {
        name: "support.class.error.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))((Eval|Internal|Range|Reference|Syntax|Type|URI)?Error)\\b(?!\\$)"
      },
      {
        name: "support.class.promise.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)"
      },
      {
        name: "support.function.js.jsx",
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(clear(Interval|Timeout)|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|\n  isFinite|isNaN|parseFloat|parseInt|require|set(Interval|Timeout)|super|unescape|uneval)(?=\\s*\\()"
      },
      {
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Math)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n  (abs|acos|acosh|asin|asinh|atan|atan2|atanh|cbrt|ceil|clz32|cos|cosh|exp|\n  expm1|floor|fround|hypot|imul|log|log10|log1p|log2|max|min|pow|random|\n  round|sign|sin|sinh|sqrt|tan|tanh|trunc)\n  |\n  (E|LN10|LN2|LOG10E|LOG2E|PI|SQRT1_2|SQRT2)))?\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.constant.math.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.js.jsx"
          },
          "3": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "4": {
            name: "support.function.math.js.jsx"
          },
          "5": {
            name: "support.constant.property.math.js.jsx"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(JSON)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(parse|stringify))?\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.constant.json.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.js.jsx"
          },
          "3": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "4": {
            name: "support.function.json.js.jsx"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\b(?!\\$)",
        captures: {
          "1": {
            name: "keyword.control.import.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.js.jsx"
          },
          "3": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "4": {
            name: "support.variable.property.importmeta.js.jsx"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\b(?!\\$)",
        captures: {
          "1": {
            name: "keyword.operator.new.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.js.jsx"
          },
          "3": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "4": {
            name: "support.variable.property.target.js.jsx"
          }
        }
      },
      {
        match: "(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?:\n  (?:(constructor|length|prototype|__proto__)\\b(?!\\$|\\s*(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\())\n  |\n  (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\b(?!\\$)))",
        captures: {
          "1": {
            name: "punctuation.accessor.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "3": {
            name: "support.variable.property.js.jsx"
          },
          "4": {
            name: "support.constant.js.jsx"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.type.object.module.js.jsx"
          },
          "2": {
            name: "support.type.object.module.js.jsx"
          },
          "3": {
            name: "punctuation.accessor.js.jsx"
          },
          "4": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "5": {
            name: "support.type.object.module.js.jsx"
          }
        }
      }
    ]
  },
  identifiers: {
    patterns: [
      {
        include: "#object-identifiers"
      },
      {
        match: "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n))",
        captures: {
          "1": {
            name: "punctuation.accessor.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "3": {
            name: "entity.name.function.js.jsx"
          }
        }
      },
      {
        match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",
        captures: {
          "1": {
            name: "punctuation.accessor.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "3": {
            name: "variable.other.constant.property.js.jsx"
          }
        }
      },
      {
        match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "punctuation.accessor.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "3": {
            name: "variable.other.property.js.jsx"
          }
        }
      },
      {
        name: "variable.other.constant.js.jsx",
        match: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"
      },
      {
        name: "variable.other.readwrite.js.jsx",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      }
    ]
  },
  "object-identifiers": {
    patterns: [
      {
        name: "support.class.js.jsx",
        match: "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))"
      },
      {
        match: "(?x)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n  (\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\n  (\\#?[_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "punctuation.accessor.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "3": {
            name: "variable.other.constant.object.property.js.jsx"
          },
          "4": {
            name: "variable.other.object.property.js.jsx"
          }
        }
      },
      {
        match: "(?x)(?:\n  ([[:upper:]][_$[:digit:][:upper:]]*) |\n  ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "variable.other.constant.object.js.jsx"
          },
          "2": {
            name: "variable.other.object.js.jsx"
          }
        }
      }
    ]
  },
  "type-annotation": {
    patterns: [
      {
        name: "meta.type.annotation.js.jsx",
        begin: "(:)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.js.jsx"
          }
        },
        end: "(?<![:|&])((?=$|^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "meta.type.annotation.js.jsx",
        begin: "(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.js.jsx"
          }
        },
        end: "(?<![:|&])((?=[,);\\}\\]]|//)|(?==[^>])|(?=^\\s*$)|((?<=\\S)(?=\\s*$))|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "parameter-type-annotation": {
    patterns: [
      {
        name: "meta.type.annotation.js.jsx",
        begin: "(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.js.jsx"
          }
        },
        end: "(?=[,)])|(?==[^>])",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "return-type": {
    patterns: [
      {
        name: "meta.return.type.js.jsx",
        begin: "(?<=\\))\\s*(:)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.js.jsx"
          }
        },
        end: "(?<![:|&])(?=$|^|[{};,]|//)",
        patterns: [
          {
            include: "#return-type-core"
          }
        ]
      },
      {
        name: "meta.return.type.js.jsx",
        begin: "(?<=\\))\\s*(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.js.jsx"
          }
        },
        end: "(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
        patterns: [
          {
            include: "#return-type-core"
          }
        ]
      }
    ]
  },
  "return-type-core": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?<=[:|&])(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "arrow-return-type": {
    name: "meta.return.type.arrow.js.jsx",
    begin: "(?<=\\))\\s*(:)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.type.annotation.js.jsx"
      }
    },
    end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
    patterns: [
      {
        include: "#arrow-return-type-body"
      }
    ]
  },
  "possibly-arrow-return-type": {
    begin: "(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",
    beginCaptures: {
      "1": {
        name: "meta.arrow.js.jsx meta.return.type.arrow.js.jsx keyword.operator.type.annotation.js.jsx"
      }
    },
    end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
    contentName: "meta.arrow.js.jsx meta.return.type.arrow.js.jsx",
    patterns: [
      {
        include: "#arrow-return-type-body"
      }
    ]
  },
  "arrow-return-type-body": {
    patterns: [
      {
        begin: "(?<=[:])(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-parameters": {
    name: "meta.type.parameters.js.jsx",
    begin: "(<)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.typeparameters.begin.js.jsx"
      }
    },
    end: "(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.typeparameters.end.js.jsx"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "storage.modifier.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      },
      {
        name: "keyword.operator.assignment.js.jsx",
        match: "(=)(?!>)"
      }
    ]
  },
  "type-arguments": {
    name: "meta.type.parameters.js.jsx",
    begin: "\\<",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.typeparameters.begin.js.jsx"
      }
    },
    end: "\\>",
    endCaptures: {
      "0": {
        name: "punctuation.definition.typeparameters.end.js.jsx"
      }
    },
    patterns: [
      {
        include: "#type-arguments-body"
      }
    ]
  },
  "type-arguments-body": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "0": {
            name: "keyword.operator.type.js.jsx"
          }
        }
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  type: {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#type-primitive"
      },
      {
        include: "#type-builtin-literals"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#type-tuple"
      },
      {
        include: "#type-object"
      },
      {
        include: "#type-conditional"
      },
      {
        include: "#type-operators"
      },
      {
        include: "#type-fn-type-parameters"
      },
      {
        include: "#type-paren-or-function-parameters"
      },
      {
        include: "#type-function-return-type"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
        captures: {
          "1": {
            name: "storage.modifier.js.jsx"
          }
        }
      },
      {
        include: "#type-name"
      }
    ]
  },
  "type-primitive": {
    name: "support.type.primitive.js.jsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "type-builtin-literals": {
    name: "support.type.builtin.js.jsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "type-tuple": {
    name: "meta.type.tuple.js.jsx",
    begin: "\\[",
    beginCaptures: {
      "0": {
        name: "meta.brace.square.js.jsx"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "meta.brace.square.js.jsx"
      }
    },
    patterns: [
      {
        name: "keyword.operator.rest.js.jsx",
        match: "\\.\\.\\."
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
        captures: {
          "1": {
            name: "entity.name.label.js.jsx"
          },
          "2": {
            name: "keyword.operator.optional.js.jsx"
          },
          "3": {
            name: "punctuation.separator.label.js.jsx"
          }
        }
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "type-object": {
    name: "meta.object.type.js.jsx",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#method-declaration"
      },
      {
        include: "#indexer-declaration"
      },
      {
        include: "#indexer-mapped-type-declaration"
      },
      {
        include: "#field-declaration"
      },
      {
        include: "#type-annotation"
      },
      {
        begin: "\\.\\.\\.",
        beginCaptures: {
          "0": {
            name: "keyword.operator.spread.js.jsx"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-semicolon"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-conditional": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
        beginCaptures: {
          "1": {
            name: "storage.modifier.js.jsx"
          }
        },
        end: "(?<=:)",
        patterns: [
          {
            begin: "\\?",
            beginCaptures: {
              "0": {
                name: "keyword.operator.ternary.js.jsx"
              }
            },
            end: ":",
            endCaptures: {
              "0": {
                name: "keyword.operator.ternary.js.jsx"
              }
            },
            patterns: [
              {
                include: "#type"
              }
            ]
          },
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "type-paren-or-function-parameters": {
    name: "meta.type.paren.cover.js.jsx",
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "meta.brace.round.js.jsx"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "meta.brace.round.js.jsx"
      }
    },
    patterns: [
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
        captures: {
          "1": {
            name: "storage.modifier.js.jsx"
          },
          "2": {
            name: "keyword.operator.rest.js.jsx"
          },
          "3": {
            name: "entity.name.function.js.jsx variable.language.this.js.jsx"
          },
          "4": {
            name: "entity.name.function.js.jsx"
          },
          "5": {
            name: "keyword.operator.optional.js.jsx"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
        captures: {
          "1": {
            name: "storage.modifier.js.jsx"
          },
          "2": {
            name: "keyword.operator.rest.js.jsx"
          },
          "3": {
            name: "variable.parameter.js.jsx variable.language.this.js.jsx"
          },
          "4": {
            name: "variable.parameter.js.jsx"
          },
          "5": {
            name: "keyword.operator.optional.js.jsx"
          }
        }
      },
      {
        include: "#type-annotation"
      },
      {
        name: "punctuation.separator.parameter.js.jsx",
        match: ","
      },
      {
        include: "#type"
      }
    ]
  },
  "type-fn-type-parameters": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
        beginCaptures: {
          "1": {
            name: "meta.type.constructor.js.jsx storage.modifier.js.jsx"
          },
          "2": {
            name: "meta.type.constructor.js.jsx keyword.control.new.js.jsx"
          }
        },
        end: "(?<=>)",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-parameters"
          }
        ]
      },
      {
        name: "meta.type.constructor.js.jsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
        beginCaptures: {
          "1": {
            name: "storage.modifier.js.jsx"
          },
          "2": {
            name: "keyword.control.new.js.jsx"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#function-parameters"
          }
        ]
      },
      {
        name: "meta.type.function.js.jsx",
        begin: "(?x)(\n  (?=\n    [(]\\s*(\n      ([)]) |\n      (\\.\\.\\.) |\n      ([_$[:alnum:]]+\\s*(\n        ([:,?=])|\n        ([)]\\s*=>)\n      ))\n    )\n  )\n)",
        end: "(?<=\\))",
        patterns: [
          {
            include: "#function-parameters"
          }
        ]
      }
    ]
  },
  "type-function-return-type": {
    patterns: [
      {
        name: "meta.type.function.return.js.jsx",
        begin: "(=>)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "storage.type.function.arrow.js.jsx"
          }
        },
        end: "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
        patterns: [
          {
            include: "#type-function-return-type-core"
          }
        ]
      },
      {
        name: "meta.type.function.return.js.jsx",
        begin: "=>",
        beginCaptures: {
          "0": {
            name: "storage.type.function.arrow.js.jsx"
          }
        },
        end: "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
        patterns: [
          {
            include: "#type-function-return-type-core"
          }
        ]
      }
    ]
  },
  "type-function-return-type-core": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?<==>)(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-operators": {
    patterns: [
      {
        include: "#typeof-operator"
      },
      {
        begin: "([&|])(?=\\s*\\{)",
        beginCaptures: {
          "0": {
            name: "keyword.operator.type.js.jsx"
          }
        },
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        begin: "[&|]",
        beginCaptures: {
          "0": {
            name: "keyword.operator.type.js.jsx"
          }
        },
        end: "(?=\\S)"
      },
      {
        name: "keyword.operator.expression.keyof.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.ternary.js.jsx",
        match: "(\\?|\\:)"
      },
      {
        name: "keyword.operator.expression.infer.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))infer(?=\\s+[_$[:alpha:]])"
      },
      {
        name: "keyword.operator.expression.import.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"
      }
    ]
  },
  "type-predicate-operator": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.operator.type.asserts.js.jsx"
          },
          "2": {
            name: "variable.parameter.js.jsx variable.language.this.js.jsx"
          },
          "3": {
            name: "variable.parameter.js.jsx"
          },
          "4": {
            name: "keyword.operator.expression.is.js.jsx"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.operator.type.asserts.js.jsx"
          },
          "2": {
            name: "variable.parameter.js.jsx variable.language.this.js.jsx"
          },
          "3": {
            name: "variable.parameter.js.jsx"
          }
        }
      },
      {
        name: "keyword.operator.type.asserts.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.expression.is.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "type-name": {
    patterns: [
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
        captures: {
          "1": {
            name: "entity.name.type.module.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.js.jsx"
          },
          "3": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "4": {
            name: "meta.type.parameters.js.jsx punctuation.definition.typeparameters.begin.js.jsx"
          }
        },
        end: "(>)",
        endCaptures: {
          "1": {
            name: "meta.type.parameters.js.jsx punctuation.definition.typeparameters.end.js.jsx"
          }
        },
        contentName: "meta.type.parameters.js.jsx",
        patterns: [
          {
            include: "#type-arguments-body"
          }
        ]
      },
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
        beginCaptures: {
          "1": {
            name: "entity.name.type.js.jsx"
          },
          "2": {
            name: "meta.type.parameters.js.jsx punctuation.definition.typeparameters.begin.js.jsx"
          }
        },
        end: "(>)",
        endCaptures: {
          "1": {
            name: "meta.type.parameters.js.jsx punctuation.definition.typeparameters.end.js.jsx"
          }
        },
        contentName: "meta.type.parameters.js.jsx",
        patterns: [
          {
            include: "#type-arguments-body"
          }
        ]
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
        captures: {
          "1": {
            name: "entity.name.type.module.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.js.jsx"
          },
          "3": {
            name: "punctuation.accessor.optional.js.jsx"
          }
        }
      },
      {
        name: "entity.name.type.js.jsx",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      }
    ]
  },
  "punctuation-comma": {
    name: "punctuation.separator.comma.js.jsx",
    match: ","
  },
  "punctuation-semicolon": {
    name: "punctuation.terminator.statement.js.jsx",
    match: ";"
  },
  "punctuation-accessor": {
    match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
    captures: {
      "1": {
        name: "punctuation.accessor.js.jsx"
      },
      "2": {
        name: "punctuation.accessor.optional.js.jsx"
      }
    }
  },
  string: {
    patterns: [
      {
        include: "#qstring-single"
      },
      {
        include: "#qstring-double"
      },
      {
        include: "#template"
      }
    ]
  },
  "qstring-double": {
    name: "string.quoted.double.js.jsx",
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.js.jsx"
      }
    },
    end: '(")|((?:[^\\\\\\n])$)',
    endCaptures: {
      "1": {
        name: "punctuation.definition.string.end.js.jsx"
      },
      "2": {
        name: "invalid.illegal.newline.js.jsx"
      }
    },
    patterns: [
      {
        include: "#string-character-escape"
      }
    ]
  },
  "qstring-single": {
    name: "string.quoted.single.js.jsx",
    begin: "'",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.js.jsx"
      }
    },
    end: "(\\')|((?:[^\\\\\\n])$)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.string.end.js.jsx"
      },
      "2": {
        name: "invalid.illegal.newline.js.jsx"
      }
    },
    patterns: [
      {
        include: "#string-character-escape"
      }
    ]
  },
  "string-character-escape": {
    name: "constant.character.escape.js.jsx",
    match: "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
  },
  template: {
    patterns: [
      {
        include: "#template-call"
      },
      {
        name: "string.template.js.jsx",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.js.jsx"
          },
          "2": {
            name: "punctuation.definition.string.template.begin.js.jsx"
          }
        },
        end: "`",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.template.end.js.jsx"
          }
        },
        patterns: [
          {
            include: "#template-substitution-element"
          },
          {
            include: "#string-character-escape"
          }
        ]
      }
    ]
  },
  "template-call": {
    patterns: [
      {
        name: "string.template.js.jsx",
        begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
        end: "(?=`)",
        patterns: [
          {
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
            patterns: [
              {
                include: "#support-function-call-identifiers"
              },
              {
                name: "entity.name.function.tagged-template.js.jsx",
                match: "([_$[:alpha:]][_$[:alnum:]]*)"
              }
            ]
          },
          {
            include: "#type-arguments"
          }
        ]
      },
      {
        name: "string.template.js.jsx",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.js.jsx"
          }
        },
        end: "(?=`)",
        patterns: [
          {
            include: "#type-arguments"
          }
        ]
      }
    ]
  },
  "template-substitution-element": {
    name: "meta.template.expression.js.jsx",
    begin: "\\$\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.begin.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.end.js.jsx"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ],
    contentName: "meta.embedded.line.js.jsx"
  },
  "type-string": {
    patterns: [
      {
        include: "#qstring-single"
      },
      {
        include: "#qstring-double"
      },
      {
        include: "#template-type"
      }
    ]
  },
  "template-type": {
    patterns: [
      {
        include: "#template-call"
      },
      {
        name: "string.template.js.jsx",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.js.jsx"
          },
          "2": {
            name: "punctuation.definition.string.template.begin.js.jsx"
          }
        },
        end: "`",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.template.end.js.jsx"
          }
        },
        patterns: [
          {
            include: "#template-type-substitution-element"
          },
          {
            include: "#string-character-escape"
          }
        ]
      }
    ]
  },
  "template-type-substitution-element": {
    name: "meta.template.expression.js.jsx",
    begin: "\\$\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.begin.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.end.js.jsx"
      }
    },
    patterns: [
      {
        include: "#type"
      }
    ],
    contentName: "meta.embedded.line.js.jsx"
  },
  regex: {
    patterns: [
      {
        name: "string.regexp.js.jsx",
        begin: "(?<!\\+\\+|--|})(?<=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=>|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.string.begin.js.jsx"
          }
        },
        end: "(/)([dgimsuy]*)",
        endCaptures: {
          "1": {
            name: "punctuation.definition.string.end.js.jsx"
          },
          "2": {
            name: "keyword.other.js.jsx"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "string.regexp.js.jsx",
        begin: "((?<![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?<=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.js.jsx"
          }
        },
        end: "(/)([dgimsuy]*)",
        endCaptures: {
          "1": {
            name: "punctuation.definition.string.end.js.jsx"
          },
          "2": {
            name: "keyword.other.js.jsx"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      }
    ]
  },
  regexp: {
    patterns: [
      {
        name: "keyword.control.anchor.regexp",
        match: "\\\\[bB]|\\^|\\$"
      },
      {
        match: "\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>",
        captures: {
          "0": {
            name: "keyword.other.back-reference.regexp"
          },
          "1": {
            name: "variable.other.regexp"
          }
        }
      },
      {
        name: "keyword.operator.quantifier.regexp",
        match: "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"
      },
      {
        name: "keyword.operator.or.regexp",
        match: "\\|"
      },
      {
        name: "meta.group.assertion.regexp",
        begin: "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.group.regexp"
          },
          "2": {
            name: "punctuation.definition.group.assertion.regexp"
          },
          "3": {
            name: "meta.assertion.look-ahead.regexp"
          },
          "4": {
            name: "meta.assertion.negative-look-ahead.regexp"
          },
          "5": {
            name: "meta.assertion.look-behind.regexp"
          },
          "6": {
            name: "meta.assertion.negative-look-behind.regexp"
          }
        },
        end: "(\\))",
        endCaptures: {
          "1": {
            name: "punctuation.definition.group.regexp"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "meta.group.regexp",
        begin: "\\((?:(\\?:)|(?:\\?<([a-zA-Z_$][\\w$]*)>))?",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.group.regexp"
          },
          "1": {
            name: "punctuation.definition.group.no-capture.regexp"
          },
          "2": {
            name: "variable.other.regexp"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.definition.group.regexp"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "constant.other.character-class.set.regexp",
        begin: "(\\[)(\\^)?",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.character-class.regexp"
          },
          "2": {
            name: "keyword.operator.negation.regexp"
          }
        },
        end: "(\\])",
        endCaptures: {
          "1": {
            name: "punctuation.definition.character-class.regexp"
          }
        },
        patterns: [
          {
            name: "constant.other.character-class.range.regexp",
            match: "(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",
            captures: {
              "1": {
                name: "constant.character.numeric.regexp"
              },
              "2": {
                name: "constant.character.control.regexp"
              },
              "3": {
                name: "constant.character.escape.backslash.regexp"
              },
              "4": {
                name: "constant.character.numeric.regexp"
              },
              "5": {
                name: "constant.character.control.regexp"
              },
              "6": {
                name: "constant.character.escape.backslash.regexp"
              }
            }
          },
          {
            include: "#regex-character-class"
          }
        ]
      },
      {
        include: "#regex-character-class"
      }
    ]
  },
  "regex-character-class": {
    patterns: [
      {
        name: "constant.other.character-class.regexp",
        match: "\\\\[wWsSdDtrnvf]|\\."
      },
      {
        name: "constant.character.numeric.regexp",
        match: "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})"
      },
      {
        name: "constant.character.control.regexp",
        match: "\\\\c[A-Z]"
      },
      {
        name: "constant.character.escape.backslash.regexp",
        match: "\\\\."
      }
    ]
  },
  comment: {
    patterns: [
      {
        name: "comment.block.documentation.js.jsx",
        begin: "/\\*\\*(?!/)",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.comment.js.jsx"
          }
        },
        end: "\\*/",
        endCaptures: {
          "0": {
            name: "punctuation.definition.comment.js.jsx"
          }
        },
        patterns: [
          {
            include: "#docblock"
          }
        ]
      },
      {
        name: "comment.block.js.jsx",
        begin: "(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.comment.js.jsx"
          },
          "2": {
            name: "storage.type.internaldeclaration.js.jsx"
          },
          "3": {
            name: "punctuation.decorator.internaldeclaration.js.jsx"
          }
        },
        end: "\\*/",
        endCaptures: {
          "0": {
            name: "punctuation.definition.comment.js.jsx"
          }
        }
      },
      {
        begin: "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
        beginCaptures: {
          "1": {
            name: "punctuation.whitespace.comment.leading.js.jsx"
          },
          "2": {
            name: "comment.line.double-slash.js.jsx"
          },
          "3": {
            name: "punctuation.definition.comment.js.jsx"
          },
          "4": {
            name: "storage.type.internaldeclaration.js.jsx"
          },
          "5": {
            name: "punctuation.decorator.internaldeclaration.js.jsx"
          }
        },
        end: "(?=$)",
        contentName: "comment.line.double-slash.js.jsx"
      }
    ]
  },
  "single-line-comment-consuming-line-ending": {
    begin: "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
    beginCaptures: {
      "1": {
        name: "punctuation.whitespace.comment.leading.js.jsx"
      },
      "2": {
        name: "comment.line.double-slash.js.jsx"
      },
      "3": {
        name: "punctuation.definition.comment.js.jsx"
      },
      "4": {
        name: "storage.type.internaldeclaration.js.jsx"
      },
      "5": {
        name: "punctuation.decorator.internaldeclaration.js.jsx"
      }
    },
    end: "(?=^)",
    contentName: "comment.line.double-slash.js.jsx"
  },
  directives: {
    name: "comment.line.triple-slash.directive.js.jsx",
    begin: "^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.comment.js.jsx"
      }
    },
    end: "(?=$)",
    patterns: [
      {
        name: "meta.tag.js.jsx",
        begin: "(<)(reference|amd-dependency|amd-module)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.directive.js.jsx"
          },
          "2": {
            name: "entity.name.tag.directive.js.jsx"
          }
        },
        end: "/>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.directive.js.jsx"
          }
        },
        patterns: [
          {
            name: "entity.other.attribute-name.directive.js.jsx",
            match: "path|types|no-default-lib|lib|name"
          },
          {
            name: "keyword.operator.assignment.js.jsx",
            match: "="
          },
          {
            include: "#string"
          }
        ]
      }
    ]
  },
  docblock: {
    patterns: [
      {
        match: "(?x)\n((@)(?:access|api))\n\\s+\n(private|protected|public)\n\\b",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "constant.language.access-type.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)author)\n\\s+\n(\n  [^@\\s<>*/]\n  (?:[^@<>*/]|\\*[^/])*\n)\n(?:\n  \\s*\n  (<)\n  ([^>\\s]+)\n  (>)\n)?",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          },
          "4": {
            name: "punctuation.definition.bracket.angle.begin.jsdoc"
          },
          "5": {
            name: "constant.other.email.link.underline.jsdoc"
          },
          "6": {
            name: "punctuation.definition.bracket.angle.end.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)borrows) \\s+\n((?:[^@\\s*/]|\\*[^/])+)    # <that namepath>\n\\s+ (as) \\s+              # as\n((?:[^@\\s*/]|\\*[^/])+)    # <this namepath>",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          },
          "4": {
            name: "keyword.operator.control.jsdoc"
          },
          "5": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        name: "meta.example.jsdoc",
        begin: "((@)example)\\s+",
        end: "(?=@|\\*/)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        patterns: [
          {
            match: "^\\s\\*\\s+"
          },
          {
            contentName: "constant.other.description.jsdoc",
            begin: "\\G(<)caption(>)",
            beginCaptures: {
              "0": {
                name: "entity.name.tag.inline.jsdoc"
              },
              "1": {
                name: "punctuation.definition.bracket.angle.begin.jsdoc"
              },
              "2": {
                name: "punctuation.definition.bracket.angle.end.jsdoc"
              }
            },
            end: "(</)caption(>)|(?=\\*/)",
            endCaptures: {
              "0": {
                name: "entity.name.tag.inline.jsdoc"
              },
              "1": {
                name: "punctuation.definition.bracket.angle.begin.jsdoc"
              },
              "2": {
                name: "punctuation.definition.bracket.angle.end.jsdoc"
              }
            }
          },
          {
            match: "[^\\s@*](?:[^*]|\\*[^/])*",
            captures: {
              "0": {
                name: "source.embedded.js.jsx"
              }
            }
          }
        ]
      },
      {
        match: "(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "constant.language.symbol-type.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)see)\n\\s+\n(?:\n  # URL\n  (\n    (?=https?://)\n    (?:[^\\s*]|\\*[^/])+\n  )\n  |\n  # JSDoc namepath\n  (\n    (?!\n      # Avoid matching bare URIs (also acceptable as links)\n      https?://\n      |\n      # Avoid matching {@inline tags}; we match those below\n      (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag}\n      {@(?:link|linkcode|linkplain|tutorial)\\b\n    )\n    # Matched namepath\n    (?:[^@\\s*/]|\\*[^/])+\n  )\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.link.underline.jsdoc"
          },
          "4": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)template)\n\\s+\n# One or more valid identifiers\n(\n  [A-Za-z_$]         # First character: non-numeric word character\n  [\\w$.\\[\\]]*        # Rest of identifier\n  (?:                # Possible list of additional identifiers\n    \\s* , \\s*\n    [A-Za-z_$]\n    [\\w$.\\[\\]]*\n  )*\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n(\n  (@)\n  (?:arg|argument|const|constant|member|namespace|param|var)\n)\n\\s+\n(\n  [A-Za-z_$]\n  [\\w$.\\[\\]]*\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        begin: "((@)typedef)\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          },
          {
            name: "entity.name.type.instance.jsdoc",
            match: "(?:[^@\\s*/]|\\*[^/])+"
          }
        ]
      },
      {
        begin: "((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          },
          {
            name: "variable.other.jsdoc",
            match: "([A-Za-z_$][\\w$.\\[\\]]*)"
          },
          {
            name: "variable.other.jsdoc",
            match: `(?x)
(\\[)\\s*
[\\w$]+
(?:
  (?:\\[\\])?                                        # Foo[ ].bar properties within an array
  \\.                                                # Foo.Bar namespaced parameter
  [\\w$]+
)*
(?:
  \\s*
  (=)                                                # [foo=bar] Default parameter value
  \\s*
  (
    # The inner regexes are to stop the match early at */ and to not stop at escaped quotes
    (?>
      "(?:(?:\\*(?!/))|(?:\\\\(?!"))|[^*\\\\])*?" |                      # [foo="bar"] Double-quoted
      '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' |                      # [foo='bar'] Single-quoted
      \\[ (?:(?:\\*(?!/))|[^*])*? \\] |                                # [foo=[1,2]] Array literal
      (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])*   # Everything else
    )*
  )
)?
\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))`,
            captures: {
              "1": {
                name: "punctuation.definition.optional-value.begin.bracket.square.jsdoc"
              },
              "2": {
                name: "keyword.operator.assignment.jsdoc"
              },
              "3": {
                name: "source.embedded.js.jsx"
              },
              "4": {
                name: "punctuation.definition.optional-value.end.bracket.square.jsdoc"
              },
              "5": {
                name: "invalid.illegal.syntax.jsdoc"
              }
            }
          }
        ]
      },
      {
        begin: "(?x)\n(\n  (@)\n  (?:define|enum|exception|export|extends|lends|implements|modifies\n  |namespace|private|protected|returns?|suppress|this|throws|type\n  |yields?)\n)\n\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          }
        ]
      },
      {
        match: "(?x)\n(\n  (@)\n  (?:alias|augments|callback|constructs|emits|event|fires|exports?\n  |extends|external|function|func|host|lends|listens|interface|memberof!?\n  |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\n)\n\\s+\n(\n  (?:\n    [^{}@\\s*] | \\*[^/]\n  )+\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        contentName: "variable.other.jsdoc",
        begin: `((@)(?:default(?:value)?|license|version))\\s+(([''"]))`,
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          },
          "4": {
            name: "punctuation.definition.string.begin.jsdoc"
          }
        },
        end: "(\\3)|(?=$|\\*/)",
        endCaptures: {
          "0": {
            name: "variable.other.jsdoc"
          },
          "1": {
            name: "punctuation.definition.string.end.jsdoc"
          }
        }
      },
      {
        match: "((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        name: "storage.type.class.jsdoc",
        match: "(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",
        captures: {
          "1": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        }
      },
      {
        include: "#inline-tags"
      },
      {
        match: "((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        }
      }
    ]
  },
  brackets: {
    patterns: [
      {
        begin: "{",
        end: "}|(?=\\*/)",
        patterns: [
          {
            include: "#brackets"
          }
        ]
      },
      {
        begin: "\\[",
        end: "\\]|(?=\\*/)",
        patterns: [
          {
            include: "#brackets"
          }
        ]
      }
    ]
  },
  "inline-tags": {
    patterns: [
      {
        name: "constant.other.description.jsdoc",
        match: "(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",
        captures: {
          "1": {
            name: "punctuation.definition.bracket.square.begin.jsdoc"
          },
          "2": {
            name: "punctuation.definition.bracket.square.end.jsdoc"
          }
        }
      },
      {
        name: "entity.name.type.instance.jsdoc",
        begin: "({)((@)(?:link(?:code|plain)?|tutorial))\\s*",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.bracket.curly.begin.jsdoc"
          },
          "2": {
            name: "storage.type.class.jsdoc"
          },
          "3": {
            name: "punctuation.definition.inline.tag.jsdoc"
          }
        },
        end: "}|(?=\\*/)",
        endCaptures: {
          "0": {
            name: "punctuation.definition.bracket.curly.end.jsdoc"
          }
        },
        patterns: [
          {
            match: "\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?",
            captures: {
              "1": {
                name: "variable.other.link.underline.jsdoc"
              },
              "2": {
                name: "punctuation.separator.pipe.jsdoc"
              }
            }
          },
          {
            match: "\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?",
            captures: {
              "1": {
                name: "variable.other.description.jsdoc"
              },
              "2": {
                name: "punctuation.separator.pipe.jsdoc"
              }
            }
          }
        ]
      }
    ]
  },
  jsdoctype: {
    patterns: [
      {
        contentName: "entity.name.type.instance.jsdoc",
        begin: "\\G({)",
        beginCaptures: {
          "0": {
            name: "entity.name.type.instance.jsdoc"
          },
          "1": {
            name: "punctuation.definition.bracket.curly.begin.jsdoc"
          }
        },
        end: "((}))\\s*|(?=\\*/)",
        endCaptures: {
          "1": {
            name: "entity.name.type.instance.jsdoc"
          },
          "2": {
            name: "punctuation.definition.bracket.curly.end.jsdoc"
          }
        },
        patterns: [
          {
            include: "#brackets"
          }
        ]
      }
    ]
  },
  jsx: {
    patterns: [
      {
        include: "#jsx-tag-without-attributes-in-expression"
      },
      {
        include: "#jsx-tag-in-expression"
      }
    ]
  },
  "jsx-tag-without-attributes-in-expression": {
    begin: "(?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
    end: "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
    patterns: [
      {
        include: "#jsx-tag-without-attributes"
      }
    ]
  },
  "jsx-tag-without-attributes": {
    name: "meta.tag.without-attributes.js.jsx",
    begin: "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",
    end: "(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.js.jsx"
      },
      "2": {
        name: "entity.name.tag.namespace.js.jsx"
      },
      "3": {
        name: "punctuation.separator.namespace.js.jsx"
      },
      "4": {
        name: "entity.name.tag.js.jsx"
      },
      "5": {
        name: "support.class.component.js.jsx"
      },
      "6": {
        name: "punctuation.definition.tag.end.js.jsx"
      }
    },
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.js.jsx"
      },
      "2": {
        name: "entity.name.tag.namespace.js.jsx"
      },
      "3": {
        name: "punctuation.separator.namespace.js.jsx"
      },
      "4": {
        name: "entity.name.tag.js.jsx"
      },
      "5": {
        name: "support.class.component.js.jsx"
      },
      "6": {
        name: "punctuation.definition.tag.end.js.jsx"
      }
    },
    contentName: "meta.jsx.children.js.jsx",
    patterns: [
      {
        include: "#jsx-children"
      }
    ]
  },
  "jsx-tag-in-expression": {
    begin: "(?x)\n  (?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*\n  (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow\n  (?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
    end: "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
    patterns: [
      {
        include: "#jsx-tag"
      }
    ]
  },
  "jsx-tag": {
    name: "meta.tag.js.jsx",
    begin: "(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
    end: "(/>)|(?:(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.js.jsx"
      },
      "2": {
        name: "punctuation.definition.tag.begin.js.jsx"
      },
      "3": {
        name: "entity.name.tag.namespace.js.jsx"
      },
      "4": {
        name: "punctuation.separator.namespace.js.jsx"
      },
      "5": {
        name: "entity.name.tag.js.jsx"
      },
      "6": {
        name: "support.class.component.js.jsx"
      },
      "7": {
        name: "punctuation.definition.tag.end.js.jsx"
      }
    },
    patterns: [
      {
        begin: "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.js.jsx"
          },
          "2": {
            name: "entity.name.tag.namespace.js.jsx"
          },
          "3": {
            name: "punctuation.separator.namespace.js.jsx"
          },
          "4": {
            name: "entity.name.tag.js.jsx"
          },
          "5": {
            name: "support.class.component.js.jsx"
          }
        },
        end: "(?=[/]?>)",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-arguments"
          },
          {
            include: "#jsx-tag-attributes"
          }
        ]
      },
      {
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.js.jsx"
          }
        },
        end: "(?=</)",
        contentName: "meta.jsx.children.js.jsx",
        patterns: [
          {
            include: "#jsx-children"
          }
        ]
      }
    ]
  },
  "jsx-children": {
    patterns: [
      {
        include: "#jsx-tag-without-attributes"
      },
      {
        include: "#jsx-tag"
      },
      {
        include: "#jsx-evaluated-code"
      },
      {
        include: "#jsx-entities"
      }
    ]
  },
  "jsx-evaluated-code": {
    contentName: "meta.embedded.expression.js.jsx",
    begin: "\\{",
    end: "\\}",
    beginCaptures: {
      "0": {
        name: "punctuation.section.embedded.begin.js.jsx"
      }
    },
    endCaptures: {
      "0": {
        name: "punctuation.section.embedded.end.js.jsx"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "jsx-entities": {
    patterns: [
      {
        name: "constant.character.entity.js.jsx",
        match: "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
        captures: {
          "1": {
            name: "punctuation.definition.entity.js.jsx"
          },
          "3": {
            name: "punctuation.definition.entity.js.jsx"
          }
        }
      },
      {
        name: "invalid.illegal.bad-ampersand.js.jsx",
        match: "&"
      }
    ]
  },
  "jsx-tag-attributes": {
    name: "meta.tag.attributes.js.jsx",
    begin: "\\s+",
    end: "(?=[/]?>)",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#jsx-tag-attribute-name"
      },
      {
        include: "#jsx-tag-attribute-assignment"
      },
      {
        include: "#jsx-string-double-quoted"
      },
      {
        include: "#jsx-string-single-quoted"
      },
      {
        include: "#jsx-evaluated-code"
      },
      {
        include: "#jsx-tag-attributes-illegal"
      }
    ]
  },
  "jsx-tag-attribute-name": {
    match: "(?x)\n  \\s*\n  (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))?\n  ([_$[:alpha:]][-_$[:alnum:]]*)\n  (?=\\s|=|/?>|/\\*|//)",
    captures: {
      "1": {
        name: "entity.other.attribute-name.namespace.js.jsx"
      },
      "2": {
        name: "punctuation.separator.namespace.js.jsx"
      },
      "3": {
        name: "entity.other.attribute-name.js.jsx"
      }
    }
  },
  "jsx-tag-attribute-assignment": {
    name: "keyword.operator.assignment.js.jsx",
    match: `=(?=\\s*(?:'|"|{|/\\*|//|\\n))`
  },
  "jsx-string-double-quoted": {
    name: "string.quoted.double.js.jsx",
    begin: '"',
    end: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.js.jsx"
      }
    },
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.js.jsx"
      }
    },
    patterns: [
      {
        include: "#jsx-entities"
      }
    ]
  },
  "jsx-string-single-quoted": {
    name: "string.quoted.single.js.jsx",
    begin: "'",
    end: "'",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.js.jsx"
      }
    },
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.js.jsx"
      }
    },
    patterns: [
      {
        include: "#jsx-entities"
      }
    ]
  },
  "jsx-tag-attributes-illegal": {
    name: "invalid.illegal.attribute.js.jsx",
    match: "\\S+"
  }
};
const jsx_tmLanguage = {
  information_for_contributors: information_for_contributors$3,
  version: version$3,
  name: name$6,
  scopeName: scopeName$5,
  patterns: patterns$5,
  repository: repository$5
};
const __vite_glob_0_5 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: jsx_tmLanguage,
  information_for_contributors: information_for_contributors$3,
  name: name$6,
  patterns: patterns$5,
  repository: repository$5,
  scopeName: scopeName$5,
  version: version$3
}, Symbol.toStringTag, { value: "Module" }));
const information_for_contributors$2 = [
  "This file has been converted from https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScriptReact.tmLanguage",
  "If you want to provide a fix or improvement, please create a pull request against the original repository.",
  "Once accepted there, we are happy to receive an update request."
];
const version$2 = "https://github.com/microsoft/TypeScript-TmLanguage/commit/33d8371c344f0b54746586313a939f742f9bcd3a";
const name$5 = "tsx";
const scopeName$4 = "source.tsx";
const patterns$4 = [
  {
    include: "#directives"
  },
  {
    include: "#statements"
  },
  {
    include: "#shebang"
  }
];
const repository$4 = {
  shebang: {
    name: "comment.line.shebang.tsx",
    match: "\\A(#!).*(?=$)",
    captures: {
      "1": {
        name: "punctuation.definition.comment.tsx"
      }
    }
  },
  statements: {
    patterns: [
      {
        include: "#declaration"
      },
      {
        include: "#control-statement"
      },
      {
        include: "#after-operator-block-as-object-literal"
      },
      {
        include: "#decl-block"
      },
      {
        include: "#label"
      },
      {
        include: "#expression"
      },
      {
        include: "#punctuation-semicolon"
      },
      {
        include: "#string"
      },
      {
        include: "#comment"
      }
    ]
  },
  declaration: {
    patterns: [
      {
        include: "#decorator"
      },
      {
        include: "#var-expr"
      },
      {
        include: "#function-declaration"
      },
      {
        include: "#class-declaration"
      },
      {
        include: "#interface-declaration"
      },
      {
        include: "#enum-declaration"
      },
      {
        include: "#namespace-declaration"
      },
      {
        include: "#type-alias-declaration"
      },
      {
        include: "#import-equals-declaration"
      },
      {
        include: "#import-declaration"
      },
      {
        include: "#export-declaration"
      },
      {
        name: "storage.modifier.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "control-statement": {
    patterns: [
      {
        include: "#switch-statement"
      },
      {
        include: "#for-loop"
      },
      {
        name: "keyword.control.trycatch.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.control.loop.tsx"
          },
          "2": {
            name: "entity.name.label.tsx"
          }
        }
      },
      {
        name: "keyword.control.loop.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "0": {
            name: "keyword.control.flow.tsx"
          }
        },
        end: "(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "keyword.control.switch.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#if-statement"
      },
      {
        name: "keyword.control.conditional.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.control.with.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.control.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.other.debugger.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  label: {
    patterns: [
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*\\{)",
        beginCaptures: {
          "1": {
            name: "entity.name.label.tsx"
          },
          "2": {
            name: "punctuation.separator.label.tsx"
          }
        },
        end: "(?<=\\})",
        patterns: [
          {
            include: "#decl-block"
          }
        ]
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)",
        captures: {
          "1": {
            name: "entity.name.label.tsx"
          },
          "2": {
            name: "punctuation.separator.label.tsx"
          }
        }
      }
    ]
  },
  expression: {
    patterns: [
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        include: "#identifiers"
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  expressionWithoutIdentifiers: {
    patterns: [
      {
        include: "#jsx"
      },
      {
        include: "#string"
      },
      {
        include: "#regex"
      },
      {
        include: "#comment"
      },
      {
        include: "#function-expression"
      },
      {
        include: "#class-expression"
      },
      {
        include: "#arrow-function"
      },
      {
        include: "#paren-expression-possibly-arrow"
      },
      {
        include: "#cast"
      },
      {
        include: "#ternary-expression"
      },
      {
        include: "#new-expr"
      },
      {
        include: "#instanceof-expr"
      },
      {
        include: "#object-literal"
      },
      {
        include: "#expression-operators"
      },
      {
        include: "#function-call"
      },
      {
        include: "#literal"
      },
      {
        include: "#support-objects"
      },
      {
        include: "#paren-expression"
      }
    ]
  },
  expressionPunctuations: {
    patterns: [
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-accessor"
      }
    ]
  },
  decorator: {
    name: "meta.decorator.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@",
    beginCaptures: {
      "0": {
        name: "punctuation.decorator.tsx"
      }
    },
    end: "(?=\\s)",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "var-expr": {
    patterns: [
      {
        name: "meta.var.expr.tsx",
        begin: "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
        end: "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|((?<!^let|[^\\._$[:alnum:]]let|^var|[^\\._$[:alnum:]]var)(?=\\s*$)))",
        patterns: [
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
            beginCaptures: {
              "1": {
                name: "keyword.control.export.tsx"
              },
              "2": {
                name: "storage.modifier.tsx"
              },
              "3": {
                name: "storage.type.tsx"
              }
            },
            end: "(?=\\S)"
          },
          {
            include: "#destructuring-variable"
          },
          {
            include: "#var-single-variable"
          },
          {
            include: "#variable-initializer"
          },
          {
            include: "#comment"
          },
          {
            begin: "(,)\\s*((?!\\S)|(?=\\/\\/))",
            beginCaptures: {
              "1": {
                name: "punctuation.separator.comma.tsx"
              }
            },
            end: "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
            patterns: [
              {
                include: "#single-line-comment-consuming-line-ending"
              },
              {
                include: "#comment"
              },
              {
                include: "#destructuring-variable"
              },
              {
                include: "#var-single-variable"
              },
              {
                include: "#punctuation-comma"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      },
      {
        name: "meta.var.expr.tsx",
        begin: "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.tsx"
          },
          "2": {
            name: "storage.modifier.tsx"
          },
          "3": {
            name: "storage.type.tsx"
          }
        },
        end: "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|((?<!^const|[^\\._$[:alnum:]]const)(?=\\s*$)))",
        patterns: [
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
            beginCaptures: {
              "1": {
                name: "keyword.control.export.tsx"
              },
              "2": {
                name: "storage.modifier.tsx"
              },
              "3": {
                name: "storage.type.tsx"
              }
            },
            end: "(?=\\S)"
          },
          {
            include: "#destructuring-const"
          },
          {
            include: "#var-single-const"
          },
          {
            include: "#variable-initializer"
          },
          {
            include: "#comment"
          },
          {
            begin: "(,)\\s*((?!\\S)|(?=\\/\\/))",
            beginCaptures: {
              "1": {
                name: "punctuation.separator.comma.tsx"
              }
            },
            end: "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
            patterns: [
              {
                include: "#single-line-comment-consuming-line-ending"
              },
              {
                include: "#comment"
              },
              {
                include: "#destructuring-const"
              },
              {
                include: "#var-single-const"
              },
              {
                include: "#punctuation-comma"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "var-single-variable": {
    patterns: [
      {
        name: "meta.var-single-variable.expr.tsx",
        begin: "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\!)?(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.tsx entity.name.function.tsx"
          },
          "2": {
            name: "keyword.operator.definiteassignment.tsx"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.tsx",
        begin: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\!)?",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.tsx variable.other.constant.tsx"
          },
          "2": {
            name: "keyword.operator.definiteassignment.tsx"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.tsx",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)(\\!)?",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.tsx variable.other.readwrite.tsx"
          },
          "2": {
            name: "keyword.operator.definiteassignment.tsx"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      }
    ]
  },
  "var-single-const": {
    patterns: [
      {
        name: "meta.var-single-variable.expr.tsx",
        begin: "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.tsx variable.other.constant.tsx entity.name.function.tsx"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.tsx",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.tsx variable.other.constant.tsx"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      }
    ]
  },
  "var-single-variable-type-annotation": {
    patterns: [
      {
        include: "#type-annotation"
      },
      {
        include: "#string"
      },
      {
        include: "#comment"
      }
    ]
  },
  "destructuring-variable": {
    patterns: [
      {
        name: "meta.object-binding-pattern-variable.tsx",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#object-binding-pattern"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      },
      {
        name: "meta.array-binding-pattern-variable.tsx",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#array-binding-pattern"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      }
    ]
  },
  "destructuring-const": {
    patterns: [
      {
        name: "meta.object-binding-pattern-variable.tsx",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#object-binding-pattern-const"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      },
      {
        name: "meta.array-binding-pattern-variable.tsx",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#array-binding-pattern-const"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      }
    ]
  },
  "object-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#binding-element"
          }
        ]
      },
      {
        include: "#object-binding-pattern"
      },
      {
        include: "#destructuring-variable-rest"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "object-binding-element-const": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#binding-element-const"
          }
        ]
      },
      {
        include: "#object-binding-pattern-const"
      },
      {
        include: "#destructuring-variable-rest-const"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "object-binding-element-propertyName": {
    begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
    end: "(:)",
    endCaptures: {
      "0": {
        name: "punctuation.destructuring.tsx"
      }
    },
    patterns: [
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        name: "variable.object.property.tsx",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#object-binding-pattern"
      },
      {
        include: "#array-binding-pattern"
      },
      {
        include: "#destructuring-variable-rest"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "binding-element-const": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#object-binding-pattern-const"
      },
      {
        include: "#array-binding-pattern-const"
      },
      {
        include: "#destructuring-variable-rest-const"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "destructuring-variable-rest": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.tsx"
      },
      "2": {
        name: "meta.definition.variable.tsx variable.other.readwrite.tsx"
      }
    }
  },
  "destructuring-variable-rest-const": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.tsx"
      },
      "2": {
        name: "meta.definition.variable.tsx variable.other.constant.tsx"
      }
    }
  },
  "object-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.tsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.tsx"
      }
    },
    patterns: [
      {
        include: "#object-binding-element"
      }
    ]
  },
  "object-binding-pattern-const": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.tsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.tsx"
      }
    },
    patterns: [
      {
        include: "#object-binding-element-const"
      }
    ]
  },
  "array-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.tsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.tsx"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.tsx"
      }
    },
    patterns: [
      {
        include: "#binding-element"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "array-binding-pattern-const": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.tsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.tsx"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.tsx"
      }
    },
    patterns: [
      {
        include: "#binding-element-const"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "parameter-name": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
        captures: {
          "1": {
            name: "storage.modifier.tsx"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "storage.modifier.tsx"
          },
          "2": {
            name: "keyword.operator.rest.tsx"
          },
          "3": {
            name: "entity.name.function.tsx variable.language.this.tsx"
          },
          "4": {
            name: "entity.name.function.tsx"
          },
          "5": {
            name: "keyword.operator.optional.tsx"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)",
        captures: {
          "1": {
            name: "storage.modifier.tsx"
          },
          "2": {
            name: "keyword.operator.rest.tsx"
          },
          "3": {
            name: "variable.parameter.tsx variable.language.this.tsx"
          },
          "4": {
            name: "variable.parameter.tsx"
          },
          "5": {
            name: "keyword.operator.optional.tsx"
          }
        }
      }
    ]
  },
  "destructuring-parameter": {
    patterns: [
      {
        name: "meta.parameter.object-binding-pattern.tsx",
        begin: "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\{)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.rest.tsx"
          },
          "2": {
            name: "punctuation.definition.binding-pattern.object.tsx"
          }
        },
        end: "\\}",
        endCaptures: {
          "0": {
            name: "punctuation.definition.binding-pattern.object.tsx"
          }
        },
        patterns: [
          {
            include: "#parameter-object-binding-element"
          }
        ]
      },
      {
        name: "meta.paramter.array-binding-pattern.tsx",
        begin: "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\[)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.rest.tsx"
          },
          "2": {
            name: "punctuation.definition.binding-pattern.array.tsx"
          }
        },
        end: "\\]",
        endCaptures: {
          "0": {
            name: "punctuation.definition.binding-pattern.array.tsx"
          }
        },
        patterns: [
          {
            include: "#parameter-binding-element"
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "parameter-object-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#parameter-binding-element"
          }
        ]
      },
      {
        include: "#parameter-object-binding-pattern"
      },
      {
        include: "#destructuring-parameter-rest"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "parameter-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#parameter-object-binding-pattern"
      },
      {
        include: "#parameter-array-binding-pattern"
      },
      {
        include: "#destructuring-parameter-rest"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "destructuring-parameter-rest": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.tsx"
      },
      "2": {
        name: "variable.parameter.tsx"
      }
    }
  },
  "parameter-object-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.tsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.tsx"
      }
    },
    patterns: [
      {
        include: "#parameter-object-binding-element"
      }
    ]
  },
  "parameter-array-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.tsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.tsx"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.tsx"
      }
    },
    patterns: [
      {
        include: "#parameter-binding-element"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "field-declaration": {
    name: "meta.field.declaration.tsx",
    begin: "(?x)(?<!\\()(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s+)?(?=\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|\\}|$))",
    beginCaptures: {
      "1": {
        name: "storage.modifier.tsx"
      }
    },
    end: "(?x)(?=\\}|;|,|$|(^(?!\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|$))))|(?<=\\})",
    patterns: [
      {
        include: "#variable-initializer"
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#comment"
      },
      {
        match: "(?x)(\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\?)|(\\!))?(?=\\s*\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "meta.definition.property.tsx entity.name.function.tsx"
          },
          "2": {
            name: "keyword.operator.optional.tsx"
          },
          "3": {
            name: "keyword.operator.definiteassignment.tsx"
          }
        }
      },
      {
        name: "meta.definition.property.tsx variable.object.property.tsx",
        match: "\\#?[_$[:alpha:]][_$[:alnum:]]*"
      },
      {
        name: "keyword.operator.optional.tsx",
        match: "\\?"
      },
      {
        name: "keyword.operator.definiteassignment.tsx",
        match: "\\!"
      }
    ]
  },
  "variable-initializer": {
    patterns: [
      {
        begin: "(?<!=|!)(=)(?!=)(?=\\s*\\S)(?!\\s*.*=>\\s*$)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.tsx"
          }
        },
        end: "(?=$|^|[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        begin: "(?<!=|!)(=)(?!=)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.tsx"
          }
        },
        end: "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<=\\S)(?<!=)(?=\\s*$)",
        patterns: [
          {
            include: "#expression"
          }
        ]
      }
    ]
  },
  "function-declaration": {
    name: "meta.function.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.tsx"
      },
      "2": {
        name: "storage.modifier.tsx"
      },
      "3": {
        name: "storage.modifier.async.tsx"
      },
      "4": {
        name: "storage.type.function.tsx"
      },
      "5": {
        name: "keyword.generator.asterisk.tsx"
      },
      "6": {
        name: "meta.definition.function.tsx entity.name.function.tsx"
      }
    },
    end: "(?=;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|(?<=\\})",
    patterns: [
      {
        include: "#function-name"
      },
      {
        include: "#function-body"
      }
    ]
  },
  "function-expression": {
    name: "meta.function.expression.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
    beginCaptures: {
      "1": {
        name: "storage.modifier.async.tsx"
      },
      "2": {
        name: "storage.type.function.tsx"
      },
      "3": {
        name: "keyword.generator.asterisk.tsx"
      },
      "4": {
        name: "meta.definition.function.tsx entity.name.function.tsx"
      }
    },
    end: "(?=;)|(?<=\\})",
    patterns: [
      {
        include: "#function-name"
      },
      {
        include: "#single-line-comment-consuming-line-ending"
      },
      {
        include: "#function-body"
      }
    ]
  },
  "function-name": {
    name: "meta.definition.function.tsx entity.name.function.tsx",
    match: "[_$[:alpha:]][_$[:alnum:]]*"
  },
  "function-body": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#function-parameters"
      },
      {
        include: "#return-type"
      },
      {
        include: "#type-function-return-type"
      },
      {
        include: "#decl-block"
      },
      {
        name: "keyword.generator.asterisk.tsx",
        match: "\\*"
      }
    ]
  },
  "method-declaration": {
    patterns: [
      {
        name: "meta.method.declaration.tsx",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?\\s*\\b(constructor)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "1": {
            name: "storage.modifier.tsx"
          },
          "2": {
            name: "storage.modifier.tsx"
          },
          "3": {
            name: "storage.modifier.tsx"
          },
          "4": {
            name: "storage.modifier.async.tsx"
          },
          "5": {
            name: "storage.type.tsx"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.method.declaration.tsx",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:(?:\\s*\\b(new)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|(?:(\\*)\\s*)?)(?=\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.tsx"
          },
          "2": {
            name: "storage.modifier.tsx"
          },
          "3": {
            name: "storage.modifier.tsx"
          },
          "4": {
            name: "storage.modifier.async.tsx"
          },
          "5": {
            name: "keyword.operator.new.tsx"
          },
          "6": {
            name: "keyword.generator.asterisk.tsx"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.method.declaration.tsx",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.tsx"
          },
          "2": {
            name: "storage.modifier.tsx"
          },
          "3": {
            name: "storage.modifier.tsx"
          },
          "4": {
            name: "storage.modifier.async.tsx"
          },
          "5": {
            name: "storage.type.property.tsx"
          },
          "6": {
            name: "keyword.generator.asterisk.tsx"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      }
    ]
  },
  "object-literal-method-declaration": {
    name: "meta.method.declaration.tsx",
    begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
    beginCaptures: {
      "1": {
        name: "storage.modifier.async.tsx"
      },
      "2": {
        name: "storage.type.property.tsx"
      },
      "3": {
        name: "keyword.generator.asterisk.tsx"
      }
    },
    end: "(?=\\}|;|,)|(?<=\\})",
    patterns: [
      {
        include: "#method-declaration-name"
      },
      {
        include: "#function-body"
      },
      {
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.tsx"
          },
          "2": {
            name: "storage.type.property.tsx"
          },
          "3": {
            name: "keyword.generator.asterisk.tsx"
          }
        },
        end: "(?=\\(|\\<)",
        patterns: [
          {
            include: "#method-declaration-name"
          }
        ]
      }
    ]
  },
  "method-declaration-name": {
    begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])",
    end: "(?=\\(|\\<)",
    patterns: [
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        name: "meta.definition.method.tsx entity.name.function.tsx",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      },
      {
        name: "keyword.operator.optional.tsx",
        match: "\\?"
      }
    ]
  },
  "arrow-function": {
    patterns: [
      {
        name: "meta.arrow.tsx",
        match: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)",
        captures: {
          "1": {
            name: "storage.modifier.async.tsx"
          },
          "2": {
            name: "variable.parameter.tsx"
          }
        }
      },
      {
        name: "meta.arrow.tsx",
        begin: "(?x) (?:\n  (?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\n)? ((?<![})!\\]])\\s*\n  (?=\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  )\n)",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.tsx"
          }
        },
        end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-parameters"
          },
          {
            include: "#function-parameters"
          },
          {
            include: "#arrow-return-type"
          },
          {
            include: "#possibly-arrow-return-type"
          }
        ]
      },
      {
        name: "meta.arrow.tsx",
        begin: "=>",
        beginCaptures: {
          "0": {
            name: "storage.type.function.arrow.tsx"
          }
        },
        end: "((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",
        patterns: [
          {
            include: "#single-line-comment-consuming-line-ending"
          },
          {
            include: "#decl-block"
          },
          {
            include: "#expression"
          }
        ]
      }
    ]
  },
  "indexer-declaration": {
    name: "meta.indexer.declaration.tsx",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)",
    beginCaptures: {
      "1": {
        name: "storage.modifier.tsx"
      },
      "2": {
        name: "meta.brace.square.tsx"
      },
      "3": {
        name: "variable.parameter.tsx"
      }
    },
    end: "(\\])\\s*(\\?\\s*)?|$",
    endCaptures: {
      "1": {
        name: "meta.brace.square.tsx"
      },
      "2": {
        name: "keyword.operator.optional.tsx"
      }
    },
    patterns: [
      {
        include: "#type-annotation"
      }
    ]
  },
  "indexer-mapped-type-declaration": {
    name: "meta.indexer.mappedtype.declaration.tsx",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([+-])?(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s+(in)\\s+",
    beginCaptures: {
      "1": {
        name: "keyword.operator.type.modifier.tsx"
      },
      "2": {
        name: "storage.modifier.tsx"
      },
      "3": {
        name: "meta.brace.square.tsx"
      },
      "4": {
        name: "entity.name.type.tsx"
      },
      "5": {
        name: "keyword.operator.expression.in.tsx"
      }
    },
    end: "(\\])([+-])?\\s*(\\?\\s*)?|$",
    endCaptures: {
      "1": {
        name: "meta.brace.square.tsx"
      },
      "2": {
        name: "keyword.operator.type.modifier.tsx"
      },
      "3": {
        name: "keyword.operator.optional.tsx"
      }
    },
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        captures: {
          "1": {
            name: "keyword.control.as.tsx"
          }
        }
      },
      {
        include: "#type"
      }
    ]
  },
  "function-parameters": {
    name: "meta.parameters.tsx",
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.parameters.begin.tsx"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "punctuation.definition.parameters.end.tsx"
      }
    },
    patterns: [
      {
        include: "#function-parameters-body"
      }
    ]
  },
  "function-parameters-body": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#decorator"
      },
      {
        include: "#destructuring-parameter"
      },
      {
        include: "#parameter-name"
      },
      {
        include: "#parameter-type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        name: "punctuation.separator.parameter.tsx",
        match: ","
      }
    ]
  },
  "class-declaration": {
    name: "meta.class.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.tsx"
      },
      "2": {
        name: "storage.modifier.tsx"
      },
      "3": {
        name: "storage.modifier.tsx"
      },
      "4": {
        name: "storage.type.class.tsx"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#class-declaration-or-expression-patterns"
      }
    ]
  },
  "class-expression": {
    name: "meta.class.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])",
    beginCaptures: {
      "1": {
        name: "storage.modifier.tsx"
      },
      "2": {
        name: "storage.type.class.tsx"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#class-declaration-or-expression-patterns"
      }
    ]
  },
  "class-declaration-or-expression-patterns": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        match: "[_$[:alpha:]][_$[:alnum:]]*",
        captures: {
          "0": {
            name: "entity.name.type.class.tsx"
          }
        }
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#class-or-interface-body"
      }
    ]
  },
  "interface-declaration": {
    name: "meta.interface.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.tsx"
      },
      "2": {
        name: "storage.modifier.tsx"
      },
      "3": {
        name: "storage.modifier.tsx"
      },
      "4": {
        name: "storage.type.interface.tsx"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        match: "[_$[:alpha:]][_$[:alnum:]]*",
        captures: {
          "0": {
            name: "entity.name.type.interface.tsx"
          }
        }
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#class-or-interface-body"
      }
    ]
  },
  "class-or-interface-heritage": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(extends|implements)\\b)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "storage.modifier.tsx"
      }
    },
    end: "(?=\\{)",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)",
        captures: {
          "1": {
            name: "entity.name.type.module.tsx"
          },
          "2": {
            name: "punctuation.accessor.tsx"
          },
          "3": {
            name: "punctuation.accessor.optional.tsx"
          }
        }
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "entity.other.inherited-class.tsx"
          }
        }
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  "class-or-interface-body": {
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#decorator"
      },
      {
        begin: "(?<=:)\\s*",
        end: "(?=\\s|[;),}\\]:\\-\\+]|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        include: "#method-declaration"
      },
      {
        include: "#indexer-declaration"
      },
      {
        include: "#field-declaration"
      },
      {
        include: "#string"
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#access-modifier"
      },
      {
        include: "#property-accessor"
      },
      {
        include: "#async-modifier"
      },
      {
        include: "#after-operator-block-as-object-literal"
      },
      {
        include: "#decl-block"
      },
      {
        include: "#expression"
      },
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-semicolon"
      }
    ]
  },
  "access-modifier": {
    name: "storage.modifier.tsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "property-accessor": {
    name: "storage.type.property.tsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "async-modifier": {
    name: "storage.modifier.async.tsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "enum-declaration": {
    name: "meta.enum.declaration.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.tsx"
      },
      "2": {
        name: "storage.modifier.tsx"
      },
      "3": {
        name: "storage.modifier.tsx"
      },
      "4": {
        name: "storage.type.enum.tsx"
      },
      "5": {
        name: "entity.name.type.enum.tsx"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "\\{",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.block.tsx"
          }
        },
        end: "\\}",
        endCaptures: {
          "0": {
            name: "punctuation.definition.block.tsx"
          }
        },
        patterns: [
          {
            include: "#comment"
          },
          {
            begin: "([_$[:alpha:]][_$[:alnum:]]*)",
            beginCaptures: {
              "0": {
                name: "variable.other.enummember.tsx"
              }
            },
            end: "(?=,|\\}|$)",
            patterns: [
              {
                include: "#comment"
              },
              {
                include: "#variable-initializer"
              }
            ]
          },
          {
            begin: "(?=((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))",
            end: "(?=,|\\}|$)",
            patterns: [
              {
                include: "#string"
              },
              {
                include: "#array-literal"
              },
              {
                include: "#comment"
              },
              {
                include: "#variable-initializer"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "namespace-declaration": {
    name: "meta.namespace.declaration.tsx",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`]))",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.tsx"
      },
      "2": {
        name: "storage.modifier.tsx"
      },
      "3": {
        name: "storage.type.namespace.tsx"
      }
    },
    end: "(?<=\\})|(?=;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        name: "entity.name.type.module.tsx",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      },
      {
        include: "#punctuation-accessor"
      },
      {
        include: "#decl-block"
      }
    ]
  },
  "type-alias-declaration": {
    name: "meta.type.declaration.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(type)\\b\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.tsx"
      },
      "2": {
        name: "storage.modifier.tsx"
      },
      "3": {
        name: "storage.type.type.tsx"
      },
      "4": {
        name: "entity.name.type.alias.tsx"
      }
    },
    end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-parameters"
      },
      {
        begin: "(=)\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.tsx"
          },
          "2": {
            name: "keyword.control.intrinsic.tsx"
          }
        },
        end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        begin: "(=)\\s*",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.tsx"
          }
        },
        end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "import-equals-declaration": {
    patterns: [
      {
        name: "meta.import-equals.external.tsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(require)\\s*(\\()",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.tsx"
          },
          "2": {
            name: "storage.modifier.tsx"
          },
          "3": {
            name: "keyword.control.import.tsx"
          },
          "4": {
            name: "keyword.control.type.tsx"
          },
          "5": {
            name: "variable.other.readwrite.alias.tsx"
          },
          "6": {
            name: "keyword.operator.assignment.tsx"
          },
          "7": {
            name: "keyword.control.require.tsx"
          },
          "8": {
            name: "meta.brace.round.tsx"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.tsx"
          }
        },
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#string"
          }
        ]
      },
      {
        name: "meta.import-equals.internal.tsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(?!require\\b)",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.tsx"
          },
          "2": {
            name: "storage.modifier.tsx"
          },
          "3": {
            name: "keyword.control.import.tsx"
          },
          "4": {
            name: "keyword.control.type.tsx"
          },
          "5": {
            name: "variable.other.readwrite.alias.tsx"
          },
          "6": {
            name: "keyword.operator.assignment.tsx"
          }
        },
        end: "(?=;|$|^)",
        patterns: [
          {
            include: "#single-line-comment-consuming-line-ending"
          },
          {
            include: "#comment"
          },
          {
            match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
            captures: {
              "1": {
                name: "entity.name.type.module.tsx"
              },
              "2": {
                name: "punctuation.accessor.tsx"
              },
              "3": {
                name: "punctuation.accessor.optional.tsx"
              }
            }
          },
          {
            name: "variable.other.readwrite.tsx",
            match: "([_$[:alpha:]][_$[:alnum:]]*)"
          }
        ]
      }
    ]
  },
  "import-declaration": {
    name: "meta.import.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type)(?!\\s+from))?(?!\\s*[:\\(])(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.tsx"
      },
      "2": {
        name: "storage.modifier.tsx"
      },
      "3": {
        name: "keyword.control.import.tsx"
      },
      "4": {
        name: "keyword.control.type.tsx"
      }
    },
    end: "(?<!^import|[^\\._$[:alnum:]]import)(?=;|$|^)",
    patterns: [
      {
        include: "#single-line-comment-consuming-line-ending"
      },
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        begin: `(?<=^import|[^\\._$[:alnum:]]import)(?!\\s*["'])`,
        end: "\\bfrom\\b",
        endCaptures: {
          "0": {
            name: "keyword.control.from.tsx"
          }
        },
        patterns: [
          {
            include: "#import-export-declaration"
          }
        ]
      },
      {
        include: "#import-export-declaration"
      }
    ]
  },
  "export-declaration": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "keyword.control.export.tsx"
          },
          "2": {
            name: "keyword.control.as.tsx"
          },
          "3": {
            name: "storage.type.namespace.tsx"
          },
          "4": {
            name: "entity.name.type.module.tsx"
          }
        }
      },
      {
        name: "meta.export.default.tsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.tsx"
          },
          "2": {
            name: "keyword.control.type.tsx"
          },
          "3": {
            name: "keyword.operator.assignment.tsx"
          },
          "4": {
            name: "keyword.control.default.tsx"
          }
        },
        end: "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#interface-declaration"
          },
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.export.tsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?\\b(?!(\\$)|(\\s*:))((?=\\s*[\\{*])|((?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s|,))(?!\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.tsx"
          },
          "2": {
            name: "keyword.control.type.tsx"
          }
        },
        end: "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#import-export-declaration"
          }
        ]
      }
    ]
  },
  "import-export-declaration": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#import-export-block"
      },
      {
        name: "keyword.control.from.tsx",
        match: "\\bfrom\\b"
      },
      {
        include: "#import-export-clause"
      }
    ]
  },
  "import-export-block": {
    name: "meta.block.tsx",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    patterns: [
      {
        include: "#import-export-clause"
      }
    ]
  },
  "import-export-clause": {
    patterns: [
      {
        include: "#comment"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*))",
        captures: {
          "1": {
            name: "keyword.control.default.tsx"
          },
          "2": {
            name: "constant.language.import-export-all.tsx"
          },
          "3": {
            name: "variable.other.readwrite.tsx"
          },
          "4": {
            name: "keyword.control.as.tsx"
          },
          "5": {
            name: "keyword.control.default.tsx"
          },
          "6": {
            name: "variable.other.readwrite.alias.tsx"
          }
        }
      },
      {
        include: "#punctuation-comma"
      },
      {
        name: "constant.language.import-export-all.tsx",
        match: "\\*"
      },
      {
        name: "keyword.control.default.tsx",
        match: "\\b(default)\\b"
      },
      {
        name: "variable.other.readwrite.alias.tsx",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "switch-statement": {
    name: "switch-statement.expr.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()",
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "switch-expression.expr.tsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(switch)\\s*(\\()",
        beginCaptures: {
          "1": {
            name: "keyword.control.switch.tsx"
          },
          "2": {
            name: "meta.brace.round.tsx"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.tsx"
          }
        },
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "switch-block.expr.tsx",
        begin: "\\{",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.block.tsx"
          }
        },
        end: "(?=\\})",
        patterns: [
          {
            name: "case-clause.expr.tsx",
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
            beginCaptures: {
              "1": {
                name: "keyword.control.switch.tsx"
              }
            },
            end: "(?=:)",
            patterns: [
              {
                include: "#expression"
              }
            ]
          },
          {
            begin: "(:)\\s*(\\{)",
            beginCaptures: {
              "1": {
                name: "case-clause.expr.tsx punctuation.definition.section.case-statement.tsx"
              },
              "2": {
                name: "meta.block.tsx punctuation.definition.block.tsx"
              }
            },
            end: "\\}",
            endCaptures: {
              "0": {
                name: "meta.block.tsx punctuation.definition.block.tsx"
              }
            },
            contentName: "meta.block.tsx",
            patterns: [
              {
                include: "#statements"
              }
            ]
          },
          {
            match: "(:)",
            captures: {
              "0": {
                name: "case-clause.expr.tsx punctuation.definition.section.case-statement.tsx"
              }
            }
          },
          {
            include: "#statements"
          }
        ]
      }
    ]
  },
  "for-loop": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())",
    beginCaptures: {
      "0": {
        name: "keyword.control.loop.tsx"
      }
    },
    end: "(?<=\\))",
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "keyword.control.loop.tsx",
        match: "await"
      },
      {
        begin: "\\(",
        beginCaptures: {
          "0": {
            name: "meta.brace.round.tsx"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.tsx"
          }
        },
        patterns: [
          {
            include: "#var-expr"
          },
          {
            include: "#expression"
          },
          {
            include: "#punctuation-semicolon"
          }
        ]
      }
    ]
  },
  "if-statement": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bif\\s*(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))\\s*(?!\\{))",
        end: "(?=;|$|\\})",
        patterns: [
          {
            include: "#comment"
          },
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(if)\\s*(\\()",
            beginCaptures: {
              "1": {
                name: "keyword.control.conditional.tsx"
              },
              "2": {
                name: "meta.brace.round.tsx"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.tsx"
              }
            },
            patterns: [
              {
                include: "#expression"
              }
            ]
          },
          {
            name: "string.regexp.tsx",
            begin: "(?<=\\))\\s*\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
            beginCaptures: {
              "0": {
                name: "punctuation.definition.string.begin.tsx"
              }
            },
            end: "(/)([dgimsuy]*)",
            endCaptures: {
              "1": {
                name: "punctuation.definition.string.end.tsx"
              },
              "2": {
                name: "keyword.other.tsx"
              }
            },
            patterns: [
              {
                include: "#regexp"
              }
            ]
          },
          {
            include: "#statements"
          }
        ]
      }
    ]
  },
  "decl-block": {
    name: "meta.block.tsx",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    patterns: [
      {
        include: "#statements"
      }
    ]
  },
  "after-operator-block-as-object-literal": {
    name: "meta.objectliteral.tsx",
    begin: "(?<!\\+\\+|--)(?<=[:=(,\\[?+!>]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.block.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    patterns: [
      {
        include: "#object-member"
      }
    ]
  },
  "object-literal": {
    name: "meta.objectliteral.tsx",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    patterns: [
      {
        include: "#object-member"
      }
    ]
  },
  "object-member": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#object-literal-method-declaration"
      },
      {
        name: "meta.object.member.tsx meta.object-literal.key.tsx",
        begin: "(?=\\[)",
        end: "(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#array-literal"
          }
        ]
      },
      {
        name: "meta.object.member.tsx meta.object-literal.key.tsx",
        begin: "(?=[\\'\\\"\\`])",
        end: "(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as)\\s+))))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#string"
          }
        ]
      },
      {
        name: "meta.object.member.tsx meta.object-literal.key.tsx",
        begin: "(?x)(?=(\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$)))",
        end: "(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as\\s+))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#numeric-literal"
          }
        ]
      },
      {
        name: "meta.method.declaration.tsx",
        begin: "(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])",
        end: "(?=\\}|;|,)|(?<=\\})",
        patterns: [
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.object.member.tsx",
        match: "(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
        captures: {
          "0": {
            name: "meta.object-literal.key.tsx"
          },
          "1": {
            name: "constant.numeric.decimal.tsx"
          }
        }
      },
      {
        name: "meta.object.member.tsx",
        match: "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "0": {
            name: "meta.object-literal.key.tsx"
          },
          "1": {
            name: "entity.name.function.tsx"
          }
        }
      },
      {
        name: "meta.object.member.tsx",
        match: "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
        captures: {
          "0": {
            name: "meta.object-literal.key.tsx"
          }
        }
      },
      {
        name: "meta.object.member.tsx",
        begin: "\\.\\.\\.",
        beginCaptures: {
          "0": {
            name: "keyword.operator.spread.tsx"
          }
        },
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.object.member.tsx",
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",
        captures: {
          "1": {
            name: "variable.other.readwrite.tsx"
          }
        }
      },
      {
        name: "meta.object.member.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))",
        captures: {
          "1": {
            name: "keyword.control.as.tsx"
          },
          "2": {
            name: "storage.modifier.tsx"
          }
        }
      },
      {
        name: "meta.object.member.tsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        beginCaptures: {
          "1": {
            name: "keyword.control.as.tsx"
          }
        },
        end: "(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "meta.object.member.tsx",
        begin: "(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",
        end: "(?=,|\\}|$|\\/\\/|\\/\\*)",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.object.member.tsx",
        begin: ":",
        beginCaptures: {
          "0": {
            name: "meta.object-literal.key.tsx punctuation.separator.key-value.tsx"
          }
        },
        end: "(?=,|\\})",
        patterns: [
          {
            begin: "(?<=:)\\s*(async)?(?=\\s*(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.tsx"
              }
            },
            end: "(?<=\\))",
            patterns: [
              {
                include: "#type-parameters"
              },
              {
                begin: "\\(",
                beginCaptures: {
                  "0": {
                    name: "meta.brace.round.tsx"
                  }
                },
                end: "\\)",
                endCaptures: {
                  "0": {
                    name: "meta.brace.round.tsx"
                  }
                },
                patterns: [
                  {
                    include: "#expression-inside-possibly-arrow-parens"
                  }
                ]
              }
            ]
          },
          {
            begin: "(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.tsx"
              },
              "2": {
                name: "meta.brace.round.tsx"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.tsx"
              }
            },
            patterns: [
              {
                include: "#expression-inside-possibly-arrow-parens"
              }
            ]
          },
          {
            begin: "(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.tsx"
              }
            },
            end: "(?<=\\>)",
            patterns: [
              {
                include: "#type-parameters"
              }
            ]
          },
          {
            begin: "(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "meta.brace.round.tsx"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.tsx"
              }
            },
            patterns: [
              {
                include: "#expression-inside-possibly-arrow-parens"
              }
            ]
          },
          {
            include: "#possibly-arrow-return-type"
          },
          {
            include: "#expression"
          }
        ]
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "ternary-expression": {
    begin: "(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.ternary.tsx"
      }
    },
    end: "\\s*(:)",
    endCaptures: {
      "1": {
        name: "keyword.operator.ternary.tsx"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "function-call": {
    patterns: [
      {
        begin: "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
        end: "(?<=\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
        patterns: [
          {
            name: "meta.function-call.tsx",
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
            patterns: [
              {
                include: "#function-call-target"
              }
            ]
          },
          {
            include: "#comment"
          },
          {
            include: "#function-call-optionals"
          },
          {
            include: "#type-arguments"
          },
          {
            include: "#paren-expression"
          }
        ]
      },
      {
        begin: "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
        end: "(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
        patterns: [
          {
            name: "meta.function-call.tsx",
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=(<\\s*[\\{\\[\\(]\\s*$))",
            patterns: [
              {
                include: "#function-call-target"
              }
            ]
          },
          {
            include: "#comment"
          },
          {
            include: "#function-call-optionals"
          },
          {
            include: "#type-arguments"
          }
        ]
      }
    ]
  },
  "function-call-target": {
    patterns: [
      {
        include: "#support-function-call-identifiers"
      },
      {
        name: "entity.name.function.tsx",
        match: "(\\#?[_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "function-call-optionals": {
    patterns: [
      {
        name: "meta.function-call.tsx punctuation.accessor.optional.tsx",
        match: "\\?\\."
      },
      {
        name: "meta.function-call.tsx keyword.operator.definiteassignment.tsx",
        match: "\\!"
      }
    ]
  },
  "support-function-call-identifiers": {
    patterns: [
      {
        include: "#literal"
      },
      {
        include: "#support-objects"
      },
      {
        include: "#object-identifiers"
      },
      {
        include: "#punctuation-accessor"
      },
      {
        name: "keyword.operator.expression.import.tsx",
        match: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))"
      }
    ]
  },
  "new-expr": {
    name: "new.expr.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.operator.new.tsx"
      }
    },
    end: "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "instanceof-expr": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.operator.expression.instanceof.tsx"
      }
    },
    end: "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
    patterns: [
      {
        include: "#type"
      }
    ]
  },
  "paren-expression-possibly-arrow": {
    patterns: [
      {
        begin: "(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.tsx"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#paren-expression-possibly-arrow-with-typeparameters"
          }
        ]
      },
      {
        begin: "(?<=[(=,]|=>|^return|[^\\._$[:alnum:]]return)\\s*(async)?(?=\\s*((((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<))\\s*$)",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.tsx"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#paren-expression-possibly-arrow-with-typeparameters"
          }
        ]
      },
      {
        include: "#possibly-arrow-return-type"
      }
    ]
  },
  "paren-expression-possibly-arrow-with-typeparameters": {
    patterns: [
      {
        include: "#type-parameters"
      },
      {
        begin: "\\(",
        beginCaptures: {
          "0": {
            name: "meta.brace.round.tsx"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.tsx"
          }
        },
        patterns: [
          {
            include: "#expression-inside-possibly-arrow-parens"
          }
        ]
      }
    ]
  },
  "expression-inside-possibly-arrow-parens": {
    patterns: [
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#decorator"
      },
      {
        include: "#destructuring-parameter"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
        captures: {
          "1": {
            name: "storage.modifier.tsx"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "storage.modifier.tsx"
          },
          "2": {
            name: "keyword.operator.rest.tsx"
          },
          "3": {
            name: "entity.name.function.tsx variable.language.this.tsx"
          },
          "4": {
            name: "entity.name.function.tsx"
          },
          "5": {
            name: "keyword.operator.optional.tsx"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)",
        captures: {
          "1": {
            name: "storage.modifier.tsx"
          },
          "2": {
            name: "keyword.operator.rest.tsx"
          },
          "3": {
            name: "variable.parameter.tsx variable.language.this.tsx"
          },
          "4": {
            name: "variable.parameter.tsx"
          },
          "5": {
            name: "keyword.operator.optional.tsx"
          }
        }
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        name: "punctuation.separator.parameter.tsx",
        match: ","
      },
      {
        include: "#identifiers"
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  "paren-expression": {
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "meta.brace.round.tsx"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "meta.brace.round.tsx"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  cast: {
    patterns: [
      {
        include: "#jsx"
      }
    ]
  },
  "expression-operators": {
    patterns: [
      {
        name: "keyword.control.flow.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?=\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*\\*)",
        beginCaptures: {
          "1": {
            name: "keyword.control.flow.tsx"
          }
        },
        end: "\\*",
        endCaptures: {
          "0": {
            name: "keyword.generator.asterisk.tsx"
          }
        },
        patterns: [
          {
            include: "#comment"
          }
        ]
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?",
        captures: {
          "1": {
            name: "keyword.control.flow.tsx"
          },
          "2": {
            name: "keyword.generator.asterisk.tsx"
          }
        }
      },
      {
        name: "keyword.operator.expression.delete.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.expression.in.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
      },
      {
        name: "keyword.operator.expression.of.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
      },
      {
        name: "keyword.operator.expression.instanceof.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.new.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#typeof-operator"
      },
      {
        name: "keyword.operator.expression.void.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))",
        captures: {
          "1": {
            name: "keyword.control.as.tsx"
          },
          "2": {
            name: "storage.modifier.tsx"
          }
        }
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        beginCaptures: {
          "1": {
            name: "keyword.control.as.tsx"
          }
        },
        end: "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+)|(\\s+\\<))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "keyword.operator.spread.tsx",
        match: "\\.\\.\\."
      },
      {
        name: "keyword.operator.assignment.compound.tsx",
        match: "\\*=|(?<!\\()/=|%=|\\+=|\\-="
      },
      {
        name: "keyword.operator.assignment.compound.bitwise.tsx",
        match: "\\&=|\\^=|<<=|>>=|>>>=|\\|="
      },
      {
        name: "keyword.operator.bitwise.shift.tsx",
        match: "<<|>>>|>>"
      },
      {
        name: "keyword.operator.comparison.tsx",
        match: "===|!==|==|!="
      },
      {
        name: "keyword.operator.relational.tsx",
        match: "<=|>=|<>|<|>"
      },
      {
        match: "(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))",
        captures: {
          "1": {
            name: "keyword.operator.logical.tsx"
          },
          "2": {
            name: "keyword.operator.assignment.compound.tsx"
          },
          "3": {
            name: "keyword.operator.arithmetic.tsx"
          }
        }
      },
      {
        name: "keyword.operator.logical.tsx",
        match: "\\!|&&|\\|\\||\\?\\?"
      },
      {
        name: "keyword.operator.bitwise.tsx",
        match: "\\&|~|\\^|\\|"
      },
      {
        name: "keyword.operator.assignment.tsx",
        match: "\\="
      },
      {
        name: "keyword.operator.decrement.tsx",
        match: "--"
      },
      {
        name: "keyword.operator.increment.tsx",
        match: "\\+\\+"
      },
      {
        name: "keyword.operator.arithmetic.tsx",
        match: "%|\\*|/|-|\\+"
      },
      {
        begin: "(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",
        end: "(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",
        endCaptures: {
          "1": {
            name: "keyword.operator.assignment.compound.tsx"
          },
          "2": {
            name: "keyword.operator.arithmetic.tsx"
          }
        },
        patterns: [
          {
            include: "#comment"
          }
        ]
      },
      {
        match: "(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))",
        captures: {
          "1": {
            name: "keyword.operator.assignment.compound.tsx"
          },
          "2": {
            name: "keyword.operator.arithmetic.tsx"
          }
        }
      }
    ]
  },
  "typeof-operator": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "0": {
        name: "keyword.operator.expression.typeof.tsx"
      }
    },
    end: "(?=[,);}\\]=>:&|{\\?]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  literal: {
    patterns: [
      {
        include: "#numeric-literal"
      },
      {
        include: "#boolean-literal"
      },
      {
        include: "#null-literal"
      },
      {
        include: "#undefined-literal"
      },
      {
        include: "#numericConstant-literal"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#this-literal"
      },
      {
        include: "#super-literal"
      }
    ]
  },
  "array-literal": {
    name: "meta.array.literal.tsx",
    begin: "\\s*(\\[)",
    beginCaptures: {
      "1": {
        name: "meta.brace.square.tsx"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "meta.brace.square.tsx"
      }
    },
    patterns: [
      {
        include: "#expression"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "numeric-literal": {
    patterns: [
      {
        name: "constant.numeric.hex.tsx",
        match: "\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.tsx"
          }
        }
      },
      {
        name: "constant.numeric.binary.tsx",
        match: "\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.tsx"
          }
        }
      },
      {
        name: "constant.numeric.octal.tsx",
        match: "\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.tsx"
          }
        }
      },
      {
        match: "(?x)\n(?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$)",
        captures: {
          "0": {
            name: "constant.numeric.decimal.tsx"
          },
          "1": {
            name: "meta.delimiter.decimal.period.tsx"
          },
          "2": {
            name: "storage.type.numeric.bigint.tsx"
          },
          "3": {
            name: "meta.delimiter.decimal.period.tsx"
          },
          "4": {
            name: "storage.type.numeric.bigint.tsx"
          },
          "5": {
            name: "meta.delimiter.decimal.period.tsx"
          },
          "6": {
            name: "storage.type.numeric.bigint.tsx"
          },
          "7": {
            name: "storage.type.numeric.bigint.tsx"
          },
          "8": {
            name: "meta.delimiter.decimal.period.tsx"
          },
          "9": {
            name: "storage.type.numeric.bigint.tsx"
          },
          "10": {
            name: "meta.delimiter.decimal.period.tsx"
          },
          "11": {
            name: "storage.type.numeric.bigint.tsx"
          },
          "12": {
            name: "meta.delimiter.decimal.period.tsx"
          },
          "13": {
            name: "storage.type.numeric.bigint.tsx"
          },
          "14": {
            name: "storage.type.numeric.bigint.tsx"
          }
        }
      }
    ]
  },
  "boolean-literal": {
    patterns: [
      {
        name: "constant.language.boolean.true.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "constant.language.boolean.false.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "null-literal": {
    name: "constant.language.null.tsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "this-literal": {
    name: "variable.language.this.tsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)"
  },
  "super-literal": {
    name: "variable.language.super.tsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)"
  },
  "undefined-literal": {
    name: "constant.language.undefined.tsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "numericConstant-literal": {
    patterns: [
      {
        name: "constant.language.nan.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "constant.language.infinity.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "support-objects": {
    patterns: [
      {
        name: "variable.language.arguments.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)"
      },
      {
        name: "support.class.builtin.tsx",
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Array|ArrayBuffer|Atomics|BigInt|BigInt64Array|BigUint64Array|Boolean|DataView|Date|Float32Array\n  |Float64Array|Function|Generator|GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Proxy\n  |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray\n  |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\\b(?!\\$)"
      },
      {
        name: "support.class.error.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))((Eval|Internal|Range|Reference|Syntax|Type|URI)?Error)\\b(?!\\$)"
      },
      {
        name: "support.class.promise.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)"
      },
      {
        name: "support.function.tsx",
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(clear(Interval|Timeout)|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|\n  isFinite|isNaN|parseFloat|parseInt|require|set(Interval|Timeout)|super|unescape|uneval)(?=\\s*\\()"
      },
      {
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Math)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n  (abs|acos|acosh|asin|asinh|atan|atan2|atanh|cbrt|ceil|clz32|cos|cosh|exp|\n  expm1|floor|fround|hypot|imul|log|log10|log1p|log2|max|min|pow|random|\n  round|sign|sin|sinh|sqrt|tan|tanh|trunc)\n  |\n  (E|LN10|LN2|LOG10E|LOG2E|PI|SQRT1_2|SQRT2)))?\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.constant.math.tsx"
          },
          "2": {
            name: "punctuation.accessor.tsx"
          },
          "3": {
            name: "punctuation.accessor.optional.tsx"
          },
          "4": {
            name: "support.function.math.tsx"
          },
          "5": {
            name: "support.constant.property.math.tsx"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(JSON)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(parse|stringify))?\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.constant.json.tsx"
          },
          "2": {
            name: "punctuation.accessor.tsx"
          },
          "3": {
            name: "punctuation.accessor.optional.tsx"
          },
          "4": {
            name: "support.function.json.tsx"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\b(?!\\$)",
        captures: {
          "1": {
            name: "keyword.control.import.tsx"
          },
          "2": {
            name: "punctuation.accessor.tsx"
          },
          "3": {
            name: "punctuation.accessor.optional.tsx"
          },
          "4": {
            name: "support.variable.property.importmeta.tsx"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\b(?!\\$)",
        captures: {
          "1": {
            name: "keyword.operator.new.tsx"
          },
          "2": {
            name: "punctuation.accessor.tsx"
          },
          "3": {
            name: "punctuation.accessor.optional.tsx"
          },
          "4": {
            name: "support.variable.property.target.tsx"
          }
        }
      },
      {
        match: "(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?:\n  (?:(constructor|length|prototype|__proto__)\\b(?!\\$|\\s*(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\())\n  |\n  (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\b(?!\\$)))",
        captures: {
          "1": {
            name: "punctuation.accessor.tsx"
          },
          "2": {
            name: "punctuation.accessor.optional.tsx"
          },
          "3": {
            name: "support.variable.property.tsx"
          },
          "4": {
            name: "support.constant.tsx"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.type.object.module.tsx"
          },
          "2": {
            name: "support.type.object.module.tsx"
          },
          "3": {
            name: "punctuation.accessor.tsx"
          },
          "4": {
            name: "punctuation.accessor.optional.tsx"
          },
          "5": {
            name: "support.type.object.module.tsx"
          }
        }
      }
    ]
  },
  identifiers: {
    patterns: [
      {
        include: "#object-identifiers"
      },
      {
        match: "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n))",
        captures: {
          "1": {
            name: "punctuation.accessor.tsx"
          },
          "2": {
            name: "punctuation.accessor.optional.tsx"
          },
          "3": {
            name: "entity.name.function.tsx"
          }
        }
      },
      {
        match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",
        captures: {
          "1": {
            name: "punctuation.accessor.tsx"
          },
          "2": {
            name: "punctuation.accessor.optional.tsx"
          },
          "3": {
            name: "variable.other.constant.property.tsx"
          }
        }
      },
      {
        match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "punctuation.accessor.tsx"
          },
          "2": {
            name: "punctuation.accessor.optional.tsx"
          },
          "3": {
            name: "variable.other.property.tsx"
          }
        }
      },
      {
        name: "variable.other.constant.tsx",
        match: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"
      },
      {
        name: "variable.other.readwrite.tsx",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      }
    ]
  },
  "object-identifiers": {
    patterns: [
      {
        name: "support.class.tsx",
        match: "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))"
      },
      {
        match: "(?x)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n  (\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\n  (\\#?[_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "punctuation.accessor.tsx"
          },
          "2": {
            name: "punctuation.accessor.optional.tsx"
          },
          "3": {
            name: "variable.other.constant.object.property.tsx"
          },
          "4": {
            name: "variable.other.object.property.tsx"
          }
        }
      },
      {
        match: "(?x)(?:\n  ([[:upper:]][_$[:digit:][:upper:]]*) |\n  ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "variable.other.constant.object.tsx"
          },
          "2": {
            name: "variable.other.object.tsx"
          }
        }
      }
    ]
  },
  "type-annotation": {
    patterns: [
      {
        name: "meta.type.annotation.tsx",
        begin: "(:)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.tsx"
          }
        },
        end: "(?<![:|&])((?=$|^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "meta.type.annotation.tsx",
        begin: "(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.tsx"
          }
        },
        end: "(?<![:|&])((?=[,);\\}\\]]|//)|(?==[^>])|(?=^\\s*$)|((?<=\\S)(?=\\s*$))|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "parameter-type-annotation": {
    patterns: [
      {
        name: "meta.type.annotation.tsx",
        begin: "(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.tsx"
          }
        },
        end: "(?=[,)])|(?==[^>])",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "return-type": {
    patterns: [
      {
        name: "meta.return.type.tsx",
        begin: "(?<=\\))\\s*(:)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.tsx"
          }
        },
        end: "(?<![:|&])(?=$|^|[{};,]|//)",
        patterns: [
          {
            include: "#return-type-core"
          }
        ]
      },
      {
        name: "meta.return.type.tsx",
        begin: "(?<=\\))\\s*(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.tsx"
          }
        },
        end: "(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
        patterns: [
          {
            include: "#return-type-core"
          }
        ]
      }
    ]
  },
  "return-type-core": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?<=[:|&])(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "arrow-return-type": {
    name: "meta.return.type.arrow.tsx",
    begin: "(?<=\\))\\s*(:)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.type.annotation.tsx"
      }
    },
    end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
    patterns: [
      {
        include: "#arrow-return-type-body"
      }
    ]
  },
  "possibly-arrow-return-type": {
    begin: "(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",
    beginCaptures: {
      "1": {
        name: "meta.arrow.tsx meta.return.type.arrow.tsx keyword.operator.type.annotation.tsx"
      }
    },
    end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
    contentName: "meta.arrow.tsx meta.return.type.arrow.tsx",
    patterns: [
      {
        include: "#arrow-return-type-body"
      }
    ]
  },
  "arrow-return-type-body": {
    patterns: [
      {
        begin: "(?<=[:])(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-parameters": {
    name: "meta.type.parameters.tsx",
    begin: "(<)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.typeparameters.begin.tsx"
      }
    },
    end: "(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.typeparameters.end.tsx"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "storage.modifier.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      },
      {
        name: "keyword.operator.assignment.tsx",
        match: "(=)(?!>)"
      }
    ]
  },
  "type-arguments": {
    name: "meta.type.parameters.tsx",
    begin: "\\<",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.typeparameters.begin.tsx"
      }
    },
    end: "\\>",
    endCaptures: {
      "0": {
        name: "punctuation.definition.typeparameters.end.tsx"
      }
    },
    patterns: [
      {
        include: "#type-arguments-body"
      }
    ]
  },
  "type-arguments-body": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "0": {
            name: "keyword.operator.type.tsx"
          }
        }
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  type: {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#type-primitive"
      },
      {
        include: "#type-builtin-literals"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#type-tuple"
      },
      {
        include: "#type-object"
      },
      {
        include: "#type-conditional"
      },
      {
        include: "#type-operators"
      },
      {
        include: "#type-fn-type-parameters"
      },
      {
        include: "#type-paren-or-function-parameters"
      },
      {
        include: "#type-function-return-type"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
        captures: {
          "1": {
            name: "storage.modifier.tsx"
          }
        }
      },
      {
        include: "#type-name"
      }
    ]
  },
  "type-primitive": {
    name: "support.type.primitive.tsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "type-builtin-literals": {
    name: "support.type.builtin.tsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "type-tuple": {
    name: "meta.type.tuple.tsx",
    begin: "\\[",
    beginCaptures: {
      "0": {
        name: "meta.brace.square.tsx"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "meta.brace.square.tsx"
      }
    },
    patterns: [
      {
        name: "keyword.operator.rest.tsx",
        match: "\\.\\.\\."
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
        captures: {
          "1": {
            name: "entity.name.label.tsx"
          },
          "2": {
            name: "keyword.operator.optional.tsx"
          },
          "3": {
            name: "punctuation.separator.label.tsx"
          }
        }
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "type-object": {
    name: "meta.object.type.tsx",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#method-declaration"
      },
      {
        include: "#indexer-declaration"
      },
      {
        include: "#indexer-mapped-type-declaration"
      },
      {
        include: "#field-declaration"
      },
      {
        include: "#type-annotation"
      },
      {
        begin: "\\.\\.\\.",
        beginCaptures: {
          "0": {
            name: "keyword.operator.spread.tsx"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-semicolon"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-conditional": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
        beginCaptures: {
          "1": {
            name: "storage.modifier.tsx"
          }
        },
        end: "(?<=:)",
        patterns: [
          {
            begin: "\\?",
            beginCaptures: {
              "0": {
                name: "keyword.operator.ternary.tsx"
              }
            },
            end: ":",
            endCaptures: {
              "0": {
                name: "keyword.operator.ternary.tsx"
              }
            },
            patterns: [
              {
                include: "#type"
              }
            ]
          },
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "type-paren-or-function-parameters": {
    name: "meta.type.paren.cover.tsx",
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "meta.brace.round.tsx"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "meta.brace.round.tsx"
      }
    },
    patterns: [
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
        captures: {
          "1": {
            name: "storage.modifier.tsx"
          },
          "2": {
            name: "keyword.operator.rest.tsx"
          },
          "3": {
            name: "entity.name.function.tsx variable.language.this.tsx"
          },
          "4": {
            name: "entity.name.function.tsx"
          },
          "5": {
            name: "keyword.operator.optional.tsx"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
        captures: {
          "1": {
            name: "storage.modifier.tsx"
          },
          "2": {
            name: "keyword.operator.rest.tsx"
          },
          "3": {
            name: "variable.parameter.tsx variable.language.this.tsx"
          },
          "4": {
            name: "variable.parameter.tsx"
          },
          "5": {
            name: "keyword.operator.optional.tsx"
          }
        }
      },
      {
        include: "#type-annotation"
      },
      {
        name: "punctuation.separator.parameter.tsx",
        match: ","
      },
      {
        include: "#type"
      }
    ]
  },
  "type-fn-type-parameters": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
        beginCaptures: {
          "1": {
            name: "meta.type.constructor.tsx storage.modifier.tsx"
          },
          "2": {
            name: "meta.type.constructor.tsx keyword.control.new.tsx"
          }
        },
        end: "(?<=>)",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-parameters"
          }
        ]
      },
      {
        name: "meta.type.constructor.tsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
        beginCaptures: {
          "1": {
            name: "storage.modifier.tsx"
          },
          "2": {
            name: "keyword.control.new.tsx"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#function-parameters"
          }
        ]
      },
      {
        name: "meta.type.function.tsx",
        begin: "(?x)(\n  (?=\n    [(]\\s*(\n      ([)]) |\n      (\\.\\.\\.) |\n      ([_$[:alnum:]]+\\s*(\n        ([:,?=])|\n        ([)]\\s*=>)\n      ))\n    )\n  )\n)",
        end: "(?<=\\))",
        patterns: [
          {
            include: "#function-parameters"
          }
        ]
      }
    ]
  },
  "type-function-return-type": {
    patterns: [
      {
        name: "meta.type.function.return.tsx",
        begin: "(=>)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "storage.type.function.arrow.tsx"
          }
        },
        end: "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
        patterns: [
          {
            include: "#type-function-return-type-core"
          }
        ]
      },
      {
        name: "meta.type.function.return.tsx",
        begin: "=>",
        beginCaptures: {
          "0": {
            name: "storage.type.function.arrow.tsx"
          }
        },
        end: "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
        patterns: [
          {
            include: "#type-function-return-type-core"
          }
        ]
      }
    ]
  },
  "type-function-return-type-core": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?<==>)(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-operators": {
    patterns: [
      {
        include: "#typeof-operator"
      },
      {
        begin: "([&|])(?=\\s*\\{)",
        beginCaptures: {
          "0": {
            name: "keyword.operator.type.tsx"
          }
        },
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        begin: "[&|]",
        beginCaptures: {
          "0": {
            name: "keyword.operator.type.tsx"
          }
        },
        end: "(?=\\S)"
      },
      {
        name: "keyword.operator.expression.keyof.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.ternary.tsx",
        match: "(\\?|\\:)"
      },
      {
        name: "keyword.operator.expression.infer.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))infer(?=\\s+[_$[:alpha:]])"
      },
      {
        name: "keyword.operator.expression.import.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"
      }
    ]
  },
  "type-predicate-operator": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.operator.type.asserts.tsx"
          },
          "2": {
            name: "variable.parameter.tsx variable.language.this.tsx"
          },
          "3": {
            name: "variable.parameter.tsx"
          },
          "4": {
            name: "keyword.operator.expression.is.tsx"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.operator.type.asserts.tsx"
          },
          "2": {
            name: "variable.parameter.tsx variable.language.this.tsx"
          },
          "3": {
            name: "variable.parameter.tsx"
          }
        }
      },
      {
        name: "keyword.operator.type.asserts.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.expression.is.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "type-name": {
    patterns: [
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
        captures: {
          "1": {
            name: "entity.name.type.module.tsx"
          },
          "2": {
            name: "punctuation.accessor.tsx"
          },
          "3": {
            name: "punctuation.accessor.optional.tsx"
          },
          "4": {
            name: "meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx"
          }
        },
        end: "(>)",
        endCaptures: {
          "1": {
            name: "meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx"
          }
        },
        contentName: "meta.type.parameters.tsx",
        patterns: [
          {
            include: "#type-arguments-body"
          }
        ]
      },
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
        beginCaptures: {
          "1": {
            name: "entity.name.type.tsx"
          },
          "2": {
            name: "meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx"
          }
        },
        end: "(>)",
        endCaptures: {
          "1": {
            name: "meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx"
          }
        },
        contentName: "meta.type.parameters.tsx",
        patterns: [
          {
            include: "#type-arguments-body"
          }
        ]
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
        captures: {
          "1": {
            name: "entity.name.type.module.tsx"
          },
          "2": {
            name: "punctuation.accessor.tsx"
          },
          "3": {
            name: "punctuation.accessor.optional.tsx"
          }
        }
      },
      {
        name: "entity.name.type.tsx",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      }
    ]
  },
  "punctuation-comma": {
    name: "punctuation.separator.comma.tsx",
    match: ","
  },
  "punctuation-semicolon": {
    name: "punctuation.terminator.statement.tsx",
    match: ";"
  },
  "punctuation-accessor": {
    match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
    captures: {
      "1": {
        name: "punctuation.accessor.tsx"
      },
      "2": {
        name: "punctuation.accessor.optional.tsx"
      }
    }
  },
  string: {
    patterns: [
      {
        include: "#qstring-single"
      },
      {
        include: "#qstring-double"
      },
      {
        include: "#template"
      }
    ]
  },
  "qstring-double": {
    name: "string.quoted.double.tsx",
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.tsx"
      }
    },
    end: '(")|((?:[^\\\\\\n])$)',
    endCaptures: {
      "1": {
        name: "punctuation.definition.string.end.tsx"
      },
      "2": {
        name: "invalid.illegal.newline.tsx"
      }
    },
    patterns: [
      {
        include: "#string-character-escape"
      }
    ]
  },
  "qstring-single": {
    name: "string.quoted.single.tsx",
    begin: "'",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.tsx"
      }
    },
    end: "(\\')|((?:[^\\\\\\n])$)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.string.end.tsx"
      },
      "2": {
        name: "invalid.illegal.newline.tsx"
      }
    },
    patterns: [
      {
        include: "#string-character-escape"
      }
    ]
  },
  "string-character-escape": {
    name: "constant.character.escape.tsx",
    match: "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
  },
  template: {
    patterns: [
      {
        include: "#template-call"
      },
      {
        name: "string.template.tsx",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.tsx"
          },
          "2": {
            name: "punctuation.definition.string.template.begin.tsx"
          }
        },
        end: "`",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.template.end.tsx"
          }
        },
        patterns: [
          {
            include: "#template-substitution-element"
          },
          {
            include: "#string-character-escape"
          }
        ]
      }
    ]
  },
  "template-call": {
    patterns: [
      {
        name: "string.template.tsx",
        begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
        end: "(?=`)",
        patterns: [
          {
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
            patterns: [
              {
                include: "#support-function-call-identifiers"
              },
              {
                name: "entity.name.function.tagged-template.tsx",
                match: "([_$[:alpha:]][_$[:alnum:]]*)"
              }
            ]
          },
          {
            include: "#type-arguments"
          }
        ]
      },
      {
        name: "string.template.tsx",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.tsx"
          }
        },
        end: "(?=`)",
        patterns: [
          {
            include: "#type-arguments"
          }
        ]
      }
    ]
  },
  "template-substitution-element": {
    name: "meta.template.expression.tsx",
    begin: "\\$\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.begin.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.end.tsx"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ],
    contentName: "meta.embedded.line.tsx"
  },
  "type-string": {
    patterns: [
      {
        include: "#qstring-single"
      },
      {
        include: "#qstring-double"
      },
      {
        include: "#template-type"
      }
    ]
  },
  "template-type": {
    patterns: [
      {
        include: "#template-call"
      },
      {
        name: "string.template.tsx",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.tsx"
          },
          "2": {
            name: "punctuation.definition.string.template.begin.tsx"
          }
        },
        end: "`",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.template.end.tsx"
          }
        },
        patterns: [
          {
            include: "#template-type-substitution-element"
          },
          {
            include: "#string-character-escape"
          }
        ]
      }
    ]
  },
  "template-type-substitution-element": {
    name: "meta.template.expression.tsx",
    begin: "\\$\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.begin.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.end.tsx"
      }
    },
    patterns: [
      {
        include: "#type"
      }
    ],
    contentName: "meta.embedded.line.tsx"
  },
  regex: {
    patterns: [
      {
        name: "string.regexp.tsx",
        begin: "(?<!\\+\\+|--|})(?<=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=>|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.string.begin.tsx"
          }
        },
        end: "(/)([dgimsuy]*)",
        endCaptures: {
          "1": {
            name: "punctuation.definition.string.end.tsx"
          },
          "2": {
            name: "keyword.other.tsx"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "string.regexp.tsx",
        begin: "((?<![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?<=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.tsx"
          }
        },
        end: "(/)([dgimsuy]*)",
        endCaptures: {
          "1": {
            name: "punctuation.definition.string.end.tsx"
          },
          "2": {
            name: "keyword.other.tsx"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      }
    ]
  },
  regexp: {
    patterns: [
      {
        name: "keyword.control.anchor.regexp",
        match: "\\\\[bB]|\\^|\\$"
      },
      {
        match: "\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>",
        captures: {
          "0": {
            name: "keyword.other.back-reference.regexp"
          },
          "1": {
            name: "variable.other.regexp"
          }
        }
      },
      {
        name: "keyword.operator.quantifier.regexp",
        match: "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"
      },
      {
        name: "keyword.operator.or.regexp",
        match: "\\|"
      },
      {
        name: "meta.group.assertion.regexp",
        begin: "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.group.regexp"
          },
          "2": {
            name: "punctuation.definition.group.assertion.regexp"
          },
          "3": {
            name: "meta.assertion.look-ahead.regexp"
          },
          "4": {
            name: "meta.assertion.negative-look-ahead.regexp"
          },
          "5": {
            name: "meta.assertion.look-behind.regexp"
          },
          "6": {
            name: "meta.assertion.negative-look-behind.regexp"
          }
        },
        end: "(\\))",
        endCaptures: {
          "1": {
            name: "punctuation.definition.group.regexp"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "meta.group.regexp",
        begin: "\\((?:(\\?:)|(?:\\?<([a-zA-Z_$][\\w$]*)>))?",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.group.regexp"
          },
          "1": {
            name: "punctuation.definition.group.no-capture.regexp"
          },
          "2": {
            name: "variable.other.regexp"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.definition.group.regexp"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "constant.other.character-class.set.regexp",
        begin: "(\\[)(\\^)?",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.character-class.regexp"
          },
          "2": {
            name: "keyword.operator.negation.regexp"
          }
        },
        end: "(\\])",
        endCaptures: {
          "1": {
            name: "punctuation.definition.character-class.regexp"
          }
        },
        patterns: [
          {
            name: "constant.other.character-class.range.regexp",
            match: "(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",
            captures: {
              "1": {
                name: "constant.character.numeric.regexp"
              },
              "2": {
                name: "constant.character.control.regexp"
              },
              "3": {
                name: "constant.character.escape.backslash.regexp"
              },
              "4": {
                name: "constant.character.numeric.regexp"
              },
              "5": {
                name: "constant.character.control.regexp"
              },
              "6": {
                name: "constant.character.escape.backslash.regexp"
              }
            }
          },
          {
            include: "#regex-character-class"
          }
        ]
      },
      {
        include: "#regex-character-class"
      }
    ]
  },
  "regex-character-class": {
    patterns: [
      {
        name: "constant.other.character-class.regexp",
        match: "\\\\[wWsSdDtrnvf]|\\."
      },
      {
        name: "constant.character.numeric.regexp",
        match: "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})"
      },
      {
        name: "constant.character.control.regexp",
        match: "\\\\c[A-Z]"
      },
      {
        name: "constant.character.escape.backslash.regexp",
        match: "\\\\."
      }
    ]
  },
  comment: {
    patterns: [
      {
        name: "comment.block.documentation.tsx",
        begin: "/\\*\\*(?!/)",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.comment.tsx"
          }
        },
        end: "\\*/",
        endCaptures: {
          "0": {
            name: "punctuation.definition.comment.tsx"
          }
        },
        patterns: [
          {
            include: "#docblock"
          }
        ]
      },
      {
        name: "comment.block.tsx",
        begin: "(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.comment.tsx"
          },
          "2": {
            name: "storage.type.internaldeclaration.tsx"
          },
          "3": {
            name: "punctuation.decorator.internaldeclaration.tsx"
          }
        },
        end: "\\*/",
        endCaptures: {
          "0": {
            name: "punctuation.definition.comment.tsx"
          }
        }
      },
      {
        begin: "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
        beginCaptures: {
          "1": {
            name: "punctuation.whitespace.comment.leading.tsx"
          },
          "2": {
            name: "comment.line.double-slash.tsx"
          },
          "3": {
            name: "punctuation.definition.comment.tsx"
          },
          "4": {
            name: "storage.type.internaldeclaration.tsx"
          },
          "5": {
            name: "punctuation.decorator.internaldeclaration.tsx"
          }
        },
        end: "(?=$)",
        contentName: "comment.line.double-slash.tsx"
      }
    ]
  },
  "single-line-comment-consuming-line-ending": {
    begin: "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
    beginCaptures: {
      "1": {
        name: "punctuation.whitespace.comment.leading.tsx"
      },
      "2": {
        name: "comment.line.double-slash.tsx"
      },
      "3": {
        name: "punctuation.definition.comment.tsx"
      },
      "4": {
        name: "storage.type.internaldeclaration.tsx"
      },
      "5": {
        name: "punctuation.decorator.internaldeclaration.tsx"
      }
    },
    end: "(?=^)",
    contentName: "comment.line.double-slash.tsx"
  },
  directives: {
    name: "comment.line.triple-slash.directive.tsx",
    begin: "^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.comment.tsx"
      }
    },
    end: "(?=$)",
    patterns: [
      {
        name: "meta.tag.tsx",
        begin: "(<)(reference|amd-dependency|amd-module)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.directive.tsx"
          },
          "2": {
            name: "entity.name.tag.directive.tsx"
          }
        },
        end: "/>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.directive.tsx"
          }
        },
        patterns: [
          {
            name: "entity.other.attribute-name.directive.tsx",
            match: "path|types|no-default-lib|lib|name"
          },
          {
            name: "keyword.operator.assignment.tsx",
            match: "="
          },
          {
            include: "#string"
          }
        ]
      }
    ]
  },
  docblock: {
    patterns: [
      {
        match: "(?x)\n((@)(?:access|api))\n\\s+\n(private|protected|public)\n\\b",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "constant.language.access-type.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)author)\n\\s+\n(\n  [^@\\s<>*/]\n  (?:[^@<>*/]|\\*[^/])*\n)\n(?:\n  \\s*\n  (<)\n  ([^>\\s]+)\n  (>)\n)?",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          },
          "4": {
            name: "punctuation.definition.bracket.angle.begin.jsdoc"
          },
          "5": {
            name: "constant.other.email.link.underline.jsdoc"
          },
          "6": {
            name: "punctuation.definition.bracket.angle.end.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)borrows) \\s+\n((?:[^@\\s*/]|\\*[^/])+)    # <that namepath>\n\\s+ (as) \\s+              # as\n((?:[^@\\s*/]|\\*[^/])+)    # <this namepath>",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          },
          "4": {
            name: "keyword.operator.control.jsdoc"
          },
          "5": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        name: "meta.example.jsdoc",
        begin: "((@)example)\\s+",
        end: "(?=@|\\*/)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        patterns: [
          {
            match: "^\\s\\*\\s+"
          },
          {
            contentName: "constant.other.description.jsdoc",
            begin: "\\G(<)caption(>)",
            beginCaptures: {
              "0": {
                name: "entity.name.tag.inline.jsdoc"
              },
              "1": {
                name: "punctuation.definition.bracket.angle.begin.jsdoc"
              },
              "2": {
                name: "punctuation.definition.bracket.angle.end.jsdoc"
              }
            },
            end: "(</)caption(>)|(?=\\*/)",
            endCaptures: {
              "0": {
                name: "entity.name.tag.inline.jsdoc"
              },
              "1": {
                name: "punctuation.definition.bracket.angle.begin.jsdoc"
              },
              "2": {
                name: "punctuation.definition.bracket.angle.end.jsdoc"
              }
            }
          },
          {
            match: "[^\\s@*](?:[^*]|\\*[^/])*",
            captures: {
              "0": {
                name: "source.embedded.tsx"
              }
            }
          }
        ]
      },
      {
        match: "(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "constant.language.symbol-type.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)see)\n\\s+\n(?:\n  # URL\n  (\n    (?=https?://)\n    (?:[^\\s*]|\\*[^/])+\n  )\n  |\n  # JSDoc namepath\n  (\n    (?!\n      # Avoid matching bare URIs (also acceptable as links)\n      https?://\n      |\n      # Avoid matching {@inline tags}; we match those below\n      (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag}\n      {@(?:link|linkcode|linkplain|tutorial)\\b\n    )\n    # Matched namepath\n    (?:[^@\\s*/]|\\*[^/])+\n  )\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.link.underline.jsdoc"
          },
          "4": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)template)\n\\s+\n# One or more valid identifiers\n(\n  [A-Za-z_$]         # First character: non-numeric word character\n  [\\w$.\\[\\]]*        # Rest of identifier\n  (?:                # Possible list of additional identifiers\n    \\s* , \\s*\n    [A-Za-z_$]\n    [\\w$.\\[\\]]*\n  )*\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n(\n  (@)\n  (?:arg|argument|const|constant|member|namespace|param|var)\n)\n\\s+\n(\n  [A-Za-z_$]\n  [\\w$.\\[\\]]*\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        begin: "((@)typedef)\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          },
          {
            name: "entity.name.type.instance.jsdoc",
            match: "(?:[^@\\s*/]|\\*[^/])+"
          }
        ]
      },
      {
        begin: "((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          },
          {
            name: "variable.other.jsdoc",
            match: "([A-Za-z_$][\\w$.\\[\\]]*)"
          },
          {
            name: "variable.other.jsdoc",
            match: `(?x)
(\\[)\\s*
[\\w$]+
(?:
  (?:\\[\\])?                                        # Foo[ ].bar properties within an array
  \\.                                                # Foo.Bar namespaced parameter
  [\\w$]+
)*
(?:
  \\s*
  (=)                                                # [foo=bar] Default parameter value
  \\s*
  (
    # The inner regexes are to stop the match early at */ and to not stop at escaped quotes
    (?>
      "(?:(?:\\*(?!/))|(?:\\\\(?!"))|[^*\\\\])*?" |                      # [foo="bar"] Double-quoted
      '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' |                      # [foo='bar'] Single-quoted
      \\[ (?:(?:\\*(?!/))|[^*])*? \\] |                                # [foo=[1,2]] Array literal
      (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])*   # Everything else
    )*
  )
)?
\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))`,
            captures: {
              "1": {
                name: "punctuation.definition.optional-value.begin.bracket.square.jsdoc"
              },
              "2": {
                name: "keyword.operator.assignment.jsdoc"
              },
              "3": {
                name: "source.embedded.tsx"
              },
              "4": {
                name: "punctuation.definition.optional-value.end.bracket.square.jsdoc"
              },
              "5": {
                name: "invalid.illegal.syntax.jsdoc"
              }
            }
          }
        ]
      },
      {
        begin: "(?x)\n(\n  (@)\n  (?:define|enum|exception|export|extends|lends|implements|modifies\n  |namespace|private|protected|returns?|suppress|this|throws|type\n  |yields?)\n)\n\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          }
        ]
      },
      {
        match: "(?x)\n(\n  (@)\n  (?:alias|augments|callback|constructs|emits|event|fires|exports?\n  |extends|external|function|func|host|lends|listens|interface|memberof!?\n  |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\n)\n\\s+\n(\n  (?:\n    [^{}@\\s*] | \\*[^/]\n  )+\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        contentName: "variable.other.jsdoc",
        begin: `((@)(?:default(?:value)?|license|version))\\s+(([''"]))`,
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          },
          "4": {
            name: "punctuation.definition.string.begin.jsdoc"
          }
        },
        end: "(\\3)|(?=$|\\*/)",
        endCaptures: {
          "0": {
            name: "variable.other.jsdoc"
          },
          "1": {
            name: "punctuation.definition.string.end.jsdoc"
          }
        }
      },
      {
        match: "((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        name: "storage.type.class.jsdoc",
        match: "(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",
        captures: {
          "1": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        }
      },
      {
        include: "#inline-tags"
      },
      {
        match: "((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        }
      }
    ]
  },
  brackets: {
    patterns: [
      {
        begin: "{",
        end: "}|(?=\\*/)",
        patterns: [
          {
            include: "#brackets"
          }
        ]
      },
      {
        begin: "\\[",
        end: "\\]|(?=\\*/)",
        patterns: [
          {
            include: "#brackets"
          }
        ]
      }
    ]
  },
  "inline-tags": {
    patterns: [
      {
        name: "constant.other.description.jsdoc",
        match: "(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",
        captures: {
          "1": {
            name: "punctuation.definition.bracket.square.begin.jsdoc"
          },
          "2": {
            name: "punctuation.definition.bracket.square.end.jsdoc"
          }
        }
      },
      {
        name: "entity.name.type.instance.jsdoc",
        begin: "({)((@)(?:link(?:code|plain)?|tutorial))\\s*",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.bracket.curly.begin.jsdoc"
          },
          "2": {
            name: "storage.type.class.jsdoc"
          },
          "3": {
            name: "punctuation.definition.inline.tag.jsdoc"
          }
        },
        end: "}|(?=\\*/)",
        endCaptures: {
          "0": {
            name: "punctuation.definition.bracket.curly.end.jsdoc"
          }
        },
        patterns: [
          {
            match: "\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?",
            captures: {
              "1": {
                name: "variable.other.link.underline.jsdoc"
              },
              "2": {
                name: "punctuation.separator.pipe.jsdoc"
              }
            }
          },
          {
            match: "\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?",
            captures: {
              "1": {
                name: "variable.other.description.jsdoc"
              },
              "2": {
                name: "punctuation.separator.pipe.jsdoc"
              }
            }
          }
        ]
      }
    ]
  },
  jsdoctype: {
    patterns: [
      {
        contentName: "entity.name.type.instance.jsdoc",
        begin: "\\G({)",
        beginCaptures: {
          "0": {
            name: "entity.name.type.instance.jsdoc"
          },
          "1": {
            name: "punctuation.definition.bracket.curly.begin.jsdoc"
          }
        },
        end: "((}))\\s*|(?=\\*/)",
        endCaptures: {
          "1": {
            name: "entity.name.type.instance.jsdoc"
          },
          "2": {
            name: "punctuation.definition.bracket.curly.end.jsdoc"
          }
        },
        patterns: [
          {
            include: "#brackets"
          }
        ]
      }
    ]
  },
  jsx: {
    patterns: [
      {
        include: "#jsx-tag-without-attributes-in-expression"
      },
      {
        include: "#jsx-tag-in-expression"
      }
    ]
  },
  "jsx-tag-without-attributes-in-expression": {
    begin: "(?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
    end: "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
    patterns: [
      {
        include: "#jsx-tag-without-attributes"
      }
    ]
  },
  "jsx-tag-without-attributes": {
    name: "meta.tag.without-attributes.tsx",
    begin: "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",
    end: "(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.tsx"
      },
      "2": {
        name: "entity.name.tag.namespace.tsx"
      },
      "3": {
        name: "punctuation.separator.namespace.tsx"
      },
      "4": {
        name: "entity.name.tag.tsx"
      },
      "5": {
        name: "support.class.component.tsx"
      },
      "6": {
        name: "punctuation.definition.tag.end.tsx"
      }
    },
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.tsx"
      },
      "2": {
        name: "entity.name.tag.namespace.tsx"
      },
      "3": {
        name: "punctuation.separator.namespace.tsx"
      },
      "4": {
        name: "entity.name.tag.tsx"
      },
      "5": {
        name: "support.class.component.tsx"
      },
      "6": {
        name: "punctuation.definition.tag.end.tsx"
      }
    },
    contentName: "meta.jsx.children.tsx",
    patterns: [
      {
        include: "#jsx-children"
      }
    ]
  },
  "jsx-tag-in-expression": {
    begin: "(?x)\n  (?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*\n  (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow\n  (?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
    end: "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
    patterns: [
      {
        include: "#jsx-tag"
      }
    ]
  },
  "jsx-tag": {
    name: "meta.tag.tsx",
    begin: "(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
    end: "(/>)|(?:(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.tsx"
      },
      "2": {
        name: "punctuation.definition.tag.begin.tsx"
      },
      "3": {
        name: "entity.name.tag.namespace.tsx"
      },
      "4": {
        name: "punctuation.separator.namespace.tsx"
      },
      "5": {
        name: "entity.name.tag.tsx"
      },
      "6": {
        name: "support.class.component.tsx"
      },
      "7": {
        name: "punctuation.definition.tag.end.tsx"
      }
    },
    patterns: [
      {
        begin: "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.tsx"
          },
          "2": {
            name: "entity.name.tag.namespace.tsx"
          },
          "3": {
            name: "punctuation.separator.namespace.tsx"
          },
          "4": {
            name: "entity.name.tag.tsx"
          },
          "5": {
            name: "support.class.component.tsx"
          }
        },
        end: "(?=[/]?>)",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-arguments"
          },
          {
            include: "#jsx-tag-attributes"
          }
        ]
      },
      {
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.tsx"
          }
        },
        end: "(?=</)",
        contentName: "meta.jsx.children.tsx",
        patterns: [
          {
            include: "#jsx-children"
          }
        ]
      }
    ]
  },
  "jsx-children": {
    patterns: [
      {
        include: "#jsx-tag-without-attributes"
      },
      {
        include: "#jsx-tag"
      },
      {
        include: "#jsx-evaluated-code"
      },
      {
        include: "#jsx-entities"
      }
    ]
  },
  "jsx-evaluated-code": {
    contentName: "meta.embedded.expression.tsx",
    begin: "\\{",
    end: "\\}",
    beginCaptures: {
      "0": {
        name: "punctuation.section.embedded.begin.tsx"
      }
    },
    endCaptures: {
      "0": {
        name: "punctuation.section.embedded.end.tsx"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "jsx-entities": {
    patterns: [
      {
        name: "constant.character.entity.tsx",
        match: "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
        captures: {
          "1": {
            name: "punctuation.definition.entity.tsx"
          },
          "3": {
            name: "punctuation.definition.entity.tsx"
          }
        }
      },
      {
        name: "invalid.illegal.bad-ampersand.tsx",
        match: "&"
      }
    ]
  },
  "jsx-tag-attributes": {
    name: "meta.tag.attributes.tsx",
    begin: "\\s+",
    end: "(?=[/]?>)",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#jsx-tag-attribute-name"
      },
      {
        include: "#jsx-tag-attribute-assignment"
      },
      {
        include: "#jsx-string-double-quoted"
      },
      {
        include: "#jsx-string-single-quoted"
      },
      {
        include: "#jsx-evaluated-code"
      },
      {
        include: "#jsx-tag-attributes-illegal"
      }
    ]
  },
  "jsx-tag-attribute-name": {
    match: "(?x)\n  \\s*\n  (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))?\n  ([_$[:alpha:]][-_$[:alnum:]]*)\n  (?=\\s|=|/?>|/\\*|//)",
    captures: {
      "1": {
        name: "entity.other.attribute-name.namespace.tsx"
      },
      "2": {
        name: "punctuation.separator.namespace.tsx"
      },
      "3": {
        name: "entity.other.attribute-name.tsx"
      }
    }
  },
  "jsx-tag-attribute-assignment": {
    name: "keyword.operator.assignment.tsx",
    match: `=(?=\\s*(?:'|"|{|/\\*|//|\\n))`
  },
  "jsx-string-double-quoted": {
    name: "string.quoted.double.tsx",
    begin: '"',
    end: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.tsx"
      }
    },
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.tsx"
      }
    },
    patterns: [
      {
        include: "#jsx-entities"
      }
    ]
  },
  "jsx-string-single-quoted": {
    name: "string.quoted.single.tsx",
    begin: "'",
    end: "'",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.tsx"
      }
    },
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.tsx"
      }
    },
    patterns: [
      {
        include: "#jsx-entities"
      }
    ]
  },
  "jsx-tag-attributes-illegal": {
    name: "invalid.illegal.attribute.tsx",
    match: "\\S+"
  }
};
const tsx_tmLanguage = {
  information_for_contributors: information_for_contributors$2,
  version: version$2,
  name: name$5,
  scopeName: scopeName$4,
  patterns: patterns$4,
  repository: repository$4
};
const __vite_glob_0_6 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: tsx_tmLanguage,
  information_for_contributors: information_for_contributors$2,
  name: name$5,
  patterns: patterns$4,
  repository: repository$4,
  scopeName: scopeName$4,
  version: version$2
}, Symbol.toStringTag, { value: "Module" }));
const information_for_contributors$1 = [
  "This file has been converted from https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScript.tmLanguage",
  "If you want to provide a fix or improvement, please create a pull request against the original repository.",
  "Once accepted there, we are happy to receive an update request."
];
const version$1 = "https://github.com/microsoft/TypeScript-TmLanguage/commit/33d8371c344f0b54746586313a939f742f9bcd3a";
const name$4 = "typescript";
const scopeName$3 = "source.ts";
const patterns$3 = [
  {
    include: "#directives"
  },
  {
    include: "#statements"
  },
  {
    include: "#shebang"
  }
];
const repository$3 = {
  shebang: {
    name: "comment.line.shebang.ts",
    match: "\\A(#!).*(?=$)",
    captures: {
      "1": {
        name: "punctuation.definition.comment.ts"
      }
    }
  },
  statements: {
    patterns: [
      {
        include: "#declaration"
      },
      {
        include: "#control-statement"
      },
      {
        include: "#after-operator-block-as-object-literal"
      },
      {
        include: "#decl-block"
      },
      {
        include: "#label"
      },
      {
        include: "#expression"
      },
      {
        include: "#punctuation-semicolon"
      },
      {
        include: "#string"
      },
      {
        include: "#comment"
      }
    ]
  },
  declaration: {
    patterns: [
      {
        include: "#decorator"
      },
      {
        include: "#var-expr"
      },
      {
        include: "#function-declaration"
      },
      {
        include: "#class-declaration"
      },
      {
        include: "#interface-declaration"
      },
      {
        include: "#enum-declaration"
      },
      {
        include: "#namespace-declaration"
      },
      {
        include: "#type-alias-declaration"
      },
      {
        include: "#import-equals-declaration"
      },
      {
        include: "#import-declaration"
      },
      {
        include: "#export-declaration"
      },
      {
        name: "storage.modifier.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "control-statement": {
    patterns: [
      {
        include: "#switch-statement"
      },
      {
        include: "#for-loop"
      },
      {
        name: "keyword.control.trycatch.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.control.loop.ts"
          },
          "2": {
            name: "entity.name.label.ts"
          }
        }
      },
      {
        name: "keyword.control.loop.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "0": {
            name: "keyword.control.flow.ts"
          }
        },
        end: "(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "keyword.control.switch.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#if-statement"
      },
      {
        name: "keyword.control.conditional.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.control.with.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.control.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.other.debugger.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  label: {
    patterns: [
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*\\{)",
        beginCaptures: {
          "1": {
            name: "entity.name.label.ts"
          },
          "2": {
            name: "punctuation.separator.label.ts"
          }
        },
        end: "(?<=\\})",
        patterns: [
          {
            include: "#decl-block"
          }
        ]
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)",
        captures: {
          "1": {
            name: "entity.name.label.ts"
          },
          "2": {
            name: "punctuation.separator.label.ts"
          }
        }
      }
    ]
  },
  expression: {
    patterns: [
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        include: "#identifiers"
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  expressionWithoutIdentifiers: {
    patterns: [
      {
        include: "#string"
      },
      {
        include: "#regex"
      },
      {
        include: "#comment"
      },
      {
        include: "#function-expression"
      },
      {
        include: "#class-expression"
      },
      {
        include: "#arrow-function"
      },
      {
        include: "#paren-expression-possibly-arrow"
      },
      {
        include: "#cast"
      },
      {
        include: "#ternary-expression"
      },
      {
        include: "#new-expr"
      },
      {
        include: "#instanceof-expr"
      },
      {
        include: "#object-literal"
      },
      {
        include: "#expression-operators"
      },
      {
        include: "#function-call"
      },
      {
        include: "#literal"
      },
      {
        include: "#support-objects"
      },
      {
        include: "#paren-expression"
      }
    ]
  },
  expressionPunctuations: {
    patterns: [
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-accessor"
      }
    ]
  },
  decorator: {
    name: "meta.decorator.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@",
    beginCaptures: {
      "0": {
        name: "punctuation.decorator.ts"
      }
    },
    end: "(?=\\s)",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "var-expr": {
    patterns: [
      {
        name: "meta.var.expr.ts",
        begin: "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
        end: "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|((?<!^let|[^\\._$[:alnum:]]let|^var|[^\\._$[:alnum:]]var)(?=\\s*$)))",
        patterns: [
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
            beginCaptures: {
              "1": {
                name: "keyword.control.export.ts"
              },
              "2": {
                name: "storage.modifier.ts"
              },
              "3": {
                name: "storage.type.ts"
              }
            },
            end: "(?=\\S)"
          },
          {
            include: "#destructuring-variable"
          },
          {
            include: "#var-single-variable"
          },
          {
            include: "#variable-initializer"
          },
          {
            include: "#comment"
          },
          {
            begin: "(,)\\s*((?!\\S)|(?=\\/\\/))",
            beginCaptures: {
              "1": {
                name: "punctuation.separator.comma.ts"
              }
            },
            end: "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
            patterns: [
              {
                include: "#single-line-comment-consuming-line-ending"
              },
              {
                include: "#comment"
              },
              {
                include: "#destructuring-variable"
              },
              {
                include: "#var-single-variable"
              },
              {
                include: "#punctuation-comma"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      },
      {
        name: "meta.var.expr.ts",
        begin: "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.ts"
          },
          "2": {
            name: "storage.modifier.ts"
          },
          "3": {
            name: "storage.type.ts"
          }
        },
        end: "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|((?<!^const|[^\\._$[:alnum:]]const)(?=\\s*$)))",
        patterns: [
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
            beginCaptures: {
              "1": {
                name: "keyword.control.export.ts"
              },
              "2": {
                name: "storage.modifier.ts"
              },
              "3": {
                name: "storage.type.ts"
              }
            },
            end: "(?=\\S)"
          },
          {
            include: "#destructuring-const"
          },
          {
            include: "#var-single-const"
          },
          {
            include: "#variable-initializer"
          },
          {
            include: "#comment"
          },
          {
            begin: "(,)\\s*((?!\\S)|(?=\\/\\/))",
            beginCaptures: {
              "1": {
                name: "punctuation.separator.comma.ts"
              }
            },
            end: "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
            patterns: [
              {
                include: "#single-line-comment-consuming-line-ending"
              },
              {
                include: "#comment"
              },
              {
                include: "#destructuring-const"
              },
              {
                include: "#var-single-const"
              },
              {
                include: "#punctuation-comma"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "var-single-variable": {
    patterns: [
      {
        name: "meta.var-single-variable.expr.ts",
        begin: "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\!)?(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.ts entity.name.function.ts"
          },
          "2": {
            name: "keyword.operator.definiteassignment.ts"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.ts",
        begin: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\!)?",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.ts variable.other.constant.ts"
          },
          "2": {
            name: "keyword.operator.definiteassignment.ts"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.ts",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)(\\!)?",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.ts variable.other.readwrite.ts"
          },
          "2": {
            name: "keyword.operator.definiteassignment.ts"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      }
    ]
  },
  "var-single-const": {
    patterns: [
      {
        name: "meta.var-single-variable.expr.ts",
        begin: "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.ts",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.ts variable.other.constant.ts"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      }
    ]
  },
  "var-single-variable-type-annotation": {
    patterns: [
      {
        include: "#type-annotation"
      },
      {
        include: "#string"
      },
      {
        include: "#comment"
      }
    ]
  },
  "destructuring-variable": {
    patterns: [
      {
        name: "meta.object-binding-pattern-variable.ts",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#object-binding-pattern"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      },
      {
        name: "meta.array-binding-pattern-variable.ts",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#array-binding-pattern"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      }
    ]
  },
  "destructuring-const": {
    patterns: [
      {
        name: "meta.object-binding-pattern-variable.ts",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#object-binding-pattern-const"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      },
      {
        name: "meta.array-binding-pattern-variable.ts",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#array-binding-pattern-const"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      }
    ]
  },
  "object-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#binding-element"
          }
        ]
      },
      {
        include: "#object-binding-pattern"
      },
      {
        include: "#destructuring-variable-rest"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "object-binding-element-const": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#binding-element-const"
          }
        ]
      },
      {
        include: "#object-binding-pattern-const"
      },
      {
        include: "#destructuring-variable-rest-const"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "object-binding-element-propertyName": {
    begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
    end: "(:)",
    endCaptures: {
      "0": {
        name: "punctuation.destructuring.ts"
      }
    },
    patterns: [
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        name: "variable.object.property.ts",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#object-binding-pattern"
      },
      {
        include: "#array-binding-pattern"
      },
      {
        include: "#destructuring-variable-rest"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "binding-element-const": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#object-binding-pattern-const"
      },
      {
        include: "#array-binding-pattern-const"
      },
      {
        include: "#destructuring-variable-rest-const"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "destructuring-variable-rest": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.ts"
      },
      "2": {
        name: "meta.definition.variable.ts variable.other.readwrite.ts"
      }
    }
  },
  "destructuring-variable-rest-const": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.ts"
      },
      "2": {
        name: "meta.definition.variable.ts variable.other.constant.ts"
      }
    }
  },
  "object-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.ts"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.ts"
      }
    },
    patterns: [
      {
        include: "#object-binding-element"
      }
    ]
  },
  "object-binding-pattern-const": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.ts"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.ts"
      }
    },
    patterns: [
      {
        include: "#object-binding-element-const"
      }
    ]
  },
  "array-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.ts"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.ts"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.ts"
      }
    },
    patterns: [
      {
        include: "#binding-element"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "array-binding-pattern-const": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.ts"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.ts"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.ts"
      }
    },
    patterns: [
      {
        include: "#binding-element-const"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "parameter-name": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
        captures: {
          "1": {
            name: "storage.modifier.ts"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "storage.modifier.ts"
          },
          "2": {
            name: "keyword.operator.rest.ts"
          },
          "3": {
            name: "entity.name.function.ts variable.language.this.ts"
          },
          "4": {
            name: "entity.name.function.ts"
          },
          "5": {
            name: "keyword.operator.optional.ts"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)",
        captures: {
          "1": {
            name: "storage.modifier.ts"
          },
          "2": {
            name: "keyword.operator.rest.ts"
          },
          "3": {
            name: "variable.parameter.ts variable.language.this.ts"
          },
          "4": {
            name: "variable.parameter.ts"
          },
          "5": {
            name: "keyword.operator.optional.ts"
          }
        }
      }
    ]
  },
  "destructuring-parameter": {
    patterns: [
      {
        name: "meta.parameter.object-binding-pattern.ts",
        begin: "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\{)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.rest.ts"
          },
          "2": {
            name: "punctuation.definition.binding-pattern.object.ts"
          }
        },
        end: "\\}",
        endCaptures: {
          "0": {
            name: "punctuation.definition.binding-pattern.object.ts"
          }
        },
        patterns: [
          {
            include: "#parameter-object-binding-element"
          }
        ]
      },
      {
        name: "meta.paramter.array-binding-pattern.ts",
        begin: "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\[)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.rest.ts"
          },
          "2": {
            name: "punctuation.definition.binding-pattern.array.ts"
          }
        },
        end: "\\]",
        endCaptures: {
          "0": {
            name: "punctuation.definition.binding-pattern.array.ts"
          }
        },
        patterns: [
          {
            include: "#parameter-binding-element"
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "parameter-object-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#parameter-binding-element"
          }
        ]
      },
      {
        include: "#parameter-object-binding-pattern"
      },
      {
        include: "#destructuring-parameter-rest"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "parameter-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#parameter-object-binding-pattern"
      },
      {
        include: "#parameter-array-binding-pattern"
      },
      {
        include: "#destructuring-parameter-rest"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "destructuring-parameter-rest": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.ts"
      },
      "2": {
        name: "variable.parameter.ts"
      }
    }
  },
  "parameter-object-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.ts"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.ts"
      }
    },
    patterns: [
      {
        include: "#parameter-object-binding-element"
      }
    ]
  },
  "parameter-array-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.ts"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.ts"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.ts"
      }
    },
    patterns: [
      {
        include: "#parameter-binding-element"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "field-declaration": {
    name: "meta.field.declaration.ts",
    begin: "(?x)(?<!\\()(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s+)?(?=\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|\\}|$))",
    beginCaptures: {
      "1": {
        name: "storage.modifier.ts"
      }
    },
    end: "(?x)(?=\\}|;|,|$|(^(?!\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|$))))|(?<=\\})",
    patterns: [
      {
        include: "#variable-initializer"
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#comment"
      },
      {
        match: "(?x)(\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\?)|(\\!))?(?=\\s*\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "meta.definition.property.ts entity.name.function.ts"
          },
          "2": {
            name: "keyword.operator.optional.ts"
          },
          "3": {
            name: "keyword.operator.definiteassignment.ts"
          }
        }
      },
      {
        name: "meta.definition.property.ts variable.object.property.ts",
        match: "\\#?[_$[:alpha:]][_$[:alnum:]]*"
      },
      {
        name: "keyword.operator.optional.ts",
        match: "\\?"
      },
      {
        name: "keyword.operator.definiteassignment.ts",
        match: "\\!"
      }
    ]
  },
  "variable-initializer": {
    patterns: [
      {
        begin: "(?<!=|!)(=)(?!=)(?=\\s*\\S)(?!\\s*.*=>\\s*$)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.ts"
          }
        },
        end: "(?=$|^|[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        begin: "(?<!=|!)(=)(?!=)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.ts"
          }
        },
        end: "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<=\\S)(?<!=)(?=\\s*$)",
        patterns: [
          {
            include: "#expression"
          }
        ]
      }
    ]
  },
  "function-declaration": {
    name: "meta.function.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.ts"
      },
      "2": {
        name: "storage.modifier.ts"
      },
      "3": {
        name: "storage.modifier.async.ts"
      },
      "4": {
        name: "storage.type.function.ts"
      },
      "5": {
        name: "keyword.generator.asterisk.ts"
      },
      "6": {
        name: "meta.definition.function.ts entity.name.function.ts"
      }
    },
    end: "(?=;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|(?<=\\})",
    patterns: [
      {
        include: "#function-name"
      },
      {
        include: "#function-body"
      }
    ]
  },
  "function-expression": {
    name: "meta.function.expression.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
    beginCaptures: {
      "1": {
        name: "storage.modifier.async.ts"
      },
      "2": {
        name: "storage.type.function.ts"
      },
      "3": {
        name: "keyword.generator.asterisk.ts"
      },
      "4": {
        name: "meta.definition.function.ts entity.name.function.ts"
      }
    },
    end: "(?=;)|(?<=\\})",
    patterns: [
      {
        include: "#function-name"
      },
      {
        include: "#single-line-comment-consuming-line-ending"
      },
      {
        include: "#function-body"
      }
    ]
  },
  "function-name": {
    name: "meta.definition.function.ts entity.name.function.ts",
    match: "[_$[:alpha:]][_$[:alnum:]]*"
  },
  "function-body": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#function-parameters"
      },
      {
        include: "#return-type"
      },
      {
        include: "#type-function-return-type"
      },
      {
        include: "#decl-block"
      },
      {
        name: "keyword.generator.asterisk.ts",
        match: "\\*"
      }
    ]
  },
  "method-declaration": {
    patterns: [
      {
        name: "meta.method.declaration.ts",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?\\s*\\b(constructor)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "1": {
            name: "storage.modifier.ts"
          },
          "2": {
            name: "storage.modifier.ts"
          },
          "3": {
            name: "storage.modifier.ts"
          },
          "4": {
            name: "storage.modifier.async.ts"
          },
          "5": {
            name: "storage.type.ts"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.method.declaration.ts",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:(?:\\s*\\b(new)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|(?:(\\*)\\s*)?)(?=\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.ts"
          },
          "2": {
            name: "storage.modifier.ts"
          },
          "3": {
            name: "storage.modifier.ts"
          },
          "4": {
            name: "storage.modifier.async.ts"
          },
          "5": {
            name: "keyword.operator.new.ts"
          },
          "6": {
            name: "keyword.generator.asterisk.ts"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.method.declaration.ts",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.ts"
          },
          "2": {
            name: "storage.modifier.ts"
          },
          "3": {
            name: "storage.modifier.ts"
          },
          "4": {
            name: "storage.modifier.async.ts"
          },
          "5": {
            name: "storage.type.property.ts"
          },
          "6": {
            name: "keyword.generator.asterisk.ts"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      }
    ]
  },
  "object-literal-method-declaration": {
    name: "meta.method.declaration.ts",
    begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
    beginCaptures: {
      "1": {
        name: "storage.modifier.async.ts"
      },
      "2": {
        name: "storage.type.property.ts"
      },
      "3": {
        name: "keyword.generator.asterisk.ts"
      }
    },
    end: "(?=\\}|;|,)|(?<=\\})",
    patterns: [
      {
        include: "#method-declaration-name"
      },
      {
        include: "#function-body"
      },
      {
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.ts"
          },
          "2": {
            name: "storage.type.property.ts"
          },
          "3": {
            name: "keyword.generator.asterisk.ts"
          }
        },
        end: "(?=\\(|\\<)",
        patterns: [
          {
            include: "#method-declaration-name"
          }
        ]
      }
    ]
  },
  "method-declaration-name": {
    begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])",
    end: "(?=\\(|\\<)",
    patterns: [
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        name: "meta.definition.method.ts entity.name.function.ts",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      },
      {
        name: "keyword.operator.optional.ts",
        match: "\\?"
      }
    ]
  },
  "arrow-function": {
    patterns: [
      {
        name: "meta.arrow.ts",
        match: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)",
        captures: {
          "1": {
            name: "storage.modifier.async.ts"
          },
          "2": {
            name: "variable.parameter.ts"
          }
        }
      },
      {
        name: "meta.arrow.ts",
        begin: "(?x) (?:\n  (?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\n)? ((?<![})!\\]])\\s*\n  (?=\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  )\n)",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.ts"
          }
        },
        end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-parameters"
          },
          {
            include: "#function-parameters"
          },
          {
            include: "#arrow-return-type"
          },
          {
            include: "#possibly-arrow-return-type"
          }
        ]
      },
      {
        name: "meta.arrow.ts",
        begin: "=>",
        beginCaptures: {
          "0": {
            name: "storage.type.function.arrow.ts"
          }
        },
        end: "((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",
        patterns: [
          {
            include: "#single-line-comment-consuming-line-ending"
          },
          {
            include: "#decl-block"
          },
          {
            include: "#expression"
          }
        ]
      }
    ]
  },
  "indexer-declaration": {
    name: "meta.indexer.declaration.ts",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)",
    beginCaptures: {
      "1": {
        name: "storage.modifier.ts"
      },
      "2": {
        name: "meta.brace.square.ts"
      },
      "3": {
        name: "variable.parameter.ts"
      }
    },
    end: "(\\])\\s*(\\?\\s*)?|$",
    endCaptures: {
      "1": {
        name: "meta.brace.square.ts"
      },
      "2": {
        name: "keyword.operator.optional.ts"
      }
    },
    patterns: [
      {
        include: "#type-annotation"
      }
    ]
  },
  "indexer-mapped-type-declaration": {
    name: "meta.indexer.mappedtype.declaration.ts",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([+-])?(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s+(in)\\s+",
    beginCaptures: {
      "1": {
        name: "keyword.operator.type.modifier.ts"
      },
      "2": {
        name: "storage.modifier.ts"
      },
      "3": {
        name: "meta.brace.square.ts"
      },
      "4": {
        name: "entity.name.type.ts"
      },
      "5": {
        name: "keyword.operator.expression.in.ts"
      }
    },
    end: "(\\])([+-])?\\s*(\\?\\s*)?|$",
    endCaptures: {
      "1": {
        name: "meta.brace.square.ts"
      },
      "2": {
        name: "keyword.operator.type.modifier.ts"
      },
      "3": {
        name: "keyword.operator.optional.ts"
      }
    },
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        captures: {
          "1": {
            name: "keyword.control.as.ts"
          }
        }
      },
      {
        include: "#type"
      }
    ]
  },
  "function-parameters": {
    name: "meta.parameters.ts",
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.parameters.begin.ts"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "punctuation.definition.parameters.end.ts"
      }
    },
    patterns: [
      {
        include: "#function-parameters-body"
      }
    ]
  },
  "function-parameters-body": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#decorator"
      },
      {
        include: "#destructuring-parameter"
      },
      {
        include: "#parameter-name"
      },
      {
        include: "#parameter-type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        name: "punctuation.separator.parameter.ts",
        match: ","
      }
    ]
  },
  "class-declaration": {
    name: "meta.class.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.ts"
      },
      "2": {
        name: "storage.modifier.ts"
      },
      "3": {
        name: "storage.modifier.ts"
      },
      "4": {
        name: "storage.type.class.ts"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#class-declaration-or-expression-patterns"
      }
    ]
  },
  "class-expression": {
    name: "meta.class.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])",
    beginCaptures: {
      "1": {
        name: "storage.modifier.ts"
      },
      "2": {
        name: "storage.type.class.ts"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#class-declaration-or-expression-patterns"
      }
    ]
  },
  "class-declaration-or-expression-patterns": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        match: "[_$[:alpha:]][_$[:alnum:]]*",
        captures: {
          "0": {
            name: "entity.name.type.class.ts"
          }
        }
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#class-or-interface-body"
      }
    ]
  },
  "interface-declaration": {
    name: "meta.interface.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.ts"
      },
      "2": {
        name: "storage.modifier.ts"
      },
      "3": {
        name: "storage.modifier.ts"
      },
      "4": {
        name: "storage.type.interface.ts"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        match: "[_$[:alpha:]][_$[:alnum:]]*",
        captures: {
          "0": {
            name: "entity.name.type.interface.ts"
          }
        }
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#class-or-interface-body"
      }
    ]
  },
  "class-or-interface-heritage": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(extends|implements)\\b)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "storage.modifier.ts"
      }
    },
    end: "(?=\\{)",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)",
        captures: {
          "1": {
            name: "entity.name.type.module.ts"
          },
          "2": {
            name: "punctuation.accessor.ts"
          },
          "3": {
            name: "punctuation.accessor.optional.ts"
          }
        }
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "entity.other.inherited-class.ts"
          }
        }
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  "class-or-interface-body": {
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#decorator"
      },
      {
        begin: "(?<=:)\\s*",
        end: "(?=\\s|[;),}\\]:\\-\\+]|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        include: "#method-declaration"
      },
      {
        include: "#indexer-declaration"
      },
      {
        include: "#field-declaration"
      },
      {
        include: "#string"
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#access-modifier"
      },
      {
        include: "#property-accessor"
      },
      {
        include: "#async-modifier"
      },
      {
        include: "#after-operator-block-as-object-literal"
      },
      {
        include: "#decl-block"
      },
      {
        include: "#expression"
      },
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-semicolon"
      }
    ]
  },
  "access-modifier": {
    name: "storage.modifier.ts",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "property-accessor": {
    name: "storage.type.property.ts",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "async-modifier": {
    name: "storage.modifier.async.ts",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "enum-declaration": {
    name: "meta.enum.declaration.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.ts"
      },
      "2": {
        name: "storage.modifier.ts"
      },
      "3": {
        name: "storage.modifier.ts"
      },
      "4": {
        name: "storage.type.enum.ts"
      },
      "5": {
        name: "entity.name.type.enum.ts"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "\\{",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.block.ts"
          }
        },
        end: "\\}",
        endCaptures: {
          "0": {
            name: "punctuation.definition.block.ts"
          }
        },
        patterns: [
          {
            include: "#comment"
          },
          {
            begin: "([_$[:alpha:]][_$[:alnum:]]*)",
            beginCaptures: {
              "0": {
                name: "variable.other.enummember.ts"
              }
            },
            end: "(?=,|\\}|$)",
            patterns: [
              {
                include: "#comment"
              },
              {
                include: "#variable-initializer"
              }
            ]
          },
          {
            begin: "(?=((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))",
            end: "(?=,|\\}|$)",
            patterns: [
              {
                include: "#string"
              },
              {
                include: "#array-literal"
              },
              {
                include: "#comment"
              },
              {
                include: "#variable-initializer"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "namespace-declaration": {
    name: "meta.namespace.declaration.ts",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`]))",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.ts"
      },
      "2": {
        name: "storage.modifier.ts"
      },
      "3": {
        name: "storage.type.namespace.ts"
      }
    },
    end: "(?<=\\})|(?=;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        name: "entity.name.type.module.ts",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      },
      {
        include: "#punctuation-accessor"
      },
      {
        include: "#decl-block"
      }
    ]
  },
  "type-alias-declaration": {
    name: "meta.type.declaration.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(type)\\b\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.ts"
      },
      "2": {
        name: "storage.modifier.ts"
      },
      "3": {
        name: "storage.type.type.ts"
      },
      "4": {
        name: "entity.name.type.alias.ts"
      }
    },
    end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-parameters"
      },
      {
        begin: "(=)\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.ts"
          },
          "2": {
            name: "keyword.control.intrinsic.ts"
          }
        },
        end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        begin: "(=)\\s*",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.ts"
          }
        },
        end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "import-equals-declaration": {
    patterns: [
      {
        name: "meta.import-equals.external.ts",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(require)\\s*(\\()",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.ts"
          },
          "2": {
            name: "storage.modifier.ts"
          },
          "3": {
            name: "keyword.control.import.ts"
          },
          "4": {
            name: "keyword.control.type.ts"
          },
          "5": {
            name: "variable.other.readwrite.alias.ts"
          },
          "6": {
            name: "keyword.operator.assignment.ts"
          },
          "7": {
            name: "keyword.control.require.ts"
          },
          "8": {
            name: "meta.brace.round.ts"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.ts"
          }
        },
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#string"
          }
        ]
      },
      {
        name: "meta.import-equals.internal.ts",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(?!require\\b)",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.ts"
          },
          "2": {
            name: "storage.modifier.ts"
          },
          "3": {
            name: "keyword.control.import.ts"
          },
          "4": {
            name: "keyword.control.type.ts"
          },
          "5": {
            name: "variable.other.readwrite.alias.ts"
          },
          "6": {
            name: "keyword.operator.assignment.ts"
          }
        },
        end: "(?=;|$|^)",
        patterns: [
          {
            include: "#single-line-comment-consuming-line-ending"
          },
          {
            include: "#comment"
          },
          {
            match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
            captures: {
              "1": {
                name: "entity.name.type.module.ts"
              },
              "2": {
                name: "punctuation.accessor.ts"
              },
              "3": {
                name: "punctuation.accessor.optional.ts"
              }
            }
          },
          {
            name: "variable.other.readwrite.ts",
            match: "([_$[:alpha:]][_$[:alnum:]]*)"
          }
        ]
      }
    ]
  },
  "import-declaration": {
    name: "meta.import.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type)(?!\\s+from))?(?!\\s*[:\\(])(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.ts"
      },
      "2": {
        name: "storage.modifier.ts"
      },
      "3": {
        name: "keyword.control.import.ts"
      },
      "4": {
        name: "keyword.control.type.ts"
      }
    },
    end: "(?<!^import|[^\\._$[:alnum:]]import)(?=;|$|^)",
    patterns: [
      {
        include: "#single-line-comment-consuming-line-ending"
      },
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        begin: `(?<=^import|[^\\._$[:alnum:]]import)(?!\\s*["'])`,
        end: "\\bfrom\\b",
        endCaptures: {
          "0": {
            name: "keyword.control.from.ts"
          }
        },
        patterns: [
          {
            include: "#import-export-declaration"
          }
        ]
      },
      {
        include: "#import-export-declaration"
      }
    ]
  },
  "export-declaration": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "keyword.control.export.ts"
          },
          "2": {
            name: "keyword.control.as.ts"
          },
          "3": {
            name: "storage.type.namespace.ts"
          },
          "4": {
            name: "entity.name.type.module.ts"
          }
        }
      },
      {
        name: "meta.export.default.ts",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.ts"
          },
          "2": {
            name: "keyword.control.type.ts"
          },
          "3": {
            name: "keyword.operator.assignment.ts"
          },
          "4": {
            name: "keyword.control.default.ts"
          }
        },
        end: "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#interface-declaration"
          },
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.export.ts",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?\\b(?!(\\$)|(\\s*:))((?=\\s*[\\{*])|((?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s|,))(?!\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.ts"
          },
          "2": {
            name: "keyword.control.type.ts"
          }
        },
        end: "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#import-export-declaration"
          }
        ]
      }
    ]
  },
  "import-export-declaration": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#import-export-block"
      },
      {
        name: "keyword.control.from.ts",
        match: "\\bfrom\\b"
      },
      {
        include: "#import-export-clause"
      }
    ]
  },
  "import-export-block": {
    name: "meta.block.ts",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    patterns: [
      {
        include: "#import-export-clause"
      }
    ]
  },
  "import-export-clause": {
    patterns: [
      {
        include: "#comment"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*))",
        captures: {
          "1": {
            name: "keyword.control.default.ts"
          },
          "2": {
            name: "constant.language.import-export-all.ts"
          },
          "3": {
            name: "variable.other.readwrite.ts"
          },
          "4": {
            name: "keyword.control.as.ts"
          },
          "5": {
            name: "keyword.control.default.ts"
          },
          "6": {
            name: "variable.other.readwrite.alias.ts"
          }
        }
      },
      {
        include: "#punctuation-comma"
      },
      {
        name: "constant.language.import-export-all.ts",
        match: "\\*"
      },
      {
        name: "keyword.control.default.ts",
        match: "\\b(default)\\b"
      },
      {
        name: "variable.other.readwrite.alias.ts",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "switch-statement": {
    name: "switch-statement.expr.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()",
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "switch-expression.expr.ts",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(switch)\\s*(\\()",
        beginCaptures: {
          "1": {
            name: "keyword.control.switch.ts"
          },
          "2": {
            name: "meta.brace.round.ts"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.ts"
          }
        },
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "switch-block.expr.ts",
        begin: "\\{",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.block.ts"
          }
        },
        end: "(?=\\})",
        patterns: [
          {
            name: "case-clause.expr.ts",
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
            beginCaptures: {
              "1": {
                name: "keyword.control.switch.ts"
              }
            },
            end: "(?=:)",
            patterns: [
              {
                include: "#expression"
              }
            ]
          },
          {
            begin: "(:)\\s*(\\{)",
            beginCaptures: {
              "1": {
                name: "case-clause.expr.ts punctuation.definition.section.case-statement.ts"
              },
              "2": {
                name: "meta.block.ts punctuation.definition.block.ts"
              }
            },
            end: "\\}",
            endCaptures: {
              "0": {
                name: "meta.block.ts punctuation.definition.block.ts"
              }
            },
            contentName: "meta.block.ts",
            patterns: [
              {
                include: "#statements"
              }
            ]
          },
          {
            match: "(:)",
            captures: {
              "0": {
                name: "case-clause.expr.ts punctuation.definition.section.case-statement.ts"
              }
            }
          },
          {
            include: "#statements"
          }
        ]
      }
    ]
  },
  "for-loop": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())",
    beginCaptures: {
      "0": {
        name: "keyword.control.loop.ts"
      }
    },
    end: "(?<=\\))",
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "keyword.control.loop.ts",
        match: "await"
      },
      {
        begin: "\\(",
        beginCaptures: {
          "0": {
            name: "meta.brace.round.ts"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.ts"
          }
        },
        patterns: [
          {
            include: "#var-expr"
          },
          {
            include: "#expression"
          },
          {
            include: "#punctuation-semicolon"
          }
        ]
      }
    ]
  },
  "if-statement": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bif\\s*(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))\\s*(?!\\{))",
        end: "(?=;|$|\\})",
        patterns: [
          {
            include: "#comment"
          },
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(if)\\s*(\\()",
            beginCaptures: {
              "1": {
                name: "keyword.control.conditional.ts"
              },
              "2": {
                name: "meta.brace.round.ts"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.ts"
              }
            },
            patterns: [
              {
                include: "#expression"
              }
            ]
          },
          {
            name: "string.regexp.ts",
            begin: "(?<=\\))\\s*\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
            beginCaptures: {
              "0": {
                name: "punctuation.definition.string.begin.ts"
              }
            },
            end: "(/)([dgimsuy]*)",
            endCaptures: {
              "1": {
                name: "punctuation.definition.string.end.ts"
              },
              "2": {
                name: "keyword.other.ts"
              }
            },
            patterns: [
              {
                include: "#regexp"
              }
            ]
          },
          {
            include: "#statements"
          }
        ]
      }
    ]
  },
  "decl-block": {
    name: "meta.block.ts",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    patterns: [
      {
        include: "#statements"
      }
    ]
  },
  "after-operator-block-as-object-literal": {
    name: "meta.objectliteral.ts",
    begin: "(?<!\\+\\+|--)(?<=[:=(,\\[?+!>]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.block.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    patterns: [
      {
        include: "#object-member"
      }
    ]
  },
  "object-literal": {
    name: "meta.objectliteral.ts",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    patterns: [
      {
        include: "#object-member"
      }
    ]
  },
  "object-member": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#object-literal-method-declaration"
      },
      {
        name: "meta.object.member.ts meta.object-literal.key.ts",
        begin: "(?=\\[)",
        end: "(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#array-literal"
          }
        ]
      },
      {
        name: "meta.object.member.ts meta.object-literal.key.ts",
        begin: "(?=[\\'\\\"\\`])",
        end: "(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as)\\s+))))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#string"
          }
        ]
      },
      {
        name: "meta.object.member.ts meta.object-literal.key.ts",
        begin: "(?x)(?=(\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$)))",
        end: "(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as\\s+))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#numeric-literal"
          }
        ]
      },
      {
        name: "meta.method.declaration.ts",
        begin: "(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])",
        end: "(?=\\}|;|,)|(?<=\\})",
        patterns: [
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.object.member.ts",
        match: "(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
        captures: {
          "0": {
            name: "meta.object-literal.key.ts"
          },
          "1": {
            name: "constant.numeric.decimal.ts"
          }
        }
      },
      {
        name: "meta.object.member.ts",
        match: "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "0": {
            name: "meta.object-literal.key.ts"
          },
          "1": {
            name: "entity.name.function.ts"
          }
        }
      },
      {
        name: "meta.object.member.ts",
        match: "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
        captures: {
          "0": {
            name: "meta.object-literal.key.ts"
          }
        }
      },
      {
        name: "meta.object.member.ts",
        begin: "\\.\\.\\.",
        beginCaptures: {
          "0": {
            name: "keyword.operator.spread.ts"
          }
        },
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.object.member.ts",
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",
        captures: {
          "1": {
            name: "variable.other.readwrite.ts"
          }
        }
      },
      {
        name: "meta.object.member.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))",
        captures: {
          "1": {
            name: "keyword.control.as.ts"
          },
          "2": {
            name: "storage.modifier.ts"
          }
        }
      },
      {
        name: "meta.object.member.ts",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        beginCaptures: {
          "1": {
            name: "keyword.control.as.ts"
          }
        },
        end: "(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "meta.object.member.ts",
        begin: "(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",
        end: "(?=,|\\}|$|\\/\\/|\\/\\*)",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.object.member.ts",
        begin: ":",
        beginCaptures: {
          "0": {
            name: "meta.object-literal.key.ts punctuation.separator.key-value.ts"
          }
        },
        end: "(?=,|\\})",
        patterns: [
          {
            begin: "(?<=:)\\s*(async)?(?=\\s*(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.ts"
              }
            },
            end: "(?<=\\))",
            patterns: [
              {
                include: "#type-parameters"
              },
              {
                begin: "\\(",
                beginCaptures: {
                  "0": {
                    name: "meta.brace.round.ts"
                  }
                },
                end: "\\)",
                endCaptures: {
                  "0": {
                    name: "meta.brace.round.ts"
                  }
                },
                patterns: [
                  {
                    include: "#expression-inside-possibly-arrow-parens"
                  }
                ]
              }
            ]
          },
          {
            begin: "(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.ts"
              },
              "2": {
                name: "meta.brace.round.ts"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.ts"
              }
            },
            patterns: [
              {
                include: "#expression-inside-possibly-arrow-parens"
              }
            ]
          },
          {
            begin: "(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.ts"
              }
            },
            end: "(?<=\\>)",
            patterns: [
              {
                include: "#type-parameters"
              }
            ]
          },
          {
            begin: "(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "meta.brace.round.ts"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.ts"
              }
            },
            patterns: [
              {
                include: "#expression-inside-possibly-arrow-parens"
              }
            ]
          },
          {
            include: "#possibly-arrow-return-type"
          },
          {
            include: "#expression"
          }
        ]
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "ternary-expression": {
    begin: "(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.ternary.ts"
      }
    },
    end: "\\s*(:)",
    endCaptures: {
      "1": {
        name: "keyword.operator.ternary.ts"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "function-call": {
    patterns: [
      {
        begin: "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
        end: "(?<=\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
        patterns: [
          {
            name: "meta.function-call.ts",
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
            patterns: [
              {
                include: "#function-call-target"
              }
            ]
          },
          {
            include: "#comment"
          },
          {
            include: "#function-call-optionals"
          },
          {
            include: "#type-arguments"
          },
          {
            include: "#paren-expression"
          }
        ]
      },
      {
        begin: "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
        end: "(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
        patterns: [
          {
            name: "meta.function-call.ts",
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=(<\\s*[\\{\\[\\(]\\s*$))",
            patterns: [
              {
                include: "#function-call-target"
              }
            ]
          },
          {
            include: "#comment"
          },
          {
            include: "#function-call-optionals"
          },
          {
            include: "#type-arguments"
          }
        ]
      }
    ]
  },
  "function-call-target": {
    patterns: [
      {
        include: "#support-function-call-identifiers"
      },
      {
        name: "entity.name.function.ts",
        match: "(\\#?[_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "function-call-optionals": {
    patterns: [
      {
        name: "meta.function-call.ts punctuation.accessor.optional.ts",
        match: "\\?\\."
      },
      {
        name: "meta.function-call.ts keyword.operator.definiteassignment.ts",
        match: "\\!"
      }
    ]
  },
  "support-function-call-identifiers": {
    patterns: [
      {
        include: "#literal"
      },
      {
        include: "#support-objects"
      },
      {
        include: "#object-identifiers"
      },
      {
        include: "#punctuation-accessor"
      },
      {
        name: "keyword.operator.expression.import.ts",
        match: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))"
      }
    ]
  },
  "new-expr": {
    name: "new.expr.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.operator.new.ts"
      }
    },
    end: "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "instanceof-expr": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.operator.expression.instanceof.ts"
      }
    },
    end: "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
    patterns: [
      {
        include: "#type"
      }
    ]
  },
  "paren-expression-possibly-arrow": {
    patterns: [
      {
        begin: "(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.ts"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#paren-expression-possibly-arrow-with-typeparameters"
          }
        ]
      },
      {
        begin: "(?<=[(=,]|=>|^return|[^\\._$[:alnum:]]return)\\s*(async)?(?=\\s*((((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<))\\s*$)",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.ts"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#paren-expression-possibly-arrow-with-typeparameters"
          }
        ]
      },
      {
        include: "#possibly-arrow-return-type"
      }
    ]
  },
  "paren-expression-possibly-arrow-with-typeparameters": {
    patterns: [
      {
        include: "#type-parameters"
      },
      {
        begin: "\\(",
        beginCaptures: {
          "0": {
            name: "meta.brace.round.ts"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.ts"
          }
        },
        patterns: [
          {
            include: "#expression-inside-possibly-arrow-parens"
          }
        ]
      }
    ]
  },
  "expression-inside-possibly-arrow-parens": {
    patterns: [
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#decorator"
      },
      {
        include: "#destructuring-parameter"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
        captures: {
          "1": {
            name: "storage.modifier.ts"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "storage.modifier.ts"
          },
          "2": {
            name: "keyword.operator.rest.ts"
          },
          "3": {
            name: "entity.name.function.ts variable.language.this.ts"
          },
          "4": {
            name: "entity.name.function.ts"
          },
          "5": {
            name: "keyword.operator.optional.ts"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)",
        captures: {
          "1": {
            name: "storage.modifier.ts"
          },
          "2": {
            name: "keyword.operator.rest.ts"
          },
          "3": {
            name: "variable.parameter.ts variable.language.this.ts"
          },
          "4": {
            name: "variable.parameter.ts"
          },
          "5": {
            name: "keyword.operator.optional.ts"
          }
        }
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        name: "punctuation.separator.parameter.ts",
        match: ","
      },
      {
        include: "#identifiers"
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  "paren-expression": {
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "meta.brace.round.ts"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "meta.brace.round.ts"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  cast: {
    patterns: [
      {
        name: "cast.expr.ts",
        match: "\\s*(<)\\s*(const)\\s*(>)",
        captures: {
          "1": {
            name: "meta.brace.angle.ts"
          },
          "2": {
            name: "storage.modifier.ts"
          },
          "3": {
            name: "meta.brace.angle.ts"
          }
        }
      },
      {
        name: "cast.expr.ts",
        begin: "(?:(?<!\\+\\+|--)(?<=^return|[^\\._$[:alnum:]]return|^throw|[^\\._$[:alnum:]]throw|^yield|[^\\._$[:alnum:]]yield|^await|[^\\._$[:alnum:]]await|^default|[^\\._$[:alnum:]]default|[=(,:>*?\\&\\|\\^]|[^_$[:alnum:]](?:\\+\\+|\\-\\-)|[^\\+]\\+|[^\\-]\\-))\\s*(<)(?!<?\\=)(?!\\s*$)",
        beginCaptures: {
          "1": {
            name: "meta.brace.angle.ts"
          }
        },
        end: "(\\>)",
        endCaptures: {
          "1": {
            name: "meta.brace.angle.ts"
          }
        },
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "cast.expr.ts",
        begin: "(?:(?<=^))\\s*(<)(?=[_$[:alpha:]][_$[:alnum:]]*\\s*>)",
        beginCaptures: {
          "1": {
            name: "meta.brace.angle.ts"
          }
        },
        end: "(\\>)",
        endCaptures: {
          "1": {
            name: "meta.brace.angle.ts"
          }
        },
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "expression-operators": {
    patterns: [
      {
        name: "keyword.control.flow.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?=\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*\\*)",
        beginCaptures: {
          "1": {
            name: "keyword.control.flow.ts"
          }
        },
        end: "\\*",
        endCaptures: {
          "0": {
            name: "keyword.generator.asterisk.ts"
          }
        },
        patterns: [
          {
            include: "#comment"
          }
        ]
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?",
        captures: {
          "1": {
            name: "keyword.control.flow.ts"
          },
          "2": {
            name: "keyword.generator.asterisk.ts"
          }
        }
      },
      {
        name: "keyword.operator.expression.delete.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.expression.in.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
      },
      {
        name: "keyword.operator.expression.of.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
      },
      {
        name: "keyword.operator.expression.instanceof.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.new.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#typeof-operator"
      },
      {
        name: "keyword.operator.expression.void.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))",
        captures: {
          "1": {
            name: "keyword.control.as.ts"
          },
          "2": {
            name: "storage.modifier.ts"
          }
        }
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        beginCaptures: {
          "1": {
            name: "keyword.control.as.ts"
          }
        },
        end: "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+)|(\\s+\\<))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "keyword.operator.spread.ts",
        match: "\\.\\.\\."
      },
      {
        name: "keyword.operator.assignment.compound.ts",
        match: "\\*=|(?<!\\()/=|%=|\\+=|\\-="
      },
      {
        name: "keyword.operator.assignment.compound.bitwise.ts",
        match: "\\&=|\\^=|<<=|>>=|>>>=|\\|="
      },
      {
        name: "keyword.operator.bitwise.shift.ts",
        match: "<<|>>>|>>"
      },
      {
        name: "keyword.operator.comparison.ts",
        match: "===|!==|==|!="
      },
      {
        name: "keyword.operator.relational.ts",
        match: "<=|>=|<>|<|>"
      },
      {
        match: "(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))",
        captures: {
          "1": {
            name: "keyword.operator.logical.ts"
          },
          "2": {
            name: "keyword.operator.assignment.compound.ts"
          },
          "3": {
            name: "keyword.operator.arithmetic.ts"
          }
        }
      },
      {
        name: "keyword.operator.logical.ts",
        match: "\\!|&&|\\|\\||\\?\\?"
      },
      {
        name: "keyword.operator.bitwise.ts",
        match: "\\&|~|\\^|\\|"
      },
      {
        name: "keyword.operator.assignment.ts",
        match: "\\="
      },
      {
        name: "keyword.operator.decrement.ts",
        match: "--"
      },
      {
        name: "keyword.operator.increment.ts",
        match: "\\+\\+"
      },
      {
        name: "keyword.operator.arithmetic.ts",
        match: "%|\\*|/|-|\\+"
      },
      {
        begin: "(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",
        end: "(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",
        endCaptures: {
          "1": {
            name: "keyword.operator.assignment.compound.ts"
          },
          "2": {
            name: "keyword.operator.arithmetic.ts"
          }
        },
        patterns: [
          {
            include: "#comment"
          }
        ]
      },
      {
        match: "(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))",
        captures: {
          "1": {
            name: "keyword.operator.assignment.compound.ts"
          },
          "2": {
            name: "keyword.operator.arithmetic.ts"
          }
        }
      }
    ]
  },
  "typeof-operator": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "0": {
        name: "keyword.operator.expression.typeof.ts"
      }
    },
    end: "(?=[,);}\\]=>:&|{\\?]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  literal: {
    patterns: [
      {
        include: "#numeric-literal"
      },
      {
        include: "#boolean-literal"
      },
      {
        include: "#null-literal"
      },
      {
        include: "#undefined-literal"
      },
      {
        include: "#numericConstant-literal"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#this-literal"
      },
      {
        include: "#super-literal"
      }
    ]
  },
  "array-literal": {
    name: "meta.array.literal.ts",
    begin: "\\s*(\\[)",
    beginCaptures: {
      "1": {
        name: "meta.brace.square.ts"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "meta.brace.square.ts"
      }
    },
    patterns: [
      {
        include: "#expression"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "numeric-literal": {
    patterns: [
      {
        name: "constant.numeric.hex.ts",
        match: "\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.ts"
          }
        }
      },
      {
        name: "constant.numeric.binary.ts",
        match: "\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.ts"
          }
        }
      },
      {
        name: "constant.numeric.octal.ts",
        match: "\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.ts"
          }
        }
      },
      {
        match: "(?x)\n(?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$)",
        captures: {
          "0": {
            name: "constant.numeric.decimal.ts"
          },
          "1": {
            name: "meta.delimiter.decimal.period.ts"
          },
          "2": {
            name: "storage.type.numeric.bigint.ts"
          },
          "3": {
            name: "meta.delimiter.decimal.period.ts"
          },
          "4": {
            name: "storage.type.numeric.bigint.ts"
          },
          "5": {
            name: "meta.delimiter.decimal.period.ts"
          },
          "6": {
            name: "storage.type.numeric.bigint.ts"
          },
          "7": {
            name: "storage.type.numeric.bigint.ts"
          },
          "8": {
            name: "meta.delimiter.decimal.period.ts"
          },
          "9": {
            name: "storage.type.numeric.bigint.ts"
          },
          "10": {
            name: "meta.delimiter.decimal.period.ts"
          },
          "11": {
            name: "storage.type.numeric.bigint.ts"
          },
          "12": {
            name: "meta.delimiter.decimal.period.ts"
          },
          "13": {
            name: "storage.type.numeric.bigint.ts"
          },
          "14": {
            name: "storage.type.numeric.bigint.ts"
          }
        }
      }
    ]
  },
  "boolean-literal": {
    patterns: [
      {
        name: "constant.language.boolean.true.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "constant.language.boolean.false.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "null-literal": {
    name: "constant.language.null.ts",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "this-literal": {
    name: "variable.language.this.ts",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)"
  },
  "super-literal": {
    name: "variable.language.super.ts",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)"
  },
  "undefined-literal": {
    name: "constant.language.undefined.ts",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "numericConstant-literal": {
    patterns: [
      {
        name: "constant.language.nan.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "constant.language.infinity.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "support-objects": {
    patterns: [
      {
        name: "variable.language.arguments.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)"
      },
      {
        name: "support.class.builtin.ts",
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Array|ArrayBuffer|Atomics|BigInt|BigInt64Array|BigUint64Array|Boolean|DataView|Date|Float32Array\n  |Float64Array|Function|Generator|GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Proxy\n  |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray\n  |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\\b(?!\\$)"
      },
      {
        name: "support.class.error.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))((Eval|Internal|Range|Reference|Syntax|Type|URI)?Error)\\b(?!\\$)"
      },
      {
        name: "support.class.promise.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)"
      },
      {
        name: "support.function.ts",
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(clear(Interval|Timeout)|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|\n  isFinite|isNaN|parseFloat|parseInt|require|set(Interval|Timeout)|super|unescape|uneval)(?=\\s*\\()"
      },
      {
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Math)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n  (abs|acos|acosh|asin|asinh|atan|atan2|atanh|cbrt|ceil|clz32|cos|cosh|exp|\n  expm1|floor|fround|hypot|imul|log|log10|log1p|log2|max|min|pow|random|\n  round|sign|sin|sinh|sqrt|tan|tanh|trunc)\n  |\n  (E|LN10|LN2|LOG10E|LOG2E|PI|SQRT1_2|SQRT2)))?\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.constant.math.ts"
          },
          "2": {
            name: "punctuation.accessor.ts"
          },
          "3": {
            name: "punctuation.accessor.optional.ts"
          },
          "4": {
            name: "support.function.math.ts"
          },
          "5": {
            name: "support.constant.property.math.ts"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(JSON)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(parse|stringify))?\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.constant.json.ts"
          },
          "2": {
            name: "punctuation.accessor.ts"
          },
          "3": {
            name: "punctuation.accessor.optional.ts"
          },
          "4": {
            name: "support.function.json.ts"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\b(?!\\$)",
        captures: {
          "1": {
            name: "keyword.control.import.ts"
          },
          "2": {
            name: "punctuation.accessor.ts"
          },
          "3": {
            name: "punctuation.accessor.optional.ts"
          },
          "4": {
            name: "support.variable.property.importmeta.ts"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\b(?!\\$)",
        captures: {
          "1": {
            name: "keyword.operator.new.ts"
          },
          "2": {
            name: "punctuation.accessor.ts"
          },
          "3": {
            name: "punctuation.accessor.optional.ts"
          },
          "4": {
            name: "support.variable.property.target.ts"
          }
        }
      },
      {
        match: "(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?:\n  (?:(constructor|length|prototype|__proto__)\\b(?!\\$|\\s*(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\())\n  |\n  (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\b(?!\\$)))",
        captures: {
          "1": {
            name: "punctuation.accessor.ts"
          },
          "2": {
            name: "punctuation.accessor.optional.ts"
          },
          "3": {
            name: "support.variable.property.ts"
          },
          "4": {
            name: "support.constant.ts"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.type.object.module.ts"
          },
          "2": {
            name: "support.type.object.module.ts"
          },
          "3": {
            name: "punctuation.accessor.ts"
          },
          "4": {
            name: "punctuation.accessor.optional.ts"
          },
          "5": {
            name: "support.type.object.module.ts"
          }
        }
      }
    ]
  },
  identifiers: {
    patterns: [
      {
        include: "#object-identifiers"
      },
      {
        match: "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n))",
        captures: {
          "1": {
            name: "punctuation.accessor.ts"
          },
          "2": {
            name: "punctuation.accessor.optional.ts"
          },
          "3": {
            name: "entity.name.function.ts"
          }
        }
      },
      {
        match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",
        captures: {
          "1": {
            name: "punctuation.accessor.ts"
          },
          "2": {
            name: "punctuation.accessor.optional.ts"
          },
          "3": {
            name: "variable.other.constant.property.ts"
          }
        }
      },
      {
        match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "punctuation.accessor.ts"
          },
          "2": {
            name: "punctuation.accessor.optional.ts"
          },
          "3": {
            name: "variable.other.property.ts"
          }
        }
      },
      {
        name: "variable.other.constant.ts",
        match: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"
      },
      {
        name: "variable.other.readwrite.ts",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      }
    ]
  },
  "object-identifiers": {
    patterns: [
      {
        name: "support.class.ts",
        match: "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))"
      },
      {
        match: "(?x)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n  (\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\n  (\\#?[_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "punctuation.accessor.ts"
          },
          "2": {
            name: "punctuation.accessor.optional.ts"
          },
          "3": {
            name: "variable.other.constant.object.property.ts"
          },
          "4": {
            name: "variable.other.object.property.ts"
          }
        }
      },
      {
        match: "(?x)(?:\n  ([[:upper:]][_$[:digit:][:upper:]]*) |\n  ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "variable.other.constant.object.ts"
          },
          "2": {
            name: "variable.other.object.ts"
          }
        }
      }
    ]
  },
  "type-annotation": {
    patterns: [
      {
        name: "meta.type.annotation.ts",
        begin: "(:)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.ts"
          }
        },
        end: "(?<![:|&])((?=$|^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "meta.type.annotation.ts",
        begin: "(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.ts"
          }
        },
        end: "(?<![:|&])((?=[,);\\}\\]]|//)|(?==[^>])|(?=^\\s*$)|((?<=\\S)(?=\\s*$))|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "parameter-type-annotation": {
    patterns: [
      {
        name: "meta.type.annotation.ts",
        begin: "(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.ts"
          }
        },
        end: "(?=[,)])|(?==[^>])",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "return-type": {
    patterns: [
      {
        name: "meta.return.type.ts",
        begin: "(?<=\\))\\s*(:)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.ts"
          }
        },
        end: "(?<![:|&])(?=$|^|[{};,]|//)",
        patterns: [
          {
            include: "#return-type-core"
          }
        ]
      },
      {
        name: "meta.return.type.ts",
        begin: "(?<=\\))\\s*(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.ts"
          }
        },
        end: "(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
        patterns: [
          {
            include: "#return-type-core"
          }
        ]
      }
    ]
  },
  "return-type-core": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?<=[:|&])(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "arrow-return-type": {
    name: "meta.return.type.arrow.ts",
    begin: "(?<=\\))\\s*(:)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.type.annotation.ts"
      }
    },
    end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
    patterns: [
      {
        include: "#arrow-return-type-body"
      }
    ]
  },
  "possibly-arrow-return-type": {
    begin: "(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",
    beginCaptures: {
      "1": {
        name: "meta.arrow.ts meta.return.type.arrow.ts keyword.operator.type.annotation.ts"
      }
    },
    end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
    contentName: "meta.arrow.ts meta.return.type.arrow.ts",
    patterns: [
      {
        include: "#arrow-return-type-body"
      }
    ]
  },
  "arrow-return-type-body": {
    patterns: [
      {
        begin: "(?<=[:])(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-parameters": {
    name: "meta.type.parameters.ts",
    begin: "(<)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.typeparameters.begin.ts"
      }
    },
    end: "(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.typeparameters.end.ts"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "storage.modifier.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      },
      {
        name: "keyword.operator.assignment.ts",
        match: "(=)(?!>)"
      }
    ]
  },
  "type-arguments": {
    name: "meta.type.parameters.ts",
    begin: "\\<",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.typeparameters.begin.ts"
      }
    },
    end: "\\>",
    endCaptures: {
      "0": {
        name: "punctuation.definition.typeparameters.end.ts"
      }
    },
    patterns: [
      {
        include: "#type-arguments-body"
      }
    ]
  },
  "type-arguments-body": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "0": {
            name: "keyword.operator.type.ts"
          }
        }
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  type: {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#type-primitive"
      },
      {
        include: "#type-builtin-literals"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#type-tuple"
      },
      {
        include: "#type-object"
      },
      {
        include: "#type-conditional"
      },
      {
        include: "#type-operators"
      },
      {
        include: "#type-fn-type-parameters"
      },
      {
        include: "#type-paren-or-function-parameters"
      },
      {
        include: "#type-function-return-type"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
        captures: {
          "1": {
            name: "storage.modifier.ts"
          }
        }
      },
      {
        include: "#type-name"
      }
    ]
  },
  "type-primitive": {
    name: "support.type.primitive.ts",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "type-builtin-literals": {
    name: "support.type.builtin.ts",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "type-tuple": {
    name: "meta.type.tuple.ts",
    begin: "\\[",
    beginCaptures: {
      "0": {
        name: "meta.brace.square.ts"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "meta.brace.square.ts"
      }
    },
    patterns: [
      {
        name: "keyword.operator.rest.ts",
        match: "\\.\\.\\."
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
        captures: {
          "1": {
            name: "entity.name.label.ts"
          },
          "2": {
            name: "keyword.operator.optional.ts"
          },
          "3": {
            name: "punctuation.separator.label.ts"
          }
        }
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "type-object": {
    name: "meta.object.type.ts",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#method-declaration"
      },
      {
        include: "#indexer-declaration"
      },
      {
        include: "#indexer-mapped-type-declaration"
      },
      {
        include: "#field-declaration"
      },
      {
        include: "#type-annotation"
      },
      {
        begin: "\\.\\.\\.",
        beginCaptures: {
          "0": {
            name: "keyword.operator.spread.ts"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-semicolon"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-conditional": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
        beginCaptures: {
          "1": {
            name: "storage.modifier.ts"
          }
        },
        end: "(?<=:)",
        patterns: [
          {
            begin: "\\?",
            beginCaptures: {
              "0": {
                name: "keyword.operator.ternary.ts"
              }
            },
            end: ":",
            endCaptures: {
              "0": {
                name: "keyword.operator.ternary.ts"
              }
            },
            patterns: [
              {
                include: "#type"
              }
            ]
          },
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "type-paren-or-function-parameters": {
    name: "meta.type.paren.cover.ts",
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "meta.brace.round.ts"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "meta.brace.round.ts"
      }
    },
    patterns: [
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
        captures: {
          "1": {
            name: "storage.modifier.ts"
          },
          "2": {
            name: "keyword.operator.rest.ts"
          },
          "3": {
            name: "entity.name.function.ts variable.language.this.ts"
          },
          "4": {
            name: "entity.name.function.ts"
          },
          "5": {
            name: "keyword.operator.optional.ts"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
        captures: {
          "1": {
            name: "storage.modifier.ts"
          },
          "2": {
            name: "keyword.operator.rest.ts"
          },
          "3": {
            name: "variable.parameter.ts variable.language.this.ts"
          },
          "4": {
            name: "variable.parameter.ts"
          },
          "5": {
            name: "keyword.operator.optional.ts"
          }
        }
      },
      {
        include: "#type-annotation"
      },
      {
        name: "punctuation.separator.parameter.ts",
        match: ","
      },
      {
        include: "#type"
      }
    ]
  },
  "type-fn-type-parameters": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
        beginCaptures: {
          "1": {
            name: "meta.type.constructor.ts storage.modifier.ts"
          },
          "2": {
            name: "meta.type.constructor.ts keyword.control.new.ts"
          }
        },
        end: "(?<=>)",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-parameters"
          }
        ]
      },
      {
        name: "meta.type.constructor.ts",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
        beginCaptures: {
          "1": {
            name: "storage.modifier.ts"
          },
          "2": {
            name: "keyword.control.new.ts"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#function-parameters"
          }
        ]
      },
      {
        name: "meta.type.function.ts",
        begin: "(?x)(\n  (?=\n    [(]\\s*(\n      ([)]) |\n      (\\.\\.\\.) |\n      ([_$[:alnum:]]+\\s*(\n        ([:,?=])|\n        ([)]\\s*=>)\n      ))\n    )\n  )\n)",
        end: "(?<=\\))",
        patterns: [
          {
            include: "#function-parameters"
          }
        ]
      }
    ]
  },
  "type-function-return-type": {
    patterns: [
      {
        name: "meta.type.function.return.ts",
        begin: "(=>)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "storage.type.function.arrow.ts"
          }
        },
        end: "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
        patterns: [
          {
            include: "#type-function-return-type-core"
          }
        ]
      },
      {
        name: "meta.type.function.return.ts",
        begin: "=>",
        beginCaptures: {
          "0": {
            name: "storage.type.function.arrow.ts"
          }
        },
        end: "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
        patterns: [
          {
            include: "#type-function-return-type-core"
          }
        ]
      }
    ]
  },
  "type-function-return-type-core": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?<==>)(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-operators": {
    patterns: [
      {
        include: "#typeof-operator"
      },
      {
        begin: "([&|])(?=\\s*\\{)",
        beginCaptures: {
          "0": {
            name: "keyword.operator.type.ts"
          }
        },
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        begin: "[&|]",
        beginCaptures: {
          "0": {
            name: "keyword.operator.type.ts"
          }
        },
        end: "(?=\\S)"
      },
      {
        name: "keyword.operator.expression.keyof.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.ternary.ts",
        match: "(\\?|\\:)"
      },
      {
        name: "keyword.operator.expression.infer.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))infer(?=\\s+[_$[:alpha:]])"
      },
      {
        name: "keyword.operator.expression.import.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"
      }
    ]
  },
  "type-predicate-operator": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.operator.type.asserts.ts"
          },
          "2": {
            name: "variable.parameter.ts variable.language.this.ts"
          },
          "3": {
            name: "variable.parameter.ts"
          },
          "4": {
            name: "keyword.operator.expression.is.ts"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.operator.type.asserts.ts"
          },
          "2": {
            name: "variable.parameter.ts variable.language.this.ts"
          },
          "3": {
            name: "variable.parameter.ts"
          }
        }
      },
      {
        name: "keyword.operator.type.asserts.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.expression.is.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "type-name": {
    patterns: [
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
        captures: {
          "1": {
            name: "entity.name.type.module.ts"
          },
          "2": {
            name: "punctuation.accessor.ts"
          },
          "3": {
            name: "punctuation.accessor.optional.ts"
          },
          "4": {
            name: "meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts"
          }
        },
        end: "(>)",
        endCaptures: {
          "1": {
            name: "meta.type.parameters.ts punctuation.definition.typeparameters.end.ts"
          }
        },
        contentName: "meta.type.parameters.ts",
        patterns: [
          {
            include: "#type-arguments-body"
          }
        ]
      },
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
        beginCaptures: {
          "1": {
            name: "entity.name.type.ts"
          },
          "2": {
            name: "meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts"
          }
        },
        end: "(>)",
        endCaptures: {
          "1": {
            name: "meta.type.parameters.ts punctuation.definition.typeparameters.end.ts"
          }
        },
        contentName: "meta.type.parameters.ts",
        patterns: [
          {
            include: "#type-arguments-body"
          }
        ]
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
        captures: {
          "1": {
            name: "entity.name.type.module.ts"
          },
          "2": {
            name: "punctuation.accessor.ts"
          },
          "3": {
            name: "punctuation.accessor.optional.ts"
          }
        }
      },
      {
        name: "entity.name.type.ts",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      }
    ]
  },
  "punctuation-comma": {
    name: "punctuation.separator.comma.ts",
    match: ","
  },
  "punctuation-semicolon": {
    name: "punctuation.terminator.statement.ts",
    match: ";"
  },
  "punctuation-accessor": {
    match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
    captures: {
      "1": {
        name: "punctuation.accessor.ts"
      },
      "2": {
        name: "punctuation.accessor.optional.ts"
      }
    }
  },
  string: {
    patterns: [
      {
        include: "#qstring-single"
      },
      {
        include: "#qstring-double"
      },
      {
        include: "#template"
      }
    ]
  },
  "qstring-double": {
    name: "string.quoted.double.ts",
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.ts"
      }
    },
    end: '(")|((?:[^\\\\\\n])$)',
    endCaptures: {
      "1": {
        name: "punctuation.definition.string.end.ts"
      },
      "2": {
        name: "invalid.illegal.newline.ts"
      }
    },
    patterns: [
      {
        include: "#string-character-escape"
      }
    ]
  },
  "qstring-single": {
    name: "string.quoted.single.ts",
    begin: "'",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.ts"
      }
    },
    end: "(\\')|((?:[^\\\\\\n])$)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.string.end.ts"
      },
      "2": {
        name: "invalid.illegal.newline.ts"
      }
    },
    patterns: [
      {
        include: "#string-character-escape"
      }
    ]
  },
  "string-character-escape": {
    name: "constant.character.escape.ts",
    match: "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
  },
  template: {
    patterns: [
      {
        include: "#template-call"
      },
      {
        name: "string.template.ts",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.ts"
          },
          "2": {
            name: "punctuation.definition.string.template.begin.ts"
          }
        },
        end: "`",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.template.end.ts"
          }
        },
        patterns: [
          {
            include: "#template-substitution-element"
          },
          {
            include: "#string-character-escape"
          }
        ]
      }
    ]
  },
  "template-call": {
    patterns: [
      {
        name: "string.template.ts",
        begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
        end: "(?=`)",
        patterns: [
          {
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
            patterns: [
              {
                include: "#support-function-call-identifiers"
              },
              {
                name: "entity.name.function.tagged-template.ts",
                match: "([_$[:alpha:]][_$[:alnum:]]*)"
              }
            ]
          },
          {
            include: "#type-arguments"
          }
        ]
      },
      {
        name: "string.template.ts",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.ts"
          }
        },
        end: "(?=`)",
        patterns: [
          {
            include: "#type-arguments"
          }
        ]
      }
    ]
  },
  "template-substitution-element": {
    name: "meta.template.expression.ts",
    begin: "\\$\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.begin.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.end.ts"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ],
    contentName: "meta.embedded.line.ts"
  },
  "type-string": {
    patterns: [
      {
        include: "#qstring-single"
      },
      {
        include: "#qstring-double"
      },
      {
        include: "#template-type"
      }
    ]
  },
  "template-type": {
    patterns: [
      {
        include: "#template-call"
      },
      {
        name: "string.template.ts",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.ts"
          },
          "2": {
            name: "punctuation.definition.string.template.begin.ts"
          }
        },
        end: "`",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.template.end.ts"
          }
        },
        patterns: [
          {
            include: "#template-type-substitution-element"
          },
          {
            include: "#string-character-escape"
          }
        ]
      }
    ]
  },
  "template-type-substitution-element": {
    name: "meta.template.expression.ts",
    begin: "\\$\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.begin.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.end.ts"
      }
    },
    patterns: [
      {
        include: "#type"
      }
    ],
    contentName: "meta.embedded.line.ts"
  },
  regex: {
    patterns: [
      {
        name: "string.regexp.ts",
        begin: "(?<!\\+\\+|--|})(?<=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=>|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.string.begin.ts"
          }
        },
        end: "(/)([dgimsuy]*)",
        endCaptures: {
          "1": {
            name: "punctuation.definition.string.end.ts"
          },
          "2": {
            name: "keyword.other.ts"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "string.regexp.ts",
        begin: "((?<![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?<=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.ts"
          }
        },
        end: "(/)([dgimsuy]*)",
        endCaptures: {
          "1": {
            name: "punctuation.definition.string.end.ts"
          },
          "2": {
            name: "keyword.other.ts"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      }
    ]
  },
  regexp: {
    patterns: [
      {
        name: "keyword.control.anchor.regexp",
        match: "\\\\[bB]|\\^|\\$"
      },
      {
        match: "\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>",
        captures: {
          "0": {
            name: "keyword.other.back-reference.regexp"
          },
          "1": {
            name: "variable.other.regexp"
          }
        }
      },
      {
        name: "keyword.operator.quantifier.regexp",
        match: "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"
      },
      {
        name: "keyword.operator.or.regexp",
        match: "\\|"
      },
      {
        name: "meta.group.assertion.regexp",
        begin: "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.group.regexp"
          },
          "2": {
            name: "punctuation.definition.group.assertion.regexp"
          },
          "3": {
            name: "meta.assertion.look-ahead.regexp"
          },
          "4": {
            name: "meta.assertion.negative-look-ahead.regexp"
          },
          "5": {
            name: "meta.assertion.look-behind.regexp"
          },
          "6": {
            name: "meta.assertion.negative-look-behind.regexp"
          }
        },
        end: "(\\))",
        endCaptures: {
          "1": {
            name: "punctuation.definition.group.regexp"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "meta.group.regexp",
        begin: "\\((?:(\\?:)|(?:\\?<([a-zA-Z_$][\\w$]*)>))?",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.group.regexp"
          },
          "1": {
            name: "punctuation.definition.group.no-capture.regexp"
          },
          "2": {
            name: "variable.other.regexp"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.definition.group.regexp"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "constant.other.character-class.set.regexp",
        begin: "(\\[)(\\^)?",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.character-class.regexp"
          },
          "2": {
            name: "keyword.operator.negation.regexp"
          }
        },
        end: "(\\])",
        endCaptures: {
          "1": {
            name: "punctuation.definition.character-class.regexp"
          }
        },
        patterns: [
          {
            name: "constant.other.character-class.range.regexp",
            match: "(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",
            captures: {
              "1": {
                name: "constant.character.numeric.regexp"
              },
              "2": {
                name: "constant.character.control.regexp"
              },
              "3": {
                name: "constant.character.escape.backslash.regexp"
              },
              "4": {
                name: "constant.character.numeric.regexp"
              },
              "5": {
                name: "constant.character.control.regexp"
              },
              "6": {
                name: "constant.character.escape.backslash.regexp"
              }
            }
          },
          {
            include: "#regex-character-class"
          }
        ]
      },
      {
        include: "#regex-character-class"
      }
    ]
  },
  "regex-character-class": {
    patterns: [
      {
        name: "constant.other.character-class.regexp",
        match: "\\\\[wWsSdDtrnvf]|\\."
      },
      {
        name: "constant.character.numeric.regexp",
        match: "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})"
      },
      {
        name: "constant.character.control.regexp",
        match: "\\\\c[A-Z]"
      },
      {
        name: "constant.character.escape.backslash.regexp",
        match: "\\\\."
      }
    ]
  },
  comment: {
    patterns: [
      {
        name: "comment.block.documentation.ts",
        begin: "/\\*\\*(?!/)",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.comment.ts"
          }
        },
        end: "\\*/",
        endCaptures: {
          "0": {
            name: "punctuation.definition.comment.ts"
          }
        },
        patterns: [
          {
            include: "#docblock"
          }
        ]
      },
      {
        name: "comment.block.ts",
        begin: "(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.comment.ts"
          },
          "2": {
            name: "storage.type.internaldeclaration.ts"
          },
          "3": {
            name: "punctuation.decorator.internaldeclaration.ts"
          }
        },
        end: "\\*/",
        endCaptures: {
          "0": {
            name: "punctuation.definition.comment.ts"
          }
        }
      },
      {
        begin: "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
        beginCaptures: {
          "1": {
            name: "punctuation.whitespace.comment.leading.ts"
          },
          "2": {
            name: "comment.line.double-slash.ts"
          },
          "3": {
            name: "punctuation.definition.comment.ts"
          },
          "4": {
            name: "storage.type.internaldeclaration.ts"
          },
          "5": {
            name: "punctuation.decorator.internaldeclaration.ts"
          }
        },
        end: "(?=$)",
        contentName: "comment.line.double-slash.ts"
      }
    ]
  },
  "single-line-comment-consuming-line-ending": {
    begin: "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
    beginCaptures: {
      "1": {
        name: "punctuation.whitespace.comment.leading.ts"
      },
      "2": {
        name: "comment.line.double-slash.ts"
      },
      "3": {
        name: "punctuation.definition.comment.ts"
      },
      "4": {
        name: "storage.type.internaldeclaration.ts"
      },
      "5": {
        name: "punctuation.decorator.internaldeclaration.ts"
      }
    },
    end: "(?=^)",
    contentName: "comment.line.double-slash.ts"
  },
  directives: {
    name: "comment.line.triple-slash.directive.ts",
    begin: "^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.comment.ts"
      }
    },
    end: "(?=$)",
    patterns: [
      {
        name: "meta.tag.ts",
        begin: "(<)(reference|amd-dependency|amd-module)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.directive.ts"
          },
          "2": {
            name: "entity.name.tag.directive.ts"
          }
        },
        end: "/>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.directive.ts"
          }
        },
        patterns: [
          {
            name: "entity.other.attribute-name.directive.ts",
            match: "path|types|no-default-lib|lib|name"
          },
          {
            name: "keyword.operator.assignment.ts",
            match: "="
          },
          {
            include: "#string"
          }
        ]
      }
    ]
  },
  docblock: {
    patterns: [
      {
        match: "(?x)\n((@)(?:access|api))\n\\s+\n(private|protected|public)\n\\b",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "constant.language.access-type.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)author)\n\\s+\n(\n  [^@\\s<>*/]\n  (?:[^@<>*/]|\\*[^/])*\n)\n(?:\n  \\s*\n  (<)\n  ([^>\\s]+)\n  (>)\n)?",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          },
          "4": {
            name: "punctuation.definition.bracket.angle.begin.jsdoc"
          },
          "5": {
            name: "constant.other.email.link.underline.jsdoc"
          },
          "6": {
            name: "punctuation.definition.bracket.angle.end.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)borrows) \\s+\n((?:[^@\\s*/]|\\*[^/])+)    # <that namepath>\n\\s+ (as) \\s+              # as\n((?:[^@\\s*/]|\\*[^/])+)    # <this namepath>",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          },
          "4": {
            name: "keyword.operator.control.jsdoc"
          },
          "5": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        name: "meta.example.jsdoc",
        begin: "((@)example)\\s+",
        end: "(?=@|\\*/)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        patterns: [
          {
            match: "^\\s\\*\\s+"
          },
          {
            contentName: "constant.other.description.jsdoc",
            begin: "\\G(<)caption(>)",
            beginCaptures: {
              "0": {
                name: "entity.name.tag.inline.jsdoc"
              },
              "1": {
                name: "punctuation.definition.bracket.angle.begin.jsdoc"
              },
              "2": {
                name: "punctuation.definition.bracket.angle.end.jsdoc"
              }
            },
            end: "(</)caption(>)|(?=\\*/)",
            endCaptures: {
              "0": {
                name: "entity.name.tag.inline.jsdoc"
              },
              "1": {
                name: "punctuation.definition.bracket.angle.begin.jsdoc"
              },
              "2": {
                name: "punctuation.definition.bracket.angle.end.jsdoc"
              }
            }
          },
          {
            match: "[^\\s@*](?:[^*]|\\*[^/])*",
            captures: {
              "0": {
                name: "source.embedded.ts"
              }
            }
          }
        ]
      },
      {
        match: "(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "constant.language.symbol-type.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)see)\n\\s+\n(?:\n  # URL\n  (\n    (?=https?://)\n    (?:[^\\s*]|\\*[^/])+\n  )\n  |\n  # JSDoc namepath\n  (\n    (?!\n      # Avoid matching bare URIs (also acceptable as links)\n      https?://\n      |\n      # Avoid matching {@inline tags}; we match those below\n      (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag}\n      {@(?:link|linkcode|linkplain|tutorial)\\b\n    )\n    # Matched namepath\n    (?:[^@\\s*/]|\\*[^/])+\n  )\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.link.underline.jsdoc"
          },
          "4": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)template)\n\\s+\n# One or more valid identifiers\n(\n  [A-Za-z_$]         # First character: non-numeric word character\n  [\\w$.\\[\\]]*        # Rest of identifier\n  (?:                # Possible list of additional identifiers\n    \\s* , \\s*\n    [A-Za-z_$]\n    [\\w$.\\[\\]]*\n  )*\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n(\n  (@)\n  (?:arg|argument|const|constant|member|namespace|param|var)\n)\n\\s+\n(\n  [A-Za-z_$]\n  [\\w$.\\[\\]]*\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        begin: "((@)typedef)\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          },
          {
            name: "entity.name.type.instance.jsdoc",
            match: "(?:[^@\\s*/]|\\*[^/])+"
          }
        ]
      },
      {
        begin: "((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          },
          {
            name: "variable.other.jsdoc",
            match: "([A-Za-z_$][\\w$.\\[\\]]*)"
          },
          {
            name: "variable.other.jsdoc",
            match: `(?x)
(\\[)\\s*
[\\w$]+
(?:
  (?:\\[\\])?                                        # Foo[ ].bar properties within an array
  \\.                                                # Foo.Bar namespaced parameter
  [\\w$]+
)*
(?:
  \\s*
  (=)                                                # [foo=bar] Default parameter value
  \\s*
  (
    # The inner regexes are to stop the match early at */ and to not stop at escaped quotes
    (?>
      "(?:(?:\\*(?!/))|(?:\\\\(?!"))|[^*\\\\])*?" |                      # [foo="bar"] Double-quoted
      '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' |                      # [foo='bar'] Single-quoted
      \\[ (?:(?:\\*(?!/))|[^*])*? \\] |                                # [foo=[1,2]] Array literal
      (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])*   # Everything else
    )*
  )
)?
\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))`,
            captures: {
              "1": {
                name: "punctuation.definition.optional-value.begin.bracket.square.jsdoc"
              },
              "2": {
                name: "keyword.operator.assignment.jsdoc"
              },
              "3": {
                name: "source.embedded.ts"
              },
              "4": {
                name: "punctuation.definition.optional-value.end.bracket.square.jsdoc"
              },
              "5": {
                name: "invalid.illegal.syntax.jsdoc"
              }
            }
          }
        ]
      },
      {
        begin: "(?x)\n(\n  (@)\n  (?:define|enum|exception|export|extends|lends|implements|modifies\n  |namespace|private|protected|returns?|suppress|this|throws|type\n  |yields?)\n)\n\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          }
        ]
      },
      {
        match: "(?x)\n(\n  (@)\n  (?:alias|augments|callback|constructs|emits|event|fires|exports?\n  |extends|external|function|func|host|lends|listens|interface|memberof!?\n  |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\n)\n\\s+\n(\n  (?:\n    [^{}@\\s*] | \\*[^/]\n  )+\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        contentName: "variable.other.jsdoc",
        begin: `((@)(?:default(?:value)?|license|version))\\s+(([''"]))`,
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          },
          "4": {
            name: "punctuation.definition.string.begin.jsdoc"
          }
        },
        end: "(\\3)|(?=$|\\*/)",
        endCaptures: {
          "0": {
            name: "variable.other.jsdoc"
          },
          "1": {
            name: "punctuation.definition.string.end.jsdoc"
          }
        }
      },
      {
        match: "((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        name: "storage.type.class.jsdoc",
        match: "(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",
        captures: {
          "1": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        }
      },
      {
        include: "#inline-tags"
      },
      {
        match: "((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        }
      }
    ]
  },
  brackets: {
    patterns: [
      {
        begin: "{",
        end: "}|(?=\\*/)",
        patterns: [
          {
            include: "#brackets"
          }
        ]
      },
      {
        begin: "\\[",
        end: "\\]|(?=\\*/)",
        patterns: [
          {
            include: "#brackets"
          }
        ]
      }
    ]
  },
  "inline-tags": {
    patterns: [
      {
        name: "constant.other.description.jsdoc",
        match: "(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",
        captures: {
          "1": {
            name: "punctuation.definition.bracket.square.begin.jsdoc"
          },
          "2": {
            name: "punctuation.definition.bracket.square.end.jsdoc"
          }
        }
      },
      {
        name: "entity.name.type.instance.jsdoc",
        begin: "({)((@)(?:link(?:code|plain)?|tutorial))\\s*",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.bracket.curly.begin.jsdoc"
          },
          "2": {
            name: "storage.type.class.jsdoc"
          },
          "3": {
            name: "punctuation.definition.inline.tag.jsdoc"
          }
        },
        end: "}|(?=\\*/)",
        endCaptures: {
          "0": {
            name: "punctuation.definition.bracket.curly.end.jsdoc"
          }
        },
        patterns: [
          {
            match: "\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?",
            captures: {
              "1": {
                name: "variable.other.link.underline.jsdoc"
              },
              "2": {
                name: "punctuation.separator.pipe.jsdoc"
              }
            }
          },
          {
            match: "\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?",
            captures: {
              "1": {
                name: "variable.other.description.jsdoc"
              },
              "2": {
                name: "punctuation.separator.pipe.jsdoc"
              }
            }
          }
        ]
      }
    ]
  },
  jsdoctype: {
    patterns: [
      {
        contentName: "entity.name.type.instance.jsdoc",
        begin: "\\G({)",
        beginCaptures: {
          "0": {
            name: "entity.name.type.instance.jsdoc"
          },
          "1": {
            name: "punctuation.definition.bracket.curly.begin.jsdoc"
          }
        },
        end: "((}))\\s*|(?=\\*/)",
        endCaptures: {
          "1": {
            name: "entity.name.type.instance.jsdoc"
          },
          "2": {
            name: "punctuation.definition.bracket.curly.end.jsdoc"
          }
        },
        patterns: [
          {
            include: "#brackets"
          }
        ]
      }
    ]
  }
};
const typescript_tmLanguage = {
  information_for_contributors: information_for_contributors$1,
  version: version$1,
  name: name$4,
  scopeName: scopeName$3,
  patterns: patterns$3,
  repository: repository$3
};
const __vite_glob_0_7 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: typescript_tmLanguage,
  information_for_contributors: information_for_contributors$1,
  name: name$4,
  patterns: patterns$3,
  repository: repository$3,
  scopeName: scopeName$3,
  version: version$1
}, Symbol.toStringTag, { value: "Module" }));
const name$3 = "vue-html";
const scopeName$2 = "text.html.vue-html";
const fileTypes$1 = [];
const uuid$1 = "ca2e4260-5d62-45bf-8cf1-d8b5cc19c8f8";
const patterns$2 = [
  {
    include: "source.vue#vue-interpolations"
  },
  {
    name: "meta.tag.any.html",
    begin: "(<)([A-Z][a-zA-Z0-9:-]*)(?=[^>]*></\\2>)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "support.class.component.html"
      }
    },
    end: "(>)(<)(/)(\\2)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      },
      "2": {
        name: "punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html"
      },
      "3": {
        name: "punctuation.definition.tag.begin.html"
      },
      "4": {
        name: "support.class.component.html"
      },
      "5": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      }
    ]
  },
  {
    name: "meta.tag.any.html",
    begin: "(<)([a-z][a-zA-Z0-9:-]*)(?=[^>]*></\\2>)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.html"
      }
    },
    end: "(>)(<)(/)(\\2)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      },
      "2": {
        name: "punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html"
      },
      "3": {
        name: "punctuation.definition.tag.begin.html"
      },
      "4": {
        name: "entity.name.tag.html"
      },
      "5": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      }
    ]
  },
  {
    name: "meta.tag.preprocessor.xml.html",
    begin: "(<\\?)(xml)",
    end: "(\\?>)",
    captures: {
      "1": {
        name: "punctuation.definition.tag.html"
      },
      "2": {
        name: "entity.name.tag.xml.html"
      }
    },
    patterns: [
      {
        include: "#tag-generic-attribute"
      },
      {
        include: "#string-double-quoted"
      },
      {
        include: "#string-single-quoted"
      }
    ]
  },
  {
    name: "comment.block.html",
    begin: "<!--",
    end: "-->",
    captures: {
      "0": {
        name: "punctuation.definition.comment.html"
      }
    }
  },
  {
    name: "meta.tag.sgml.html",
    begin: "<!",
    end: ">",
    captures: {
      "0": {
        name: "punctuation.definition.tag.html"
      }
    },
    patterns: [
      {
        name: "meta.tag.sgml.doctype.html",
        begin: "(?i:DOCTYPE)",
        end: "(?=>)",
        captures: {
          "1": {
            name: "entity.name.tag.doctype.html"
          }
        },
        patterns: [
          {
            name: "string.quoted.double.doctype.identifiers-and-DTDs.html",
            match: '"[^">]*"'
          }
        ]
      },
      {
        name: "constant.other.inline-data.html",
        begin: "\\[CDATA\\[",
        end: "]](?=>)"
      },
      {
        name: "invalid.illegal.bad-comments-or-CDATA.html",
        match: "(\\s*)(?!--|>)\\S(\\s*)"
      }
    ]
  },
  {
    name: "meta.tag.block.any.html",
    begin: "(</?)([A-Z][a-zA-Z0-9:-]*\\b)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "support.class.component.html"
      }
    },
    end: "(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      }
    ]
  },
  {
    name: "meta.tag.block.any.html",
    begin: "(</?)([a-z][a-zA-Z0-9:-]*\\b)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.block.any.html"
      }
    },
    end: "(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      }
    ]
  },
  {
    name: "meta.tag.structure.any.html",
    begin: "(</?)((?i:body|head|html)\\b)",
    end: "(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    captures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.structure.any.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      }
    ]
  },
  {
    name: "meta.tag.block.any.html",
    begin: "(</?)((?i:address|blockquote|dd|div|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)(?!-)\\b)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.block.any.html"
      }
    },
    end: "(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      }
    ]
  },
  {
    name: "meta.tag.inline.any.html",
    begin: "(</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)(?!-)\\b)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.inline.any.html"
      }
    },
    end: "(/?>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      }
    ]
  },
  {
    name: "meta.tag.other.html",
    begin: "(</?)([a-zA-Z0-9:-]+)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.other.html"
      }
    },
    end: "(/?>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      }
    ]
  },
  {
    include: "#entities"
  },
  {
    name: "invalid.illegal.incomplete.html",
    match: "<>"
  },
  {
    name: "invalid.illegal.bad-angle-bracket.html",
    match: "<"
  }
];
const repository$2 = {
  entities: {
    patterns: [
      {
        name: "constant.character.entity.html",
        match: "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
        captures: {
          "1": {
            name: "punctuation.definition.entity.html"
          },
          "3": {
            name: "punctuation.definition.entity.html"
          }
        }
      },
      {
        name: "invalid.illegal.bad-ampersand.html",
        match: "&"
      }
    ]
  },
  "string-double-quoted": {
    name: "string.quoted.double.html",
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.html"
      }
    },
    end: '"',
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.html"
      }
    },
    patterns: [
      {
        include: "source.vue#vue-interpolations"
      },
      {
        include: "#entities"
      }
    ]
  },
  "string-single-quoted": {
    name: "string.quoted.single.html",
    begin: "'",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.html"
      }
    },
    end: "'",
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.html"
      }
    },
    patterns: [
      {
        include: "source.vue#vue-interpolations"
      },
      {
        include: "#entities"
      }
    ]
  },
  "tag-generic-attribute": {
    name: "entity.other.attribute-name.html",
    match: "(?<=[^=])\\b([a-zA-Z0-9:\\-_]+)"
  },
  "tag-id-attribute": {
    name: "meta.attribute-with-value.id.html",
    begin: "\\b(id)\\b\\s*(=)",
    end: `(?!\\G)(?<='|"|[^\\s<>/])`,
    captures: {
      "1": {
        name: "entity.other.attribute-name.id.html"
      },
      "2": {
        name: "punctuation.separator.key-value.html"
      }
    },
    patterns: [
      {
        name: "string.quoted.double.html",
        contentName: "meta.toc-list.id.html",
        begin: '"',
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.html"
          }
        },
        end: '"',
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.html"
          }
        },
        patterns: [
          {
            include: "source.vue#vue-interpolations"
          },
          {
            include: "#entities"
          }
        ]
      },
      {
        name: "string.quoted.single.html",
        contentName: "meta.toc-list.id.html",
        begin: "'",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.html"
          }
        },
        end: "'",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.html"
          }
        },
        patterns: [
          {
            include: "source.vue#vue-interpolations"
          },
          {
            include: "#entities"
          }
        ]
      },
      {
        name: "string.unquoted.html",
        match: `(?<==)(?:[^\\s<>/'"]|/(?!>))+`,
        captures: {
          "0": {
            name: "meta.toc-list.id.html"
          }
        }
      }
    ]
  },
  "tag-stuff": {
    patterns: [
      {
        include: "#vue-directives"
      },
      {
        include: "#tag-id-attribute"
      },
      {
        include: "#tag-generic-attribute"
      },
      {
        include: "#string-double-quoted"
      },
      {
        include: "#string-single-quoted"
      },
      {
        include: "#unquoted-attribute"
      }
    ]
  },
  "unquoted-attribute": {
    name: "string.unquoted.html",
    match: `(?<==)(?:[^\\s<>/'"]|/(?!>))+`
  },
  "vue-directives": {
    name: "meta.directive.vue",
    begin: "(?:\\b(v-)|(:|@|#))([a-zA-Z0-9\\-_]+)(?:\\:([a-zA-Z\\-_]+))?(?:\\.([a-zA-Z\\-_]+))*\\s*(=)",
    end: "(?<='|\")|(?=[\\s<>`])",
    captures: {
      "1": {
        name: "entity.other.attribute-name.html"
      },
      "2": {
        name: "punctuation.separator.key-value.html"
      },
      "3": {
        name: "entity.other.attribute-name.html"
      },
      "4": {
        name: "entity.other.attribute-name.html"
      },
      "5": {
        name: "entity.other.attribute-name.html"
      },
      "6": {
        name: "punctuation.separator.key-value.html"
      }
    },
    patterns: [
      {
        name: "source.directive.vue",
        begin: "`",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.html"
          }
        },
        end: "`",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.html"
          }
        },
        patterns: [
          {
            include: "source.js#expression"
          }
        ]
      },
      {
        name: "source.directive.vue",
        begin: '"',
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.html"
          }
        },
        end: '"',
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.html"
          }
        },
        patterns: [
          {
            include: "source.js#expression"
          }
        ]
      },
      {
        name: "source.directive.vue",
        begin: "'",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.html"
          }
        },
        end: "'",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.html"
          }
        },
        patterns: [
          {
            include: "source.js#expression"
          }
        ]
      }
    ]
  }
};
const vueHtml_tmLanguage = {
  name: name$3,
  scopeName: scopeName$2,
  fileTypes: fileTypes$1,
  uuid: uuid$1,
  patterns: patterns$2,
  repository: repository$2
};
const __vite_glob_0_8 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: vueHtml_tmLanguage,
  fileTypes: fileTypes$1,
  name: name$3,
  patterns: patterns$2,
  repository: repository$2,
  scopeName: scopeName$2,
  uuid: uuid$1
}, Symbol.toStringTag, { value: "Module" }));
const name$2 = "vue";
const scopeName$1 = "source.vue";
const fileTypes = [
  "vue"
];
const uuid = "5512c10d-4cc5-434c-b8fc-53b912f55ab3";
const patterns$1 = [
  {
    begin: "(<)(slim)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(slim)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</slim>)",
        contentName: "text.slim",
        patterns: [
          {
            include: "text.slim"
          }
        ]
      }
    ]
  },
  {
    begin: "(<)(i18n)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(i18n)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</i18n>)",
        contentName: "source.json",
        patterns: [
          {
            include: "source.json"
          }
        ]
      }
    ]
  },
  {
    begin: "(<)(docs)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(docs)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</docs>)",
        contentName: "text.html.markdown",
        patterns: [
          {
            include: "text.html.markdown"
          }
        ]
      }
    ]
  },
  {
    name: "comment.block.html",
    begin: "<!--",
    end: "-->",
    captures: {
      "0": {
        name: "punctuation.definition.comment.html"
      }
    }
  },
  {
    begin: "(<)(?=template.*[^/>]*/>\\s*$)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      }
    },
    end: "(/>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        begin: "(template)",
        beginCaptures: {
          "1": {
            name: "entity.name.tag.template.html"
          }
        },
        end: "(?=/>)",
        patterns: [
          {
            include: "#tag-stuff"
          }
        ]
      }
    ]
  },
  {
    begin: "(<)(template)(?=[^>]*>[^/>]*</template>)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      }
    },
    end: "(</)(template)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</template>)"
      }
    ]
  },
  {
    begin: `(<)(template)\\b(?=[^>]*lang=('jade'|"jade"|'pug'|"pug"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      }
    },
    end: "(</)(template)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "text.pug",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</template>)",
        patterns: [
          {
            include: "text.pug"
          }
        ]
      }
    ]
  },
  {
    begin: `(<)(template)\\b(?=[^>]*lang=('haml'|"haml"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      }
    },
    end: "(</)(template)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "text.haml",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</template>)",
        patterns: [
          {
            include: "text.haml"
          }
        ]
      }
    ]
  },
  {
    begin: `(<)(template)\\b(?=[^>]*lang=('slim'|"slim"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      }
    },
    end: "(</)(template)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "text.slim",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</template>)",
        patterns: [
          {
            include: "text.slim"
          }
        ]
      }
    ]
  },
  {
    begin: `(<)(template)\\b(?=[^>]*lang=('slm'|"slm"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      }
    },
    end: "(</)(template)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "text.jade.slm",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</template>)",
        patterns: [
          {
            include: "text.jade.slm"
          }
        ]
      }
    ]
  },
  {
    begin: `(<)(template)\\b(?=[^>]*lang=('liquid'|"liquid"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      }
    },
    end: "(</)(template)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "text.html.liquid",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</template>)",
        patterns: [
          {
            include: "text.html.liquid"
          }
        ]
      }
    ]
  },
  {
    begin: "(<)(template)(?![^/>]*/>\\s*$)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      }
    },
    end: "^(</)(template)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "text.html.vue-html",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=^</template>)",
        patterns: [
          {
            include: "text.html.vue-html"
          }
        ]
      }
    ]
  },
  {
    begin: "(<)(style)\\b(?=[^/>]*/>\\s*$)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(/>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      }
    ]
  },
  {
    begin: "(<)(style)(?=[^>]*>[^/>]*</style>)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(style)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</style>)"
      }
    ]
  },
  {
    begin: `(<)(style)\\b(?=[^>]*lang=('sass'|"sass"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(style)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "source.sass",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</style>)",
        patterns: [
          {
            include: "source.sass"
          }
        ]
      }
    ]
  },
  {
    begin: `(<)(style)\\b(?=[^>]*lang=('scss'|"scss"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(style)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "source.css.scss",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</style>)",
        patterns: [
          {
            include: "source.css.scss"
          }
        ]
      }
    ]
  },
  {
    begin: `(<)(style)\\b(?=[^>]*lang=('less'|"less"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(style)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "source.css.less",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</style>)",
        patterns: [
          {
            include: "source.css.less"
          }
        ]
      }
    ]
  },
  {
    begin: `(<)(style)\\b(?=[^>]*lang=('stylus'|"stylus"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(style)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "source.stylus",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</style>)",
        patterns: [
          {
            include: "source.stylus"
          }
        ]
      }
    ]
  },
  {
    begin: `(<)(style)\\b(?=[^>]*lang=('postcss'|"postcss"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(style)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "source.css.postcss",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</style>)",
        patterns: [
          {
            include: "source.css.postcss"
          }
        ]
      }
    ]
  },
  {
    begin: `(<)(style)\\b(?=[^>]*lang=(['"]sss['"]))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(style)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "source.css.sugarss",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</style>)",
        patterns: [
          {
            include: "source.css.sugarss"
          }
        ]
      }
    ]
  },
  {
    begin: "(<)(style)(?![^/>]*/>\\s*$)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(style)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "source.css",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</style>)",
        patterns: [
          {
            include: "source.css"
          }
        ]
      }
    ]
  },
  {
    begin: "(<)(script)\\b(?=[^>]*/>$)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.script.html"
      }
    },
    end: "(/>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      }
    ]
  },
  {
    begin: "(<)(script)(?=[^>]*>[^/>]*<\/script>)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.script.html"
      }
    },
    end: "(</)(script)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.script.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=<\/script>)"
      }
    ]
  },
  {
    begin: `(<)(script)\\b(?=[^>]*lang=('ts'|"ts"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.script.html"
      }
    },
    end: "(</)(script)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.script.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "source.ts",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=<\/script>)",
        patterns: [
          {
            include: "source.ts"
          }
        ]
      }
    ]
  },
  {
    begin: `(<)(script)\\b(?=[^>]*lang=('coffee'|"coffee"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.script.html"
      }
    },
    end: "(</)(script)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.script.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "source.coffee",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=<\/script>)",
        patterns: [
          {
            include: "source.coffee"
          }
        ]
      }
    ]
  },
  {
    begin: "(<)(script)(?![^/>]*/>\\s*$)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.script.html"
      }
    },
    end: "(</)(script)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.script.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "source.js",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=<\/script>)",
        patterns: [
          {
            include: "source.js"
          }
        ]
      }
    ]
  }
];
const repository$1 = {
  entities: {
    patterns: [
      {
        name: "constant.character.entity.html",
        match: "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
        captures: {
          "1": {
            name: "punctuation.definition.entity.html"
          },
          "3": {
            name: "punctuation.definition.entity.html"
          }
        }
      },
      {
        name: "invalid.illegal.bad-ampersand.html",
        match: "&"
      }
    ]
  },
  "string-double-quoted": {
    name: "string.quoted.double.html",
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.html"
      }
    },
    end: '"',
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.html"
      }
    },
    patterns: [
      {
        include: "#vue-interpolations"
      },
      {
        include: "#entities"
      }
    ]
  },
  "string-single-quoted": {
    name: "string.quoted.single.html",
    begin: "'",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.html"
      }
    },
    end: "'",
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.html"
      }
    },
    patterns: [
      {
        include: "#vue-interpolations"
      },
      {
        include: "#entities"
      }
    ]
  },
  "tag-generic-attribute": {
    name: "entity.other.attribute-name.html",
    match: "\\b([a-zA-Z\\-:_]+)"
  },
  "tag-id-attribute": {
    name: "meta.attribute-with-value.id.html",
    begin: "\\b(id)\\b\\s*(=)",
    end: `(?<='|")`,
    captures: {
      "1": {
        name: "entity.other.attribute-name.id.html"
      },
      "2": {
        name: "punctuation.separator.key-value.html"
      }
    },
    patterns: [
      {
        name: "string.quoted.double.html",
        contentName: "meta.toc-list.id.html",
        begin: '"',
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.html"
          }
        },
        end: '"',
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.html"
          }
        },
        patterns: [
          {
            include: "#vue-interpolations"
          },
          {
            include: "#entities"
          }
        ]
      },
      {
        name: "string.quoted.single.html",
        contentName: "meta.toc-list.id.html",
        begin: "'",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.html"
          }
        },
        end: "'",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.html"
          }
        },
        patterns: [
          {
            include: "#vue-interpolations"
          },
          {
            include: "#entities"
          }
        ]
      }
    ]
  },
  "tag-stuff": {
    patterns: [
      {
        include: "#vue-directives"
      },
      {
        include: "#tag-id-attribute"
      },
      {
        include: "#tag-generic-attribute"
      },
      {
        include: "#string-double-quoted"
      },
      {
        include: "#string-single-quoted"
      }
    ]
  },
  "vue-directives": {
    name: "meta.directive.vue",
    begin: "(?:\\b(v-)|(:|@|#))([a-zA-Z0-9\\-_]+)(?:\\:([a-zA-Z\\-_]+))?(?:\\.([a-zA-Z\\-_]+))*\\s*(=)",
    end: "(?<='|\")|(?=[\\s<>`])",
    captures: {
      "1": {
        name: "entity.other.attribute-name.html"
      },
      "2": {
        name: "punctuation.separator.key-value.html"
      },
      "3": {
        name: "entity.other.attribute-name.html"
      },
      "4": {
        name: "entity.other.attribute-name.html"
      },
      "5": {
        name: "entity.other.attribute-name.html"
      },
      "6": {
        name: "punctuation.separator.key-value.html"
      }
    },
    patterns: [
      {
        name: "source.directive.vue",
        begin: "`",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.html"
          }
        },
        end: "`",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.html"
          }
        },
        patterns: [
          {
            include: "source.js#expression"
          }
        ]
      },
      {
        name: "source.directive.vue",
        begin: '"',
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.html"
          }
        },
        end: '"',
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.html"
          }
        },
        patterns: [
          {
            include: "source.js#expression"
          }
        ]
      },
      {
        name: "source.directive.vue",
        begin: "'",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.html"
          }
        },
        end: "'",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.html"
          }
        },
        patterns: [
          {
            include: "source.js#expression"
          }
        ]
      }
    ]
  },
  "vue-interpolations": {
    patterns: [
      {
        name: "expression.embedded.vue",
        begin: "\\{\\{\\{?",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.generic.begin.html"
          }
        },
        end: "\\}\\}\\}?",
        endCaptures: {
          "0": {
            name: "punctuation.definition.generic.end.html"
          }
        },
        patterns: [
          {
            include: "source.js#expression"
          }
        ]
      }
    ]
  }
};
const vue_tmLanguage = {
  name: name$2,
  scopeName: scopeName$1,
  fileTypes,
  uuid,
  patterns: patterns$1,
  repository: repository$1
};
const __vite_glob_0_9 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: vue_tmLanguage,
  fileTypes,
  name: name$2,
  patterns: patterns$1,
  repository: repository$1,
  scopeName: scopeName$1,
  uuid
}, Symbol.toStringTag, { value: "Module" }));
const information_for_contributors = [
  "This file has been converted from https://github.com/textmate/yaml.tmbundle/blob/master/Syntaxes/YAML.tmLanguage",
  "If you want to provide a fix or improvement, please create a pull request against the original repository.",
  "Once accepted there, we are happy to receive an update request."
];
const version = "https://github.com/textmate/yaml.tmbundle/commit/e54ceae3b719506dba7e481a77cea4a8b576ae46";
const name$1 = "yaml";
const scopeName = "source.yaml";
const patterns = [
  {
    include: "#comment"
  },
  {
    include: "#property"
  },
  {
    include: "#directive"
  },
  {
    match: "^---",
    name: "entity.other.document.begin.yaml"
  },
  {
    match: "^\\.{3}",
    name: "entity.other.document.end.yaml"
  },
  {
    include: "#node"
  }
];
const repository = {
  "block-collection": {
    patterns: [
      {
        include: "#block-sequence"
      },
      {
        include: "#block-mapping"
      }
    ]
  },
  "block-mapping": {
    patterns: [
      {
        include: "#block-pair"
      }
    ]
  },
  "block-node": {
    patterns: [
      {
        include: "#prototype"
      },
      {
        include: "#block-scalar"
      },
      {
        include: "#block-collection"
      },
      {
        include: "#flow-scalar-plain-out"
      },
      {
        include: "#flow-node"
      }
    ]
  },
  "block-pair": {
    patterns: [
      {
        begin: "\\?",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.key-value.begin.yaml"
          }
        },
        end: "(?=\\?)|^ *(:)|(:)",
        endCaptures: {
          "1": {
            name: "punctuation.separator.key-value.mapping.yaml"
          },
          "2": {
            name: "invalid.illegal.expected-newline.yaml"
          }
        },
        name: "meta.block-mapping.yaml",
        patterns: [
          {
            include: "#block-node"
          }
        ]
      },
      {
        begin: "(?x)\n                        (?=\n                            (?x:\n                                  [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n                                | [?:-] \\S\n                            )\n                            (\n                                  [^\\s:]\n                                | : \\S\n                                | \\s+ (?![#\\s])\n                            )*\n                            \\s*\n                            :\n							(\\s|$)\n                        )\n                    ",
        end: "(?x)\n                        (?=\n                              \\s* $\n                            | \\s+ \\#\n                            | \\s* : (\\s|$)\n                        )\n                    ",
        patterns: [
          {
            include: "#flow-scalar-plain-out-implicit-type"
          },
          {
            begin: "(?x)\n                                  [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n                                | [?:-] \\S\n                            ",
            beginCaptures: {
              "0": {
                name: "entity.name.tag.yaml"
              }
            },
            contentName: "entity.name.tag.yaml",
            end: "(?x)\n                                (?=\n                                      \\s* $\n                                    | \\s+ \\#\n                                    | \\s* : (\\s|$)\n                                )\n                            ",
            name: "string.unquoted.plain.out.yaml"
          }
        ]
      },
      {
        match: ":(?=\\s|$)",
        name: "punctuation.separator.key-value.mapping.yaml"
      }
    ]
  },
  "block-scalar": {
    begin: "(?:(\\|)|(>))([1-9])?([-+])?(.*\\n?)",
    beginCaptures: {
      "1": {
        name: "keyword.control.flow.block-scalar.literal.yaml"
      },
      "2": {
        name: "keyword.control.flow.block-scalar.folded.yaml"
      },
      "3": {
        name: "constant.numeric.indentation-indicator.yaml"
      },
      "4": {
        name: "storage.modifier.chomping-indicator.yaml"
      },
      "5": {
        patterns: [
          {
            include: "#comment"
          },
          {
            match: ".+",
            name: "invalid.illegal.expected-comment-or-newline.yaml"
          }
        ]
      }
    },
    end: "^(?=\\S)|(?!\\G)",
    patterns: [
      {
        begin: "^([ ]+)(?! )",
        end: "^(?!\\1|\\s*$)",
        name: "string.unquoted.block.yaml"
      }
    ]
  },
  "block-sequence": {
    match: "(-)(?!\\S)",
    name: "punctuation.definition.block.sequence.item.yaml"
  },
  comment: {
    begin: "(?:(^[ \\t]*)|[ \\t]+)(?=#\\p{Print}*$)",
    beginCaptures: {
      "1": {
        name: "punctuation.whitespace.comment.leading.yaml"
      }
    },
    end: "(?!\\G)",
    patterns: [
      {
        begin: "#",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.comment.yaml"
          }
        },
        end: "\\n",
        name: "comment.line.number-sign.yaml"
      }
    ]
  },
  directive: {
    begin: "^%",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.directive.begin.yaml"
      }
    },
    end: "(?=$|[ \\t]+($|#))",
    name: "meta.directive.yaml",
    patterns: [
      {
        captures: {
          "1": {
            name: "keyword.other.directive.yaml.yaml"
          },
          "2": {
            name: "constant.numeric.yaml-version.yaml"
          }
        },
        match: "\\G(YAML)[ \\t]+(\\d+\\.\\d+)"
      },
      {
        captures: {
          "1": {
            name: "keyword.other.directive.tag.yaml"
          },
          "2": {
            name: "storage.type.tag-handle.yaml"
          },
          "3": {
            name: "support.type.tag-prefix.yaml"
          }
        },
        match: "(?x)\n                        \\G\n                        (TAG)\n                        (?:[ \\t]+\n                            ((?:!(?:[0-9A-Za-z\\-]*!)?))\n                            (?:[ \\t]+ (\n                                  !              (?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )*\n                                | (?![,!\\[\\]{}]) (?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )+\n                                )\n                            )?\n                        )?\n                    "
      },
      {
        captures: {
          "1": {
            name: "support.other.directive.reserved.yaml"
          },
          "2": {
            name: "string.unquoted.directive-name.yaml"
          },
          "3": {
            name: "string.unquoted.directive-parameter.yaml"
          }
        },
        match: "(?x) \\G (\\w+) (?:[ \\t]+ (\\w+) (?:[ \\t]+ (\\w+))? )?"
      },
      {
        match: "\\S+",
        name: "invalid.illegal.unrecognized.yaml"
      }
    ]
  },
  "flow-alias": {
    captures: {
      "1": {
        name: "keyword.control.flow.alias.yaml"
      },
      "2": {
        name: "punctuation.definition.alias.yaml"
      },
      "3": {
        name: "variable.other.alias.yaml"
      },
      "4": {
        name: "invalid.illegal.character.anchor.yaml"
      }
    },
    match: "((\\*))([^\\s\\[\\]/{/},]+)([^\\s\\]},]\\S*)?"
  },
  "flow-collection": {
    patterns: [
      {
        include: "#flow-sequence"
      },
      {
        include: "#flow-mapping"
      }
    ]
  },
  "flow-mapping": {
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.mapping.begin.yaml"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.mapping.end.yaml"
      }
    },
    name: "meta.flow-mapping.yaml",
    patterns: [
      {
        include: "#prototype"
      },
      {
        match: ",",
        name: "punctuation.separator.mapping.yaml"
      },
      {
        include: "#flow-pair"
      }
    ]
  },
  "flow-node": {
    patterns: [
      {
        include: "#prototype"
      },
      {
        include: "#flow-alias"
      },
      {
        include: "#flow-collection"
      },
      {
        include: "#flow-scalar"
      }
    ]
  },
  "flow-pair": {
    patterns: [
      {
        begin: "\\?",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.key-value.begin.yaml"
          }
        },
        end: "(?=[},\\]])",
        name: "meta.flow-pair.explicit.yaml",
        patterns: [
          {
            include: "#prototype"
          },
          {
            include: "#flow-pair"
          },
          {
            include: "#flow-node"
          },
          {
            begin: ":(?=\\s|$|[\\[\\]{},])",
            beginCaptures: {
              "0": {
                name: "punctuation.separator.key-value.mapping.yaml"
              }
            },
            end: "(?=[},\\]])",
            patterns: [
              {
                include: "#flow-value"
              }
            ]
          }
        ]
      },
      {
        begin: "(?x)\n                        (?=\n                            (?:\n                                [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n                              | [?:-] [^\\s[\\[\\]{},]]\n                            )\n                            (\n                                  [^\\s:[\\[\\]{},]]\n                                | : [^\\s[\\[\\]{},]]\n                                | \\s+ (?![#\\s])\n                            )*\n                            \\s*\n                            :\n							(\\s|$)\n                        )\n                    ",
        end: "(?x)\n                        (?=\n                              \\s* $\n                            | \\s+ \\#\n                            | \\s* : (\\s|$)\n                            | \\s* : [\\[\\]{},]\n                            | \\s* [\\[\\]{},]\n                        )\n                    ",
        name: "meta.flow-pair.key.yaml",
        patterns: [
          {
            include: "#flow-scalar-plain-in-implicit-type"
          },
          {
            begin: "(?x)\n                                  [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n                                | [?:-] [^\\s[\\[\\]{},]]\n                            ",
            beginCaptures: {
              "0": {
                name: "entity.name.tag.yaml"
              }
            },
            contentName: "entity.name.tag.yaml",
            end: "(?x)\n                                (?=\n                                      \\s* $\n                                    | \\s+ \\#\n                                    | \\s* : (\\s|$)\n                                    | \\s* : [\\[\\]{},]\n                                    | \\s* [\\[\\]{},]\n                                )\n                            ",
            name: "string.unquoted.plain.in.yaml"
          }
        ]
      },
      {
        include: "#flow-node"
      },
      {
        begin: ":(?=\\s|$|[\\[\\]{},])",
        captures: {
          "0": {
            name: "punctuation.separator.key-value.mapping.yaml"
          }
        },
        end: "(?=[},\\]])",
        name: "meta.flow-pair.yaml",
        patterns: [
          {
            include: "#flow-value"
          }
        ]
      }
    ]
  },
  "flow-scalar": {
    patterns: [
      {
        include: "#flow-scalar-double-quoted"
      },
      {
        include: "#flow-scalar-single-quoted"
      },
      {
        include: "#flow-scalar-plain-in"
      }
    ]
  },
  "flow-scalar-double-quoted": {
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.yaml"
      }
    },
    end: '"',
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.yaml"
      }
    },
    name: "string.quoted.double.yaml",
    patterns: [
      {
        match: '\\\\([0abtnvfre "/\\\\N_Lp]|x\\d\\d|u\\d{4}|U\\d{8})',
        name: "constant.character.escape.yaml"
      },
      {
        match: "\\\\\\n",
        name: "constant.character.escape.double-quoted.newline.yaml"
      }
    ]
  },
  "flow-scalar-plain-in": {
    patterns: [
      {
        include: "#flow-scalar-plain-in-implicit-type"
      },
      {
        begin: "(?x)\n                          [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n                        | [?:-] [^\\s[\\[\\]{},]]\n                    ",
        end: "(?x)\n                        (?=\n                              \\s* $\n                            | \\s+ \\#\n                            | \\s* : (\\s|$)\n                            | \\s* : [\\[\\]{},]\n                            | \\s* [\\[\\]{},]\n                        )\n                    ",
        name: "string.unquoted.plain.in.yaml"
      }
    ]
  },
  "flow-scalar-plain-in-implicit-type": {
    patterns: [
      {
        captures: {
          "1": {
            name: "constant.language.null.yaml"
          },
          "2": {
            name: "constant.language.boolean.yaml"
          },
          "3": {
            name: "constant.numeric.integer.yaml"
          },
          "4": {
            name: "constant.numeric.float.yaml"
          },
          "5": {
            name: "constant.other.timestamp.yaml"
          },
          "6": {
            name: "constant.language.value.yaml"
          },
          "7": {
            name: "constant.language.merge.yaml"
          }
        },
        match: "(?x)\n                        (?x:\n                              (null|Null|NULL|~)\n                            | (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)\n                            | (\n                                (?:\n                                      [-+]? 0b [0-1_]+ # (base 2)\n                                    | [-+]? 0  [0-7_]+ # (base 8)\n                                    | [-+]? (?: 0|[1-9][0-9_]*) # (base 10)\n                                    | [-+]? 0x [0-9a-fA-F_]+ # (base 16)\n                                    | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60)\n                                )\n                              )\n                            | (\n                                (?x:\n                                      [-+]? (?: [0-9] [0-9_]*)? \\. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10)\n                                    | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \\. [0-9_]* # (base 60)\n                                    | [-+]? \\. (?: inf|Inf|INF) # (infinity)\n                                    |       \\. (?: nan|NaN|NAN) # (not a number)\n                                )\n                              )\n                            | (\n                                (?x:\n                                    \\d{4} - \\d{2} - \\d{2}           # (y-m-d)\n                                  | \\d{4}                           # (year)\n                                    - \\d{1,2}                       # (month)\n                                    - \\d{1,2}                       # (day)\n                                    (?: [Tt] | [ \\t]+) \\d{1,2}      # (hour)\n                                    : \\d{2}                         # (minute)\n                                    : \\d{2}                         # (second)\n                                    (?: \\.\\d*)?                     # (fraction)\n                                    (?:\n                                          (?:[ \\t]*) Z\n                                        | [-+] \\d{1,2} (?: :\\d{1,2})?\n                                    )?                              # (time zone)\n                                )\n                              )\n                            | (=)\n                            | (<<)\n                        )\n                        (?:\n                            (?=\n                                  \\s* $\n                                | \\s+ \\#\n                                | \\s* : (\\s|$)\n                                | \\s* : [\\[\\]{},]\n                                | \\s* [\\[\\]{},]\n                            )\n                        )\n                    "
      }
    ]
  },
  "flow-scalar-plain-out": {
    patterns: [
      {
        include: "#flow-scalar-plain-out-implicit-type"
      },
      {
        begin: "(?x)\n                          [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n                        | [?:-] \\S\n                    ",
        end: "(?x)\n                        (?=\n                              \\s* $\n                            | \\s+ \\#\n                            | \\s* : (\\s|$)\n                        )\n                    ",
        name: "string.unquoted.plain.out.yaml"
      }
    ]
  },
  "flow-scalar-plain-out-implicit-type": {
    patterns: [
      {
        captures: {
          "1": {
            name: "constant.language.null.yaml"
          },
          "2": {
            name: "constant.language.boolean.yaml"
          },
          "3": {
            name: "constant.numeric.integer.yaml"
          },
          "4": {
            name: "constant.numeric.float.yaml"
          },
          "5": {
            name: "constant.other.timestamp.yaml"
          },
          "6": {
            name: "constant.language.value.yaml"
          },
          "7": {
            name: "constant.language.merge.yaml"
          }
        },
        match: "(?x)\n                        (?x:\n                              (null|Null|NULL|~)\n                            | (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)\n                            | (\n                                (?:\n                                      [-+]? 0b [0-1_]+ # (base 2)\n                                    | [-+]? 0  [0-7_]+ # (base 8)\n                                    | [-+]? (?: 0|[1-9][0-9_]*) # (base 10)\n                                    | [-+]? 0x [0-9a-fA-F_]+ # (base 16)\n                                    | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60)\n                                )\n                              )\n                            | (\n                                (?x:\n                                      [-+]? (?: [0-9] [0-9_]*)? \\. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10)\n                                    | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \\. [0-9_]* # (base 60)\n                                    | [-+]? \\. (?: inf|Inf|INF) # (infinity)\n                                    |       \\. (?: nan|NaN|NAN) # (not a number)\n                                )\n                              )\n                            | (\n                                (?x:\n                                    \\d{4} - \\d{2} - \\d{2}           # (y-m-d)\n                                  | \\d{4}                           # (year)\n                                    - \\d{1,2}                       # (month)\n                                    - \\d{1,2}                       # (day)\n                                    (?: [Tt] | [ \\t]+) \\d{1,2}      # (hour)\n                                    : \\d{2}                         # (minute)\n                                    : \\d{2}                         # (second)\n                                    (?: \\.\\d*)?                     # (fraction)\n                                    (?:\n                                          (?:[ \\t]*) Z\n                                        | [-+] \\d{1,2} (?: :\\d{1,2})?\n                                    )?                              # (time zone)\n                                )\n                              )\n                            | (=)\n                            | (<<)\n                        )\n                        (?x:\n                            (?=\n                                  \\s* $\n                                | \\s+ \\#\n                                | \\s* : (\\s|$)\n                            )\n                        )\n                    "
      }
    ]
  },
  "flow-scalar-single-quoted": {
    begin: "'",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.yaml"
      }
    },
    end: "'(?!')",
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.yaml"
      }
    },
    name: "string.quoted.single.yaml",
    patterns: [
      {
        match: "''",
        name: "constant.character.escape.single-quoted.yaml"
      }
    ]
  },
  "flow-sequence": {
    begin: "\\[",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.sequence.begin.yaml"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.sequence.end.yaml"
      }
    },
    name: "meta.flow-sequence.yaml",
    patterns: [
      {
        include: "#prototype"
      },
      {
        match: ",",
        name: "punctuation.separator.sequence.yaml"
      },
      {
        include: "#flow-pair"
      },
      {
        include: "#flow-node"
      }
    ]
  },
  "flow-value": {
    patterns: [
      {
        begin: "\\G(?![},\\]])",
        end: "(?=[},\\]])",
        name: "meta.flow-pair.value.yaml",
        patterns: [
          {
            include: "#flow-node"
          }
        ]
      }
    ]
  },
  node: {
    patterns: [
      {
        include: "#block-node"
      }
    ]
  },
  property: {
    begin: "(?=!|&)",
    end: "(?!\\G)",
    name: "meta.property.yaml",
    patterns: [
      {
        captures: {
          "1": {
            name: "keyword.control.property.anchor.yaml"
          },
          "2": {
            name: "punctuation.definition.anchor.yaml"
          },
          "3": {
            name: "entity.name.type.anchor.yaml"
          },
          "4": {
            name: "invalid.illegal.character.anchor.yaml"
          }
        },
        match: "\\G((&))([^\\s\\[\\]/{/},]+)(\\S+)?"
      },
      {
        match: "(?x)\n                        \\G\n                        (?:\n                            ! < (?: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )+ >\n                          | (?:!(?:[0-9A-Za-z\\-]*!)?) (?: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$_.~*'()] )+\n                          | !\n                        )\n                        (?=\\ |\\t|$)\n                    ",
        name: "storage.type.tag-handle.yaml"
      },
      {
        match: "\\S+",
        name: "invalid.illegal.tag-handle.yaml"
      }
    ]
  },
  prototype: {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#property"
      }
    ]
  }
};
const yaml_tmLanguage = {
  information_for_contributors,
  version,
  name: name$1,
  scopeName,
  patterns,
  repository
};
const __vite_glob_0_10 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: yaml_tmLanguage,
  information_for_contributors,
  name: name$1,
  patterns,
  repository,
  scopeName,
  version
}, Symbol.toStringTag, { value: "Module" }));
var lib$1 = {};
var onigasmH = {};
var onigasmExports = {};
var onigasm$1 = {
  get exports() {
    return onigasmExports;
  },
  set exports(v2) {
    onigasmExports = v2;
  }
};
(function(module, exports) {
  var Onigasm = function() {
    typeof document !== "undefined" && document.currentScript ? document.currentScript.src : void 0;
    return function(Onigasm2) {
      Onigasm2 = Onigasm2 || {};
      var Module = typeof Onigasm2 !== "undefined" ? Onigasm2 : {};
      var moduleOverrides = {};
      var key;
      for (key in Module) {
        if (Module.hasOwnProperty(key)) {
          moduleOverrides[key] = Module[key];
        }
      }
      var ENVIRONMENT_IS_WORKER = false;
      var scriptDirectory = "";
      function locateFile(path) {
        if (Module["locateFile"]) {
          return Module["locateFile"](path, scriptDirectory);
        }
        return scriptDirectory + path;
      }
      var readBinary;
      {
        readBinary = function readBinary2(f2) {
          var data;
          if (typeof readbuffer === "function") {
            return new Uint8Array(readbuffer(f2));
          }
          data = read(f2, "binary");
          assert(typeof data === "object");
          return data;
        };
        if (typeof scriptArgs != "undefined") {
          scriptArgs;
        }
        if (typeof print !== "undefined") {
          if (typeof console === "undefined")
            console = {};
          console.log = print;
          console.warn = console.error = typeof printErr !== "undefined" ? printErr : print;
        }
      }
      var out = Module["print"] || console.log.bind(console);
      var err = Module["printErr"] || console.warn.bind(console);
      for (key in moduleOverrides) {
        if (moduleOverrides.hasOwnProperty(key)) {
          Module[key] = moduleOverrides[key];
        }
      }
      moduleOverrides = null;
      if (Module["arguments"])
        Module["arguments"];
      if (Module["thisProgram"])
        Module["thisProgram"];
      if (Module["quit"])
        Module["quit"];
      var wasmBinary;
      if (Module["wasmBinary"])
        wasmBinary = Module["wasmBinary"];
      if (Module["noExitRuntime"])
        Module["noExitRuntime"];
      if (typeof WebAssembly !== "object") {
        err("no native wasm support detected");
      }
      var wasmMemory;
      var wasmTable = new WebAssembly.Table({ "initial": 244, "maximum": 244 + 0, "element": "anyfunc" });
      var ABORT = false;
      function assert(condition, text3) {
        if (!condition) {
          abort("Assertion failed: " + text3);
        }
      }
      function getCFunc(ident) {
        var func = Module["_" + ident];
        assert(func, "Cannot call unknown function " + ident + ", make sure it is exported");
        return func;
      }
      function ccall(ident, returnType, argTypes, args, opts) {
        var toC = { "string": function(str) {
          var ret2 = 0;
          if (str !== null && str !== void 0 && str !== 0) {
            var len = (str.length << 2) + 1;
            ret2 = stackAlloc(len);
            stringToUTF8(str, ret2, len);
          }
          return ret2;
        }, "array": function(arr) {
          var ret2 = stackAlloc(arr.length);
          writeArrayToMemory(arr, ret2);
          return ret2;
        } };
        function convertReturnValue(ret2) {
          if (returnType === "string")
            return UTF8ToString(ret2);
          if (returnType === "boolean")
            return Boolean(ret2);
          return ret2;
        }
        var func = getCFunc(ident);
        var cArgs = [];
        var stack = 0;
        if (args) {
          for (var i = 0; i < args.length; i++) {
            var converter = toC[argTypes[i]];
            if (converter) {
              if (stack === 0)
                stack = stackSave();
              cArgs[i] = converter(args[i]);
            } else {
              cArgs[i] = args[i];
            }
          }
        }
        var ret = func.apply(null, cArgs);
        ret = convertReturnValue(ret);
        if (stack !== 0)
          stackRestore(stack);
        return ret;
      }
      var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : void 0;
      function UTF8ArrayToString(u8Array, idx, maxBytesToRead) {
        var endIdx = idx + maxBytesToRead;
        var endPtr = idx;
        while (u8Array[endPtr] && !(endPtr >= endIdx))
          ++endPtr;
        if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {
          return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));
        } else {
          var str = "";
          while (idx < endPtr) {
            var u0 = u8Array[idx++];
            if (!(u0 & 128)) {
              str += String.fromCharCode(u0);
              continue;
            }
            var u1 = u8Array[idx++] & 63;
            if ((u0 & 224) == 192) {
              str += String.fromCharCode((u0 & 31) << 6 | u1);
              continue;
            }
            var u2 = u8Array[idx++] & 63;
            if ((u0 & 240) == 224) {
              u0 = (u0 & 15) << 12 | u1 << 6 | u2;
            } else {
              u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u8Array[idx++] & 63;
            }
            if (u0 < 65536) {
              str += String.fromCharCode(u0);
            } else {
              var ch = u0 - 65536;
              str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
            }
          }
        }
        return str;
      }
      function UTF8ToString(ptr, maxBytesToRead) {
        return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";
      }
      function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {
        if (!(maxBytesToWrite > 0))
          return 0;
        var startIdx = outIdx;
        var endIdx = outIdx + maxBytesToWrite - 1;
        for (var i = 0; i < str.length; ++i) {
          var u2 = str.charCodeAt(i);
          if (u2 >= 55296 && u2 <= 57343) {
            var u1 = str.charCodeAt(++i);
            u2 = 65536 + ((u2 & 1023) << 10) | u1 & 1023;
          }
          if (u2 <= 127) {
            if (outIdx >= endIdx)
              break;
            outU8Array[outIdx++] = u2;
          } else if (u2 <= 2047) {
            if (outIdx + 1 >= endIdx)
              break;
            outU8Array[outIdx++] = 192 | u2 >> 6;
            outU8Array[outIdx++] = 128 | u2 & 63;
          } else if (u2 <= 65535) {
            if (outIdx + 2 >= endIdx)
              break;
            outU8Array[outIdx++] = 224 | u2 >> 12;
            outU8Array[outIdx++] = 128 | u2 >> 6 & 63;
            outU8Array[outIdx++] = 128 | u2 & 63;
          } else {
            if (outIdx + 3 >= endIdx)
              break;
            outU8Array[outIdx++] = 240 | u2 >> 18;
            outU8Array[outIdx++] = 128 | u2 >> 12 & 63;
            outU8Array[outIdx++] = 128 | u2 >> 6 & 63;
            outU8Array[outIdx++] = 128 | u2 & 63;
          }
        }
        outU8Array[outIdx] = 0;
        return outIdx - startIdx;
      }
      function stringToUTF8(str, outPtr, maxBytesToWrite) {
        return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
      }
      typeof TextDecoder !== "undefined" ? new TextDecoder("utf-16le") : void 0;
      function writeArrayToMemory(array, buffer2) {
        HEAP8.set(array, buffer2);
      }
      var WASM_PAGE_SIZE = 65536;
      function alignUp(x2, multiple) {
        if (x2 % multiple > 0) {
          x2 += multiple - x2 % multiple;
        }
        return x2;
      }
      var buffer, HEAP8, HEAPU8, HEAP32;
      function updateGlobalBufferAndViews(buf) {
        buffer = buf;
        Module["HEAP8"] = HEAP8 = new Int8Array(buf);
        Module["HEAP16"] = new Int16Array(buf);
        Module["HEAP32"] = HEAP32 = new Int32Array(buf);
        Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf);
        Module["HEAPU16"] = new Uint16Array(buf);
        Module["HEAPU32"] = new Uint32Array(buf);
        Module["HEAPF32"] = new Float32Array(buf);
        Module["HEAPF64"] = new Float64Array(buf);
      }
      var DYNAMIC_BASE = 5507664, DYNAMICTOP_PTR = 264624;
      var INITIAL_TOTAL_MEMORY = Module["TOTAL_MEMORY"] || 157286400;
      if (Module["wasmMemory"]) {
        wasmMemory = Module["wasmMemory"];
      } else {
        wasmMemory = new WebAssembly.Memory({ "initial": INITIAL_TOTAL_MEMORY / WASM_PAGE_SIZE });
      }
      if (wasmMemory) {
        buffer = wasmMemory.buffer;
      }
      INITIAL_TOTAL_MEMORY = buffer.byteLength;
      updateGlobalBufferAndViews(buffer);
      HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE;
      function callRuntimeCallbacks(callbacks2) {
        while (callbacks2.length > 0) {
          var callback = callbacks2.shift();
          if (typeof callback == "function") {
            callback();
            continue;
          }
          var func = callback.func;
          if (typeof func === "number") {
            if (callback.arg === void 0) {
              Module["dynCall_v"](func);
            } else {
              Module["dynCall_vi"](func, callback.arg);
            }
          } else {
            func(callback.arg === void 0 ? null : callback.arg);
          }
        }
      }
      var __ATPRERUN__ = [];
      var __ATINIT__ = [];
      var __ATMAIN__ = [];
      var __ATPOSTRUN__ = [];
      function preRun() {
        if (Module["preRun"]) {
          if (typeof Module["preRun"] == "function")
            Module["preRun"] = [Module["preRun"]];
          while (Module["preRun"].length) {
            addOnPreRun(Module["preRun"].shift());
          }
        }
        callRuntimeCallbacks(__ATPRERUN__);
      }
      function initRuntime() {
        callRuntimeCallbacks(__ATINIT__);
      }
      function preMain() {
        callRuntimeCallbacks(__ATMAIN__);
      }
      function postRun() {
        if (Module["postRun"]) {
          if (typeof Module["postRun"] == "function")
            Module["postRun"] = [Module["postRun"]];
          while (Module["postRun"].length) {
            addOnPostRun(Module["postRun"].shift());
          }
        }
        callRuntimeCallbacks(__ATPOSTRUN__);
      }
      function addOnPreRun(cb) {
        __ATPRERUN__.unshift(cb);
      }
      function addOnPostRun(cb) {
        __ATPOSTRUN__.unshift(cb);
      }
      var runDependencies = 0;
      var dependenciesFulfilled = null;
      function addRunDependency(id2) {
        runDependencies++;
        if (Module["monitorRunDependencies"]) {
          Module["monitorRunDependencies"](runDependencies);
        }
      }
      function removeRunDependency(id2) {
        runDependencies--;
        if (Module["monitorRunDependencies"]) {
          Module["monitorRunDependencies"](runDependencies);
        }
        if (runDependencies == 0) {
          if (dependenciesFulfilled) {
            var callback = dependenciesFulfilled;
            dependenciesFulfilled = null;
            callback();
          }
        }
      }
      Module["preloadedImages"] = {};
      Module["preloadedAudios"] = {};
      function abort(what) {
        if (Module["onAbort"]) {
          Module["onAbort"](what);
        }
        what += "";
        out(what);
        err(what);
        ABORT = true;
        what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info.";
        throw new WebAssembly.RuntimeError(what);
      }
      var dataURIPrefix = "data:application/octet-stream;base64,";
      function isDataURI(filename) {
        return String.prototype.startsWith ? filename.startsWith(dataURIPrefix) : filename.indexOf(dataURIPrefix) === 0;
      }
      var wasmBinaryFile = "onigasm.wasm";
      if (!isDataURI(wasmBinaryFile)) {
        wasmBinaryFile = locateFile(wasmBinaryFile);
      }
      function getBinary() {
        try {
          if (wasmBinary) {
            return new Uint8Array(wasmBinary);
          }
          if (readBinary) {
            return readBinary(wasmBinaryFile);
          } else {
            throw "both async and sync fetching of the wasm failed";
          }
        } catch (err2) {
          abort(err2);
        }
      }
      function getBinaryPromise() {
        if (!wasmBinary && ENVIRONMENT_IS_WORKER && typeof fetch === "function") {
          return fetch(wasmBinaryFile, { credentials: "same-origin" }).then(function(response) {
            if (!response["ok"]) {
              throw "failed to load wasm binary file at '" + wasmBinaryFile + "'";
            }
            return response["arrayBuffer"]();
          }).catch(function() {
            return getBinary();
          });
        }
        return new Promise(function(resolve3, reject) {
          resolve3(getBinary());
        });
      }
      function createWasm() {
        var info = { "env": asmLibraryArg, "wasi_unstable": asmLibraryArg };
        function receiveInstance(instance, module2) {
          var exports3 = instance.exports;
          Module["asm"] = exports3;
          removeRunDependency();
        }
        addRunDependency();
        function receiveInstantiatedSource(output) {
          receiveInstance(output["instance"]);
        }
        function instantiateArrayBuffer(receiver) {
          return getBinaryPromise().then(function(binary2) {
            return WebAssembly.instantiate(binary2, info);
          }).then(receiver, function(reason) {
            err("failed to asynchronously prepare wasm: " + reason);
            abort(reason);
          });
        }
        function instantiateAsync() {
          if (!wasmBinary && typeof WebAssembly.instantiateStreaming === "function" && !isDataURI(wasmBinaryFile) && typeof fetch === "function") {
            fetch(wasmBinaryFile, { credentials: "same-origin" }).then(function(response) {
              var result = WebAssembly.instantiateStreaming(response, info);
              return result.then(receiveInstantiatedSource, function(reason) {
                err("wasm streaming compile failed: " + reason);
                err("falling back to ArrayBuffer instantiation");
                instantiateArrayBuffer(receiveInstantiatedSource);
              });
            });
          } else {
            return instantiateArrayBuffer(receiveInstantiatedSource);
          }
        }
        if (Module["instantiateWasm"]) {
          try {
            var exports2 = Module["instantiateWasm"](info, receiveInstance);
            return exports2;
          } catch (e) {
            err("Module.instantiateWasm callback failed with error: " + e);
            return false;
          }
        }
        instantiateAsync();
        return {};
      }
      __ATINIT__.push({ func: function() {
        ___wasm_call_ctors();
      } });
      function _abort() {
        abort();
      }
      function _emscripten_get_heap_size() {
        return HEAP8.length;
      }
      function _emscripten_get_sbrk_ptr() {
        return 264624;
      }
      function _emscripten_memcpy_big(dest, src, num2) {
        HEAPU8.set(HEAPU8.subarray(src, src + num2), dest);
      }
      function emscripten_realloc_buffer(size2) {
        try {
          wasmMemory.grow(size2 - buffer.byteLength + 65535 >> 16);
          updateGlobalBufferAndViews(wasmMemory.buffer);
          return 1;
        } catch (e) {
        }
      }
      function _emscripten_resize_heap(requestedSize) {
        var oldSize = _emscripten_get_heap_size();
        var PAGE_MULTIPLE = 65536;
        var LIMIT = 2147483648 - PAGE_MULTIPLE;
        if (requestedSize > LIMIT) {
          return false;
        }
        var MIN_TOTAL_MEMORY = 16777216;
        var newSize = Math.max(oldSize, MIN_TOTAL_MEMORY);
        while (newSize < requestedSize) {
          if (newSize <= 536870912) {
            newSize = alignUp(2 * newSize, PAGE_MULTIPLE);
          } else {
            newSize = Math.min(alignUp((3 * newSize + 2147483648) / 4, PAGE_MULTIPLE), LIMIT);
          }
        }
        var replacement = emscripten_realloc_buffer(newSize);
        if (!replacement) {
          return false;
        }
        return true;
      }
      var SYSCALLS = { buffers: [null, [], []], printChar: function(stream, curr) {
        var buffer2 = SYSCALLS.buffers[stream];
        if (curr === 0 || curr === 10) {
          (stream === 1 ? out : err)(UTF8ArrayToString(buffer2, 0));
          buffer2.length = 0;
        } else {
          buffer2.push(curr);
        }
      }, varargs: 0, get: function(varargs) {
        SYSCALLS.varargs += 4;
        var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];
        return ret;
      }, getStr: function() {
        var ret = UTF8ToString(SYSCALLS.get());
        return ret;
      }, get64: function() {
        var low = SYSCALLS.get();
        SYSCALLS.get();
        return low;
      }, getZero: function() {
        SYSCALLS.get();
      } };
      function _fd_close(fd) {
        try {
          return 0;
        } catch (e) {
          if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
            abort(e);
          return e.errno;
        }
      }
      function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {
        try {
          return 0;
        } catch (e) {
          if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
            abort(e);
          return e.errno;
        }
      }
      function _fd_write(fd, iov, iovcnt, pnum) {
        try {
          var num2 = 0;
          for (var i = 0; i < iovcnt; i++) {
            var ptr = HEAP32[iov + i * 8 >> 2];
            var len = HEAP32[iov + (i * 8 + 4) >> 2];
            for (var j2 = 0; j2 < len; j2++) {
              SYSCALLS.printChar(fd, HEAPU8[ptr + j2]);
            }
            num2 += len;
          }
          HEAP32[pnum >> 2] = num2;
          return 0;
        } catch (e) {
          if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
            abort(e);
          return e.errno;
        }
      }
      function _setTempRet0($i) {
      }
      var asmLibraryArg = { "abort": _abort, "emscripten_get_sbrk_ptr": _emscripten_get_sbrk_ptr, "emscripten_memcpy_big": _emscripten_memcpy_big, "emscripten_resize_heap": _emscripten_resize_heap, "fd_close": _fd_close, "fd_seek": _fd_seek, "fd_write": _fd_write, "memory": wasmMemory, "setTempRet0": _setTempRet0, "table": wasmTable };
      var asm = createWasm();
      Module["asm"] = asm;
      var ___wasm_call_ctors = Module["___wasm_call_ctors"] = function() {
        return Module["asm"]["__wasm_call_ctors"].apply(null, arguments);
      };
      Module["_malloc"] = function() {
        return Module["asm"]["malloc"].apply(null, arguments);
      };
      Module["_free"] = function() {
        return Module["asm"]["free"].apply(null, arguments);
      };
      Module["_getLastError"] = function() {
        return Module["asm"]["getLastError"].apply(null, arguments);
      };
      Module["_compilePattern"] = function() {
        return Module["asm"]["compilePattern"].apply(null, arguments);
      };
      Module["_disposeCompiledPatterns"] = function() {
        return Module["asm"]["disposeCompiledPatterns"].apply(null, arguments);
      };
      Module["_findBestMatch"] = function() {
        return Module["asm"]["findBestMatch"].apply(null, arguments);
      };
      Module["___cxa_demangle"] = function() {
        return Module["asm"]["__cxa_demangle"].apply(null, arguments);
      };
      Module["_setThrew"] = function() {
        return Module["asm"]["setThrew"].apply(null, arguments);
      };
      var stackSave = Module["stackSave"] = function() {
        return Module["asm"]["stackSave"].apply(null, arguments);
      };
      var stackAlloc = Module["stackAlloc"] = function() {
        return Module["asm"]["stackAlloc"].apply(null, arguments);
      };
      var stackRestore = Module["stackRestore"] = function() {
        return Module["asm"]["stackRestore"].apply(null, arguments);
      };
      Module["__growWasmMemory"] = function() {
        return Module["asm"]["__growWasmMemory"].apply(null, arguments);
      };
      Module["dynCall_vi"] = function() {
        return Module["asm"]["dynCall_vi"].apply(null, arguments);
      };
      Module["dynCall_iiii"] = function() {
        return Module["asm"]["dynCall_iiii"].apply(null, arguments);
      };
      Module["dynCall_iiiii"] = function() {
        return Module["asm"]["dynCall_iiiii"].apply(null, arguments);
      };
      Module["dynCall_iii"] = function() {
        return Module["asm"]["dynCall_iii"].apply(null, arguments);
      };
      Module["dynCall_iidiiii"] = function() {
        return Module["asm"]["dynCall_iidiiii"].apply(null, arguments);
      };
      Module["dynCall_vii"] = function() {
        return Module["asm"]["dynCall_vii"].apply(null, arguments);
      };
      Module["dynCall_ii"] = function() {
        return Module["asm"]["dynCall_ii"].apply(null, arguments);
      };
      Module["dynCall_i"] = function() {
        return Module["asm"]["dynCall_i"].apply(null, arguments);
      };
      Module["dynCall_v"] = function() {
        return Module["asm"]["dynCall_v"].apply(null, arguments);
      };
      Module["dynCall_viiiiii"] = function() {
        return Module["asm"]["dynCall_viiiiii"].apply(null, arguments);
      };
      Module["dynCall_viiiii"] = function() {
        return Module["asm"]["dynCall_viiiii"].apply(null, arguments);
      };
      Module["dynCall_viiii"] = function() {
        return Module["asm"]["dynCall_viiii"].apply(null, arguments);
      };
      Module["dynCall_jiji"] = function() {
        return Module["asm"]["dynCall_jiji"].apply(null, arguments);
      };
      Module["asm"] = asm;
      Module["ccall"] = ccall;
      var calledRun;
      Module["then"] = function(func) {
        if (calledRun) {
          func(Module);
        } else {
          var old = Module["onRuntimeInitialized"];
          Module["onRuntimeInitialized"] = function() {
            if (old)
              old();
            func(Module);
          };
        }
        return Module;
      };
      dependenciesFulfilled = function runCaller() {
        if (!calledRun)
          run2();
        if (!calledRun)
          dependenciesFulfilled = runCaller;
      };
      function run2(args) {
        if (runDependencies > 0) {
          return;
        }
        preRun();
        if (runDependencies > 0)
          return;
        function doRun() {
          if (calledRun)
            return;
          calledRun = true;
          if (ABORT)
            return;
          initRuntime();
          preMain();
          if (Module["onRuntimeInitialized"])
            Module["onRuntimeInitialized"]();
          postRun();
        }
        if (Module["setStatus"]) {
          Module["setStatus"]("Running...");
          setTimeout(function() {
            setTimeout(function() {
              Module["setStatus"]("");
            }, 1);
            doRun();
          }, 1);
        } else {
          doRun();
        }
      }
      Module["run"] = run2;
      if (Module["preInit"]) {
        if (typeof Module["preInit"] == "function")
          Module["preInit"] = [Module["preInit"]];
        while (Module["preInit"].length > 0) {
          Module["preInit"].pop()();
        }
      }
      run2();
      return Onigasm2;
    };
  }();
  module.exports = Onigasm;
})(onigasm$1);
Object.defineProperty(onigasmH, "__esModule", { value: true });
const OnigasmModuleFactory = onigasmExports;
async function initModule(bytes) {
  return new Promise((resolve3, reject) => {
    const { log, warn: warn2, error: error2 } = console;
    OnigasmModuleFactory({
      instantiateWasm(imports, successCallback) {
        WebAssembly.instantiate(bytes, imports).then((output) => {
          successCallback(output.instance);
        }).catch((e) => {
          throw e;
        });
        return {};
      }
    }).then((moduleH) => {
      onigasmH.onigasmH = moduleH;
      resolve3();
    });
    if (typeof print !== "undefined") {
      console.log = log;
      console.error = error2;
      console.warn = warn2;
    }
  });
}
let isInitialized = false;
async function loadWASM$1(data) {
  if (isInitialized) {
    throw new Error(`Onigasm#init has been called and was succesful, subsequent calls are not allowed once initialized`);
  }
  if (typeof data === "string") {
    const arrayBuffer = await (await fetch(data)).arrayBuffer();
    await initModule(arrayBuffer);
  } else if (data instanceof ArrayBuffer) {
    await initModule(data);
  } else {
    throw new TypeError(`Expected a string (URL of .wasm file) or ArrayBuffer (.wasm file itself) as first parameter`);
  }
  isInitialized = true;
}
onigasmH.loadWASM = loadWASM$1;
var OnigRegExp$1 = {};
var OnigScanner$2 = {};
var iterator;
var hasRequiredIterator;
function requireIterator() {
  if (hasRequiredIterator)
    return iterator;
  hasRequiredIterator = 1;
  iterator = function(Yallist2) {
    Yallist2.prototype[Symbol.iterator] = function* () {
      for (let walker = this.head; walker; walker = walker.next) {
        yield walker.value;
      }
    };
  };
  return iterator;
}
var yallist = Yallist$1;
Yallist$1.Node = Node;
Yallist$1.create = Yallist$1;
function Yallist$1(list3) {
  var self2 = this;
  if (!(self2 instanceof Yallist$1)) {
    self2 = new Yallist$1();
  }
  self2.tail = null;
  self2.head = null;
  self2.length = 0;
  if (list3 && typeof list3.forEach === "function") {
    list3.forEach(function(item) {
      self2.push(item);
    });
  } else if (arguments.length > 0) {
    for (var i = 0, l2 = arguments.length; i < l2; i++) {
      self2.push(arguments[i]);
    }
  }
  return self2;
}
Yallist$1.prototype.removeNode = function(node) {
  if (node.list !== this) {
    throw new Error("removing node which does not belong to this list");
  }
  var next = node.next;
  var prev2 = node.prev;
  if (next) {
    next.prev = prev2;
  }
  if (prev2) {
    prev2.next = next;
  }
  if (node === this.head) {
    this.head = next;
  }
  if (node === this.tail) {
    this.tail = prev2;
  }
  node.list.length--;
  node.next = null;
  node.prev = null;
  node.list = null;
  return next;
};
Yallist$1.prototype.unshiftNode = function(node) {
  if (node === this.head) {
    return;
  }
  if (node.list) {
    node.list.removeNode(node);
  }
  var head = this.head;
  node.list = this;
  node.next = head;
  if (head) {
    head.prev = node;
  }
  this.head = node;
  if (!this.tail) {
    this.tail = node;
  }
  this.length++;
};
Yallist$1.prototype.pushNode = function(node) {
  if (node === this.tail) {
    return;
  }
  if (node.list) {
    node.list.removeNode(node);
  }
  var tail = this.tail;
  node.list = this;
  node.prev = tail;
  if (tail) {
    tail.next = node;
  }
  this.tail = node;
  if (!this.head) {
    this.head = node;
  }
  this.length++;
};
Yallist$1.prototype.push = function() {
  for (var i = 0, l2 = arguments.length; i < l2; i++) {
    push(this, arguments[i]);
  }
  return this.length;
};
Yallist$1.prototype.unshift = function() {
  for (var i = 0, l2 = arguments.length; i < l2; i++) {
    unshift(this, arguments[i]);
  }
  return this.length;
};
Yallist$1.prototype.pop = function() {
  if (!this.tail) {
    return void 0;
  }
  var res = this.tail.value;
  this.tail = this.tail.prev;
  if (this.tail) {
    this.tail.next = null;
  } else {
    this.head = null;
  }
  this.length--;
  return res;
};
Yallist$1.prototype.shift = function() {
  if (!this.head) {
    return void 0;
  }
  var res = this.head.value;
  this.head = this.head.next;
  if (this.head) {
    this.head.prev = null;
  } else {
    this.tail = null;
  }
  this.length--;
  return res;
};
Yallist$1.prototype.forEach = function(fn2, thisp) {
  thisp = thisp || this;
  for (var walker = this.head, i = 0; walker !== null; i++) {
    fn2.call(thisp, walker.value, i, this);
    walker = walker.next;
  }
};
Yallist$1.prototype.forEachReverse = function(fn2, thisp) {
  thisp = thisp || this;
  for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
    fn2.call(thisp, walker.value, i, this);
    walker = walker.prev;
  }
};
Yallist$1.prototype.get = function(n) {
  for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
    walker = walker.next;
  }
  if (i === n && walker !== null) {
    return walker.value;
  }
};
Yallist$1.prototype.getReverse = function(n) {
  for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
    walker = walker.prev;
  }
  if (i === n && walker !== null) {
    return walker.value;
  }
};
Yallist$1.prototype.map = function(fn2, thisp) {
  thisp = thisp || this;
  var res = new Yallist$1();
  for (var walker = this.head; walker !== null; ) {
    res.push(fn2.call(thisp, walker.value, this));
    walker = walker.next;
  }
  return res;
};
Yallist$1.prototype.mapReverse = function(fn2, thisp) {
  thisp = thisp || this;
  var res = new Yallist$1();
  for (var walker = this.tail; walker !== null; ) {
    res.push(fn2.call(thisp, walker.value, this));
    walker = walker.prev;
  }
  return res;
};
Yallist$1.prototype.reduce = function(fn2, initial2) {
  var acc;
  var walker = this.head;
  if (arguments.length > 1) {
    acc = initial2;
  } else if (this.head) {
    walker = this.head.next;
    acc = this.head.value;
  } else {
    throw new TypeError("Reduce of empty list with no initial value");
  }
  for (var i = 0; walker !== null; i++) {
    acc = fn2(acc, walker.value, i);
    walker = walker.next;
  }
  return acc;
};
Yallist$1.prototype.reduceReverse = function(fn2, initial2) {
  var acc;
  var walker = this.tail;
  if (arguments.length > 1) {
    acc = initial2;
  } else if (this.tail) {
    walker = this.tail.prev;
    acc = this.tail.value;
  } else {
    throw new TypeError("Reduce of empty list with no initial value");
  }
  for (var i = this.length - 1; walker !== null; i--) {
    acc = fn2(acc, walker.value, i);
    walker = walker.prev;
  }
  return acc;
};
Yallist$1.prototype.toArray = function() {
  var arr = new Array(this.length);
  for (var i = 0, walker = this.head; walker !== null; i++) {
    arr[i] = walker.value;
    walker = walker.next;
  }
  return arr;
};
Yallist$1.prototype.toArrayReverse = function() {
  var arr = new Array(this.length);
  for (var i = 0, walker = this.tail; walker !== null; i++) {
    arr[i] = walker.value;
    walker = walker.prev;
  }
  return arr;
};
Yallist$1.prototype.slice = function(from, to2) {
  to2 = to2 || this.length;
  if (to2 < 0) {
    to2 += this.length;
  }
  from = from || 0;
  if (from < 0) {
    from += this.length;
  }
  var ret = new Yallist$1();
  if (to2 < from || to2 < 0) {
    return ret;
  }
  if (from < 0) {
    from = 0;
  }
  if (to2 > this.length) {
    to2 = this.length;
  }
  for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
    walker = walker.next;
  }
  for (; walker !== null && i < to2; i++, walker = walker.next) {
    ret.push(walker.value);
  }
  return ret;
};
Yallist$1.prototype.sliceReverse = function(from, to2) {
  to2 = to2 || this.length;
  if (to2 < 0) {
    to2 += this.length;
  }
  from = from || 0;
  if (from < 0) {
    from += this.length;
  }
  var ret = new Yallist$1();
  if (to2 < from || to2 < 0) {
    return ret;
  }
  if (from < 0) {
    from = 0;
  }
  if (to2 > this.length) {
    to2 = this.length;
  }
  for (var i = this.length, walker = this.tail; walker !== null && i > to2; i--) {
    walker = walker.prev;
  }
  for (; walker !== null && i > from; i--, walker = walker.prev) {
    ret.push(walker.value);
  }
  return ret;
};
Yallist$1.prototype.splice = function(start2, deleteCount) {
  if (start2 > this.length) {
    start2 = this.length - 1;
  }
  if (start2 < 0) {
    start2 = this.length + start2;
  }
  for (var i = 0, walker = this.head; walker !== null && i < start2; i++) {
    walker = walker.next;
  }
  var ret = [];
  for (var i = 0; walker && i < deleteCount; i++) {
    ret.push(walker.value);
    walker = this.removeNode(walker);
  }
  if (walker === null) {
    walker = this.tail;
  }
  if (walker !== this.head && walker !== this.tail) {
    walker = walker.prev;
  }
  for (var i = 2; i < arguments.length; i++) {
    walker = insert(this, walker, arguments[i]);
  }
  return ret;
};
Yallist$1.prototype.reverse = function() {
  var head = this.head;
  var tail = this.tail;
  for (var walker = head; walker !== null; walker = walker.prev) {
    var p2 = walker.prev;
    walker.prev = walker.next;
    walker.next = p2;
  }
  this.head = tail;
  this.tail = head;
  return this;
};
function insert(self2, node, value) {
  var inserted = node === self2.head ? new Node(value, null, node, self2) : new Node(value, node, node.next, self2);
  if (inserted.next === null) {
    self2.tail = inserted;
  }
  if (inserted.prev === null) {
    self2.head = inserted;
  }
  self2.length++;
  return inserted;
}
function push(self2, item) {
  self2.tail = new Node(item, self2.tail, null, self2);
  if (!self2.head) {
    self2.head = self2.tail;
  }
  self2.length++;
}
function unshift(self2, item) {
  self2.head = new Node(item, null, self2.head, self2);
  if (!self2.tail) {
    self2.tail = self2.head;
  }
  self2.length++;
}
function Node(value, prev2, next, list3) {
  if (!(this instanceof Node)) {
    return new Node(value, prev2, next, list3);
  }
  this.list = list3;
  this.value = value;
  if (prev2) {
    prev2.next = this;
    this.prev = prev2;
  } else {
    this.prev = null;
  }
  if (next) {
    next.prev = this;
    this.next = next;
  } else {
    this.next = null;
  }
}
try {
  requireIterator()(Yallist$1);
} catch (er) {
}
const Yallist = yallist;
const MAX = Symbol("max");
const LENGTH = Symbol("length");
const LENGTH_CALCULATOR = Symbol("lengthCalculator");
const ALLOW_STALE = Symbol("allowStale");
const MAX_AGE = Symbol("maxAge");
const DISPOSE = Symbol("dispose");
const NO_DISPOSE_ON_SET = Symbol("noDisposeOnSet");
const LRU_LIST = Symbol("lruList");
const CACHE = Symbol("cache");
const UPDATE_AGE_ON_GET = Symbol("updateAgeOnGet");
const naiveLength = () => 1;
let LRUCache$1 = class LRUCache {
  constructor(options2) {
    if (typeof options2 === "number")
      options2 = { max: options2 };
    if (!options2)
      options2 = {};
    if (options2.max && (typeof options2.max !== "number" || options2.max < 0))
      throw new TypeError("max must be a non-negative number");
    this[MAX] = options2.max || Infinity;
    const lc = options2.length || naiveLength;
    this[LENGTH_CALCULATOR] = typeof lc !== "function" ? naiveLength : lc;
    this[ALLOW_STALE] = options2.stale || false;
    if (options2.maxAge && typeof options2.maxAge !== "number")
      throw new TypeError("maxAge must be a number");
    this[MAX_AGE] = options2.maxAge || 0;
    this[DISPOSE] = options2.dispose;
    this[NO_DISPOSE_ON_SET] = options2.noDisposeOnSet || false;
    this[UPDATE_AGE_ON_GET] = options2.updateAgeOnGet || false;
    this.reset();
  }
  // resize the cache when the max changes.
  set max(mL) {
    if (typeof mL !== "number" || mL < 0)
      throw new TypeError("max must be a non-negative number");
    this[MAX] = mL || Infinity;
    trim(this);
  }
  get max() {
    return this[MAX];
  }
  set allowStale(allowStale) {
    this[ALLOW_STALE] = !!allowStale;
  }
  get allowStale() {
    return this[ALLOW_STALE];
  }
  set maxAge(mA) {
    if (typeof mA !== "number")
      throw new TypeError("maxAge must be a non-negative number");
    this[MAX_AGE] = mA;
    trim(this);
  }
  get maxAge() {
    return this[MAX_AGE];
  }
  // resize the cache when the lengthCalculator changes.
  set lengthCalculator(lC) {
    if (typeof lC !== "function")
      lC = naiveLength;
    if (lC !== this[LENGTH_CALCULATOR]) {
      this[LENGTH_CALCULATOR] = lC;
      this[LENGTH] = 0;
      this[LRU_LIST].forEach((hit) => {
        hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key);
        this[LENGTH] += hit.length;
      });
    }
    trim(this);
  }
  get lengthCalculator() {
    return this[LENGTH_CALCULATOR];
  }
  get length() {
    return this[LENGTH];
  }
  get itemCount() {
    return this[LRU_LIST].length;
  }
  rforEach(fn2, thisp) {
    thisp = thisp || this;
    for (let walker = this[LRU_LIST].tail; walker !== null; ) {
      const prev2 = walker.prev;
      forEachStep(this, fn2, walker, thisp);
      walker = prev2;
    }
  }
  forEach(fn2, thisp) {
    thisp = thisp || this;
    for (let walker = this[LRU_LIST].head; walker !== null; ) {
      const next = walker.next;
      forEachStep(this, fn2, walker, thisp);
      walker = next;
    }
  }
  keys() {
    return this[LRU_LIST].toArray().map((k2) => k2.key);
  }
  values() {
    return this[LRU_LIST].toArray().map((k2) => k2.value);
  }
  reset() {
    if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) {
      this[LRU_LIST].forEach((hit) => this[DISPOSE](hit.key, hit.value));
    }
    this[CACHE] = /* @__PURE__ */ new Map();
    this[LRU_LIST] = new Yallist();
    this[LENGTH] = 0;
  }
  dump() {
    return this[LRU_LIST].map((hit) => isStale(this, hit) ? false : {
      k: hit.key,
      v: hit.value,
      e: hit.now + (hit.maxAge || 0)
    }).toArray().filter((h2) => h2);
  }
  dumpLru() {
    return this[LRU_LIST];
  }
  set(key, value, maxAge) {
    maxAge = maxAge || this[MAX_AGE];
    if (maxAge && typeof maxAge !== "number")
      throw new TypeError("maxAge must be a number");
    const now2 = maxAge ? Date.now() : 0;
    const len = this[LENGTH_CALCULATOR](value, key);
    if (this[CACHE].has(key)) {
      if (len > this[MAX]) {
        del(this, this[CACHE].get(key));
        return false;
      }
      const node = this[CACHE].get(key);
      const item = node.value;
      if (this[DISPOSE]) {
        if (!this[NO_DISPOSE_ON_SET])
          this[DISPOSE](key, item.value);
      }
      item.now = now2;
      item.maxAge = maxAge;
      item.value = value;
      this[LENGTH] += len - item.length;
      item.length = len;
      this.get(key);
      trim(this);
      return true;
    }
    const hit = new Entry(key, value, len, now2, maxAge);
    if (hit.length > this[MAX]) {
      if (this[DISPOSE])
        this[DISPOSE](key, value);
      return false;
    }
    this[LENGTH] += hit.length;
    this[LRU_LIST].unshift(hit);
    this[CACHE].set(key, this[LRU_LIST].head);
    trim(this);
    return true;
  }
  has(key) {
    if (!this[CACHE].has(key))
      return false;
    const hit = this[CACHE].get(key).value;
    return !isStale(this, hit);
  }
  get(key) {
    return get(this, key, true);
  }
  peek(key) {
    return get(this, key, false);
  }
  pop() {
    const node = this[LRU_LIST].tail;
    if (!node)
      return null;
    del(this, node);
    return node.value;
  }
  del(key) {
    del(this, this[CACHE].get(key));
  }
  load(arr) {
    this.reset();
    const now2 = Date.now();
    for (let l2 = arr.length - 1; l2 >= 0; l2--) {
      const hit = arr[l2];
      const expiresAt = hit.e || 0;
      if (expiresAt === 0)
        this.set(hit.k, hit.v);
      else {
        const maxAge = expiresAt - now2;
        if (maxAge > 0) {
          this.set(hit.k, hit.v, maxAge);
        }
      }
    }
  }
  prune() {
    this[CACHE].forEach((value, key) => get(this, key, false));
  }
};
const get = (self2, key, doUse) => {
  const node = self2[CACHE].get(key);
  if (node) {
    const hit = node.value;
    if (isStale(self2, hit)) {
      del(self2, node);
      if (!self2[ALLOW_STALE])
        return void 0;
    } else {
      if (doUse) {
        if (self2[UPDATE_AGE_ON_GET])
          node.value.now = Date.now();
        self2[LRU_LIST].unshiftNode(node);
      }
    }
    return hit.value;
  }
};
const isStale = (self2, hit) => {
  if (!hit || !hit.maxAge && !self2[MAX_AGE])
    return false;
  const diff = Date.now() - hit.now;
  return hit.maxAge ? diff > hit.maxAge : self2[MAX_AGE] && diff > self2[MAX_AGE];
};
const trim = (self2) => {
  if (self2[LENGTH] > self2[MAX]) {
    for (let walker = self2[LRU_LIST].tail; self2[LENGTH] > self2[MAX] && walker !== null; ) {
      const prev2 = walker.prev;
      del(self2, walker);
      walker = prev2;
    }
  }
};
const del = (self2, node) => {
  if (node) {
    const hit = node.value;
    if (self2[DISPOSE])
      self2[DISPOSE](hit.key, hit.value);
    self2[LENGTH] -= hit.length;
    self2[CACHE].delete(hit.key);
    self2[LRU_LIST].removeNode(node);
  }
};
class Entry {
  constructor(key, value, length2, now2, maxAge) {
    this.key = key;
    this.value = value;
    this.length = length2;
    this.now = now2;
    this.maxAge = maxAge || 0;
  }
}
const forEachStep = (self2, fn2, node, thisp) => {
  let hit = node.value;
  if (isStale(self2, hit)) {
    del(self2, node);
    if (!self2[ALLOW_STALE])
      hit = void 0;
  }
  if (hit)
    fn2.call(thisp, hit.value, hit.key, self2);
};
var lruCache = LRUCache$1;
var OnigString$2 = {};
Object.defineProperty(OnigString$2, "__esModule", { value: true });
let OnigString$1 = class OnigString {
  constructor(content) {
    this.substring = (start2, end2) => {
      return this.source.substring(start2, end2);
    };
    this.toString = (start2, end2) => {
      return this.source;
    };
    if (typeof content !== "string") {
      throw new TypeError("Argument must be a string");
    }
    this.source = content;
    this._utf8Bytes = null;
    this._utf8Indexes = null;
  }
  get utf8Bytes() {
    if (!this._utf8Bytes) {
      this.encode();
    }
    return this._utf8Bytes;
  }
  /**
   * Returns `null` if all utf8 offsets match utf-16 offset (content has no multi byte characters)
   */
  get utf8Indexes() {
    if (!this._utf8Bytes) {
      this.encode();
    }
    return this._utf8Indexes;
  }
  get content() {
    return this.source;
  }
  get length() {
    return this.source.length;
  }
  get hasMultiByteCharacters() {
    return this.utf8Indexes !== null;
  }
  convertUtf8OffsetToUtf16(utf8Offset) {
    if (utf8Offset < 0) {
      return 0;
    }
    const utf8Array = this._utf8Bytes;
    if (utf8Offset >= utf8Array.length - 1) {
      return this.source.length;
    }
    const utf8OffsetMap = this.utf8Indexes;
    if (utf8OffsetMap && utf8Offset >= this._mappingTableStartOffset) {
      return findFirstInSorted(utf8OffsetMap, utf8Offset - this._mappingTableStartOffset) + this._mappingTableStartOffset;
    }
    return utf8Offset;
  }
  convertUtf16OffsetToUtf8(utf16Offset) {
    if (utf16Offset < 0) {
      return 0;
    }
    const utf8Array = this._utf8Bytes;
    if (utf16Offset >= this.source.length) {
      return utf8Array.length - 1;
    }
    const utf8OffsetMap = this.utf8Indexes;
    if (utf8OffsetMap && utf16Offset >= this._mappingTableStartOffset) {
      return utf8OffsetMap[utf16Offset - this._mappingTableStartOffset] + this._mappingTableStartOffset;
    }
    return utf16Offset;
  }
  encode() {
    const str = this.source;
    const n = str.length;
    let utf16OffsetToUtf8;
    let utf8Offset = 0;
    let mappingTableStartOffset = 0;
    function createOffsetTable(startOffset) {
      const maxUtf8Len = (n - startOffset) * 3;
      if (maxUtf8Len <= 255) {
        utf16OffsetToUtf8 = new Uint8Array(n - startOffset);
      } else if (maxUtf8Len <= 65535) {
        utf16OffsetToUtf8 = new Uint16Array(n - startOffset);
      } else {
        utf16OffsetToUtf8 = new Uint32Array(n - startOffset);
      }
      mappingTableStartOffset = startOffset;
      utf16OffsetToUtf8[utf8Offset++] = 0;
    }
    const u8view = new Uint8Array(
      n * 3 + 1
      /** null termination character */
    );
    let ptrHead = 0;
    let i = 0;
    while (i < str.length) {
      let codepoint;
      const c2 = str.charCodeAt(i);
      if (utf16OffsetToUtf8) {
        utf16OffsetToUtf8[utf8Offset++] = ptrHead - mappingTableStartOffset;
      }
      if (c2 < 55296 || c2 > 57343) {
        codepoint = c2;
      } else if (c2 >= 56320) {
        codepoint = 65533;
      } else {
        if (i === n - 1) {
          codepoint = 65533;
        } else {
          const d2 = str.charCodeAt(i + 1);
          if (56320 <= d2 && d2 <= 57343) {
            if (!utf16OffsetToUtf8) {
              createOffsetTable(i);
            }
            const a2 = c2 & 1023;
            const b2 = d2 & 1023;
            codepoint = 65536 + (a2 << 10) + b2;
            i += 1;
            utf16OffsetToUtf8[utf8Offset++] = ptrHead - mappingTableStartOffset;
          } else {
            codepoint = 65533;
          }
        }
      }
      let bytesRequiredToEncode;
      let offset2;
      if (codepoint <= 127) {
        bytesRequiredToEncode = 1;
        offset2 = 0;
      } else if (codepoint <= 2047) {
        bytesRequiredToEncode = 2;
        offset2 = 192;
      } else if (codepoint <= 65535) {
        bytesRequiredToEncode = 3;
        offset2 = 224;
      } else {
        bytesRequiredToEncode = 4;
        offset2 = 240;
      }
      if (bytesRequiredToEncode === 1) {
        u8view[ptrHead++] = codepoint;
      } else {
        if (!utf16OffsetToUtf8) {
          createOffsetTable(ptrHead);
        }
        u8view[ptrHead++] = (codepoint >> 6 * --bytesRequiredToEncode) + offset2;
        while (bytesRequiredToEncode > 0) {
          const temp = codepoint >> 6 * (bytesRequiredToEncode - 1);
          u8view[ptrHead++] = 128 | temp & 63;
          bytesRequiredToEncode -= 1;
        }
      }
      i += 1;
    }
    const utf8 = u8view.slice(0, ptrHead + 1);
    utf8[ptrHead] = 0;
    this._utf8Bytes = utf8;
    if (utf16OffsetToUtf8) {
      this._utf8Indexes = utf16OffsetToUtf8;
      this._mappingTableStartOffset = mappingTableStartOffset;
    }
  }
};
function findFirstInSorted(array, i) {
  let low = 0;
  let high = array.length;
  if (high === 0) {
    return 0;
  }
  while (low < high) {
    const mid2 = Math.floor((low + high) / 2);
    if (array[mid2] >= i) {
      high = mid2;
    } else {
      low = mid2 + 1;
    }
  }
  while (low > 0 && (low >= array.length || array[low] > i)) {
    low--;
  }
  if (low > 0 && array[low] === array[low - 1]) {
    low--;
  }
  return low;
}
OnigString$2.default = OnigString$1;
Object.defineProperty(OnigScanner$2, "__esModule", { value: true });
const LRUCache2 = lruCache;
const onigasmH_1$1 = onigasmH;
const OnigString_1$1 = OnigString$2;
function mallocAndWriteString(str) {
  const ptr = onigasmH_1$1.onigasmH._malloc(str.utf8Bytes.length);
  onigasmH_1$1.onigasmH.HEAPU8.set(str.utf8Bytes, ptr);
  return ptr;
}
function convertUTF8BytesFromPtrToString(ptr) {
  const chars = [];
  let i = 0;
  while (onigasmH_1$1.onigasmH.HEAPU8[ptr] !== 0) {
    chars[i++] = onigasmH_1$1.onigasmH.HEAPU8[ptr++];
  }
  return chars.join();
}
const cache = new LRUCache2({
  dispose: (scanner, info) => {
    const regexTPtrsPtr = onigasmH_1$1.onigasmH._malloc(info.regexTPtrs.length);
    onigasmH_1$1.onigasmH.HEAPU8.set(info.regexTPtrs, regexTPtrsPtr);
    const status = onigasmH_1$1.onigasmH._disposeCompiledPatterns(regexTPtrsPtr, scanner.patterns.length);
    if (status !== 0) {
      const errMessage = convertUTF8BytesFromPtrToString(onigasmH_1$1.onigasmH._getLastError());
      throw new Error(errMessage);
    }
    onigasmH_1$1.onigasmH._free(regexTPtrsPtr);
  },
  max: 1e3
});
let OnigScanner$1 = class OnigScanner {
  /**
   * Create a new scanner with the given patterns
   * @param patterns  An array of string patterns
   */
  constructor(patterns2) {
    if (onigasmH_1$1.onigasmH === null) {
      throw new Error(`Onigasm has not been initialized, call loadWASM from 'onigasm' exports before using any other API`);
    }
    for (let i = 0; i < patterns2.length; i++) {
      const pattern = patterns2[i];
      if (typeof pattern !== "string") {
        throw new TypeError(`First parameter to OnigScanner constructor must be array of (pattern) strings`);
      }
    }
    this.sources = patterns2.slice();
  }
  get patterns() {
    return this.sources.slice();
  }
  /**
   * Find the next match from a given position
   * @param string The string to search
   * @param startPosition The optional position to start at, defaults to 0
   * @param callback The (error, match) function to call when done, match will null when there is no match
   */
  findNextMatch(string, startPosition, callback) {
    if (startPosition == null) {
      startPosition = 0;
    }
    if (typeof startPosition === "function") {
      callback = startPosition;
      startPosition = 0;
    }
    try {
      const match3 = this.findNextMatchSync(string, startPosition);
      callback(null, match3);
    } catch (error2) {
      callback(error2);
    }
  }
  /**
   * Find the next match from a given position
   * @param string The string to search
   * @param startPosition The optional position to start at, defaults to 0
   */
  findNextMatchSync(string, startPosition) {
    if (startPosition == null) {
      startPosition = 0;
    }
    startPosition = this.convertToNumber(startPosition);
    let onigNativeInfo = cache.get(this);
    let status = 0;
    if (!onigNativeInfo) {
      const regexTAddrRecieverPtr = onigasmH_1$1.onigasmH._malloc(4);
      const regexTPtrs = [];
      for (let i = 0; i < this.sources.length; i++) {
        const pattern = this.sources[i];
        const patternStrPtr = mallocAndWriteString(new OnigString_1$1.default(pattern));
        status = onigasmH_1$1.onigasmH._compilePattern(patternStrPtr, regexTAddrRecieverPtr);
        if (status !== 0) {
          const errMessage = convertUTF8BytesFromPtrToString(onigasmH_1$1.onigasmH._getLastError());
          throw new Error(errMessage);
        }
        const regexTAddress = onigasmH_1$1.onigasmH.HEAP32[regexTAddrRecieverPtr / 4];
        regexTPtrs.push(regexTAddress);
        onigasmH_1$1.onigasmH._free(patternStrPtr);
      }
      onigNativeInfo = {
        regexTPtrs: new Uint8Array(Uint32Array.from(regexTPtrs).buffer)
      };
      onigasmH_1$1.onigasmH._free(regexTAddrRecieverPtr);
      cache.set(this, onigNativeInfo);
    }
    const onigString = string instanceof OnigString_1$1.default ? string : new OnigString_1$1.default(this.convertToString(string));
    const strPtr = mallocAndWriteString(onigString);
    const resultInfoReceiverPtr = onigasmH_1$1.onigasmH._malloc(8);
    const regexTPtrsPtr = onigasmH_1$1.onigasmH._malloc(onigNativeInfo.regexTPtrs.length);
    onigasmH_1$1.onigasmH.HEAPU8.set(onigNativeInfo.regexTPtrs, regexTPtrsPtr);
    status = onigasmH_1$1.onigasmH._findBestMatch(
      // regex_t **patterns
      regexTPtrsPtr,
      // int patternCount
      this.sources.length,
      // UChar *utf8String
      strPtr,
      // int strLen
      onigString.utf8Bytes.length - 1,
      // int startOffset
      onigString.convertUtf16OffsetToUtf8(startPosition),
      // int *resultInfo
      resultInfoReceiverPtr
    );
    if (status !== 0) {
      const errMessage = convertUTF8BytesFromPtrToString(onigasmH_1$1.onigasmH._getLastError());
      throw new Error(errMessage);
    }
    const [
      // The index of pattern which matched the string at least offset from 0 (start)
      bestPatternIdx,
      // Begin address of capture info encoded as pairs
      // like [start, end, start, end, start, end, ...]
      //  - first start-end pair is entire match (index 0 and 1)
      //  - subsequent pairs are capture groups (2, 3 = first capture group, 4, 5 = second capture group and so on)
      encodedResultBeginAddress,
      // Length of the [start, end, ...] sequence so we know how much memory to read (will always be 0 or multiple of 2)
      encodedResultLength
    ] = new Uint32Array(onigasmH_1$1.onigasmH.HEAPU32.buffer, resultInfoReceiverPtr, 3);
    onigasmH_1$1.onigasmH._free(strPtr);
    onigasmH_1$1.onigasmH._free(resultInfoReceiverPtr);
    onigasmH_1$1.onigasmH._free(regexTPtrsPtr);
    if (encodedResultLength > 0) {
      const encodedResult = new Uint32Array(onigasmH_1$1.onigasmH.HEAPU32.buffer, encodedResultBeginAddress, encodedResultLength);
      const captureIndices = [];
      let i = 0;
      let captureIdx = 0;
      while (i < encodedResultLength) {
        const index2 = captureIdx++;
        let start2 = encodedResult[i++];
        let end2 = encodedResult[i++];
        if (onigString.hasMultiByteCharacters) {
          start2 = onigString.convertUtf8OffsetToUtf16(start2);
          end2 = onigString.convertUtf8OffsetToUtf16(end2);
        }
        captureIndices.push({
          end: end2,
          index: index2,
          length: end2 - start2,
          start: start2
        });
      }
      onigasmH_1$1.onigasmH._free(encodedResultBeginAddress);
      return {
        captureIndices,
        index: bestPatternIdx,
        scanner: this
      };
    }
    return null;
  }
  convertToString(value) {
    if (value === void 0) {
      return "undefined";
    }
    if (value === null) {
      return "null";
    }
    if (value instanceof OnigString_1$1.default) {
      return value.content;
    }
    return value.toString();
  }
  convertToNumber(value) {
    value = parseInt(value, 10);
    if (!isFinite(value)) {
      value = 0;
    }
    value = Math.max(value, 0);
    return value;
  }
};
OnigScanner$2.OnigScanner = OnigScanner$1;
OnigScanner$2.default = OnigScanner$1;
Object.defineProperty(OnigRegExp$1, "__esModule", { value: true });
const OnigScanner_1$1 = OnigScanner$2;
class OnigRegExp {
  /**
   * Create a new regex with the given pattern
   * @param source A string pattern
   */
  constructor(source) {
    this.source = source;
    try {
      this.scanner = new OnigScanner_1$1.default([this.source]);
    } catch (error2) {
    }
  }
  /**
   * Synchronously search the string for a match starting at the given position
   * @param string The string to search
   * @param startPosition The optional position to start the search at, defaults to `0`
   */
  searchSync(string, startPosition) {
    let match3;
    if (startPosition == null) {
      startPosition = 0;
    }
    match3 = this.scanner.findNextMatchSync(string, startPosition);
    return this.captureIndicesForMatch(string, match3);
  }
  /**
   * Search the string for a match starting at the given position
   * @param string The string to search
   * @param startPosition The optional position to start the search at, defaults to `0`
   * @param callback The `(error, match)` function to call when done, match will be null if no matches were found. match will be an array of objects for each matched group on a successful search
   */
  search(string, startPosition, callback) {
    if (startPosition == null) {
      startPosition = 0;
    }
    if (typeof startPosition === "function") {
      callback = startPosition;
      startPosition = 0;
    }
    try {
      const ret = this.searchSync(string, startPosition);
      callback(null, ret);
    } catch (error2) {
      callback(error2);
    }
  }
  /**
   * Synchronously test if this regular expression matches the given string
   * @param string The string to test against
   */
  testSync(string) {
    if (typeof this.source === "boolean" || typeof string === "boolean") {
      return this.source === string;
    }
    return this.searchSync(string) != null;
  }
  /**
   * Test if this regular expression matches the given string
   * @param string The string to test against
   * @param callback The (error, matches) function to call when done, matches will be true if at least one match is found, false otherwise
   */
  test(string, callback) {
    if (typeof callback !== "function") {
      callback = () => {
      };
    }
    try {
      callback(null, this.testSync(string));
    } catch (error2) {
      callback(error2);
    }
  }
  captureIndicesForMatch(string, match3) {
    if (match3 != null) {
      const { captureIndices } = match3;
      let capture;
      string = this.scanner.convertToString(string);
      for (let i = 0; i < captureIndices.length; i++) {
        capture = captureIndices[i];
        capture.match = string.slice(capture.start, capture.end);
      }
      return captureIndices;
    } else {
      return null;
    }
  }
}
OnigRegExp$1.default = OnigRegExp;
Object.defineProperty(lib$1, "__esModule", { value: true });
const onigasmH_1 = onigasmH;
var loadWASM = lib$1.loadWASM = onigasmH_1.loadWASM;
const OnigRegExp_1 = OnigRegExp$1;
lib$1.OnigRegExp = OnigRegExp_1.default;
const OnigScanner_1 = OnigScanner$2;
var OnigScanner2 = lib$1.OnigScanner = OnigScanner_1.default;
const OnigString_1 = OnigString$2;
var OnigString2 = lib$1.OnigString = OnigString_1.default;
var mainExports = {};
var main$1 = {
  get exports() {
    return mainExports;
  },
  set exports(v2) {
    mainExports = v2;
  }
};
(function(module, exports) {
  !function(e, t2) {
    module.exports = t2();
  }(commonjsGlobal$1, function() {
    return function(e) {
      var t2 = {};
      function n(r2) {
        if (t2[r2])
          return t2[r2].exports;
        var i = t2[r2] = { i: r2, l: false, exports: {} };
        return e[r2].call(i.exports, i, i.exports, n), i.l = true, i.exports;
      }
      return n.m = e, n.c = t2, n.d = function(e2, t3, r2) {
        n.o(e2, t3) || Object.defineProperty(e2, t3, { enumerable: true, get: r2 });
      }, n.r = function(e2) {
        "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e2, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e2, "__esModule", { value: true });
      }, n.t = function(e2, t3) {
        if (1 & t3 && (e2 = n(e2)), 8 & t3)
          return e2;
        if (4 & t3 && "object" == typeof e2 && e2 && e2.__esModule)
          return e2;
        var r2 = /* @__PURE__ */ Object.create(null);
        if (n.r(r2), Object.defineProperty(r2, "default", { enumerable: true, value: e2 }), 2 & t3 && "string" != typeof e2)
          for (var i in e2)
            n.d(r2, i, function(t4) {
              return e2[t4];
            }.bind(null, i));
        return r2;
      }, n.n = function(e2) {
        var t3 = e2 && e2.__esModule ? function() {
          return e2.default;
        } : function() {
          return e2;
        };
        return n.d(t3, "a", t3), t3;
      }, n.o = function(e2, t3) {
        return Object.prototype.hasOwnProperty.call(e2, t3);
      }, n.p = "", n(n.s = 3);
    }([function(e, t2, n) {
      Object.defineProperty(t2, "__esModule", { value: true });
      var r2 = n(1), i = n(5), o2 = n(6), s2 = n(2), a2 = "undefined" == typeof performance ? function() {
        return Date.now();
      } : function() {
        return performance.now();
      };
      t2.createGrammar = function(e2, t3, n2, r3, i2, o3) {
        return new v2(e2, t3, n2, r3, i2, o3);
      };
      var c2 = function(e2) {
        this.scopeName = e2;
      };
      t2.FullScopeDependency = c2;
      var u2 = function() {
        function e2(e3, t3) {
          this.scopeName = e3, this.include = t3;
        }
        return e2.prototype.toKey = function() {
          return this.scopeName + "#" + this.include;
        }, e2;
      }();
      t2.PartialScopeDependency = u2;
      var l2 = function() {
        function e2() {
          this.full = [], this.partial = [], this.visitedRule = /* @__PURE__ */ new Set(), this._seenFull = /* @__PURE__ */ new Set(), this._seenPartial = /* @__PURE__ */ new Set();
        }
        return e2.prototype.add = function(e3) {
          e3 instanceof c2 ? this._seenFull.has(e3.scopeName) || (this._seenFull.add(e3.scopeName), this.full.push(e3)) : this._seenPartial.has(e3.toKey()) || (this._seenPartial.add(e3.toKey()), this.partial.push(e3));
        }, e2;
      }();
      function h2(e2, t3, n2, i2, o3) {
        for (var s3 = 0, a3 = i2; s3 < a3.length; s3++) {
          var l3 = a3[s3];
          if (!e2.visitedRule.has(l3)) {
            e2.visitedRule.add(l3);
            var d3 = l3.repository ? r2.mergeObjects({}, o3, l3.repository) : o3;
            Array.isArray(l3.patterns) && h2(e2, t3, n2, l3.patterns, d3);
            var g2 = l3.include;
            if (g2)
              if ("$base" === g2 || g2 === t3.scopeName)
                f2(e2, t3, t3);
              else if ("$self" === g2 || g2 === n2.scopeName)
                f2(e2, t3, n2);
              else if ("#" === g2.charAt(0))
                p2(e2, t3, n2, g2.substring(1), d3);
              else {
                var m3 = g2.indexOf("#");
                if (m3 >= 0) {
                  var _3 = g2.substring(0, m3), y3 = g2.substring(m3 + 1);
                  _3 === t3.scopeName ? p2(e2, t3, t3, y3, d3) : _3 === n2.scopeName ? p2(e2, t3, n2, y3, d3) : e2.add(new u2(_3, g2.substring(m3 + 1)));
                } else
                  e2.add(new c2(g2));
              }
          }
        }
      }
      function p2(e2, t3, n2, r3, i2) {
        (void 0 === i2 && (i2 = n2.repository), i2 && i2[r3]) && h2(e2, t3, n2, [i2[r3]], i2);
      }
      function f2(e2, t3, n2) {
        if (n2.patterns && Array.isArray(n2.patterns) && h2(e2, t3, n2, n2.patterns, n2.repository), n2.injections) {
          var r3 = [];
          for (var i2 in n2.injections)
            r3.push(n2.injections[i2]);
          h2(e2, t3, n2, r3, n2.repository);
        }
      }
      function d2(e2, t3) {
        if (!e2)
          return false;
        if (e2 === t3)
          return true;
        var n2 = t3.length;
        return e2.length > n2 && e2.substr(0, n2) === t3 && "." === e2[n2];
      }
      function g(e2, t3) {
        if (t3.length < e2.length)
          return false;
        var n2 = 0;
        return e2.every(function(e3) {
          for (var r3 = n2; r3 < t3.length; r3++)
            if (d2(t3[r3], e3))
              return n2 = r3 + 1, true;
          return false;
        });
      }
      function m2(e2, t3, n2, r3, s3) {
        for (var a3 = o2.createMatchers(t3, g), c3 = i.RuleFactory.getCompiledRuleId(n2, r3, s3.repository), u3 = 0, l3 = a3; u3 < l3.length; u3++) {
          var h3 = l3[u3];
          e2.push({ matcher: h3.matcher, ruleId: c3, grammar: s3, priority: h3.priority });
        }
      }
      t2.ScopeDependencyCollector = l2, t2.collectSpecificDependencies = p2, t2.collectDependencies = f2;
      var _2 = function(e2, t3, n2, r3) {
        this.scopeName = e2, this.languageId = t3, this.tokenType = n2, this.themeData = r3;
      };
      t2.ScopeMetadata = _2;
      var y2 = function() {
        function e2(t3, n2, r3) {
          if (this._initialLanguage = t3, this._themeProvider = n2, this._cache = /* @__PURE__ */ new Map(), this._defaultMetaData = new _2("", this._initialLanguage, 0, [this._themeProvider.getDefaults()]), this._embeddedLanguages = /* @__PURE__ */ Object.create(null), r3)
            for (var i2 = Object.keys(r3), o3 = 0, s3 = i2.length; o3 < s3; o3++) {
              var a3 = i2[o3], c3 = r3[a3];
              "number" == typeof c3 && 0 !== c3 ? this._embeddedLanguages[a3] = c3 : console.warn("Invalid embedded language found at scope " + a3 + ": <<" + c3 + ">>");
            }
          var u3 = Object.keys(this._embeddedLanguages).map(function(t4) {
            return e2._escapeRegExpCharacters(t4);
          });
          0 === u3.length ? this._embeddedLanguagesRegex = null : (u3.sort(), u3.reverse(), this._embeddedLanguagesRegex = new RegExp("^((" + u3.join(")|(") + "))($|\\.)", ""));
        }
        return e2.prototype.onDidChangeTheme = function() {
          this._cache = /* @__PURE__ */ new Map(), this._defaultMetaData = new _2("", this._initialLanguage, 0, [this._themeProvider.getDefaults()]);
        }, e2.prototype.getDefaultMetadata = function() {
          return this._defaultMetaData;
        }, e2._escapeRegExpCharacters = function(e3) {
          return e3.replace(/[\-\\\{\}\*\+\?\|\^\$\.\,\[\]\(\)\#\s]/g, "\\$&");
        }, e2.prototype.getMetadataForScope = function(t3) {
          if (null === t3)
            return e2._NULL_SCOPE_METADATA;
          var n2 = this._cache.get(t3);
          return n2 || (n2 = this._doGetMetadataForScope(t3), this._cache.set(t3, n2), n2);
        }, e2.prototype._doGetMetadataForScope = function(e3) {
          var t3 = this._scopeToLanguage(e3), n2 = this._toStandardTokenType(e3), r3 = this._themeProvider.themeMatch(e3);
          return new _2(e3, t3, n2, r3);
        }, e2.prototype._scopeToLanguage = function(e3) {
          if (!e3)
            return 0;
          if (!this._embeddedLanguagesRegex)
            return 0;
          var t3 = e3.match(this._embeddedLanguagesRegex);
          if (!t3)
            return 0;
          var n2 = this._embeddedLanguages[t3[1]] || 0;
          return n2 || 0;
        }, e2.prototype._toStandardTokenType = function(t3) {
          var n2 = t3.match(e2.STANDARD_TOKEN_TYPE_REGEXP);
          if (!n2)
            return 0;
          switch (n2[1]) {
            case "comment":
              return 1;
            case "string":
              return 2;
            case "regex":
              return 4;
            case "meta.embedded":
              return 8;
          }
          throw new Error("Unexpected match for standard token type!");
        }, e2._NULL_SCOPE_METADATA = new _2("", 0, 0, null), e2.STANDARD_TOKEN_TYPE_REGEXP = /\b(comment|string|regex|meta\.embedded)\b/, e2;
      }(), v2 = function() {
        function e2(e3, t3, n2, r3, i2, s3) {
          if (this._scopeMetadataProvider = new y2(t3, i2, n2), this._onigLib = s3, this._rootId = -1, this._lastRuleId = 0, this._ruleId2desc = [null], this._includedGrammars = {}, this._grammarRepository = i2, this._grammar = C2(e3, null), this._injections = null, this._tokenTypeMatchers = [], r3)
            for (var a3 = 0, c3 = Object.keys(r3); a3 < c3.length; a3++)
              for (var u3 = c3[a3], l3 = 0, h3 = o2.createMatchers(u3, g); l3 < h3.length; l3++) {
                var p3 = h3[l3];
                this._tokenTypeMatchers.push({ matcher: p3.matcher, type: r3[u3] });
              }
        }
        return e2.prototype.dispose = function() {
          for (var e3 = 0, t3 = this._ruleId2desc; e3 < t3.length; e3++) {
            var n2 = t3[e3];
            n2 && n2.dispose();
          }
        }, e2.prototype.createOnigScanner = function(e3) {
          return this._onigLib.createOnigScanner(e3);
        }, e2.prototype.createOnigString = function(e3) {
          return this._onigLib.createOnigString(e3);
        }, e2.prototype.onDidChangeTheme = function() {
          this._scopeMetadataProvider.onDidChangeTheme();
        }, e2.prototype.getMetadataForScope = function(e3) {
          return this._scopeMetadataProvider.getMetadataForScope(e3);
        }, e2.prototype.getInjections = function() {
          var e3 = this;
          if (null === this._injections) {
            this._injections = [];
            var t3 = this._grammar.injections;
            if (t3)
              for (var n2 in t3)
                m2(this._injections, n2, t3[n2], this, this._grammar);
            if (this._grammarRepository) {
              var r3 = this._grammarRepository.injections(this._grammar.scopeName);
              r3 && r3.forEach(function(t4) {
                var n3 = e3.getExternalGrammar(t4);
                if (n3) {
                  var r4 = n3.injectionSelector;
                  r4 && m2(e3._injections, r4, n3, e3, n3);
                }
              });
            }
            this._injections.sort(function(e4, t4) {
              return e4.priority - t4.priority;
            });
          }
          return this._injections;
        }, e2.prototype.registerRule = function(e3) {
          var t3 = ++this._lastRuleId, n2 = e3(t3);
          return this._ruleId2desc[t3] = n2, n2;
        }, e2.prototype.getRule = function(e3) {
          return this._ruleId2desc[e3];
        }, e2.prototype.getExternalGrammar = function(e3, t3) {
          if (this._includedGrammars[e3])
            return this._includedGrammars[e3];
          if (this._grammarRepository) {
            var n2 = this._grammarRepository.lookup(e3);
            if (n2)
              return this._includedGrammars[e3] = C2(n2, t3 && t3.$base), this._includedGrammars[e3];
          }
          return null;
        }, e2.prototype.tokenizeLine = function(e3, t3) {
          var n2 = this._tokenize(e3, t3, false);
          return { tokens: n2.lineTokens.getResult(n2.ruleStack, n2.lineLength), ruleStack: n2.ruleStack };
        }, e2.prototype.tokenizeLine2 = function(e3, t3) {
          var n2 = this._tokenize(e3, t3, true);
          return { tokens: n2.lineTokens.getBinaryResult(n2.ruleStack, n2.lineLength), ruleStack: n2.ruleStack };
        }, e2.prototype._tokenize = function(e3, t3, n2) {
          var r3;
          if (-1 === this._rootId && (this._rootId = i.RuleFactory.getCompiledRuleId(this._grammar.repository.$self, this, this._grammar.repository)), t3 && t3 !== I.NULL)
            r3 = false, t3.reset();
          else {
            r3 = true;
            var o3 = this._scopeMetadataProvider.getDefaultMetadata(), s3 = o3.themeData[0], a3 = P2.set(0, o3.languageId, o3.tokenType, s3.fontStyle, s3.foreground, s3.background), c3 = this.getRule(this._rootId).getName(null, null), u3 = this._scopeMetadataProvider.getMetadataForScope(c3), l3 = x2.mergeMetadata(a3, null, u3), h3 = new x2(null, null === c3 ? "unknown" : c3, l3);
            t3 = new I(null, this._rootId, -1, -1, false, null, h3, h3);
          }
          e3 += "\n";
          var p3 = this.createOnigString(e3), f3 = p3.content.length, d3 = new T(n2, e3, this._tokenTypeMatchers), g2 = S2(this, p3, r3, 0, t3, d3, true);
          return b2(p3), { lineLength: f3, lineTokens: d3, ruleStack: g2 };
        }, e2;
      }();
      function b2(e2) {
        "function" == typeof e2.dispose && e2.dispose();
      }
      function C2(e2, t3) {
        return (e2 = r2.clone(e2)).repository = e2.repository || {}, e2.repository.$self = { $vscodeTextmateLocation: e2.$vscodeTextmateLocation, patterns: e2.patterns, name: e2.scopeName }, e2.repository.$base = t3 || e2.repository.$self, e2;
      }
      function w2(e2, t3, n2, r3, i2, o3, s3) {
        if (0 !== o3.length) {
          for (var a3 = t3.content, c3 = Math.min(o3.length, s3.length), u3 = [], l3 = s3[0].end, h3 = 0; h3 < c3; h3++) {
            var p3 = o3[h3];
            if (null !== p3) {
              var f3 = s3[h3];
              if (0 !== f3.length) {
                if (f3.start > l3)
                  break;
                for (; u3.length > 0 && u3[u3.length - 1].endPos <= f3.start; )
                  i2.produceFromScopes(u3[u3.length - 1].scopes, u3[u3.length - 1].endPos), u3.pop();
                if (u3.length > 0 ? i2.produceFromScopes(u3[u3.length - 1].scopes, f3.start) : i2.produce(r3, f3.start), p3.retokenizeCapturedWithRuleId) {
                  var d3 = p3.getName(a3, s3), g2 = r3.contentNameScopesList.push(e2, d3), m3 = p3.getContentName(a3, s3), _3 = g2.push(e2, m3), y3 = r3.push(p3.retokenizeCapturedWithRuleId, f3.start, -1, false, null, g2, _3), v3 = e2.createOnigString(a3.substring(0, f3.end));
                  S2(e2, v3, n2 && 0 === f3.start, f3.start, y3, i2, false), b2(v3);
                } else {
                  var C3 = p3.getName(a3, s3);
                  if (null !== C3) {
                    var w3 = (u3.length > 0 ? u3[u3.length - 1].scopes : r3.contentNameScopesList).push(e2, C3);
                    u3.push(new A(w3, f3.end));
                  }
                }
              }
            }
          }
          for (; u3.length > 0; )
            i2.produceFromScopes(u3[u3.length - 1].scopes, u3[u3.length - 1].endPos), u3.pop();
        }
      }
      function k2(e2) {
        for (var t3 = [], n2 = 0, r3 = e2.rules.length; n2 < r3; n2++)
          t3.push("   - " + e2.rules[n2] + ": " + e2.debugRegExps[n2]);
        return t3.join("\n");
      }
      function R2(e2, t3, n2, r3, i2, o3) {
        var c3 = function(e3, t4, n3, r4, i3, o4) {
          var c4 = i3.getRule(e3), u4 = c4.compile(e3, i3.endRule, n3, r4 === o4), l4 = 0;
          s2.DebugFlags.InDebugMode && (l4 = a2());
          var h4 = u4.scanner.findNextMatchSync(t4, r4);
          if (s2.DebugFlags.InDebugMode) {
            var p4 = a2() - l4;
            p4 > 5 && console.warn("Rule " + c4.debugName + " (" + c4.id + ") matching took " + p4 + " against '" + t4 + "'"), h4 && console.log("matched rule id: " + u4.rules[h4.index] + " from " + h4.captureIndices[0].start + " to " + h4.captureIndices[0].end);
          }
          return h4 ? { captureIndices: h4.captureIndices, matchedRuleId: u4.rules[h4.index] } : null;
        }(e2, t3, n2, r3, i2, o3), u3 = e2.getInjections();
        if (0 === u3.length)
          return c3;
        var l3 = function(e3, t4, n3, r4, i3, o4, a3) {
          for (var c4, u4 = Number.MAX_VALUE, l4 = null, h4 = 0, p4 = o4.contentNameScopesList.generateScopes(), f3 = 0, d3 = e3.length; f3 < d3; f3++) {
            var g2 = e3[f3];
            if (g2.matcher(p4)) {
              var m3 = t4.getRule(g2.ruleId).compile(t4, null, r4, i3 === a3), _3 = m3.scanner.findNextMatchSync(n3, i3);
              if (s2.DebugFlags.InDebugMode && (console.log("  scanning for injections"), console.log(k2(m3))), _3) {
                var y3 = _3.captureIndices[0].start;
                if (!(y3 >= u4) && (u4 = y3, l4 = _3.captureIndices, c4 = m3.rules[_3.index], h4 = g2.priority, u4 === i3))
                  break;
              }
            }
          }
          return l4 ? { priorityMatch: -1 === h4, captureIndices: l4, matchedRuleId: c4 } : null;
        }(u3, e2, t3, n2, r3, i2, o3);
        if (!l3)
          return c3;
        if (!c3)
          return l3;
        var h3 = c3.captureIndices[0].start, p3 = l3.captureIndices[0].start;
        return p3 < h3 || l3.priorityMatch && p3 === h3 ? l3 : c3;
      }
      function S2(e2, t3, n2, r3, o3, a3, c3) {
        var u3 = t3.content.length, l3 = false, h3 = -1;
        if (c3) {
          var p3 = function(e3, t4, n3, r4, o4, a4) {
            for (var c4 = o4.beginRuleCapturedEOL ? 0 : -1, u4 = [], l4 = o4; l4; l4 = l4.pop()) {
              var h4 = l4.getRule(e3);
              h4 instanceof i.BeginWhileRule && u4.push({ rule: h4, stack: l4 });
            }
            for (var p4 = u4.pop(); p4; p4 = u4.pop()) {
              var f4 = p4.rule.compileWhile(e3, p4.stack.endRule, n3, c4 === r4), d3 = f4.scanner.findNextMatchSync(t4, r4);
              if (s2.DebugFlags.InDebugMode && (console.log("  scanning for while rule"), console.log(k2(f4))), !d3) {
                s2.DebugFlags.InDebugMode && console.log("  popping " + p4.rule.debugName + " - " + p4.rule.debugWhileRegExp), o4 = p4.stack.pop();
                break;
              }
              if (-2 !== f4.rules[d3.index]) {
                o4 = p4.stack.pop();
                break;
              }
              d3.captureIndices && d3.captureIndices.length && (a4.produce(p4.stack, d3.captureIndices[0].start), w2(e3, t4, n3, p4.stack, a4, p4.rule.whileCaptures, d3.captureIndices), a4.produce(p4.stack, d3.captureIndices[0].end), c4 = d3.captureIndices[0].end, d3.captureIndices[0].end > r4 && (r4 = d3.captureIndices[0].end, n3 = false));
            }
            return { stack: o4, linePos: r4, anchorPosition: c4, isFirstLine: n3 };
          }(e2, t3, n2, r3, o3, a3);
          o3 = p3.stack, r3 = p3.linePos, n2 = p3.isFirstLine, h3 = p3.anchorPosition;
        }
        for (; !l3; )
          f3();
        function f3() {
          s2.DebugFlags.InDebugMode && (console.log(""), console.log("@@scanNext " + r3 + ": |" + t3.content.substr(r3).replace(/\n$/, "\\n") + "|"));
          var c4 = R2(e2, t3, n2, r3, o3, h3);
          if (!c4)
            return s2.DebugFlags.InDebugMode && console.log("  no more matches."), a3.produce(o3, u3), void (l3 = true);
          var p4 = c4.captureIndices, f4 = c4.matchedRuleId, d3 = !!(p4 && p4.length > 0) && p4[0].end > r3;
          if (-1 === f4) {
            var g2 = o3.getRule(e2);
            s2.DebugFlags.InDebugMode && console.log("  popping " + g2.debugName + " - " + g2.debugEndRegExp), a3.produce(o3, p4[0].start), o3 = o3.setContentNameScopesList(o3.nameScopesList), w2(e2, t3, n2, o3, a3, g2.endCaptures, p4), a3.produce(o3, p4[0].end);
            var m3 = o3;
            if (o3 = o3.pop(), h3 = m3.getAnchorPos(), !d3 && m3.getEnterPos() === r3)
              return s2.DebugFlags.InDebugMode && console.error("[1] - Grammar is in an endless loop - Grammar pushed & popped a rule without advancing"), o3 = m3, a3.produce(o3, u3), void (l3 = true);
          } else {
            var _3 = e2.getRule(f4);
            a3.produce(o3, p4[0].start);
            var y3 = o3, v3 = _3.getName(t3.content, p4), b3 = o3.contentNameScopesList.push(e2, v3);
            if (o3 = o3.push(f4, r3, h3, p4[0].end === u3, null, b3, b3), _3 instanceof i.BeginEndRule) {
              var C3 = _3;
              s2.DebugFlags.InDebugMode && console.log("  pushing " + C3.debugName + " - " + C3.debugBeginRegExp), w2(e2, t3, n2, o3, a3, C3.beginCaptures, p4), a3.produce(o3, p4[0].end), h3 = p4[0].end;
              var k3 = C3.getContentName(t3.content, p4), S3 = b3.push(e2, k3);
              if (o3 = o3.setContentNameScopesList(S3), C3.endHasBackReferences && (o3 = o3.setEndRule(C3.getEndWithResolvedBackReferences(t3.content, p4))), !d3 && y3.hasSameRuleAs(o3))
                return s2.DebugFlags.InDebugMode && console.error("[2] - Grammar is in an endless loop - Grammar pushed the same rule without advancing"), o3 = o3.pop(), a3.produce(o3, u3), void (l3 = true);
            } else if (_3 instanceof i.BeginWhileRule) {
              C3 = _3;
              s2.DebugFlags.InDebugMode && console.log("  pushing " + C3.debugName), w2(e2, t3, n2, o3, a3, C3.beginCaptures, p4), a3.produce(o3, p4[0].end), h3 = p4[0].end;
              k3 = C3.getContentName(t3.content, p4), S3 = b3.push(e2, k3);
              if (o3 = o3.setContentNameScopesList(S3), C3.whileHasBackReferences && (o3 = o3.setEndRule(C3.getWhileWithResolvedBackReferences(t3.content, p4))), !d3 && y3.hasSameRuleAs(o3))
                return s2.DebugFlags.InDebugMode && console.error("[3] - Grammar is in an endless loop - Grammar pushed the same rule without advancing"), o3 = o3.pop(), a3.produce(o3, u3), void (l3 = true);
            } else {
              var P3 = _3;
              if (s2.DebugFlags.InDebugMode && console.log("  matched " + P3.debugName + " - " + P3.debugMatchRegExp), w2(e2, t3, n2, o3, a3, P3.captures, p4), a3.produce(o3, p4[0].end), o3 = o3.pop(), !d3)
                return s2.DebugFlags.InDebugMode && console.error("[4] - Grammar is in an endless loop - Grammar is not advancing, nor is it pushing/popping"), o3 = o3.safePop(), a3.produce(o3, u3), void (l3 = true);
            }
          }
          p4[0].end > r3 && (r3 = p4[0].end, n2 = false);
        }
        return o3;
      }
      t2.Grammar = v2;
      var P2 = function() {
        function e2() {
        }
        return e2.toBinaryStr = function(e3) {
          for (var t3 = e3.toString(2); t3.length < 32; )
            t3 = "0" + t3;
          return t3;
        }, e2.printMetadata = function(t3) {
          var n2 = e2.getLanguageId(t3), r3 = e2.getTokenType(t3), i2 = e2.getFontStyle(t3), o3 = e2.getForeground(t3), s3 = e2.getBackground(t3);
          console.log({ languageId: n2, tokenType: r3, fontStyle: i2, foreground: o3, background: s3 });
        }, e2.getLanguageId = function(e3) {
          return (255 & e3) >>> 0;
        }, e2.getTokenType = function(e3) {
          return (1792 & e3) >>> 8;
        }, e2.getFontStyle = function(e3) {
          return (14336 & e3) >>> 11;
        }, e2.getForeground = function(e3) {
          return (8372224 & e3) >>> 14;
        }, e2.getBackground = function(e3) {
          return (4286578688 & e3) >>> 23;
        }, e2.set = function(t3, n2, r3, i2, o3, s3) {
          var a3 = e2.getLanguageId(t3), c3 = e2.getTokenType(t3), u3 = e2.getFontStyle(t3), l3 = e2.getForeground(t3), h3 = e2.getBackground(t3);
          return 0 !== n2 && (a3 = n2), 0 !== r3 && (c3 = 8 === r3 ? 0 : r3), -1 !== i2 && (u3 = i2), 0 !== o3 && (l3 = o3), 0 !== s3 && (h3 = s3), (a3 << 0 | c3 << 8 | u3 << 11 | l3 << 14 | h3 << 23) >>> 0;
        }, e2;
      }();
      t2.StackElementMetadata = P2;
      var x2 = function() {
        function e2(e3, t3, n2) {
          this.parent = e3, this.scope = t3, this.metadata = n2;
        }
        return e2._equals = function(e3, t3) {
          for (; ; ) {
            if (e3 === t3)
              return true;
            if (!e3 && !t3)
              return true;
            if (!e3 || !t3)
              return false;
            if (e3.scope !== t3.scope || e3.metadata !== t3.metadata)
              return false;
            e3 = e3.parent, t3 = t3.parent;
          }
        }, e2.prototype.equals = function(t3) {
          return e2._equals(this, t3);
        }, e2._matchesScope = function(e3, t3, n2) {
          return t3 === e3 || e3.substring(0, n2.length) === n2;
        }, e2._matches = function(e3, t3) {
          if (null === t3)
            return true;
          for (var n2 = t3.length, r3 = 0, i2 = t3[r3], o3 = i2 + "."; e3; ) {
            if (this._matchesScope(e3.scope, i2, o3)) {
              if (++r3 === n2)
                return true;
              o3 = (i2 = t3[r3]) + ".";
            }
            e3 = e3.parent;
          }
          return false;
        }, e2.mergeMetadata = function(e3, t3, n2) {
          if (null === n2)
            return e3;
          var r3 = -1, i2 = 0, o3 = 0;
          if (null !== n2.themeData)
            for (var s3 = 0, a3 = n2.themeData.length; s3 < a3; s3++) {
              var c3 = n2.themeData[s3];
              if (this._matches(t3, c3.parentScopes)) {
                r3 = c3.fontStyle, i2 = c3.foreground, o3 = c3.background;
                break;
              }
            }
          return P2.set(e3, n2.languageId, n2.tokenType, r3, i2, o3);
        }, e2._push = function(t3, n2, r3) {
          for (var i2 = 0, o3 = r3.length; i2 < o3; i2++) {
            var s3 = r3[i2], a3 = n2.getMetadataForScope(s3), c3 = e2.mergeMetadata(t3.metadata, t3, a3);
            t3 = new e2(t3, s3, c3);
          }
          return t3;
        }, e2.prototype.push = function(t3, n2) {
          return null === n2 ? this : n2.indexOf(" ") >= 0 ? e2._push(this, t3, n2.split(/ /g)) : e2._push(this, t3, [n2]);
        }, e2._generateScopes = function(e3) {
          for (var t3 = [], n2 = 0; e3; )
            t3[n2++] = e3.scope, e3 = e3.parent;
          return t3.reverse(), t3;
        }, e2.prototype.generateScopes = function() {
          return e2._generateScopes(this);
        }, e2;
      }();
      t2.ScopeListElement = x2;
      var I = function() {
        function e2(e3, t3, n2, r3, i2, o3, s3, a3) {
          this.parent = e3, this.depth = this.parent ? this.parent.depth + 1 : 1, this.ruleId = t3, this._enterPos = n2, this._anchorPos = r3, this.beginRuleCapturedEOL = i2, this.endRule = o3, this.nameScopesList = s3, this.contentNameScopesList = a3;
        }
        return e2._structuralEquals = function(e3, t3) {
          for (; ; ) {
            if (e3 === t3)
              return true;
            if (!e3 && !t3)
              return true;
            if (!e3 || !t3)
              return false;
            if (e3.depth !== t3.depth || e3.ruleId !== t3.ruleId || e3.endRule !== t3.endRule)
              return false;
            e3 = e3.parent, t3 = t3.parent;
          }
        }, e2._equals = function(e3, t3) {
          return e3 === t3 || !!this._structuralEquals(e3, t3) && e3.contentNameScopesList.equals(t3.contentNameScopesList);
        }, e2.prototype.clone = function() {
          return this;
        }, e2.prototype.equals = function(t3) {
          return null !== t3 && e2._equals(this, t3);
        }, e2._reset = function(e3) {
          for (; e3; )
            e3._enterPos = -1, e3._anchorPos = -1, e3 = e3.parent;
        }, e2.prototype.reset = function() {
          e2._reset(this);
        }, e2.prototype.pop = function() {
          return this.parent;
        }, e2.prototype.safePop = function() {
          return this.parent ? this.parent : this;
        }, e2.prototype.push = function(t3, n2, r3, i2, o3, s3, a3) {
          return new e2(this, t3, n2, r3, i2, o3, s3, a3);
        }, e2.prototype.getEnterPos = function() {
          return this._enterPos;
        }, e2.prototype.getAnchorPos = function() {
          return this._anchorPos;
        }, e2.prototype.getRule = function(e3) {
          return e3.getRule(this.ruleId);
        }, e2.prototype._writeString = function(e3, t3) {
          return this.parent && (t3 = this.parent._writeString(e3, t3)), e3[t3++] = "(" + this.ruleId + ", TODO-" + this.nameScopesList + ", TODO-" + this.contentNameScopesList + ")", t3;
        }, e2.prototype.toString = function() {
          var e3 = [];
          return this._writeString(e3, 0), "[" + e3.join(",") + "]";
        }, e2.prototype.setContentNameScopesList = function(e3) {
          return this.contentNameScopesList === e3 ? this : this.parent.push(this.ruleId, this._enterPos, this._anchorPos, this.beginRuleCapturedEOL, this.endRule, this.nameScopesList, e3);
        }, e2.prototype.setEndRule = function(t3) {
          return this.endRule === t3 ? this : new e2(this.parent, this.ruleId, this._enterPos, this._anchorPos, this.beginRuleCapturedEOL, t3, this.nameScopesList, this.contentNameScopesList);
        }, e2.prototype.hasSameRuleAs = function(e3) {
          return this.ruleId === e3.ruleId;
        }, e2.NULL = new e2(null, 0, 0, 0, false, null, null, null), e2;
      }();
      t2.StackElement = I;
      var A = function(e2, t3) {
        this.scopes = e2, this.endPos = t3;
      };
      t2.LocalStackElement = A;
      var T = function() {
        function e2(e3, t3, n2) {
          this._emitBinaryTokens = e3, this._tokenTypeOverrides = n2, s2.DebugFlags.InDebugMode ? this._lineText = t3 : this._lineText = null, this._tokens = [], this._binaryTokens = [], this._lastTokenEndIndex = 0;
        }
        return e2.prototype.produce = function(e3, t3) {
          this.produceFromScopes(e3.contentNameScopesList, t3);
        }, e2.prototype.produceFromScopes = function(e3, t3) {
          if (!(this._lastTokenEndIndex >= t3)) {
            if (this._emitBinaryTokens) {
              for (var n2 = e3.metadata, r3 = 0, i2 = this._tokenTypeOverrides; r3 < i2.length; r3++) {
                var o3 = i2[r3];
                o3.matcher(e3.generateScopes()) && (n2 = P2.set(n2, 0, L2(o3.type), -1, 0, 0));
              }
              return this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 1] === n2 || (this._binaryTokens.push(this._lastTokenEndIndex), this._binaryTokens.push(n2)), void (this._lastTokenEndIndex = t3);
            }
            var a3 = e3.generateScopes();
            if (s2.DebugFlags.InDebugMode) {
              console.log("  token: |" + this._lineText.substring(this._lastTokenEndIndex, t3).replace(/\n$/, "\\n") + "|");
              for (var c3 = 0; c3 < a3.length; c3++)
                console.log("      * " + a3[c3]);
            }
            this._tokens.push({ startIndex: this._lastTokenEndIndex, endIndex: t3, scopes: a3 }), this._lastTokenEndIndex = t3;
          }
        }, e2.prototype.getResult = function(e3, t3) {
          return this._tokens.length > 0 && this._tokens[this._tokens.length - 1].startIndex === t3 - 1 && this._tokens.pop(), 0 === this._tokens.length && (this._lastTokenEndIndex = -1, this.produce(e3, t3), this._tokens[this._tokens.length - 1].startIndex = 0), this._tokens;
        }, e2.prototype.getBinaryResult = function(e3, t3) {
          this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 2] === t3 - 1 && (this._binaryTokens.pop(), this._binaryTokens.pop()), 0 === this._binaryTokens.length && (this._lastTokenEndIndex = -1, this.produce(e3, t3), this._binaryTokens[this._binaryTokens.length - 2] = 0);
          for (var n2 = new Uint32Array(this._binaryTokens.length), r3 = 0, i2 = this._binaryTokens.length; r3 < i2; r3++)
            n2[r3] = this._binaryTokens[r3];
          return n2;
        }, e2;
      }();
      function L2(e2) {
        switch (e2) {
          case 4:
            return 4;
          case 2:
            return 2;
          case 1:
            return 1;
          case 0:
          default:
            return 8;
        }
      }
    }, function(e, t2, n) {
      function r2(e2) {
        return Array.isArray(e2) ? function(e3) {
          for (var t3 = [], n2 = 0, i2 = e3.length; n2 < i2; n2++)
            t3[n2] = r2(e3[n2]);
          return t3;
        }(e2) : "object" == typeof e2 ? function(e3) {
          var t3 = {};
          for (var n2 in e3)
            t3[n2] = r2(e3[n2]);
          return t3;
        }(e2) : e2;
      }
      Object.defineProperty(t2, "__esModule", { value: true }), t2.clone = function(e2) {
        return r2(e2);
      }, t2.mergeObjects = function(e2) {
        for (var t3 = [], n2 = 1; n2 < arguments.length; n2++)
          t3[n2 - 1] = arguments[n2];
        return t3.forEach(function(t4) {
          for (var n3 in t4)
            e2[n3] = t4[n3];
        }), e2;
      }, t2.basename = function e2(t3) {
        var n2 = ~t3.lastIndexOf("/") || ~t3.lastIndexOf("\\");
        return 0 === n2 ? t3 : ~n2 == t3.length - 1 ? e2(t3.substring(0, t3.length - 1)) : t3.substr(1 + ~n2);
      };
      var i = /\$(\d+)|\${(\d+):\/(downcase|upcase)}/, o2 = function() {
        function e2() {
        }
        return e2.hasCaptures = function(e3) {
          return null !== e3 && i.test(e3);
        }, e2.replaceCaptures = function(e3, t3, n2) {
          return e3.replace(i, function(e4, r3, i2, o3) {
            var s2 = n2[parseInt(r3 || i2, 10)];
            if (!s2)
              return e4;
            for (var a2 = t3.substring(s2.start, s2.end); "." === a2[0]; )
              a2 = a2.substring(1);
            switch (o3) {
              case "downcase":
                return a2.toLowerCase();
              case "upcase":
                return a2.toUpperCase();
              default:
                return a2;
            }
          });
        }, e2;
      }();
      t2.RegexSource = o2;
    }, function(e, t2, n) {
      (function(e2) {
        Object.defineProperty(t2, "__esModule", { value: true }), t2.DebugFlags = { InDebugMode: void 0 !== e2 && !!e2.env.VSCODE_TEXTMATE_DEBUG };
      }).call(this, n(7));
    }, function(e, t2, n) {
      var r2 = this && this.__awaiter || function(e2, t3, n2, r3) {
        return new (n2 || (n2 = Promise))(function(i2, o3) {
          function s3(e3) {
            try {
              c3(r3.next(e3));
            } catch (e4) {
              o3(e4);
            }
          }
          function a3(e3) {
            try {
              c3(r3.throw(e3));
            } catch (e4) {
              o3(e4);
            }
          }
          function c3(e3) {
            var t4;
            e3.done ? i2(e3.value) : (t4 = e3.value, t4 instanceof n2 ? t4 : new n2(function(e4) {
              e4(t4);
            })).then(s3, a3);
          }
          c3((r3 = r3.apply(e2, t3 || [])).next());
        });
      }, i = this && this.__generator || function(e2, t3) {
        var n2, r3, i2, o3, s3 = { label: 0, sent: function() {
          if (1 & i2[0])
            throw i2[1];
          return i2[1];
        }, trys: [], ops: [] };
        return o3 = { next: a3(0), throw: a3(1), return: a3(2) }, "function" == typeof Symbol && (o3[Symbol.iterator] = function() {
          return this;
        }), o3;
        function a3(o4) {
          return function(a4) {
            return function(o5) {
              if (n2)
                throw new TypeError("Generator is already executing.");
              for (; s3; )
                try {
                  if (n2 = 1, r3 && (i2 = 2 & o5[0] ? r3.return : o5[0] ? r3.throw || ((i2 = r3.return) && i2.call(r3), 0) : r3.next) && !(i2 = i2.call(r3, o5[1])).done)
                    return i2;
                  switch (r3 = 0, i2 && (o5 = [2 & o5[0], i2.value]), o5[0]) {
                    case 0:
                    case 1:
                      i2 = o5;
                      break;
                    case 4:
                      return s3.label++, { value: o5[1], done: false };
                    case 5:
                      s3.label++, r3 = o5[1], o5 = [0];
                      continue;
                    case 7:
                      o5 = s3.ops.pop(), s3.trys.pop();
                      continue;
                    default:
                      if (!(i2 = s3.trys, (i2 = i2.length > 0 && i2[i2.length - 1]) || 6 !== o5[0] && 2 !== o5[0])) {
                        s3 = 0;
                        continue;
                      }
                      if (3 === o5[0] && (!i2 || o5[1] > i2[0] && o5[1] < i2[3])) {
                        s3.label = o5[1];
                        break;
                      }
                      if (6 === o5[0] && s3.label < i2[1]) {
                        s3.label = i2[1], i2 = o5;
                        break;
                      }
                      if (i2 && s3.label < i2[2]) {
                        s3.label = i2[2], s3.ops.push(o5);
                        break;
                      }
                      i2[2] && s3.ops.pop(), s3.trys.pop();
                      continue;
                  }
                  o5 = t3.call(e2, s3);
                } catch (e3) {
                  o5 = [6, e3], r3 = 0;
                } finally {
                  n2 = i2 = 0;
                }
              if (5 & o5[0])
                throw o5[1];
              return { value: o5[0] ? o5[1] : void 0, done: true };
            }([o4, a4]);
          };
        }
      };
      Object.defineProperty(t2, "__esModule", { value: true });
      var o2 = n(4), s2 = n(8), a2 = n(11), c2 = n(0), u2 = function() {
        function e2(e3) {
          this._options = e3, this._syncRegistry = new o2.SyncRegistry(a2.Theme.createFromRawTheme(e3.theme, e3.colorMap), e3.onigLib), this._ensureGrammarCache = /* @__PURE__ */ new Map();
        }
        return e2.prototype.dispose = function() {
          this._syncRegistry.dispose();
        }, e2.prototype.setTheme = function(e3, t3) {
          this._syncRegistry.setTheme(a2.Theme.createFromRawTheme(e3, t3));
        }, e2.prototype.getColorMap = function() {
          return this._syncRegistry.getColorMap();
        }, e2.prototype.loadGrammarWithEmbeddedLanguages = function(e3, t3, n2) {
          return this.loadGrammarWithConfiguration(e3, t3, { embeddedLanguages: n2 });
        }, e2.prototype.loadGrammarWithConfiguration = function(e3, t3, n2) {
          return this._loadGrammar(e3, t3, n2.embeddedLanguages, n2.tokenTypes);
        }, e2.prototype.loadGrammar = function(e3) {
          return this._loadGrammar(e3, 0, null, null);
        }, e2.prototype._doLoadSingleGrammar = function(e3) {
          return r2(this, void 0, void 0, function() {
            var t3, n2;
            return i(this, function(r3) {
              switch (r3.label) {
                case 0:
                  return [4, this._options.loadGrammar(e3)];
                case 1:
                  return (t3 = r3.sent()) && (n2 = "function" == typeof this._options.getInjections ? this._options.getInjections(e3) : void 0, this._syncRegistry.addGrammar(t3, n2)), [2];
              }
            });
          });
        }, e2.prototype._loadSingleGrammar = function(e3) {
          return r2(this, void 0, void 0, function() {
            return i(this, function(t3) {
              return this._ensureGrammarCache.has(e3) || this._ensureGrammarCache.set(e3, this._doLoadSingleGrammar(e3)), [2, this._ensureGrammarCache.get(e3)];
            });
          });
        }, e2.prototype._collectDependenciesForDep = function(e3, t3, n2) {
          var r3 = this._syncRegistry.lookup(n2.scopeName);
          if (r3) {
            n2 instanceof c2.FullScopeDependency ? c2.collectDependencies(t3, this._syncRegistry.lookup(e3), r3) : c2.collectSpecificDependencies(t3, this._syncRegistry.lookup(e3), r3, n2.include);
            var i2 = this._syncRegistry.injections(n2.scopeName);
            if (i2)
              for (var o3 = 0, s3 = i2; o3 < s3.length; o3++) {
                var a3 = s3[o3];
                t3.add(new c2.FullScopeDependency(a3));
              }
          } else if (n2.scopeName === e3)
            throw new Error("No grammar provided for <" + e3 + ">");
        }, e2.prototype._loadGrammar = function(e3, t3, n2, o3) {
          return r2(this, void 0, void 0, function() {
            var r3, s3, a3, u3, l2, h2, p2, f2, d2, g, m2, _2, y2 = this;
            return i(this, function(i2) {
              switch (i2.label) {
                case 0:
                  r3 = /* @__PURE__ */ new Set(), s3 = /* @__PURE__ */ new Set(), r3.add(e3), a3 = [new c2.FullScopeDependency(e3)], i2.label = 1;
                case 1:
                  return a3.length > 0 ? (u3 = a3, a3 = [], [4, Promise.all(u3.map(function(e4) {
                    return y2._loadSingleGrammar(e4.scopeName);
                  }))]) : [3, 3];
                case 2:
                  for (i2.sent(), l2 = new c2.ScopeDependencyCollector(), h2 = 0, p2 = u3; h2 < p2.length; h2++)
                    _2 = p2[h2], this._collectDependenciesForDep(e3, l2, _2);
                  for (f2 = 0, d2 = l2.full; f2 < d2.length; f2++)
                    _2 = d2[f2], r3.has(_2.scopeName) || (r3.add(_2.scopeName), a3.push(_2));
                  for (g = 0, m2 = l2.partial; g < m2.length; g++)
                    _2 = m2[g], r3.has(_2.scopeName) || s3.has(_2.toKey()) || (s3.add(_2.toKey()), a3.push(_2));
                  return [3, 1];
                case 3:
                  return [2, this.grammarForScopeName(e3, t3, n2, o3)];
              }
            });
          });
        }, e2.prototype.addGrammar = function(e3, t3, n2, o3) {
          return void 0 === t3 && (t3 = []), void 0 === n2 && (n2 = 0), void 0 === o3 && (o3 = null), r2(this, void 0, void 0, function() {
            return i(this, function(r3) {
              switch (r3.label) {
                case 0:
                  return this._syncRegistry.addGrammar(e3, t3), [4, this.grammarForScopeName(e3.scopeName, n2, o3)];
                case 1:
                  return [2, r3.sent()];
              }
            });
          });
        }, e2.prototype.grammarForScopeName = function(e3, t3, n2, r3) {
          return void 0 === t3 && (t3 = 0), void 0 === n2 && (n2 = null), void 0 === r3 && (r3 = null), this._syncRegistry.grammarForScopeName(e3, t3, n2, r3);
        }, e2;
      }();
      t2.Registry = u2, t2.INITIAL = c2.StackElement.NULL, t2.parseRawGrammar = s2.parseRawGrammar;
    }, function(e, t2, n) {
      var r2 = this && this.__awaiter || function(e2, t3, n2, r3) {
        return new (n2 || (n2 = Promise))(function(i2, o3) {
          function s3(e3) {
            try {
              c2(r3.next(e3));
            } catch (e4) {
              o3(e4);
            }
          }
          function a2(e3) {
            try {
              c2(r3.throw(e3));
            } catch (e4) {
              o3(e4);
            }
          }
          function c2(e3) {
            var t4;
            e3.done ? i2(e3.value) : (t4 = e3.value, t4 instanceof n2 ? t4 : new n2(function(e4) {
              e4(t4);
            })).then(s3, a2);
          }
          c2((r3 = r3.apply(e2, t3 || [])).next());
        });
      }, i = this && this.__generator || function(e2, t3) {
        var n2, r3, i2, o3, s3 = { label: 0, sent: function() {
          if (1 & i2[0])
            throw i2[1];
          return i2[1];
        }, trys: [], ops: [] };
        return o3 = { next: a2(0), throw: a2(1), return: a2(2) }, "function" == typeof Symbol && (o3[Symbol.iterator] = function() {
          return this;
        }), o3;
        function a2(o4) {
          return function(a3) {
            return function(o5) {
              if (n2)
                throw new TypeError("Generator is already executing.");
              for (; s3; )
                try {
                  if (n2 = 1, r3 && (i2 = 2 & o5[0] ? r3.return : o5[0] ? r3.throw || ((i2 = r3.return) && i2.call(r3), 0) : r3.next) && !(i2 = i2.call(r3, o5[1])).done)
                    return i2;
                  switch (r3 = 0, i2 && (o5 = [2 & o5[0], i2.value]), o5[0]) {
                    case 0:
                    case 1:
                      i2 = o5;
                      break;
                    case 4:
                      return s3.label++, { value: o5[1], done: false };
                    case 5:
                      s3.label++, r3 = o5[1], o5 = [0];
                      continue;
                    case 7:
                      o5 = s3.ops.pop(), s3.trys.pop();
                      continue;
                    default:
                      if (!(i2 = s3.trys, (i2 = i2.length > 0 && i2[i2.length - 1]) || 6 !== o5[0] && 2 !== o5[0])) {
                        s3 = 0;
                        continue;
                      }
                      if (3 === o5[0] && (!i2 || o5[1] > i2[0] && o5[1] < i2[3])) {
                        s3.label = o5[1];
                        break;
                      }
                      if (6 === o5[0] && s3.label < i2[1]) {
                        s3.label = i2[1], i2 = o5;
                        break;
                      }
                      if (i2 && s3.label < i2[2]) {
                        s3.label = i2[2], s3.ops.push(o5);
                        break;
                      }
                      i2[2] && s3.ops.pop(), s3.trys.pop();
                      continue;
                  }
                  o5 = t3.call(e2, s3);
                } catch (e3) {
                  o5 = [6, e3], r3 = 0;
                } finally {
                  n2 = i2 = 0;
                }
              if (5 & o5[0])
                throw o5[1];
              return { value: o5[0] ? o5[1] : void 0, done: true };
            }([o4, a3]);
          };
        }
      };
      Object.defineProperty(t2, "__esModule", { value: true });
      var o2 = n(0), s2 = function() {
        function e2(e3, t3) {
          this._theme = e3, this._grammars = {}, this._rawGrammars = {}, this._injectionGrammars = {}, this._onigLibPromise = t3;
        }
        return e2.prototype.dispose = function() {
          for (var e3 in this._grammars)
            this._grammars.hasOwnProperty(e3) && this._grammars[e3].dispose();
        }, e2.prototype.setTheme = function(e3) {
          var t3 = this;
          this._theme = e3, Object.keys(this._grammars).forEach(function(e4) {
            t3._grammars[e4].onDidChangeTheme();
          });
        }, e2.prototype.getColorMap = function() {
          return this._theme.getColorMap();
        }, e2.prototype.addGrammar = function(e3, t3) {
          this._rawGrammars[e3.scopeName] = e3, t3 && (this._injectionGrammars[e3.scopeName] = t3);
        }, e2.prototype.lookup = function(e3) {
          return this._rawGrammars[e3];
        }, e2.prototype.injections = function(e3) {
          return this._injectionGrammars[e3];
        }, e2.prototype.getDefaults = function() {
          return this._theme.getDefaults();
        }, e2.prototype.themeMatch = function(e3) {
          return this._theme.match(e3);
        }, e2.prototype.grammarForScopeName = function(e3, t3, n2, s3) {
          return r2(this, void 0, void 0, function() {
            var r3, a2, c2, u2, l2;
            return i(this, function(i2) {
              switch (i2.label) {
                case 0:
                  return this._grammars[e3] ? [3, 2] : (r3 = this._rawGrammars[e3]) ? (a2 = this._grammars, c2 = e3, u2 = o2.createGrammar, l2 = [r3, t3, n2, s3, this], [4, this._onigLibPromise]) : [2, null];
                case 1:
                  a2[c2] = u2.apply(void 0, l2.concat([i2.sent()])), i2.label = 2;
                case 2:
                  return [2, this._grammars[e3]];
              }
            });
          });
        }, e2;
      }();
      t2.SyncRegistry = s2;
    }, function(e, t2, n) {
      var r2, i = this && this.__extends || (r2 = function(e2, t3) {
        return (r2 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(e3, t4) {
          e3.__proto__ = t4;
        } || function(e3, t4) {
          for (var n2 in t4)
            t4.hasOwnProperty(n2) && (e3[n2] = t4[n2]);
        })(e2, t3);
      }, function(e2, t3) {
        function n2() {
          this.constructor = e2;
        }
        r2(e2, t3), e2.prototype = null === t3 ? Object.create(t3) : (n2.prototype = t3.prototype, new n2());
      });
      Object.defineProperty(t2, "__esModule", { value: true });
      var o2 = n(1), s2 = /\\(\d+)/, a2 = /\\(\d+)/g, c2 = function() {
        function e2(e3, t3, n2) {
          this.debugRegExps = t3, this.rules = n2, this.scanner = e3.createOnigScanner(t3);
        }
        return e2.prototype.dispose = function() {
          "function" == typeof this.scanner.dispose && this.scanner.dispose();
        }, e2;
      }();
      t2.CompiledRule = c2;
      var u2 = function() {
        function e2(e3, t3, n2, r3) {
          this.$location = e3, this.id = t3, this._name = n2 || null, this._nameIsCapturing = o2.RegexSource.hasCaptures(this._name), this._contentName = r3 || null, this._contentNameIsCapturing = o2.RegexSource.hasCaptures(this._contentName);
        }
        return Object.defineProperty(e2.prototype, "debugName", { get: function() {
          var e3 = this.$location ? o2.basename(this.$location.filename) + ":" + this.$location.line : "unknown";
          return this.constructor.name + "#" + this.id + " @ " + e3;
        }, enumerable: true, configurable: true }), e2.prototype.getName = function(e3, t3) {
          return this._nameIsCapturing && null !== this._name && null !== e3 && null !== t3 ? o2.RegexSource.replaceCaptures(this._name, e3, t3) : this._name;
        }, e2.prototype.getContentName = function(e3, t3) {
          return this._contentNameIsCapturing && null !== this._contentName ? o2.RegexSource.replaceCaptures(this._contentName, e3, t3) : this._contentName;
        }, e2;
      }();
      t2.Rule = u2;
      var l2 = function(e2) {
        function t3(t4, n2, r3, i2, o3) {
          var s3 = e2.call(this, t4, n2, r3, i2) || this;
          return s3.retokenizeCapturedWithRuleId = o3, s3;
        }
        return i(t3, e2), t3.prototype.dispose = function() {
        }, t3.prototype.collectPatternsRecursive = function(e3, t4, n2) {
          throw new Error("Not supported!");
        }, t3.prototype.compile = function(e3, t4, n2, r3) {
          throw new Error("Not supported!");
        }, t3;
      }(u2);
      t2.CaptureRule = l2;
      var h2 = function() {
        function e2(e3, t3, n2) {
          if (void 0 === n2 && (n2 = true), n2)
            if (e3) {
              for (var r3 = e3.length, i2 = 0, o3 = [], a3 = false, c3 = 0; c3 < r3; c3++) {
                if ("\\" === e3.charAt(c3) && c3 + 1 < r3) {
                  var u3 = e3.charAt(c3 + 1);
                  "z" === u3 ? (o3.push(e3.substring(i2, c3)), o3.push("$(?!\\n)(?<!\\n)"), i2 = c3 + 2) : "A" !== u3 && "G" !== u3 || (a3 = true), c3++;
                }
              }
              this.hasAnchor = a3, 0 === i2 ? this.source = e3 : (o3.push(e3.substring(i2, r3)), this.source = o3.join(""));
            } else
              this.hasAnchor = false, this.source = e3;
          else
            this.hasAnchor = false, this.source = e3;
          this.hasAnchor ? this._anchorCache = this._buildAnchorCache() : this._anchorCache = null, this.ruleId = t3, this.hasBackReferences = s2.test(this.source);
        }
        return e2.prototype.clone = function() {
          return new e2(this.source, this.ruleId, true);
        }, e2.prototype.setSource = function(e3) {
          this.source !== e3 && (this.source = e3, this.hasAnchor && (this._anchorCache = this._buildAnchorCache()));
        }, e2.prototype.resolveBackReferences = function(e3, t3) {
          var n2 = t3.map(function(t4) {
            return e3.substring(t4.start, t4.end);
          });
          return a2.lastIndex = 0, this.source.replace(a2, function(e4, t4) {
            return (n2[parseInt(t4, 10)] || "").replace(/[\-\\\{\}\*\+\?\|\^\$\.\,\[\]\(\)\#\s]/g, "\\$&");
          });
        }, e2.prototype._buildAnchorCache = function() {
          var e3, t3, n2, r3, i2 = [], o3 = [], s3 = [], a3 = [];
          for (e3 = 0, t3 = this.source.length; e3 < t3; e3++)
            n2 = this.source.charAt(e3), i2[e3] = n2, o3[e3] = n2, s3[e3] = n2, a3[e3] = n2, "\\" === n2 && e3 + 1 < t3 && ("A" === (r3 = this.source.charAt(e3 + 1)) ? (i2[e3 + 1] = "ï¿¿", o3[e3 + 1] = "ï¿¿", s3[e3 + 1] = "A", a3[e3 + 1] = "A") : "G" === r3 ? (i2[e3 + 1] = "ï¿¿", o3[e3 + 1] = "G", s3[e3 + 1] = "ï¿¿", a3[e3 + 1] = "G") : (i2[e3 + 1] = r3, o3[e3 + 1] = r3, s3[e3 + 1] = r3, a3[e3 + 1] = r3), e3++);
          return { A0_G0: i2.join(""), A0_G1: o3.join(""), A1_G0: s3.join(""), A1_G1: a3.join("") };
        }, e2.prototype.resolveAnchors = function(e3, t3) {
          return this.hasAnchor && this._anchorCache ? e3 ? t3 ? this._anchorCache.A1_G1 : this._anchorCache.A1_G0 : t3 ? this._anchorCache.A0_G1 : this._anchorCache.A0_G0 : this.source;
        }, e2;
      }();
      t2.RegExpSource = h2;
      var p2 = function() {
        function e2() {
          this._items = [], this._hasAnchors = false, this._cached = null, this._anchorCache = { A0_G0: null, A0_G1: null, A1_G0: null, A1_G1: null };
        }
        return e2.prototype.dispose = function() {
          this._disposeCaches();
        }, e2.prototype._disposeCaches = function() {
          this._cached && (this._cached.dispose(), this._cached = null), this._anchorCache.A0_G0 && (this._anchorCache.A0_G0.dispose(), this._anchorCache.A0_G0 = null), this._anchorCache.A0_G1 && (this._anchorCache.A0_G1.dispose(), this._anchorCache.A0_G1 = null), this._anchorCache.A1_G0 && (this._anchorCache.A1_G0.dispose(), this._anchorCache.A1_G0 = null), this._anchorCache.A1_G1 && (this._anchorCache.A1_G1.dispose(), this._anchorCache.A1_G1 = null);
        }, e2.prototype.push = function(e3) {
          this._items.push(e3), this._hasAnchors = this._hasAnchors || e3.hasAnchor;
        }, e2.prototype.unshift = function(e3) {
          this._items.unshift(e3), this._hasAnchors = this._hasAnchors || e3.hasAnchor;
        }, e2.prototype.length = function() {
          return this._items.length;
        }, e2.prototype.setSource = function(e3, t3) {
          this._items[e3].source !== t3 && (this._disposeCaches(), this._items[e3].setSource(t3));
        }, e2.prototype.compile = function(e3, t3, n2) {
          if (this._hasAnchors)
            return t3 ? n2 ? (this._anchorCache.A1_G1 || (this._anchorCache.A1_G1 = this._resolveAnchors(e3, t3, n2)), this._anchorCache.A1_G1) : (this._anchorCache.A1_G0 || (this._anchorCache.A1_G0 = this._resolveAnchors(e3, t3, n2)), this._anchorCache.A1_G0) : n2 ? (this._anchorCache.A0_G1 || (this._anchorCache.A0_G1 = this._resolveAnchors(e3, t3, n2)), this._anchorCache.A0_G1) : (this._anchorCache.A0_G0 || (this._anchorCache.A0_G0 = this._resolveAnchors(e3, t3, n2)), this._anchorCache.A0_G0);
          if (!this._cached) {
            var r3 = this._items.map(function(e4) {
              return e4.source;
            });
            this._cached = new c2(e3, r3, this._items.map(function(e4) {
              return e4.ruleId;
            }));
          }
          return this._cached;
        }, e2.prototype._resolveAnchors = function(e3, t3, n2) {
          var r3 = this._items.map(function(e4) {
            return e4.resolveAnchors(t3, n2);
          });
          return new c2(e3, r3, this._items.map(function(e4) {
            return e4.ruleId;
          }));
        }, e2;
      }();
      t2.RegExpSourceList = p2;
      var f2 = function(e2) {
        function t3(t4, n2, r3, i2, o3) {
          var s3 = e2.call(this, t4, n2, r3, null) || this;
          return s3._match = new h2(i2, s3.id), s3.captures = o3, s3._cachedCompiledPatterns = null, s3;
        }
        return i(t3, e2), t3.prototype.dispose = function() {
          this._cachedCompiledPatterns && (this._cachedCompiledPatterns.dispose(), this._cachedCompiledPatterns = null);
        }, Object.defineProperty(t3.prototype, "debugMatchRegExp", { get: function() {
          return "" + this._match.source;
        }, enumerable: true, configurable: true }), t3.prototype.collectPatternsRecursive = function(e3, t4, n2) {
          t4.push(this._match);
        }, t3.prototype.compile = function(e3, t4, n2, r3) {
          return this._cachedCompiledPatterns || (this._cachedCompiledPatterns = new p2(), this.collectPatternsRecursive(e3, this._cachedCompiledPatterns, true)), this._cachedCompiledPatterns.compile(e3, n2, r3);
        }, t3;
      }(u2);
      t2.MatchRule = f2;
      var d2 = function(e2) {
        function t3(t4, n2, r3, i2, o3) {
          var s3 = e2.call(this, t4, n2, r3, i2) || this;
          return s3.patterns = o3.patterns, s3.hasMissingPatterns = o3.hasMissingPatterns, s3._cachedCompiledPatterns = null, s3;
        }
        return i(t3, e2), t3.prototype.dispose = function() {
          this._cachedCompiledPatterns && (this._cachedCompiledPatterns.dispose(), this._cachedCompiledPatterns = null);
        }, t3.prototype.collectPatternsRecursive = function(e3, t4, n2) {
          var r3, i2;
          for (r3 = 0, i2 = this.patterns.length; r3 < i2; r3++)
            e3.getRule(this.patterns[r3]).collectPatternsRecursive(e3, t4, false);
        }, t3.prototype.compile = function(e3, t4, n2, r3) {
          return this._cachedCompiledPatterns || (this._cachedCompiledPatterns = new p2(), this.collectPatternsRecursive(e3, this._cachedCompiledPatterns, true)), this._cachedCompiledPatterns.compile(e3, n2, r3);
        }, t3;
      }(u2);
      t2.IncludeOnlyRule = d2;
      var g = function(e2) {
        function t3(t4, n2, r3, i2, o3, s3, a3, c3, u3, l3) {
          var p3 = e2.call(this, t4, n2, r3, i2) || this;
          return p3._begin = new h2(o3, p3.id), p3.beginCaptures = s3, p3._end = new h2(a3 || "ï¿¿", -1), p3.endHasBackReferences = p3._end.hasBackReferences, p3.endCaptures = c3, p3.applyEndPatternLast = u3 || false, p3.patterns = l3.patterns, p3.hasMissingPatterns = l3.hasMissingPatterns, p3._cachedCompiledPatterns = null, p3;
        }
        return i(t3, e2), t3.prototype.dispose = function() {
          this._cachedCompiledPatterns && (this._cachedCompiledPatterns.dispose(), this._cachedCompiledPatterns = null);
        }, Object.defineProperty(t3.prototype, "debugBeginRegExp", { get: function() {
          return "" + this._begin.source;
        }, enumerable: true, configurable: true }), Object.defineProperty(t3.prototype, "debugEndRegExp", { get: function() {
          return "" + this._end.source;
        }, enumerable: true, configurable: true }), t3.prototype.getEndWithResolvedBackReferences = function(e3, t4) {
          return this._end.resolveBackReferences(e3, t4);
        }, t3.prototype.collectPatternsRecursive = function(e3, t4, n2) {
          if (n2) {
            var r3, i2 = void 0;
            for (i2 = 0, r3 = this.patterns.length; i2 < r3; i2++)
              e3.getRule(this.patterns[i2]).collectPatternsRecursive(e3, t4, false);
          } else
            t4.push(this._begin);
        }, t3.prototype.compile = function(e3, t4, n2, r3) {
          return this._cachedCompiledPatterns || (this._cachedCompiledPatterns = new p2(), this.collectPatternsRecursive(e3, this._cachedCompiledPatterns, true), this.applyEndPatternLast ? this._cachedCompiledPatterns.push(this._end.hasBackReferences ? this._end.clone() : this._end) : this._cachedCompiledPatterns.unshift(this._end.hasBackReferences ? this._end.clone() : this._end)), this._end.hasBackReferences && (this.applyEndPatternLast ? this._cachedCompiledPatterns.setSource(this._cachedCompiledPatterns.length() - 1, t4) : this._cachedCompiledPatterns.setSource(0, t4)), this._cachedCompiledPatterns.compile(e3, n2, r3);
        }, t3;
      }(u2);
      t2.BeginEndRule = g;
      var m2 = function(e2) {
        function t3(t4, n2, r3, i2, o3, s3, a3, c3, u3) {
          var l3 = e2.call(this, t4, n2, r3, i2) || this;
          return l3._begin = new h2(o3, l3.id), l3.beginCaptures = s3, l3.whileCaptures = c3, l3._while = new h2(a3, -2), l3.whileHasBackReferences = l3._while.hasBackReferences, l3.patterns = u3.patterns, l3.hasMissingPatterns = u3.hasMissingPatterns, l3._cachedCompiledPatterns = null, l3._cachedCompiledWhilePatterns = null, l3;
        }
        return i(t3, e2), t3.prototype.dispose = function() {
          this._cachedCompiledPatterns && (this._cachedCompiledPatterns.dispose(), this._cachedCompiledPatterns = null), this._cachedCompiledWhilePatterns && (this._cachedCompiledWhilePatterns.dispose(), this._cachedCompiledWhilePatterns = null);
        }, Object.defineProperty(t3.prototype, "debugBeginRegExp", { get: function() {
          return "" + this._begin.source;
        }, enumerable: true, configurable: true }), Object.defineProperty(t3.prototype, "debugWhileRegExp", { get: function() {
          return "" + this._while.source;
        }, enumerable: true, configurable: true }), t3.prototype.getWhileWithResolvedBackReferences = function(e3, t4) {
          return this._while.resolveBackReferences(e3, t4);
        }, t3.prototype.collectPatternsRecursive = function(e3, t4, n2) {
          if (n2) {
            var r3, i2 = void 0;
            for (i2 = 0, r3 = this.patterns.length; i2 < r3; i2++)
              e3.getRule(this.patterns[i2]).collectPatternsRecursive(e3, t4, false);
          } else
            t4.push(this._begin);
        }, t3.prototype.compile = function(e3, t4, n2, r3) {
          return this._cachedCompiledPatterns || (this._cachedCompiledPatterns = new p2(), this.collectPatternsRecursive(e3, this._cachedCompiledPatterns, true)), this._cachedCompiledPatterns.compile(e3, n2, r3);
        }, t3.prototype.compileWhile = function(e3, t4, n2, r3) {
          return this._cachedCompiledWhilePatterns || (this._cachedCompiledWhilePatterns = new p2(), this._cachedCompiledWhilePatterns.push(this._while.hasBackReferences ? this._while.clone() : this._while)), this._while.hasBackReferences && this._cachedCompiledWhilePatterns.setSource(0, t4 || "ï¿¿"), this._cachedCompiledWhilePatterns.compile(e3, n2, r3);
        }, t3;
      }(u2);
      t2.BeginWhileRule = m2;
      var _2 = function() {
        function e2() {
        }
        return e2.createCaptureRule = function(e3, t3, n2, r3, i2) {
          return e3.registerRule(function(e4) {
            return new l2(t3, e4, n2, r3, i2);
          });
        }, e2.getCompiledRuleId = function(t3, n2, r3) {
          return t3.id || n2.registerRule(function(i2) {
            if (t3.id = i2, t3.match)
              return new f2(t3.$vscodeTextmateLocation, t3.id, t3.name, t3.match, e2._compileCaptures(t3.captures, n2, r3));
            if (void 0 === t3.begin) {
              t3.repository && (r3 = o2.mergeObjects({}, r3, t3.repository));
              var s3 = t3.patterns;
              return void 0 === s3 && t3.include && (s3 = [{ include: t3.include }]), new d2(t3.$vscodeTextmateLocation, t3.id, t3.name, t3.contentName, e2._compilePatterns(s3, n2, r3));
            }
            return t3.while ? new m2(t3.$vscodeTextmateLocation, t3.id, t3.name, t3.contentName, t3.begin, e2._compileCaptures(t3.beginCaptures || t3.captures, n2, r3), t3.while, e2._compileCaptures(t3.whileCaptures || t3.captures, n2, r3), e2._compilePatterns(t3.patterns, n2, r3)) : new g(t3.$vscodeTextmateLocation, t3.id, t3.name, t3.contentName, t3.begin, e2._compileCaptures(t3.beginCaptures || t3.captures, n2, r3), t3.end, e2._compileCaptures(t3.endCaptures || t3.captures, n2, r3), t3.applyEndPatternLast, e2._compilePatterns(t3.patterns, n2, r3));
          }), t3.id;
        }, e2._compileCaptures = function(t3, n2, r3) {
          var i2 = [];
          if (t3) {
            var o3 = 0;
            for (var s3 in t3) {
              if ("$vscodeTextmateLocation" !== s3)
                (c3 = parseInt(s3, 10)) > o3 && (o3 = c3);
            }
            for (var a3 = 0; a3 <= o3; a3++)
              i2[a3] = null;
            for (var s3 in t3)
              if ("$vscodeTextmateLocation" !== s3) {
                var c3 = parseInt(s3, 10), u3 = 0;
                t3[s3].patterns && (u3 = e2.getCompiledRuleId(t3[s3], n2, r3)), i2[c3] = e2.createCaptureRule(n2, t3[s3].$vscodeTextmateLocation, t3[s3].name, t3[s3].contentName, u3);
              }
          }
          return i2;
        }, e2._compilePatterns = function(t3, n2, r3) {
          var i2 = [];
          if (t3)
            for (var o3 = 0, s3 = t3.length; o3 < s3; o3++) {
              var a3 = t3[o3], c3 = -1;
              if (a3.include)
                if ("#" === a3.include.charAt(0)) {
                  var u3 = r3[a3.include.substr(1)];
                  u3 && (c3 = e2.getCompiledRuleId(u3, n2, r3));
                } else if ("$base" === a3.include || "$self" === a3.include)
                  c3 = e2.getCompiledRuleId(r3[a3.include], n2, r3);
                else {
                  var l3 = null, h3 = null, p3 = a3.include.indexOf("#");
                  p3 >= 0 ? (l3 = a3.include.substring(0, p3), h3 = a3.include.substring(p3 + 1)) : l3 = a3.include;
                  var f3 = n2.getExternalGrammar(l3, r3);
                  if (f3)
                    if (h3) {
                      var _3 = f3.repository[h3];
                      _3 && (c3 = e2.getCompiledRuleId(_3, n2, f3.repository));
                    } else
                      c3 = e2.getCompiledRuleId(f3.repository.$self, n2, f3.repository);
                }
              else
                c3 = e2.getCompiledRuleId(a3, n2, r3);
              if (-1 !== c3) {
                var y2 = n2.getRule(c3), v2 = false;
                if ((y2 instanceof d2 || y2 instanceof g || y2 instanceof m2) && y2.hasMissingPatterns && 0 === y2.patterns.length && (v2 = true), v2)
                  continue;
                i2.push(c3);
              }
            }
          return { patterns: i2, hasMissingPatterns: (t3 ? t3.length : 0) !== i2.length };
        }, e2;
      }();
      t2.RuleFactory = _2;
    }, function(e, t2, n) {
      function r2(e2) {
        return !!e2 && !!e2.match(/[\w\.:]+/);
      }
      Object.defineProperty(t2, "__esModule", { value: true }), t2.createMatchers = function(e2, t3) {
        for (var n2, i, o2, s2 = [], a2 = (o2 = (i = /([LR]:|[\w\.:][\w\.:\-]*|[\,\|\-\(\)])/g).exec(n2 = e2), { next: function() {
          if (!o2)
            return null;
          var e3 = o2[0];
          return o2 = i.exec(n2), e3;
        } }), c2 = a2.next(); null !== c2; ) {
          var u2 = 0;
          if (2 === c2.length && ":" === c2.charAt(1)) {
            switch (c2.charAt(0)) {
              case "R":
                u2 = 1;
                break;
              case "L":
                u2 = -1;
                break;
              default:
                console.log("Unknown priority " + c2 + " in scope selector");
            }
            c2 = a2.next();
          }
          var l2 = p2();
          if (s2.push({ matcher: l2, priority: u2 }), "," !== c2)
            break;
          c2 = a2.next();
        }
        return s2;
        function h2() {
          if ("-" === c2) {
            c2 = a2.next();
            var e3 = h2();
            return function(t4) {
              return !!e3 && !e3(t4);
            };
          }
          if ("(" === c2) {
            c2 = a2.next();
            var n3 = function() {
              var e4 = [], t4 = p2();
              for (; t4 && (e4.push(t4), "|" === c2 || "," === c2); ) {
                do {
                  c2 = a2.next();
                } while ("|" === c2 || "," === c2);
                t4 = p2();
              }
              return function(t5) {
                return e4.some(function(e5) {
                  return e5(t5);
                });
              };
            }();
            return ")" === c2 && (c2 = a2.next()), n3;
          }
          if (r2(c2)) {
            var i2 = [];
            do {
              i2.push(c2), c2 = a2.next();
            } while (r2(c2));
            return function(e4) {
              return t3(i2, e4);
            };
          }
          return null;
        }
        function p2() {
          for (var e3 = [], t4 = h2(); t4; )
            e3.push(t4), t4 = h2();
          return function(t5) {
            return e3.every(function(e4) {
              return e4(t5);
            });
          };
        }
      };
    }, function(e, t2) {
      var n, r2, i = e.exports = {};
      function o2() {
        throw new Error("setTimeout has not been defined");
      }
      function s2() {
        throw new Error("clearTimeout has not been defined");
      }
      function a2(e2) {
        if (n === setTimeout)
          return setTimeout(e2, 0);
        if ((n === o2 || !n) && setTimeout)
          return n = setTimeout, setTimeout(e2, 0);
        try {
          return n(e2, 0);
        } catch (t3) {
          try {
            return n.call(null, e2, 0);
          } catch (t4) {
            return n.call(this, e2, 0);
          }
        }
      }
      !function() {
        try {
          n = "function" == typeof setTimeout ? setTimeout : o2;
        } catch (e2) {
          n = o2;
        }
        try {
          r2 = "function" == typeof clearTimeout ? clearTimeout : s2;
        } catch (e2) {
          r2 = s2;
        }
      }();
      var c2, u2 = [], l2 = false, h2 = -1;
      function p2() {
        l2 && c2 && (l2 = false, c2.length ? u2 = c2.concat(u2) : h2 = -1, u2.length && f2());
      }
      function f2() {
        if (!l2) {
          var e2 = a2(p2);
          l2 = true;
          for (var t3 = u2.length; t3; ) {
            for (c2 = u2, u2 = []; ++h2 < t3; )
              c2 && c2[h2].run();
            h2 = -1, t3 = u2.length;
          }
          c2 = null, l2 = false, function(e3) {
            if (r2 === clearTimeout)
              return clearTimeout(e3);
            if ((r2 === s2 || !r2) && clearTimeout)
              return r2 = clearTimeout, clearTimeout(e3);
            try {
              r2(e3);
            } catch (t4) {
              try {
                return r2.call(null, e3);
              } catch (t5) {
                return r2.call(this, e3);
              }
            }
          }(e2);
        }
      }
      function d2(e2, t3) {
        this.fun = e2, this.array = t3;
      }
      function g() {
      }
      i.nextTick = function(e2) {
        var t3 = new Array(arguments.length - 1);
        if (arguments.length > 1)
          for (var n2 = 1; n2 < arguments.length; n2++)
            t3[n2 - 1] = arguments[n2];
        u2.push(new d2(e2, t3)), 1 !== u2.length || l2 || a2(f2);
      }, d2.prototype.run = function() {
        this.fun.apply(null, this.array);
      }, i.title = "browser", i.browser = true, i.env = {}, i.argv = [], i.version = "", i.versions = {}, i.on = g, i.addListener = g, i.once = g, i.off = g, i.removeListener = g, i.removeAllListeners = g, i.emit = g, i.prependListener = g, i.prependOnceListener = g, i.listeners = function(e2) {
        return [];
      }, i.binding = function(e2) {
        throw new Error("process.binding is not supported");
      }, i.cwd = function() {
        return "/";
      }, i.chdir = function(e2) {
        throw new Error("process.chdir is not supported");
      }, i.umask = function() {
        return 0;
      };
    }, function(e, t2, n) {
      Object.defineProperty(t2, "__esModule", { value: true });
      var r2 = n(9), i = n(2), o2 = n(10);
      t2.parseRawGrammar = function(e2, t3) {
        return void 0 === t3 && (t3 = null), null !== t3 && /\.json$/.test(t3) ? function(e3, t4) {
          if (i.DebugFlags.InDebugMode)
            return o2.parse(e3, t4, true);
          return JSON.parse(e3);
        }(e2, t3) : function(e3, t4) {
          if (i.DebugFlags.InDebugMode)
            return r2.parseWithLocation(e3, t4, "$vscodeTextmateLocation");
          return r2.parse(e3);
        }(e2, t3);
      };
    }, function(e, t2, n) {
      function r2(e2, t3, n2) {
        var r3 = e2.length, i = 0, o2 = 1, s2 = 0;
        function a2(t4) {
          if (null === n2)
            i += t4;
          else
            for (; t4 > 0; ) {
              10 === e2.charCodeAt(i) ? (i++, o2++, s2 = 0) : (i++, s2++), t4--;
            }
        }
        function c2(e3) {
          null === n2 ? i = e3 : a2(e3 - i);
        }
        function u2() {
          for (; i < r3; ) {
            var t4 = e2.charCodeAt(i);
            if (32 !== t4 && 9 !== t4 && 13 !== t4 && 10 !== t4)
              break;
            a2(1);
          }
        }
        function l2(t4) {
          return e2.substr(i, t4.length) === t4 && (a2(t4.length), true);
        }
        function h2(t4) {
          var n3 = e2.indexOf(t4, i);
          c2(-1 !== n3 ? n3 + t4.length : r3);
        }
        function p2(t4) {
          var n3 = e2.indexOf(t4, i);
          if (-1 !== n3) {
            var o3 = e2.substring(i, n3);
            return c2(n3 + t4.length), o3;
          }
          o3 = e2.substr(i);
          return c2(r3), o3;
        }
        r3 > 0 && 65279 === e2.charCodeAt(0) && (i = 1);
        var f2 = 0, d2 = null, g = [], m2 = [], _2 = null;
        function y2(e3, t4) {
          g.push(f2), m2.push(d2), f2 = e3, d2 = t4;
        }
        function v2() {
          if (0 === g.length)
            return b2("illegal state stack");
          f2 = g.pop(), d2 = m2.pop();
        }
        function b2(t4) {
          throw new Error("Near offset " + i + ": " + t4 + " ~~~" + e2.substr(i, 50) + "~~~");
        }
        var C2, w2, k2, R2 = function() {
          if (null === _2)
            return b2("missing <key>");
          var e3 = {};
          null !== n2 && (e3[n2] = { filename: t3, line: o2, char: s2 }), d2[_2] = e3, _2 = null, y2(1, e3);
        }, S2 = function() {
          if (null === _2)
            return b2("missing <key>");
          var e3 = [];
          d2[_2] = e3, _2 = null, y2(2, e3);
        }, P2 = function() {
          var e3 = {};
          null !== n2 && (e3[n2] = { filename: t3, line: o2, char: s2 }), d2.push(e3), y2(1, e3);
        }, x2 = function() {
          var e3 = [];
          d2.push(e3), y2(2, e3);
        };
        function I() {
          if (1 !== f2)
            return b2("unexpected </dict>");
          v2();
        }
        function A() {
          return 1 === f2 || 2 !== f2 ? b2("unexpected </array>") : void v2();
        }
        function T(e3) {
          if (1 === f2) {
            if (null === _2)
              return b2("missing <key>");
            d2[_2] = e3, _2 = null;
          } else
            2 === f2 ? d2.push(e3) : d2 = e3;
        }
        function L2(e3) {
          if (isNaN(e3))
            return b2("cannot parse float");
          if (1 === f2) {
            if (null === _2)
              return b2("missing <key>");
            d2[_2] = e3, _2 = null;
          } else
            2 === f2 ? d2.push(e3) : d2 = e3;
        }
        function M2(e3) {
          if (isNaN(e3))
            return b2("cannot parse integer");
          if (1 === f2) {
            if (null === _2)
              return b2("missing <key>");
            d2[_2] = e3, _2 = null;
          } else
            2 === f2 ? d2.push(e3) : d2 = e3;
        }
        function G2(e3) {
          if (1 === f2) {
            if (null === _2)
              return b2("missing <key>");
            d2[_2] = e3, _2 = null;
          } else
            2 === f2 ? d2.push(e3) : d2 = e3;
        }
        function D2(e3) {
          if (1 === f2) {
            if (null === _2)
              return b2("missing <key>");
            d2[_2] = e3, _2 = null;
          } else
            2 === f2 ? d2.push(e3) : d2 = e3;
        }
        function N2(e3) {
          if (1 === f2) {
            if (null === _2)
              return b2("missing <key>");
            d2[_2] = e3, _2 = null;
          } else
            2 === f2 ? d2.push(e3) : d2 = e3;
        }
        function E2(e3) {
          if (e3.isClosed)
            return "";
          var t4 = p2("</");
          return h2(">"), t4.replace(/&#([0-9]+);/g, function(e4, t5) {
            return String.fromCodePoint(parseInt(t5, 10));
          }).replace(/&#x([0-9a-f]+);/g, function(e4, t5) {
            return String.fromCodePoint(parseInt(t5, 16));
          }).replace(/&amp;|&lt;|&gt;|&quot;|&apos;/g, function(e4) {
            switch (e4) {
              case "&amp;":
                return "&";
              case "&lt;":
                return "<";
              case "&gt;":
                return ">";
              case "&quot;":
                return '"';
              case "&apos;":
                return "'";
            }
            return e4;
          });
        }
        for (; i < r3 && (u2(), !(i >= r3)); ) {
          var O2 = e2.charCodeAt(i);
          if (a2(1), 60 !== O2)
            return b2("expected <");
          if (i >= r3)
            return b2("unexpected end of input");
          var j2 = e2.charCodeAt(i);
          if (63 !== j2)
            if (33 !== j2) {
              if (47 === j2) {
                if (a2(1), u2(), l2("plist")) {
                  h2(">");
                  continue;
                }
                if (l2("dict")) {
                  h2(">"), I();
                  continue;
                }
                if (l2("array")) {
                  h2(">"), A();
                  continue;
                }
                return b2("unexpected closed tag");
              }
              var F3 = (w2 = void 0, k2 = void 0, w2 = p2(">"), k2 = false, 47 === w2.charCodeAt(w2.length - 1) && (k2 = true, w2 = w2.substring(0, w2.length - 1)), { name: w2.trim(), isClosed: k2 });
              switch (F3.name) {
                case "dict":
                  1 === f2 ? R2() : 2 === f2 ? P2() : (d2 = {}, null !== n2 && (d2[n2] = { filename: t3, line: o2, char: s2 }), y2(1, d2)), F3.isClosed && I();
                  continue;
                case "array":
                  1 === f2 ? S2() : 2 === f2 ? x2() : y2(2, d2 = []), F3.isClosed && A();
                  continue;
                case "key":
                  C2 = E2(F3), 1 !== f2 ? b2("unexpected <key>") : null !== _2 ? b2("too many <key>") : _2 = C2;
                  continue;
                case "string":
                  T(E2(F3));
                  continue;
                case "real":
                  L2(parseFloat(E2(F3)));
                  continue;
                case "integer":
                  M2(parseInt(E2(F3), 10));
                  continue;
                case "date":
                  G2(new Date(E2(F3)));
                  continue;
                case "data":
                  D2(E2(F3));
                  continue;
                case "true":
                  E2(F3), N2(true);
                  continue;
                case "false":
                  E2(F3), N2(false);
                  continue;
              }
              if (!/^plist/.test(F3.name))
                return b2("unexpected opened tag " + F3.name);
            } else {
              if (a2(1), l2("--")) {
                h2("-->");
                continue;
              }
              h2(">");
            }
          else
            a2(1), h2("?>");
        }
        return d2;
      }
      Object.defineProperty(t2, "__esModule", { value: true }), t2.parseWithLocation = function(e2, t3, n2) {
        return r2(e2, t3, n2);
      }, t2.parse = function(e2) {
        return r2(e2, null, null);
      };
    }, function(e, t2, n) {
      function r2(e2, t3) {
        throw new Error("Near offset " + e2.pos + ": " + t3 + " ~~~" + e2.source.substr(e2.pos, 50) + "~~~");
      }
      Object.defineProperty(t2, "__esModule", { value: true }), t2.parse = function(e2, t3, n2) {
        var a2 = new i(e2), c2 = new o2(), u2 = 0, l2 = null, h2 = [], p2 = [];
        function f2() {
          h2.push(u2), p2.push(l2);
        }
        function d2() {
          u2 = h2.pop(), l2 = p2.pop();
        }
        function g(e3) {
          r2(a2, e3);
        }
        for (; s2(a2, c2); ) {
          if (0 === u2) {
            if (null !== l2 && g("too many constructs in root"), 3 === c2.type) {
              l2 = {}, n2 && (l2.$vscodeTextmateLocation = c2.toLocation(t3)), f2(), u2 = 1;
              continue;
            }
            if (2 === c2.type) {
              l2 = [], f2(), u2 = 4;
              continue;
            }
            g("unexpected token in root");
          }
          if (2 === u2) {
            if (5 === c2.type) {
              d2();
              continue;
            }
            if (7 === c2.type) {
              u2 = 3;
              continue;
            }
            g("expected , or }");
          }
          if (1 === u2 || 3 === u2) {
            if (1 === u2 && 5 === c2.type) {
              d2();
              continue;
            }
            if (1 === c2.type) {
              var m2 = c2.value;
              if (s2(a2, c2) && 6 === c2.type || g("expected colon"), s2(a2, c2) || g("expected value"), u2 = 2, 1 === c2.type) {
                l2[m2] = c2.value;
                continue;
              }
              if (8 === c2.type) {
                l2[m2] = null;
                continue;
              }
              if (9 === c2.type) {
                l2[m2] = true;
                continue;
              }
              if (10 === c2.type) {
                l2[m2] = false;
                continue;
              }
              if (11 === c2.type) {
                l2[m2] = parseFloat(c2.value);
                continue;
              }
              if (2 === c2.type) {
                var _2 = [];
                l2[m2] = _2, f2(), u2 = 4, l2 = _2;
                continue;
              }
              if (3 === c2.type) {
                var y2 = {};
                n2 && (y2.$vscodeTextmateLocation = c2.toLocation(t3)), l2[m2] = y2, f2(), u2 = 1, l2 = y2;
                continue;
              }
            }
            g("unexpected token in dict");
          }
          if (5 === u2) {
            if (4 === c2.type) {
              d2();
              continue;
            }
            if (7 === c2.type) {
              u2 = 6;
              continue;
            }
            g("expected , or ]");
          }
          if (4 === u2 || 6 === u2) {
            if (4 === u2 && 4 === c2.type) {
              d2();
              continue;
            }
            if (u2 = 5, 1 === c2.type) {
              l2.push(c2.value);
              continue;
            }
            if (8 === c2.type) {
              l2.push(null);
              continue;
            }
            if (9 === c2.type) {
              l2.push(true);
              continue;
            }
            if (10 === c2.type) {
              l2.push(false);
              continue;
            }
            if (11 === c2.type) {
              l2.push(parseFloat(c2.value));
              continue;
            }
            if (2 === c2.type) {
              _2 = [];
              l2.push(_2), f2(), u2 = 4, l2 = _2;
              continue;
            }
            if (3 === c2.type) {
              y2 = {};
              n2 && (y2.$vscodeTextmateLocation = c2.toLocation(t3)), l2.push(y2), f2(), u2 = 1, l2 = y2;
              continue;
            }
            g("unexpected token in array");
          }
          g("unknown state");
        }
        return 0 !== p2.length && g("unclosed constructs"), l2;
      };
      var i = function(e2) {
        this.source = e2, this.pos = 0, this.len = e2.length, this.line = 1, this.char = 0;
      }, o2 = function() {
        function e2() {
          this.value = null, this.type = 0, this.offset = -1, this.len = -1, this.line = -1, this.char = -1;
        }
        return e2.prototype.toLocation = function(e3) {
          return { filename: e3, line: this.line, char: this.char };
        }, e2;
      }();
      function s2(e2, t3) {
        t3.value = null, t3.type = 0, t3.offset = -1, t3.len = -1, t3.line = -1, t3.char = -1;
        for (var n2, i2 = e2.source, o3 = e2.pos, s3 = e2.len, a2 = e2.line, c2 = e2.char; ; ) {
          if (o3 >= s3)
            return false;
          if (32 !== (n2 = i2.charCodeAt(o3)) && 9 !== n2 && 13 !== n2) {
            if (10 !== n2)
              break;
            o3++, a2++, c2 = 0;
          } else
            o3++, c2++;
        }
        if (t3.offset = o3, t3.line = a2, t3.char = c2, 34 === n2) {
          for (t3.type = 1, o3++, c2++; ; ) {
            if (o3 >= s3)
              return false;
            if (n2 = i2.charCodeAt(o3), o3++, c2++, 92 !== n2) {
              if (34 === n2)
                break;
            } else
              o3++, c2++;
          }
          t3.value = i2.substring(t3.offset + 1, o3 - 1).replace(/\\u([0-9A-Fa-f]{4})/g, function(e3, t4) {
            return String.fromCodePoint(parseInt(t4, 16));
          }).replace(/\\(.)/g, function(t4, n3) {
            switch (n3) {
              case '"':
                return '"';
              case "\\":
                return "\\";
              case "/":
                return "/";
              case "b":
                return "\b";
              case "f":
                return "\f";
              case "n":
                return "\n";
              case "r":
                return "\r";
              case "t":
                return "	";
              default:
                r2(e2, "invalid escape sequence");
            }
            throw new Error("unreachable");
          });
        } else if (91 === n2)
          t3.type = 2, o3++, c2++;
        else if (123 === n2)
          t3.type = 3, o3++, c2++;
        else if (93 === n2)
          t3.type = 4, o3++, c2++;
        else if (125 === n2)
          t3.type = 5, o3++, c2++;
        else if (58 === n2)
          t3.type = 6, o3++, c2++;
        else if (44 === n2)
          t3.type = 7, o3++, c2++;
        else if (110 === n2) {
          if (t3.type = 8, o3++, c2++, 117 !== (n2 = i2.charCodeAt(o3)))
            return false;
          if (o3++, c2++, 108 !== (n2 = i2.charCodeAt(o3)))
            return false;
          if (o3++, c2++, 108 !== (n2 = i2.charCodeAt(o3)))
            return false;
          o3++, c2++;
        } else if (116 === n2) {
          if (t3.type = 9, o3++, c2++, 114 !== (n2 = i2.charCodeAt(o3)))
            return false;
          if (o3++, c2++, 117 !== (n2 = i2.charCodeAt(o3)))
            return false;
          if (o3++, c2++, 101 !== (n2 = i2.charCodeAt(o3)))
            return false;
          o3++, c2++;
        } else if (102 === n2) {
          if (t3.type = 10, o3++, c2++, 97 !== (n2 = i2.charCodeAt(o3)))
            return false;
          if (o3++, c2++, 108 !== (n2 = i2.charCodeAt(o3)))
            return false;
          if (o3++, c2++, 115 !== (n2 = i2.charCodeAt(o3)))
            return false;
          if (o3++, c2++, 101 !== (n2 = i2.charCodeAt(o3)))
            return false;
          o3++, c2++;
        } else
          for (t3.type = 11; ; ) {
            if (o3 >= s3)
              return false;
            if (!(46 === (n2 = i2.charCodeAt(o3)) || n2 >= 48 && n2 <= 57 || 101 === n2 || 69 === n2 || 45 === n2 || 43 === n2))
              break;
            o3++, c2++;
          }
        return t3.len = o3 - t3.offset, null === t3.value && (t3.value = i2.substr(t3.offset, t3.len)), e2.pos = o3, e2.line = a2, e2.char = c2, true;
      }
    }, function(e, t2, n) {
      Object.defineProperty(t2, "__esModule", { value: true });
      var r2 = function(e2, t3, n2, r3, i2, o3) {
        this.scope = e2, this.parentScopes = t3, this.index = n2, this.fontStyle = r3, this.foreground = i2, this.background = o3;
      };
      function i(e2) {
        return !!/^#[0-9a-f]{6}$/i.test(e2) || (!!/^#[0-9a-f]{8}$/i.test(e2) || (!!/^#[0-9a-f]{3}$/i.test(e2) || !!/^#[0-9a-f]{4}$/i.test(e2)));
      }
      function o2(e2) {
        if (!e2)
          return [];
        if (!e2.settings || !Array.isArray(e2.settings))
          return [];
        for (var t3 = e2.settings, n2 = [], o3 = 0, s3 = 0, a3 = t3.length; s3 < a3; s3++) {
          var c3 = t3[s3];
          if (c3.settings) {
            var u3 = void 0;
            if ("string" == typeof c3.scope)
              u3 = c3.scope.replace(/^[,]+/, "").replace(/[,]+$/, "").split(",");
            else
              u3 = Array.isArray(c3.scope) ? c3.scope : [""];
            var l3 = -1;
            if ("string" == typeof c3.settings.fontStyle) {
              l3 = 0;
              for (var h3 = 0, p3 = (g = c3.settings.fontStyle.split(" ")).length; h3 < p3; h3++) {
                switch (g[h3]) {
                  case "italic":
                    l3 |= 1;
                    break;
                  case "bold":
                    l3 |= 2;
                    break;
                  case "underline":
                    l3 |= 4;
                }
              }
            }
            var f2 = null;
            "string" == typeof c3.settings.foreground && i(c3.settings.foreground) && (f2 = c3.settings.foreground);
            var d2 = null;
            "string" == typeof c3.settings.background && i(c3.settings.background) && (d2 = c3.settings.background);
            for (h3 = 0, p3 = u3.length; h3 < p3; h3++) {
              var g, m2 = (g = u3[h3].trim().split(" "))[g.length - 1], _2 = null;
              g.length > 1 && (_2 = g.slice(0, g.length - 1)).reverse(), n2[o3++] = new r2(m2, _2, s3, l3, f2, d2);
            }
          }
        }
        return n2;
      }
      function s2(e2, t3) {
        e2.sort(function(e3, t4) {
          var n3 = u2(e3.scope, t4.scope);
          return 0 !== n3 || 0 !== (n3 = l2(e3.parentScopes, t4.parentScopes)) ? n3 : e3.index - t4.index;
        });
        for (var n2 = 0, r3 = "#000000", i2 = "#ffffff"; e2.length >= 1 && "" === e2[0].scope; ) {
          var o3 = e2.shift();
          -1 !== o3.fontStyle && (n2 = o3.fontStyle), null !== o3.foreground && (r3 = o3.foreground), null !== o3.background && (i2 = o3.background);
        }
        for (var s3 = new a2(t3), f2 = new h2(0, null, n2, s3.getId(r3), s3.getId(i2)), d2 = new p2(new h2(0, null, -1, 0, 0), []), g = 0, m2 = e2.length; g < m2; g++) {
          var _2 = e2[g];
          d2.insert(0, _2.scope, _2.parentScopes, _2.fontStyle, s3.getId(_2.foreground), s3.getId(_2.background));
        }
        return new c2(s3, f2, d2);
      }
      t2.ParsedThemeRule = r2, t2.parseTheme = o2;
      var a2 = function() {
        function e2(e3) {
          if (this._lastColorId = 0, this._id2color = [], this._color2id = /* @__PURE__ */ Object.create(null), Array.isArray(e3)) {
            this._isFrozen = true;
            for (var t3 = 0, n2 = e3.length; t3 < n2; t3++)
              this._color2id[e3[t3]] = t3, this._id2color[t3] = e3[t3];
          } else
            this._isFrozen = false;
        }
        return e2.prototype.getId = function(e3) {
          if (null === e3)
            return 0;
          e3 = e3.toUpperCase();
          var t3 = this._color2id[e3];
          if (t3)
            return t3;
          if (this._isFrozen)
            throw new Error("Missing color in color map - " + e3);
          return t3 = ++this._lastColorId, this._color2id[e3] = t3, this._id2color[t3] = e3, t3;
        }, e2.prototype.getColorMap = function() {
          return this._id2color.slice(0);
        }, e2;
      }();
      t2.ColorMap = a2;
      var c2 = function() {
        function e2(e3, t3, n2) {
          this._colorMap = e3, this._root = n2, this._defaults = t3, this._cache = {};
        }
        return e2.createFromRawTheme = function(e3, t3) {
          return this.createFromParsedTheme(o2(e3), t3);
        }, e2.createFromParsedTheme = function(e3, t3) {
          return s2(e3, t3);
        }, e2.prototype.getColorMap = function() {
          return this._colorMap.getColorMap();
        }, e2.prototype.getDefaults = function() {
          return this._defaults;
        }, e2.prototype.match = function(e3) {
          return this._cache.hasOwnProperty(e3) || (this._cache[e3] = this._root.match(e3)), this._cache[e3];
        }, e2;
      }();
      function u2(e2, t3) {
        return e2 < t3 ? -1 : e2 > t3 ? 1 : 0;
      }
      function l2(e2, t3) {
        if (null === e2 && null === t3)
          return 0;
        if (!e2)
          return -1;
        if (!t3)
          return 1;
        var n2 = e2.length, r3 = t3.length;
        if (n2 === r3) {
          for (var i2 = 0; i2 < n2; i2++) {
            var o3 = u2(e2[i2], t3[i2]);
            if (0 !== o3)
              return o3;
          }
          return 0;
        }
        return n2 - r3;
      }
      t2.Theme = c2, t2.strcmp = u2, t2.strArrCmp = l2;
      var h2 = function() {
        function e2(e3, t3, n2, r3, i2) {
          this.scopeDepth = e3, this.parentScopes = t3, this.fontStyle = n2, this.foreground = r3, this.background = i2;
        }
        return e2.prototype.clone = function() {
          return new e2(this.scopeDepth, this.parentScopes, this.fontStyle, this.foreground, this.background);
        }, e2.cloneArr = function(e3) {
          for (var t3 = [], n2 = 0, r3 = e3.length; n2 < r3; n2++)
            t3[n2] = e3[n2].clone();
          return t3;
        }, e2.prototype.acceptOverwrite = function(e3, t3, n2, r3) {
          this.scopeDepth > e3 ? console.log("how did this happen?") : this.scopeDepth = e3, -1 !== t3 && (this.fontStyle = t3), 0 !== n2 && (this.foreground = n2), 0 !== r3 && (this.background = r3);
        }, e2;
      }();
      t2.ThemeTrieElementRule = h2;
      var p2 = function() {
        function e2(e3, t3, n2) {
          void 0 === t3 && (t3 = []), void 0 === n2 && (n2 = {}), this._mainRule = e3, this._rulesWithParentScopes = t3, this._children = n2;
        }
        return e2._sortBySpecificity = function(e3) {
          return 1 === e3.length || e3.sort(this._cmpBySpecificity), e3;
        }, e2._cmpBySpecificity = function(e3, t3) {
          if (e3.scopeDepth === t3.scopeDepth) {
            var n2 = e3.parentScopes, r3 = t3.parentScopes, i2 = null === n2 ? 0 : n2.length, o3 = null === r3 ? 0 : r3.length;
            if (i2 === o3)
              for (var s3 = 0; s3 < i2; s3++) {
                var a3 = n2[s3].length, c3 = r3[s3].length;
                if (a3 !== c3)
                  return c3 - a3;
              }
            return o3 - i2;
          }
          return t3.scopeDepth - e3.scopeDepth;
        }, e2.prototype.match = function(t3) {
          if ("" === t3)
            return e2._sortBySpecificity([].concat(this._mainRule).concat(this._rulesWithParentScopes));
          var n2, r3, i2 = t3.indexOf(".");
          return -1 === i2 ? (n2 = t3, r3 = "") : (n2 = t3.substring(0, i2), r3 = t3.substring(i2 + 1)), this._children.hasOwnProperty(n2) ? this._children[n2].match(r3) : e2._sortBySpecificity([].concat(this._mainRule).concat(this._rulesWithParentScopes));
        }, e2.prototype.insert = function(t3, n2, r3, i2, o3, s3) {
          if ("" !== n2) {
            var a3, c3, u3, l3 = n2.indexOf(".");
            -1 === l3 ? (a3 = n2, c3 = "") : (a3 = n2.substring(0, l3), c3 = n2.substring(l3 + 1)), this._children.hasOwnProperty(a3) ? u3 = this._children[a3] : (u3 = new e2(this._mainRule.clone(), h2.cloneArr(this._rulesWithParentScopes)), this._children[a3] = u3), u3.insert(t3 + 1, c3, r3, i2, o3, s3);
          } else
            this._doInsertHere(t3, r3, i2, o3, s3);
        }, e2.prototype._doInsertHere = function(e3, t3, n2, r3, i2) {
          if (null !== t3) {
            for (var o3 = 0, s3 = this._rulesWithParentScopes.length; o3 < s3; o3++) {
              var a3 = this._rulesWithParentScopes[o3];
              if (0 === l2(a3.parentScopes, t3))
                return void a3.acceptOverwrite(e3, n2, r3, i2);
            }
            -1 === n2 && (n2 = this._mainRule.fontStyle), 0 === r3 && (r3 = this._mainRule.foreground), 0 === i2 && (i2 = this._mainRule.background), this._rulesWithParentScopes.push(new h2(e3, t3, n2, r3, i2));
          } else
            this._mainRule.acceptOverwrite(e3, n2, r3, i2);
        }, e2;
      }();
      t2.ThemeTrieElement = p2;
    }]);
  });
})(main$1);
const languages = [
  {
    id: "abap",
    scopeName: "source.abap",
    path: "abap.tmLanguage.json",
    samplePath: "abap.sample"
  },
  {
    id: "actionscript-3",
    scopeName: "source.actionscript.3",
    path: "actionscript-3.tmLanguage.json",
    samplePath: "actionscript-3.sample"
  },
  {
    id: "ada",
    scopeName: "source.ada",
    path: "ada.tmLanguage.json",
    samplePath: "ada.sample"
  },
  {
    id: "apache",
    scopeName: "source.apacheconf",
    path: "apache.tmLanguage.json"
  },
  {
    id: "apex",
    scopeName: "source.apex",
    path: "apex.tmLanguage.json",
    samplePath: "apex.sample"
  },
  {
    id: "apl",
    scopeName: "source.apl",
    path: "apl.tmLanguage.json",
    embeddedLangs: ["html", "xml", "css", "javascript", "json"]
  },
  {
    id: "applescript",
    scopeName: "source.applescript",
    path: "applescript.tmLanguage.json",
    samplePath: "applescript.sample"
  },
  {
    id: "asm",
    scopeName: "source.asm.x86_64",
    path: "asm.tmLanguage.json",
    samplePath: "asm.sample"
  },
  {
    id: "astro",
    scopeName: "text.html.astro",
    path: "astro.tmLanguage.json",
    samplePath: "astro.sample",
    embeddedLangs: ["css", "sass", "scss", "tsx"]
  },
  {
    id: "awk",
    scopeName: "source.awk",
    path: "awk.tmLanguage.json",
    samplePath: "awk.sample"
  },
  {
    id: "ballerina",
    scopeName: "source.ballerina",
    path: "ballerina.tmLanguage.json",
    samplePath: "ballerina.sample"
  },
  {
    id: "bat",
    scopeName: "source.batchfile",
    path: "bat.tmLanguage.json",
    samplePath: "bat.sample",
    aliases: ["batch"]
  },
  {
    id: "c",
    scopeName: "source.c",
    path: "c.tmLanguage.json",
    samplePath: "c.sample"
  },
  {
    id: "clojure",
    scopeName: "source.clojure",
    path: "clojure.tmLanguage.json",
    samplePath: "clojure.sample",
    aliases: ["clj"]
  },
  {
    id: "cobol",
    scopeName: "source.cobol",
    path: "cobol.tmLanguage.json",
    samplePath: "cobol.sample",
    embeddedLangs: ["sql", "html", "java"]
  },
  {
    id: "coffee",
    scopeName: "source.coffee",
    path: "coffee.tmLanguage.json",
    samplePath: "coffee.sample",
    embeddedLangs: ["javascript"]
  },
  {
    id: "cpp",
    scopeName: "source.cpp",
    path: "cpp.tmLanguage.json",
    samplePath: "cpp.sample",
    embeddedLangs: ["sql"]
  },
  {
    id: "crystal",
    scopeName: "source.crystal",
    path: "crystal.tmLanguage.json",
    samplePath: "crystal.sample",
    embeddedLangs: ["html", "sql", "css", "c", "javascript", "shellscript"]
  },
  {
    id: "csharp",
    scopeName: "source.cs",
    path: "csharp.tmLanguage.json",
    samplePath: "csharp.sample",
    aliases: ["c#"]
  },
  {
    id: "css",
    scopeName: "source.css",
    path: "css.tmLanguage.json",
    samplePath: "css.sample"
  },
  {
    id: "d",
    scopeName: "source.d",
    path: "d.tmLanguage.json",
    samplePath: "d.sample"
  },
  {
    id: "dart",
    scopeName: "source.dart",
    path: "dart.tmLanguage.json",
    samplePath: "dart.sample"
  },
  {
    id: "diff",
    scopeName: "source.diff",
    path: "diff.tmLanguage.json",
    samplePath: "diff.sample"
  },
  {
    id: "docker",
    scopeName: "source.dockerfile",
    path: "docker.tmLanguage.json",
    samplePath: "docker.sample"
  },
  {
    id: "dream-maker",
    scopeName: "source.dm",
    path: "dream-maker.tmLanguage.json"
  },
  {
    id: "elixir",
    scopeName: "source.elixir",
    path: "elixir.tmLanguage.json",
    samplePath: "elixir.sample",
    embeddedLangs: ["html"]
  },
  {
    id: "elm",
    scopeName: "source.elm",
    path: "elm.tmLanguage.json",
    samplePath: "elm.sample"
  },
  {
    id: "erb",
    scopeName: "text.html.erb",
    path: "erb.tmLanguage.json",
    samplePath: "erb.sample",
    embeddedLangs: ["html", "ruby"]
  },
  {
    id: "erlang",
    scopeName: "source.erlang",
    path: "erlang.tmLanguage.json",
    samplePath: "erlang.sample"
  },
  {
    id: "fish",
    scopeName: "source.fish",
    path: "fish.tmLanguage.json",
    samplePath: "fish.sample"
  },
  {
    id: "fsharp",
    scopeName: "source.fsharp",
    path: "fsharp.tmLanguage.json",
    samplePath: "fsharp.sample",
    aliases: ["f#"],
    embeddedLangs: ["markdown"]
  },
  {
    id: "gherkin",
    scopeName: "text.gherkin.feature",
    path: "gherkin.tmLanguage.json"
  },
  {
    id: "git-commit",
    scopeName: "text.git-commit",
    path: "git-commit.tmLanguage.json",
    embeddedLangs: ["diff"]
  },
  {
    id: "git-rebase",
    scopeName: "text.git-rebase",
    path: "git-rebase.tmLanguage.json",
    embeddedLangs: ["shellscript"]
  },
  {
    id: "gnuplot",
    scopeName: "source.gnuplot",
    path: "gnuplot.tmLanguage.json"
  },
  {
    id: "go",
    scopeName: "source.go",
    path: "go.tmLanguage.json",
    samplePath: "go.sample"
  },
  {
    id: "graphql",
    scopeName: "source.graphql",
    path: "graphql.tmLanguage.json",
    embeddedLangs: ["javascript", "typescript", "jsx", "tsx"]
  },
  {
    id: "groovy",
    scopeName: "source.groovy",
    path: "groovy.tmLanguage.json"
  },
  {
    id: "hack",
    scopeName: "source.hack",
    path: "hack.tmLanguage.json",
    embeddedLangs: ["html", "sql"]
  },
  {
    id: "haml",
    scopeName: "text.haml",
    path: "haml.tmLanguage.json",
    embeddedLangs: ["ruby", "javascript", "sass", "coffee", "markdown", "css"]
  },
  {
    id: "handlebars",
    scopeName: "text.html.handlebars",
    path: "handlebars.tmLanguage.json",
    aliases: ["hbs"],
    embeddedLangs: ["html", "css", "javascript", "yaml"]
  },
  {
    id: "haskell",
    scopeName: "source.haskell",
    path: "haskell.tmLanguage.json"
  },
  {
    id: "hcl",
    scopeName: "source.hcl",
    path: "hcl.tmLanguage.json"
  },
  {
    id: "hlsl",
    scopeName: "source.hlsl",
    path: "hlsl.tmLanguage.json"
  },
  {
    id: "html",
    scopeName: "text.html.basic",
    path: "html.tmLanguage.json",
    samplePath: "html.sample",
    embeddedLangs: ["javascript", "css"]
  },
  {
    id: "ini",
    scopeName: "source.ini",
    path: "ini.tmLanguage.json"
  },
  {
    id: "java",
    scopeName: "source.java",
    path: "java.tmLanguage.json",
    samplePath: "java.sample"
  },
  {
    id: "javascript",
    scopeName: "source.js",
    path: "javascript.tmLanguage.json",
    samplePath: "javascript.sample",
    aliases: ["js"]
  },
  {
    id: "jinja-html",
    scopeName: "text.html.jinja",
    path: "jinja-html.tmLanguage.json",
    embeddedLangs: ["html"]
  },
  {
    id: "json",
    scopeName: "source.json",
    path: "json.tmLanguage.json"
  },
  {
    id: "jsonc",
    scopeName: "source.json.comments",
    path: "jsonc.tmLanguage.json"
  },
  {
    id: "jsonnet",
    scopeName: "source.jsonnet",
    path: "jsonnet.tmLanguage.json"
  },
  {
    id: "jssm",
    scopeName: "source.jssm",
    path: "jssm.tmLanguage.json",
    samplePath: "jssm.sample",
    aliases: ["fsl"]
  },
  {
    id: "jsx",
    scopeName: "source.js.jsx",
    path: "jsx.tmLanguage.json"
  },
  {
    id: "julia",
    scopeName: "source.julia",
    path: "julia.tmLanguage.json",
    embeddedLangs: ["cpp", "python", "javascript", "r", "sql"]
  },
  {
    id: "jupyter",
    scopeName: "source.jupyter",
    path: "jupyter.tmLanguage.json",
    embeddedLangs: ["json"]
  },
  {
    id: "kotlin",
    scopeName: "source.kotlin",
    path: "kotlin.tmLanguage.json"
  },
  {
    id: "latex",
    scopeName: "text.tex.latex",
    path: "latex.tmLanguage.json",
    embeddedLangs: ["tex", "css", "html", "java", "javascript", "typescript", "lua", "python", "julia", "ruby", "xml", "yaml", "cpp", "haskell", "scala", "gnuplot"]
  },
  {
    id: "less",
    scopeName: "source.css.less",
    path: "less.tmLanguage.json",
    embeddedLangs: ["css"]
  },
  {
    id: "lisp",
    scopeName: "source.lisp",
    path: "lisp.tmLanguage.json"
  },
  {
    id: "logo",
    scopeName: "source.logo",
    path: "logo.tmLanguage.json"
  },
  {
    id: "lua",
    scopeName: "source.lua",
    path: "lua.tmLanguage.json",
    embeddedLangs: ["c"]
  },
  {
    id: "make",
    scopeName: "source.makefile",
    path: "make.tmLanguage.json",
    aliases: ["makefile"]
  },
  {
    id: "markdown",
    scopeName: "text.html.markdown",
    path: "markdown.tmLanguage.json",
    aliases: ["md"],
    embeddedLangs: ["css", "html", "ini", "java", "lua", "make", "perl", "r", "ruby", "php", "sql", "vb", "xml", "xsl", "yaml", "bat", "clojure", "coffee", "c", "cpp", "diff", "docker", "git-commit", "git-rebase", "go", "groovy", "pug", "javascript", "json", "jsonc", "less", "objective-c", "swift", "scss", "raku", "powershell", "python", "rust", "scala", "shellscript", "typescript", "tsx", "csharp", "fsharp", "dart", "handlebars", "erlang", "elixir"]
  },
  {
    id: "matlab",
    scopeName: "source.matlab",
    path: "matlab.tmLanguage.json"
  },
  {
    id: "mdx",
    scopeName: "text.html.markdown.jsx",
    path: "mdx.tmLanguage.json",
    embeddedLangs: ["jsx", "markdown"]
  },
  {
    id: "nginx",
    scopeName: "source.nginx",
    path: "nginx.tmLanguage.json"
  },
  {
    id: "nim",
    scopeName: "source.nim",
    path: "nim.tmLanguage.json",
    embeddedLangs: ["c", "html", "xml", "javascript", "css", "markdown"]
  },
  {
    id: "nix",
    scopeName: "source.nix",
    path: "nix.tmLanguage.json"
  },
  {
    id: "objective-c",
    scopeName: "source.objc",
    path: "objective-c.tmLanguage.json",
    aliases: ["objc"]
  },
  {
    id: "objective-cpp",
    scopeName: "source.objcpp",
    path: "objective-cpp.tmLanguage.json"
  },
  {
    id: "ocaml",
    scopeName: "source.ocaml",
    path: "ocaml.tmLanguage.json"
  },
  {
    id: "pascal",
    scopeName: "source.pascal",
    path: "pascal.tmLanguage.json"
  },
  {
    id: "perl",
    scopeName: "source.perl",
    path: "perl.tmLanguage.json",
    embeddedLangs: ["html", "xml", "css", "javascript", "sql"]
  },
  {
    id: "php",
    scopeName: "source.php",
    path: "php.tmLanguage.json",
    embeddedLangs: ["html", "xml", "sql", "javascript", "json", "css"]
  },
  {
    id: "plsql",
    scopeName: "source.plsql.oracle",
    path: "plsql.tmLanguage.json"
  },
  {
    id: "postcss",
    scopeName: "source.css.postcss",
    path: "postcss.tmLanguage.json"
  },
  {
    id: "powershell",
    scopeName: "source.powershell",
    path: "powershell.tmLanguage.json",
    aliases: ["ps", "ps1"]
  },
  {
    id: "prisma",
    scopeName: "source.prisma",
    path: "prisma.tmLanguage.json",
    samplePath: "prisma.sample"
  },
  {
    id: "prolog",
    scopeName: "source.prolog",
    path: "prolog.tmLanguage.json"
  },
  {
    id: "pug",
    scopeName: "text.pug",
    path: "pug.tmLanguage.json",
    aliases: ["jade"],
    embeddedLangs: ["javascript", "css", "sass", "stylus", "coffee", "html"]
  },
  {
    id: "puppet",
    scopeName: "source.puppet",
    path: "puppet.tmLanguage.json"
  },
  {
    id: "purescript",
    scopeName: "source.purescript",
    path: "purescript.tmLanguage.json"
  },
  {
    id: "python",
    scopeName: "source.python",
    path: "python.tmLanguage.json",
    samplePath: "python.sample",
    aliases: ["py"]
  },
  {
    id: "r",
    scopeName: "source.r",
    path: "r.tmLanguage.json"
  },
  {
    id: "raku",
    scopeName: "source.perl.6",
    path: "raku.tmLanguage.json",
    aliases: ["perl6"]
  },
  {
    id: "razor",
    scopeName: "text.aspnetcorerazor",
    path: "razor.tmLanguage.json",
    embeddedLangs: ["html", "csharp"]
  },
  {
    id: "riscv",
    scopeName: "source.riscv",
    path: "riscv.tmLanguage.json"
  },
  {
    id: "ruby",
    scopeName: "source.ruby",
    path: "ruby.tmLanguage.json",
    samplePath: "ruby.sample",
    aliases: ["rb"],
    embeddedLangs: ["html", "xml", "sql", "css", "c", "javascript", "shellscript", "lua"]
  },
  {
    id: "rust",
    scopeName: "source.rust",
    path: "rust.tmLanguage.json"
  },
  {
    id: "sas",
    scopeName: "source.sas",
    path: "sas.tmLanguage.json",
    embeddedLangs: ["sql"]
  },
  {
    id: "sass",
    scopeName: "source.sass",
    path: "sass.tmLanguage.json"
  },
  {
    id: "scala",
    scopeName: "source.scala",
    path: "scala.tmLanguage.json"
  },
  {
    id: "scheme",
    scopeName: "source.scheme",
    path: "scheme.tmLanguage.json"
  },
  {
    id: "scss",
    scopeName: "source.css.scss",
    path: "scss.tmLanguage.json",
    embeddedLangs: ["css"]
  },
  {
    id: "shaderlab",
    scopeName: "source.shaderlab",
    path: "shaderlab.tmLanguage.json",
    aliases: ["shader"],
    embeddedLangs: ["hlsl"]
  },
  {
    id: "shellscript",
    scopeName: "source.shell",
    path: "shellscript.tmLanguage.json",
    aliases: ["shell", "bash", "sh", "zsh"],
    embeddedLangs: ["ruby", "python", "applescript", "html", "markdown"]
  },
  {
    id: "smalltalk",
    scopeName: "source.smalltalk",
    path: "smalltalk.tmLanguage.json"
  },
  {
    id: "solidity",
    scopeName: "source.solidity",
    path: "solidity.tmLanguage.json"
  },
  {
    id: "sparql",
    scopeName: "source.sparql",
    path: "sparql.tmLanguage.json",
    samplePath: "sparql.sample",
    embeddedLangs: ["turtle"]
  },
  {
    id: "sql",
    scopeName: "source.sql",
    path: "sql.tmLanguage.json"
  },
  {
    id: "ssh-config",
    scopeName: "source.ssh-config",
    path: "ssh-config.tmLanguage.json"
  },
  {
    id: "stylus",
    scopeName: "source.stylus",
    path: "stylus.tmLanguage.json",
    aliases: ["styl"]
  },
  {
    id: "svelte",
    scopeName: "source.svelte",
    path: "svelte.tmLanguage.json",
    embeddedLangs: ["javascript", "typescript", "coffee", "stylus", "sass", "css", "scss", "less", "postcss", "pug", "markdown"]
  },
  {
    id: "swift",
    scopeName: "source.swift",
    path: "swift.tmLanguage.json"
  },
  {
    id: "system-verilog",
    scopeName: "source.systemverilog",
    path: "system-verilog.tmLanguage.json"
  },
  {
    id: "tasl",
    scopeName: "source.tasl",
    path: "tasl.tmLanguage.json",
    samplePath: "tasl.sample"
  },
  {
    id: "tcl",
    scopeName: "source.tcl",
    path: "tcl.tmLanguage.json"
  },
  {
    id: "tex",
    scopeName: "text.tex",
    path: "tex.tmLanguage.json",
    embeddedLangs: ["r"]
  },
  {
    id: "toml",
    scopeName: "source.toml",
    path: "toml.tmLanguage.json"
  },
  {
    id: "tsx",
    scopeName: "source.tsx",
    path: "tsx.tmLanguage.json",
    samplePath: "tsx.sample"
  },
  {
    id: "turtle",
    scopeName: "source.turtle",
    path: "turtle.tmLanguage.json",
    samplePath: "turtle.sample"
  },
  {
    id: "twig",
    scopeName: "text.html.twig",
    path: "twig.tmLanguage.json",
    embeddedLangs: ["css", "javascript", "php", "python", "ruby"]
  },
  {
    id: "typescript",
    scopeName: "source.ts",
    path: "typescript.tmLanguage.json",
    aliases: ["ts"]
  },
  {
    id: "vb",
    scopeName: "source.asp.vb.net",
    path: "vb.tmLanguage.json",
    aliases: ["cmd"]
  },
  {
    id: "verilog",
    scopeName: "source.verilog",
    path: "verilog.tmLanguage.json"
  },
  {
    id: "vhdl",
    scopeName: "source.vhdl",
    path: "vhdl.tmLanguage.json"
  },
  {
    id: "viml",
    scopeName: "source.viml",
    path: "viml.tmLanguage.json"
  },
  {
    id: "vue-html",
    scopeName: "text.html.vue-html",
    path: "vue-html.tmLanguage.json",
    embeddedLangs: ["vue", "javascript"]
  },
  {
    id: "vue",
    scopeName: "source.vue",
    path: "vue.tmLanguage.json",
    embeddedLangs: ["json", "markdown", "pug", "haml", "vue-html", "sass", "scss", "less", "stylus", "postcss", "css", "typescript", "coffee", "javascript"]
  },
  {
    id: "wasm",
    scopeName: "source.wat",
    path: "wasm.tmLanguage.json"
  },
  {
    id: "wenyan",
    scopeName: "source.wenyan",
    path: "wenyan.tmLanguage.json",
    aliases: ["æ–‡è¨€"]
  },
  {
    id: "xml",
    scopeName: "text.xml",
    path: "xml.tmLanguage.json",
    embeddedLangs: ["java"]
  },
  {
    id: "xsl",
    scopeName: "text.xml.xsl",
    path: "xsl.tmLanguage.json",
    embeddedLangs: ["xml"]
  },
  {
    id: "yaml",
    scopeName: "source.yaml",
    path: "yaml.tmLanguage.json"
  }
];
var FontStyle;
(function(FontStyle2) {
  FontStyle2[FontStyle2["NotSet"] = -1] = "NotSet";
  FontStyle2[FontStyle2["None"] = 0] = "None";
  FontStyle2[FontStyle2["Italic"] = 1] = "Italic";
  FontStyle2[FontStyle2["Bold"] = 2] = "Bold";
  FontStyle2[FontStyle2["Underline"] = 4] = "Underline";
})(FontStyle || (FontStyle = {}));
class StackElementMetadata {
  static toBinaryStr(metadata) {
    let r2 = metadata.toString(2);
    while (r2.length < 32) {
      r2 = "0" + r2;
    }
    return r2;
  }
  static printMetadata(metadata) {
    let languageId = StackElementMetadata.getLanguageId(metadata);
    let tokenType = StackElementMetadata.getTokenType(metadata);
    let fontStyle = StackElementMetadata.getFontStyle(metadata);
    let foreground = StackElementMetadata.getForeground(metadata);
    let background = StackElementMetadata.getBackground(metadata);
    console.log({
      languageId,
      tokenType,
      fontStyle,
      foreground,
      background
    });
  }
  static getLanguageId(metadata) {
    return (metadata & 255) >>> 0;
  }
  static getTokenType(metadata) {
    return (metadata & 1792) >>> 8;
  }
  static getFontStyle(metadata) {
    return (metadata & 14336) >>> 11;
  }
  static getForeground(metadata) {
    return (metadata & 8372224) >>> 14;
  }
  static getBackground(metadata) {
    return (metadata & 4286578688) >>> 23;
  }
  static set(metadata, languageId, tokenType, fontStyle, foreground, background) {
    let _languageId = StackElementMetadata.getLanguageId(metadata);
    let _tokenType = StackElementMetadata.getTokenType(metadata);
    let _fontStyle = StackElementMetadata.getFontStyle(metadata);
    let _foreground = StackElementMetadata.getForeground(metadata);
    let _background = StackElementMetadata.getBackground(metadata);
    if (languageId !== 0) {
      _languageId = languageId;
    }
    if (tokenType !== 0) {
      _tokenType = tokenType === 8 ? 0 : tokenType;
    }
    if (fontStyle !== FontStyle.NotSet) {
      _fontStyle = fontStyle;
    }
    if (foreground !== 0) {
      _foreground = foreground;
    }
    if (background !== 0) {
      _background = background;
    }
    return (_languageId << 0 | _tokenType << 8 | _fontStyle << 11 | _foreground << 14 | _background << 23) >>> 0;
  }
}
function trimEndSlash(str) {
  if (str.endsWith("/") || str.endsWith("\\"))
    return str.slice(0, -1);
  return str;
}
function trimStartDot(str) {
  if (str.startsWith("./"))
    return str.slice(2);
  return str;
}
function dirname(str) {
  const parts2 = str.split(/[\/\\]/g);
  return parts2[parts2.length - 2];
}
function join(...parts2) {
  return parts2.map(trimEndSlash).map(trimStartDot).join("/");
}
function createScanner(text3, ignoreTrivia) {
  if (ignoreTrivia === void 0) {
    ignoreTrivia = false;
  }
  var len = text3.length;
  var pos = 0, value = "", tokenOffset = 0, token2 = 16, lineNumber = 0, lineStartOffset = 0, tokenLineStartOffset = 0, prevTokenLineStartOffset = 0, scanError = 0;
  function scanHexDigits(count, exact) {
    var digits = 0;
    var value2 = 0;
    while (digits < count || !exact) {
      var ch = text3.charCodeAt(pos);
      if (ch >= 48 && ch <= 57) {
        value2 = value2 * 16 + ch - 48;
      } else if (ch >= 65 && ch <= 70) {
        value2 = value2 * 16 + ch - 65 + 10;
      } else if (ch >= 97 && ch <= 102) {
        value2 = value2 * 16 + ch - 97 + 10;
      } else {
        break;
      }
      pos++;
      digits++;
    }
    if (digits < count) {
      value2 = -1;
    }
    return value2;
  }
  function setPosition(newPosition) {
    pos = newPosition;
    value = "";
    tokenOffset = 0;
    token2 = 16;
    scanError = 0;
  }
  function scanNumber() {
    var start2 = pos;
    if (text3.charCodeAt(pos) === 48) {
      pos++;
    } else {
      pos++;
      while (pos < text3.length && isDigit(text3.charCodeAt(pos))) {
        pos++;
      }
    }
    if (pos < text3.length && text3.charCodeAt(pos) === 46) {
      pos++;
      if (pos < text3.length && isDigit(text3.charCodeAt(pos))) {
        pos++;
        while (pos < text3.length && isDigit(text3.charCodeAt(pos))) {
          pos++;
        }
      } else {
        scanError = 3;
        return text3.substring(start2, pos);
      }
    }
    var end2 = pos;
    if (pos < text3.length && (text3.charCodeAt(pos) === 69 || text3.charCodeAt(pos) === 101)) {
      pos++;
      if (pos < text3.length && text3.charCodeAt(pos) === 43 || text3.charCodeAt(pos) === 45) {
        pos++;
      }
      if (pos < text3.length && isDigit(text3.charCodeAt(pos))) {
        pos++;
        while (pos < text3.length && isDigit(text3.charCodeAt(pos))) {
          pos++;
        }
        end2 = pos;
      } else {
        scanError = 3;
      }
    }
    return text3.substring(start2, end2);
  }
  function scanString() {
    var result = "", start2 = pos;
    while (true) {
      if (pos >= len) {
        result += text3.substring(start2, pos);
        scanError = 2;
        break;
      }
      var ch = text3.charCodeAt(pos);
      if (ch === 34) {
        result += text3.substring(start2, pos);
        pos++;
        break;
      }
      if (ch === 92) {
        result += text3.substring(start2, pos);
        pos++;
        if (pos >= len) {
          scanError = 2;
          break;
        }
        var ch2 = text3.charCodeAt(pos++);
        switch (ch2) {
          case 34:
            result += '"';
            break;
          case 92:
            result += "\\";
            break;
          case 47:
            result += "/";
            break;
          case 98:
            result += "\b";
            break;
          case 102:
            result += "\f";
            break;
          case 110:
            result += "\n";
            break;
          case 114:
            result += "\r";
            break;
          case 116:
            result += "	";
            break;
          case 117:
            var ch3 = scanHexDigits(4, true);
            if (ch3 >= 0) {
              result += String.fromCharCode(ch3);
            } else {
              scanError = 4;
            }
            break;
          default:
            scanError = 5;
        }
        start2 = pos;
        continue;
      }
      if (ch >= 0 && ch <= 31) {
        if (isLineBreak(ch)) {
          result += text3.substring(start2, pos);
          scanError = 2;
          break;
        } else {
          scanError = 6;
        }
      }
      pos++;
    }
    return result;
  }
  function scanNext() {
    value = "";
    scanError = 0;
    tokenOffset = pos;
    lineStartOffset = lineNumber;
    prevTokenLineStartOffset = tokenLineStartOffset;
    if (pos >= len) {
      tokenOffset = len;
      return token2 = 17;
    }
    var code3 = text3.charCodeAt(pos);
    if (isWhiteSpace$2(code3)) {
      do {
        pos++;
        value += String.fromCharCode(code3);
        code3 = text3.charCodeAt(pos);
      } while (isWhiteSpace$2(code3));
      return token2 = 15;
    }
    if (isLineBreak(code3)) {
      pos++;
      value += String.fromCharCode(code3);
      if (code3 === 13 && text3.charCodeAt(pos) === 10) {
        pos++;
        value += "\n";
      }
      lineNumber++;
      tokenLineStartOffset = pos;
      return token2 = 14;
    }
    switch (code3) {
      case 123:
        pos++;
        return token2 = 1;
      case 125:
        pos++;
        return token2 = 2;
      case 91:
        pos++;
        return token2 = 3;
      case 93:
        pos++;
        return token2 = 4;
      case 58:
        pos++;
        return token2 = 6;
      case 44:
        pos++;
        return token2 = 5;
      case 34:
        pos++;
        value = scanString();
        return token2 = 10;
      case 47:
        var start2 = pos - 1;
        if (text3.charCodeAt(pos + 1) === 47) {
          pos += 2;
          while (pos < len) {
            if (isLineBreak(text3.charCodeAt(pos))) {
              break;
            }
            pos++;
          }
          value = text3.substring(start2, pos);
          return token2 = 12;
        }
        if (text3.charCodeAt(pos + 1) === 42) {
          pos += 2;
          var safeLength = len - 1;
          var commentClosed = false;
          while (pos < safeLength) {
            var ch = text3.charCodeAt(pos);
            if (ch === 42 && text3.charCodeAt(pos + 1) === 47) {
              pos += 2;
              commentClosed = true;
              break;
            }
            pos++;
            if (isLineBreak(ch)) {
              if (ch === 13 && text3.charCodeAt(pos) === 10) {
                pos++;
              }
              lineNumber++;
              tokenLineStartOffset = pos;
            }
          }
          if (!commentClosed) {
            pos++;
            scanError = 1;
          }
          value = text3.substring(start2, pos);
          return token2 = 13;
        }
        value += String.fromCharCode(code3);
        pos++;
        return token2 = 16;
      case 45:
        value += String.fromCharCode(code3);
        pos++;
        if (pos === len || !isDigit(text3.charCodeAt(pos))) {
          return token2 = 16;
        }
      case 48:
      case 49:
      case 50:
      case 51:
      case 52:
      case 53:
      case 54:
      case 55:
      case 56:
      case 57:
        value += scanNumber();
        return token2 = 11;
      default:
        while (pos < len && isUnknownContentCharacter(code3)) {
          pos++;
          code3 = text3.charCodeAt(pos);
        }
        if (tokenOffset !== pos) {
          value = text3.substring(tokenOffset, pos);
          switch (value) {
            case "true":
              return token2 = 8;
            case "false":
              return token2 = 9;
            case "null":
              return token2 = 7;
          }
          return token2 = 16;
        }
        value += String.fromCharCode(code3);
        pos++;
        return token2 = 16;
    }
  }
  function isUnknownContentCharacter(code3) {
    if (isWhiteSpace$2(code3) || isLineBreak(code3)) {
      return false;
    }
    switch (code3) {
      case 125:
      case 93:
      case 123:
      case 91:
      case 34:
      case 58:
      case 44:
      case 47:
        return false;
    }
    return true;
  }
  function scanNextNonTrivia() {
    var result;
    do {
      result = scanNext();
    } while (result >= 12 && result <= 15);
    return result;
  }
  return {
    setPosition,
    getPosition: function() {
      return pos;
    },
    scan: ignoreTrivia ? scanNextNonTrivia : scanNext,
    getToken: function() {
      return token2;
    },
    getTokenValue: function() {
      return value;
    },
    getTokenOffset: function() {
      return tokenOffset;
    },
    getTokenLength: function() {
      return pos - tokenOffset;
    },
    getTokenStartLine: function() {
      return lineStartOffset;
    },
    getTokenStartCharacter: function() {
      return tokenOffset - prevTokenLineStartOffset;
    },
    getTokenError: function() {
      return scanError;
    }
  };
}
function isWhiteSpace$2(ch) {
  return ch === 32 || ch === 9 || ch === 11 || ch === 12 || ch === 160 || ch === 5760 || ch >= 8192 && ch <= 8203 || ch === 8239 || ch === 8287 || ch === 12288 || ch === 65279;
}
function isLineBreak(ch) {
  return ch === 10 || ch === 13 || ch === 8232 || ch === 8233;
}
function isDigit(ch) {
  return ch >= 48 && ch <= 57;
}
var ParseOptions;
(function(ParseOptions2) {
  ParseOptions2.DEFAULT = {
    allowTrailingComma: false
  };
})(ParseOptions || (ParseOptions = {}));
function parse$1(text3, errors2, options2) {
  if (errors2 === void 0) {
    errors2 = [];
  }
  if (options2 === void 0) {
    options2 = ParseOptions.DEFAULT;
  }
  var currentProperty = null;
  var currentParent = [];
  var previousParents = [];
  function onValue(value) {
    if (Array.isArray(currentParent)) {
      currentParent.push(value);
    } else if (currentProperty !== null) {
      currentParent[currentProperty] = value;
    }
  }
  var visitor = {
    onObjectBegin: function() {
      var object = {};
      onValue(object);
      previousParents.push(currentParent);
      currentParent = object;
      currentProperty = null;
    },
    onObjectProperty: function(name2) {
      currentProperty = name2;
    },
    onObjectEnd: function() {
      currentParent = previousParents.pop();
    },
    onArrayBegin: function() {
      var array = [];
      onValue(array);
      previousParents.push(currentParent);
      currentParent = array;
      currentProperty = null;
    },
    onArrayEnd: function() {
      currentParent = previousParents.pop();
    },
    onLiteralValue: onValue,
    onError: function(error2, offset2, length2) {
      errors2.push({ error: error2, offset: offset2, length: length2 });
    }
  };
  visit(text3, visitor, options2);
  return currentParent[0];
}
function visit(text3, visitor, options2) {
  if (options2 === void 0) {
    options2 = ParseOptions.DEFAULT;
  }
  var _scanner = createScanner(text3, false);
  function toNoArgVisit(visitFunction) {
    return visitFunction ? function() {
      return visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter());
    } : function() {
      return true;
    };
  }
  function toOneArgVisit(visitFunction) {
    return visitFunction ? function(arg) {
      return visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter());
    } : function() {
      return true;
    };
  }
  var onObjectBegin = toNoArgVisit(visitor.onObjectBegin), onObjectProperty = toOneArgVisit(visitor.onObjectProperty), onObjectEnd = toNoArgVisit(visitor.onObjectEnd), onArrayBegin = toNoArgVisit(visitor.onArrayBegin), onArrayEnd = toNoArgVisit(visitor.onArrayEnd), onLiteralValue = toOneArgVisit(visitor.onLiteralValue), onSeparator = toOneArgVisit(visitor.onSeparator), onComment = toNoArgVisit(visitor.onComment), onError = toOneArgVisit(visitor.onError);
  var disallowComments = options2 && options2.disallowComments;
  var allowTrailingComma = options2 && options2.allowTrailingComma;
  function scanNext() {
    while (true) {
      var token2 = _scanner.scan();
      switch (_scanner.getTokenError()) {
        case 4:
          handleError2(
            14
            /* InvalidUnicode */
          );
          break;
        case 5:
          handleError2(
            15
            /* InvalidEscapeCharacter */
          );
          break;
        case 3:
          handleError2(
            13
            /* UnexpectedEndOfNumber */
          );
          break;
        case 1:
          if (!disallowComments) {
            handleError2(
              11
              /* UnexpectedEndOfComment */
            );
          }
          break;
        case 2:
          handleError2(
            12
            /* UnexpectedEndOfString */
          );
          break;
        case 6:
          handleError2(
            16
            /* InvalidCharacter */
          );
          break;
      }
      switch (token2) {
        case 12:
        case 13:
          if (disallowComments) {
            handleError2(
              10
              /* InvalidCommentToken */
            );
          } else {
            onComment();
          }
          break;
        case 16:
          handleError2(
            1
            /* InvalidSymbol */
          );
          break;
        case 15:
        case 14:
          break;
        default:
          return token2;
      }
    }
  }
  function handleError2(error2, skipUntilAfter, skipUntil) {
    if (skipUntilAfter === void 0) {
      skipUntilAfter = [];
    }
    if (skipUntil === void 0) {
      skipUntil = [];
    }
    onError(error2);
    if (skipUntilAfter.length + skipUntil.length > 0) {
      var token2 = _scanner.getToken();
      while (token2 !== 17) {
        if (skipUntilAfter.indexOf(token2) !== -1) {
          scanNext();
          break;
        } else if (skipUntil.indexOf(token2) !== -1) {
          break;
        }
        token2 = scanNext();
      }
    }
  }
  function parseString(isValue) {
    var value = _scanner.getTokenValue();
    if (isValue) {
      onLiteralValue(value);
    } else {
      onObjectProperty(value);
    }
    scanNext();
    return true;
  }
  function parseLiteral() {
    switch (_scanner.getToken()) {
      case 11:
        var tokenValue = _scanner.getTokenValue();
        var value = Number(tokenValue);
        if (isNaN(value)) {
          handleError2(
            2
            /* InvalidNumberFormat */
          );
          value = 0;
        }
        onLiteralValue(value);
        break;
      case 7:
        onLiteralValue(null);
        break;
      case 8:
        onLiteralValue(true);
        break;
      case 9:
        onLiteralValue(false);
        break;
      default:
        return false;
    }
    scanNext();
    return true;
  }
  function parseProperty() {
    if (_scanner.getToken() !== 10) {
      handleError2(3, [], [
        2,
        5
        /* CommaToken */
      ]);
      return false;
    }
    parseString(false);
    if (_scanner.getToken() === 6) {
      onSeparator(":");
      scanNext();
      if (!parseValue2()) {
        handleError2(4, [], [
          2,
          5
          /* CommaToken */
        ]);
      }
    } else {
      handleError2(5, [], [
        2,
        5
        /* CommaToken */
      ]);
    }
    return true;
  }
  function parseObject() {
    onObjectBegin();
    scanNext();
    var needsComma = false;
    while (_scanner.getToken() !== 2 && _scanner.getToken() !== 17) {
      if (_scanner.getToken() === 5) {
        if (!needsComma) {
          handleError2(4, [], []);
        }
        onSeparator(",");
        scanNext();
        if (_scanner.getToken() === 2 && allowTrailingComma) {
          break;
        }
      } else if (needsComma) {
        handleError2(6, [], []);
      }
      if (!parseProperty()) {
        handleError2(4, [], [
          2,
          5
          /* CommaToken */
        ]);
      }
      needsComma = true;
    }
    onObjectEnd();
    if (_scanner.getToken() !== 2) {
      handleError2(7, [
        2
        /* CloseBraceToken */
      ], []);
    } else {
      scanNext();
    }
    return true;
  }
  function parseArray() {
    onArrayBegin();
    scanNext();
    var needsComma = false;
    while (_scanner.getToken() !== 4 && _scanner.getToken() !== 17) {
      if (_scanner.getToken() === 5) {
        if (!needsComma) {
          handleError2(4, [], []);
        }
        onSeparator(",");
        scanNext();
        if (_scanner.getToken() === 4 && allowTrailingComma) {
          break;
        }
      } else if (needsComma) {
        handleError2(6, [], []);
      }
      if (!parseValue2()) {
        handleError2(4, [], [
          4,
          5
          /* CommaToken */
        ]);
      }
      needsComma = true;
    }
    onArrayEnd();
    if (_scanner.getToken() !== 4) {
      handleError2(8, [
        4
        /* CloseBracketToken */
      ], []);
    } else {
      scanNext();
    }
    return true;
  }
  function parseValue2() {
    switch (_scanner.getToken()) {
      case 3:
        return parseArray();
      case 1:
        return parseObject();
      case 10:
        return parseString(true);
      default:
        return parseLiteral();
    }
  }
  scanNext();
  if (_scanner.getToken() === 17) {
    if (options2.allowEmptyContent) {
      return true;
    }
    handleError2(4, [], []);
    return false;
  }
  if (!parseValue2()) {
    handleError2(4, [], []);
    return false;
  }
  if (_scanner.getToken() !== 17) {
    handleError2(9, [], []);
  }
  return true;
}
var parse$2 = parse$1;
const isWebWorker = typeof self !== "undefined" && typeof self.WorkerGlobalScope !== "undefined";
const isBrowser = isWebWorker || typeof window !== "undefined" && typeof window.document !== "undefined" && typeof fetch !== "undefined";
let CDN_ROOT = "";
let ONIGASM_WASM = "";
function setOnigasmWASM(path) {
  ONIGASM_WASM = path;
}
let _onigasmPromise = null;
async function getOnigasm() {
  if (!_onigasmPromise) {
    let loader;
    if (isBrowser) {
      loader = loadWASM(ONIGASM_WASM || _resolvePath("dist/onigasm.wasm"));
    } else {
      const path = require("path");
      const onigasmPath = path.join(require.resolve("onigasm"), "../onigasm.wasm");
      const fs = require("fs");
      const wasmBin = fs.readFileSync(onigasmPath).buffer;
      loader = loadWASM(wasmBin);
    }
    _onigasmPromise = loader.then(() => {
      return {
        createOnigScanner(patterns2) {
          return new OnigScanner2(patterns2);
        },
        createOnigString(s2) {
          return new OnigString2(s2);
        }
      };
    });
  }
  return _onigasmPromise;
}
function _resolvePath(filepath) {
  if (isBrowser) {
    {
      console.warn("[Shiki] no CDN provider found, use `setCDN()` to specify the CDN for loading the resources before calling `getHighlighter()`");
    }
    return `${CDN_ROOT}${filepath}`;
  } else {
    const path = require("path");
    if (path.isAbsolute(filepath)) {
      return filepath;
    } else {
      return path.resolve(__dirname, "..", filepath);
    }
  }
}
async function _fetchAssets(filepath) {
  const path = _resolvePath(filepath);
  if (isBrowser) {
    return await fetch(path).then((r2) => r2.text());
  } else {
    const fs = require("fs");
    return await fs.promises.readFile(path, "utf-8");
  }
}
async function _fetchJSONAssets(filepath) {
  const errors2 = [];
  const rawTheme = parse$2(await _fetchAssets(filepath), errors2, {
    allowTrailingComma: true
  });
  if (errors2.length) {
    throw errors2[0];
  }
  return rawTheme;
}
async function fetchTheme(themePath) {
  let theme = await _fetchJSONAssets(themePath);
  const shikiTheme = toShikiTheme(theme);
  if (shikiTheme.include) {
    const includedTheme = await fetchTheme(join(dirname(themePath), shikiTheme.include));
    if (includedTheme.settings) {
      shikiTheme.settings = includedTheme.settings.concat(shikiTheme.settings);
    }
    if (includedTheme.bg && !shikiTheme.bg) {
      shikiTheme.bg = includedTheme.bg;
    }
    if (includedTheme.colors) {
      shikiTheme.colors = Object.assign(Object.assign({}, includedTheme.colors), shikiTheme.colors);
    }
    delete shikiTheme.include;
  }
  return shikiTheme;
}
async function fetchGrammar(filepath) {
  return await _fetchJSONAssets(filepath);
}
function repairTheme(theme) {
  if (!theme.settings)
    theme.settings = [];
  if (theme.settings[0] && theme.settings[0].settings && !theme.settings[0].scope) {
    return;
  }
  theme.settings.unshift({
    settings: {
      foreground: theme.fg,
      background: theme.bg
    }
  });
}
function toShikiTheme(rawTheme) {
  const type2 = rawTheme.type || "dark";
  const shikiTheme = Object.assign(Object.assign({ name: rawTheme.name, type: type2 }, rawTheme), getThemeDefaultColors(rawTheme));
  if (rawTheme.include) {
    shikiTheme.include = rawTheme.include;
  }
  if (rawTheme.tokenColors) {
    shikiTheme.settings = rawTheme.tokenColors;
    delete shikiTheme.tokenColors;
  }
  repairTheme(shikiTheme);
  return shikiTheme;
}
const VSCODE_FALLBACK_EDITOR_FG = { light: "#333333", dark: "#bbbbbb" };
const VSCODE_FALLBACK_EDITOR_BG = { light: "#fffffe", dark: "#1e1e1e" };
function getThemeDefaultColors(theme) {
  var _a3, _b2, _c, _d, _e, _f;
  let fg, bg;
  let settings = theme.settings ? theme.settings : theme.tokenColors;
  const globalSetting = settings ? settings.find((s2) => {
    return !s2.name && !s2.scope;
  }) : void 0;
  if ((_a3 = globalSetting === null || globalSetting === void 0 ? void 0 : globalSetting.settings) === null || _a3 === void 0 ? void 0 : _a3.foreground) {
    fg = globalSetting.settings.foreground;
  }
  if ((_b2 = globalSetting === null || globalSetting === void 0 ? void 0 : globalSetting.settings) === null || _b2 === void 0 ? void 0 : _b2.background) {
    bg = globalSetting.settings.background;
  }
  if (!fg && ((_d = (_c = theme) === null || _c === void 0 ? void 0 : _c.colors) === null || _d === void 0 ? void 0 : _d["editor.foreground"])) {
    fg = theme.colors["editor.foreground"];
  }
  if (!bg && ((_f = (_e = theme) === null || _e === void 0 ? void 0 : _e.colors) === null || _f === void 0 ? void 0 : _f["editor.background"])) {
    bg = theme.colors["editor.background"];
  }
  if (!fg) {
    fg = theme.type === "light" ? VSCODE_FALLBACK_EDITOR_FG.light : VSCODE_FALLBACK_EDITOR_FG.dark;
  }
  if (!bg) {
    bg = theme.type === "light" ? VSCODE_FALLBACK_EDITOR_BG.light : VSCODE_FALLBACK_EDITOR_BG.dark;
  }
  return {
    fg,
    bg
  };
}
class Resolver {
  constructor(onigLibPromise, onigLibName) {
    this.languagesPath = "languages/";
    this.languageMap = {};
    this.scopeToLangMap = {};
    this._onigLibPromise = onigLibPromise;
    this._onigLibName = onigLibName;
  }
  get onigLib() {
    return this._onigLibPromise;
  }
  getOnigLibName() {
    return this._onigLibName;
  }
  getLangRegistration(langIdOrAlias) {
    return this.languageMap[langIdOrAlias];
  }
  async loadGrammar(scopeName2) {
    const lang2 = this.scopeToLangMap[scopeName2];
    if (!lang2) {
      return null;
    }
    if (lang2.grammar) {
      return lang2.grammar;
    }
    const g = await fetchGrammar(languages.includes(lang2) ? `${this.languagesPath}${lang2.path}` : lang2.path);
    lang2.grammar = g;
    return g;
  }
  addLanguage(l2) {
    this.languageMap[l2.id] = l2;
    if (l2.aliases) {
      l2.aliases.forEach((a2) => {
        this.languageMap[a2] = l2;
      });
    }
    this.scopeToLangMap[l2.scopeName] = l2;
  }
}
function tokenizeWithTheme(theme, colorMap, fileContents, grammar, options2) {
  let lines = fileContents.split(/\r\n|\r|\n/);
  let ruleStack = mainExports.INITIAL;
  let actual = [];
  let final = [];
  for (let i = 0, len = lines.length; i < len; i++) {
    let line = lines[i];
    if (line === "") {
      actual = [];
      final.push([]);
      continue;
    }
    let resultWithScopes;
    let tokensWithScopes;
    let tokensWithScopesIndex;
    if (options2.includeExplanation) {
      resultWithScopes = grammar.tokenizeLine(line, ruleStack);
      tokensWithScopes = resultWithScopes.tokens;
      tokensWithScopesIndex = 0;
    }
    let result = grammar.tokenizeLine2(line, ruleStack);
    let tokensLength = result.tokens.length / 2;
    for (let j2 = 0; j2 < tokensLength; j2++) {
      let startIndex = result.tokens[2 * j2];
      let nextStartIndex = j2 + 1 < tokensLength ? result.tokens[2 * j2 + 2] : line.length;
      if (startIndex === nextStartIndex) {
        continue;
      }
      let metadata = result.tokens[2 * j2 + 1];
      let foreground = StackElementMetadata.getForeground(metadata);
      let foregroundColor = colorMap[foreground];
      let fontStyle = StackElementMetadata.getFontStyle(metadata);
      let explanation = [];
      if (options2.includeExplanation) {
        let offset2 = 0;
        while (startIndex + offset2 < nextStartIndex) {
          let tokenWithScopes = tokensWithScopes[tokensWithScopesIndex];
          let tokenWithScopesText = line.substring(tokenWithScopes.startIndex, tokenWithScopes.endIndex);
          offset2 += tokenWithScopesText.length;
          explanation.push({
            content: tokenWithScopesText,
            scopes: explainThemeScopes(theme, tokenWithScopes.scopes)
          });
          tokensWithScopesIndex++;
        }
      }
      actual.push({
        content: line.substring(startIndex, nextStartIndex),
        color: foregroundColor,
        fontStyle,
        explanation
      });
    }
    final.push(actual);
    actual = [];
    ruleStack = result.ruleStack;
  }
  return final;
}
function explainThemeScopes(theme, scopes) {
  let result = [];
  for (let i = 0, len = scopes.length; i < len; i++) {
    let parentScopes = scopes.slice(0, i);
    let scope = scopes[i];
    result[i] = {
      scopeName: scope,
      themeMatches: explainThemeScope(theme, scope, parentScopes)
    };
  }
  return result;
}
function matchesOne(selector, scope) {
  let selectorPrefix = selector + ".";
  if (selector === scope || scope.substring(0, selectorPrefix.length) === selectorPrefix) {
    return true;
  }
  return false;
}
function matches(selector, selectorParentScopes, scope, parentScopes) {
  if (!matchesOne(selector, scope)) {
    return false;
  }
  let selectorParentIndex = selectorParentScopes.length - 1;
  let parentIndex = parentScopes.length - 1;
  while (selectorParentIndex >= 0 && parentIndex >= 0) {
    if (matchesOne(selectorParentScopes[selectorParentIndex], parentScopes[parentIndex])) {
      selectorParentIndex--;
    }
    parentIndex--;
  }
  if (selectorParentIndex === -1) {
    return true;
  }
  return false;
}
function explainThemeScope(theme, scope, parentScopes) {
  let result = [], resultLen = 0;
  for (let i = 0, len = theme.settings.length; i < len; i++) {
    let setting = theme.settings[i];
    let selectors;
    if (typeof setting.scope === "string") {
      selectors = setting.scope.split(/,/).map((scope2) => scope2.trim());
    } else if (Array.isArray(setting.scope)) {
      selectors = setting.scope;
    } else {
      continue;
    }
    for (let j2 = 0, lenJ = selectors.length; j2 < lenJ; j2++) {
      let rawSelector = selectors[j2];
      let rawSelectorPieces = rawSelector.split(/ /);
      let selector = rawSelectorPieces[rawSelectorPieces.length - 1];
      let selectorParentScopes = rawSelectorPieces.slice(0, rawSelectorPieces.length - 1);
      if (matches(selector, selectorParentScopes, scope, parentScopes)) {
        result[resultLen++] = setting;
        j2 = lenJ;
      }
    }
  }
  return result;
}
function renderToHtml(lines, options2 = {}) {
  const bg = options2.bg || "#fff";
  let html = "";
  html += `<pre class="shiki" style="background-color: ${bg}">`;
  if (options2.langId) {
    html += `<div class="language-id">${options2.langId}</div>`;
  }
  html += `<code>`;
  lines.forEach((l2) => {
    html += `<span class="line">`;
    l2.forEach((token2) => {
      const cssDeclarations = [`color: ${token2.color || options2.fg}`];
      if (token2.fontStyle & FontStyle.Italic) {
        cssDeclarations.push("font-style: italic");
      }
      if (token2.fontStyle & FontStyle.Bold) {
        cssDeclarations.push("font-weight: bold");
      }
      if (token2.fontStyle & FontStyle.Underline) {
        cssDeclarations.push("text-decoration: underline");
      }
      html += `<span style="${cssDeclarations.join("; ")}">${escapeHtml$1(token2.content)}</span>`;
    });
    html += `</span>
`;
  });
  html = html.replace(/\n*$/, "");
  html += `</code></pre>`;
  return html;
}
const htmlEscapes = {
  "&": "&amp;",
  "<": "&lt;",
  ">": "&gt;",
  '"': "&quot;",
  "'": "&#39;"
};
function escapeHtml$1(html) {
  return html.replace(/[&<>"']/g, (chr) => htmlEscapes[chr]);
}
class Registry extends mainExports.Registry {
  constructor(_resolver2) {
    super(_resolver2);
    this._resolver = _resolver2;
    this.themesPath = "themes/";
    this._resolvedThemes = {};
    this._resolvedGrammars = {};
  }
  getTheme(theme) {
    if (typeof theme === "string") {
      return this._resolvedThemes[theme];
    } else {
      return theme;
    }
  }
  async loadTheme(theme) {
    if (typeof theme === "string") {
      if (!this._resolvedThemes[theme]) {
        this._resolvedThemes[theme] = await fetchTheme(`${this.themesPath}${theme}.json`);
      }
      return this._resolvedThemes[theme];
    } else {
      theme = toShikiTheme(theme);
      if (theme.name) {
        this._resolvedThemes[theme.name] = theme;
      }
      return theme;
    }
  }
  async loadThemes(themes) {
    return await Promise.all(themes.map((theme) => this.loadTheme(theme)));
  }
  getLoadedThemes() {
    return Object.keys(this._resolvedThemes);
  }
  getGrammer(name2) {
    return this._resolvedGrammars[name2];
  }
  async loadLanguage(lang2) {
    const g = await this.loadGrammar(lang2.scopeName);
    this._resolvedGrammars[lang2.id] = g;
    if (lang2.aliases) {
      lang2.aliases.forEach((la) => {
        this._resolvedGrammars[la] = g;
      });
    }
  }
  async loadLanguages(langs2) {
    for (const lang2 of langs2) {
      this._resolver.addLanguage(lang2);
    }
    for (const lang2 of langs2) {
      await this.loadLanguage(lang2);
    }
  }
  getLoadedLanguages() {
    return Object.keys(this._resolvedGrammars);
  }
}
function resolveLang(lang2) {
  return typeof lang2 === "string" ? languages.find((l2) => {
    var _a3;
    return l2.id === lang2 || ((_a3 = l2.aliases) === null || _a3 === void 0 ? void 0 : _a3.includes(lang2));
  }) : lang2;
}
function resolveOptions(options2) {
  var _a3;
  let _languages = languages;
  let _themes = options2.themes || [];
  if ((_a3 = options2.langs) === null || _a3 === void 0 ? void 0 : _a3.length) {
    _languages = options2.langs.map(resolveLang);
  }
  if (options2.theme) {
    _themes.unshift(options2.theme);
  }
  if (!_themes.length) {
    _themes = ["nord"];
  }
  return { _languages, _themes };
}
async function getHighlighter(options2) {
  var _a3, _b2;
  const { _languages, _themes } = resolveOptions(options2);
  const _resolver2 = new Resolver(getOnigasm(), "onigasm");
  const _registry = new Registry(_resolver2);
  if ((_a3 = options2.paths) === null || _a3 === void 0 ? void 0 : _a3.themes) {
    _registry.themesPath = options2.paths.themes;
  }
  if ((_b2 = options2.paths) === null || _b2 === void 0 ? void 0 : _b2.languages) {
    _resolver2.languagesPath = options2.paths.languages;
  }
  const themes = await _registry.loadThemes(_themes);
  const _defaultTheme = themes[0];
  let _currentTheme;
  await _registry.loadLanguages(_languages);
  const COLOR_REPLACEMENTS = {
    "#000001": "var(--shiki-color-text)",
    "#000002": "var(--shiki-color-background)",
    "#000004": "var(--shiki-token-constant)",
    "#000005": "var(--shiki-token-string)",
    "#000006": "var(--shiki-token-comment)",
    "#000007": "var(--shiki-token-keyword)",
    "#000008": "var(--shiki-token-parameter)",
    "#000009": "var(--shiki-token-function)",
    "#000010": "var(--shiki-token-string-expression)",
    "#000011": "var(--shiki-token-punctuation)",
    "#000012": "var(--shiki-token-link)"
  };
  function fixCssVariablesTheme(theme, colorMap) {
    theme.bg = COLOR_REPLACEMENTS[theme.bg] || theme.bg;
    theme.fg = COLOR_REPLACEMENTS[theme.fg] || theme.fg;
    colorMap.forEach((val, i) => {
      colorMap[i] = COLOR_REPLACEMENTS[val] || val;
    });
  }
  function getTheme(theme) {
    const _theme = theme ? _registry.getTheme(theme) : _defaultTheme;
    if (!_theme) {
      throw Error(`No theme registration for ${theme}`);
    }
    if (!_currentTheme || _currentTheme.name !== _theme.name) {
      _registry.setTheme(_theme);
      _currentTheme = _theme;
    }
    const _colorMap = _registry.getColorMap();
    if (_theme.name === "css-variables") {
      fixCssVariablesTheme(_theme, _colorMap);
    }
    return { _theme, _colorMap };
  }
  function getGrammer(lang2) {
    const _grammer = _registry.getGrammer(lang2);
    if (!_grammer) {
      throw Error(`No language registration for ${lang2}`);
    }
    return { _grammer };
  }
  function codeToThemedTokens(code3, lang2 = "text", theme, options3 = { includeExplanation: true }) {
    if (isPlaintext(lang2)) {
      return [[{ content: code3 }]];
    }
    const { _grammer } = getGrammer(lang2);
    const { _theme, _colorMap } = getTheme(theme);
    return tokenizeWithTheme(_theme, _colorMap, code3, _grammer, options3);
  }
  function codeToHtml(code3, lang2 = "text", theme) {
    const tokens = codeToThemedTokens(code3, lang2, theme, {
      includeExplanation: false
    });
    const { _theme } = getTheme(theme);
    return renderToHtml(tokens, {
      fg: _theme.fg,
      bg: _theme.bg
    });
  }
  async function loadTheme(theme) {
    await _registry.loadTheme(theme);
  }
  async function loadLanguage(lang2) {
    const _lang = resolveLang(lang2);
    _resolver2.addLanguage(_lang);
    await _registry.loadLanguage(_lang);
  }
  function getLoadedThemes() {
    return _registry.getLoadedThemes();
  }
  function getLoadedLanguages() {
    return _registry.getLoadedLanguages();
  }
  function getBackgroundColor(theme) {
    const { _theme } = getTheme(theme);
    return _theme.bg;
  }
  function getForegroundColor(theme) {
    const { _theme } = getTheme(theme);
    return _theme.fg;
  }
  return {
    codeToThemedTokens,
    codeToHtml,
    getTheme: (theme) => {
      return getTheme(theme)._theme;
    },
    loadTheme,
    loadLanguage,
    getBackgroundColor,
    getForegroundColor,
    getLoadedThemes,
    getLoadedLanguages
  };
}
function isPlaintext(lang2) {
  return !lang2 || ["plaintext", "txt", "text"].includes(lang2);
}
const onigasm = "" + new URL("onigasm-b63d2d2d.wasm", import.meta.url).href;
const name = "cypress";
const type = "light";
const tokenColors = [
  {
    settings: {
      foreground: "#434861"
    }
  },
  {
    scope: [
      "meta.embedded",
      "source.groovy.embedded"
    ],
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: "emphasis",
    settings: {
      fontStyle: "italic"
    }
  },
  {
    scope: "strong",
    settings: {
      fontStyle: "bold"
    }
  },
  {
    scope: "meta.diff.header",
    settings: {
      foreground: "#252E8F"
    }
  },
  {
    scope: "comment",
    settings: {
      foreground: "#9095AD"
    }
  },
  {
    scope: "constant.language",
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: [
      "constant.numeric",
      "variable.other.enummember",
      "keyword.operator.plus.exponent",
      "keyword.operator.minus.exponent"
    ],
    settings: {
      foreground: "#00814D"
    }
  },
  {
    scope: "constant.regexp",
    settings: {
      foreground: "#4F0018"
    }
  },
  {
    name: "css tags in selectors, xml tags",
    scope: "entity.name.tag",
    settings: {
      foreground: "#5E021B"
    }
  },
  {
    scope: "entity.name.selector",
    settings: {
      foreground: "#5E021B"
    }
  },
  {
    scope: "entity.other.attribute-name",
    settings: {
      foreground: "#C62B49"
    }
  },
  {
    scope: [
      "entity.other.attribute-name.class.css",
      "entity.other.attribute-name.class.mixin.css",
      "entity.other.attribute-name.id.css",
      "entity.other.attribute-name.parent-selector.css",
      "entity.other.attribute-name.pseudo-class.css",
      "entity.other.attribute-name.pseudo-element.css",
      "source.css.less entity.other.attribute-name.id",
      "entity.other.attribute-name.scss"
    ],
    settings: {
      foreground: "#5E021B"
    }
  },
  {
    scope: "invalid",
    settings: {
      foreground: "#C62B49"
    }
  },
  {
    scope: "markup.underline",
    settings: {
      fontStyle: "underline"
    }
  },
  {
    scope: "markup.bold",
    settings: {
      fontStyle: "bold",
      foreground: "#252E8F"
    }
  },
  {
    scope: "markup.heading",
    settings: {
      fontStyle: "bold",
      foreground: "#5E021B"
    }
  },
  {
    scope: "markup.italic",
    settings: {
      fontStyle: "italic"
    }
  },
  {
    scope: "markup.inserted",
    settings: {
      foreground: "#00814D"
    }
  },
  {
    scope: "markup.deleted",
    settings: {
      foreground: "#C62B49"
    }
  },
  {
    scope: "markup.changed",
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: [
      "punctuation.definition.quote.begin.markdown",
      "punctuation.definition.list.begin.markdown"
    ],
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: "markup.inline.raw",
    settings: {
      foreground: "#5E021B"
    }
  },
  {
    name: "brackets of XML/HTML tags",
    scope: "punctuation.definition.tag",
    settings: {
      foreground: "#5E021B"
    }
  },
  {
    scope: [
      "meta.preprocessor",
      "entity.name.function.preprocessor"
    ],
    settings: {
      foreground: "#BD5800"
    }
  },
  {
    scope: "meta.preprocessor.string",
    settings: {
      foreground: "#00814D"
    }
  },
  {
    scope: "meta.preprocessor.numeric",
    settings: {
      foreground: "#00814D"
    }
  },
  {
    scope: "meta.structure.dictionary.key.python",
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: "storage",
    settings: {
      foreground: "#BD5800"
    }
  },
  {
    scope: "storage.type",
    settings: {
      foreground: "#BD5800"
    }
  },
  {
    scope: [
      "storage.modifier",
      "keyword.operator.noexcept"
    ],
    settings: {
      foreground: "#BD5800"
    }
  },
  {
    scope: [
      "string",
      "meta.embedded.assembly"
    ],
    settings: {
      foreground: "#00814D"
    }
  },
  {
    scope: [
      "string.comment.buffered.block.pug",
      "string.quoted.pug",
      "string.interpolated.pug",
      "string.unquoted.plain.in.yaml",
      "string.unquoted.plain.out.yaml",
      "string.unquoted.block.yaml",
      "string.quoted.single.yaml",
      "string.quoted.double.xml",
      "string.quoted.single.xml",
      "string.unquoted.cdata.xml",
      "string.quoted.double.html",
      "string.quoted.single.html",
      "string.unquoted.html",
      "string.quoted.single.handlebars",
      "string.quoted.double.handlebars"
    ],
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: "string.regexp",
    settings: {
      foreground: "#5E021B"
    }
  },
  {
    name: "String interpolation",
    scope: [
      "punctuation.definition.template-expression.begin",
      "punctuation.definition.template-expression.end",
      "punctuation.section.embedded"
    ],
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    name: "Reset JavaScript string interpolation expression",
    scope: [
      "meta.template.expression"
    ],
    settings: {
      foreground: "#434861"
    }
  },
  {
    scope: [
      "support.constant.property-value",
      "support.constant.font-name",
      "support.constant.media-type",
      "support.constant.media",
      "constant.other.color.rgb-value",
      "constant.other.rgb-value",
      "support.constant.color"
    ],
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: [
      "support.type.vendored.property-name",
      "support.type.property-name",
      "variable.css",
      "variable.scss",
      "variable.other.less",
      "source.coffee.embedded"
    ],
    settings: {
      foreground: "#C62B49"
    }
  },
  {
    scope: [
      "support.type.property-name.json"
    ],
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: "keyword",
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: "keyword.control",
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: "keyword.operator",
    settings: {
      foreground: "#434861"
    }
  },
  {
    scope: [
      "keyword.operator.new",
      "keyword.operator.expression",
      "keyword.operator.cast",
      "keyword.operator.sizeof",
      "keyword.operator.alignof",
      "keyword.operator.typeid",
      "keyword.operator.alignas",
      "keyword.operator.instanceof",
      "keyword.operator.logical.python",
      "keyword.operator.wordlike"
    ],
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: "keyword.other.unit",
    settings: {
      foreground: "#00814D"
    }
  },
  {
    scope: [
      "punctuation.section.embedded.begin.php",
      "punctuation.section.embedded.end.php"
    ],
    settings: {
      foreground: "#5E021B"
    }
  },
  {
    scope: "support.function.git-rebase",
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: "constant.sha.git-rebase",
    settings: {
      foreground: "#00814D"
    }
  },
  {
    name: "coloring of the Java import and package identifiers",
    scope: [
      "storage.modifier.import.java",
      "variable.language.wildcard.java",
      "storage.modifier.package.java"
    ],
    settings: {
      foreground: "#434861"
    }
  },
  {
    name: "this.self",
    scope: "variable.language",
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    name: "Function declarations",
    scope: [
      "entity.name.function",
      "support.function",
      "support.constant.handlebars",
      "source.powershell variable.other.member",
      "entity.name.operator.custom-literal"
    ],
    settings: {
      foreground: "#BD5800"
    }
  },
  {
    name: "Types declaration and references",
    scope: [
      "meta.return-type",
      "support.class",
      "support.type",
      "entity.name.type",
      "entity.name.namespace",
      "entity.other.attribute",
      "entity.name.scope-resolution",
      "entity.name.class",
      "storage.type.numeric.go",
      "storage.type.byte.go",
      "storage.type.boolean.go",
      "storage.type.string.go",
      "storage.type.uintptr.go",
      "storage.type.error.go",
      "storage.type.rune.go",
      "storage.type.cs",
      "storage.type.generic.cs",
      "storage.type.modifier.cs",
      "storage.type.variable.cs",
      "storage.type.annotation.java",
      "storage.type.generic.java",
      "storage.type.java",
      "storage.type.object.array.java",
      "storage.type.primitive.array.java",
      "storage.type.primitive.java",
      "storage.type.token.java",
      "storage.type.groovy",
      "storage.type.annotation.groovy",
      "storage.type.parameters.groovy",
      "storage.type.generic.groovy",
      "storage.type.object.array.groovy",
      "storage.type.primitive.array.groovy",
      "storage.type.primitive.groovy"
    ],
    settings: {
      foreground: "#C53282"
    }
  },
  {
    name: "Types declaration and references, TS grammar specific",
    scope: [
      "meta.type.cast.expr",
      "meta.type.new.expr",
      "support.constant.math",
      "support.constant.dom",
      "support.constant.json",
      "entity.other.inherited-class"
    ],
    settings: {
      foreground: "#434861"
    }
  },
  {
    name: "Control flow / Special keywords",
    scope: [
      "keyword.control",
      "source.cpp keyword.operator.new",
      "source.cpp keyword.operator.delete",
      "keyword.other.using",
      "keyword.other.operator",
      "entity.name.operator"
    ],
    settings: {
      foreground: "#7F43C9"
    }
  },
  {
    name: "Variable and parameter name",
    scope: [
      "variable",
      "meta.definition.variable.name",
      "support.variable",
      "entity.name.variable",
      "constant.other.placeholder"
    ],
    settings: {
      foreground: "#434861"
    }
  },
  {
    name: "Constants and enums",
    scope: [
      "variable.other.constant",
      "variable.other.enummember"
    ],
    settings: {
      foreground: "#434861"
    }
  },
  {
    name: "Object keys, TS grammar specific",
    scope: [
      "meta.object-literal.key"
    ],
    settings: {
      foreground: "#434861"
    }
  },
  {
    name: "CSS property value",
    scope: [
      "support.constant.property-value",
      "support.constant.font-name",
      "support.constant.media-type",
      "support.constant.media",
      "constant.other.color.rgb-value",
      "constant.other.rgb-value",
      "support.constant.color"
    ],
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    name: "Regular expression groups",
    scope: [
      "punctuation.definition.group.regexp",
      "punctuation.definition.group.assertion.regexp",
      "punctuation.definition.character-class.regexp",
      "punctuation.character.set.begin.regexp",
      "punctuation.character.set.end.regexp",
      "keyword.operator.negation.regexp",
      "support.other.parenthesis.regexp"
    ],
    settings: {
      foreground: "#BD5800"
    }
  },
  {
    name: "Punctuation tokens",
    scope: [
      "punctuation"
    ],
    settings: {
      foreground: "#9095AD"
    }
  },
  {
    scope: [
      "constant.character.character-class.regexp",
      "constant.other.character-class.set.regexp",
      "constant.other.character-class.regexp",
      "constant.character.set.regexp"
    ],
    settings: {
      foreground: "#C53282"
    }
  },
  {
    scope: "keyword.operator.quantifier.regexp",
    settings: {
      foreground: "#434861"
    }
  },
  {
    scope: [
      "keyword.operator.or.regexp",
      "keyword.control.anchor.regexp"
    ],
    settings: {
      foreground: "#E45770"
    }
  },
  {
    scope: "constant.character",
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: "constant.character.escape",
    settings: {
      foreground: "#E45770"
    }
  },
  {
    scope: "entity.name.label",
    settings: {
      foreground: "#434861"
    }
  }
];
const shikiCyTheme = {
  name,
  type,
  tokenColors
};
const langJSONFilesArray = /* @__PURE__ */ Object.assign({ "../public/shiki/languages/css.tmLanguage.json": __vite_glob_0_0, "../public/shiki/languages/html.tmLanguage.json": __vite_glob_0_1, "../public/shiki/languages/javascript.tmLanguage.json": __vite_glob_0_2, "../public/shiki/languages/json.tmLanguage.json": __vite_glob_0_3, "../public/shiki/languages/jsonc.tmLanguage.json": __vite_glob_0_4, "../public/shiki/languages/jsx.tmLanguage.json": __vite_glob_0_5, "../public/shiki/languages/tsx.tmLanguage.json": __vite_glob_0_6, "../public/shiki/languages/typescript.tmLanguage.json": __vite_glob_0_7, "../public/shiki/languages/vue-html.tmLanguage.json": __vite_glob_0_8, "../public/shiki/languages/vue.tmLanguage.json": __vite_glob_0_9, "../public/shiki/languages/yaml.tmLanguage.json": __vite_glob_0_10 });
const langs = Object.values(langJSONFilesArray).map((grammar) => {
  return {
    grammar,
    id: grammar.name,
    scopeName: grammar.scopeName
  };
});
setOnigasmWASM(onigasm);
let highlighter;
const langsSupported = langs.map((lang2) => lang2.id);
async function initHighlighter() {
  if (highlighter) {
    return;
  }
  highlighter = await getHighlighter({
    theme: shikiCyTheme,
    langs
  });
}
const _hoisted_1$_ = { class: "text-left cursor-text" };
const _hoisted_2$V = ["innerHTML"];
const _sfc_main$J = /* @__PURE__ */ defineComponent({
  __name: "ShikiHighlight",
  props: {
    code: null,
    initialLine: { default: 1 },
    lang: null,
    lineNumbers: { type: Boolean, default: false },
    wrap: { type: Boolean, default: false },
    copyOnClick: { type: Boolean, default: false },
    copyButton: { type: Boolean, default: false },
    codeframe: { type: Boolean, default: false },
    skipTrim: { type: Boolean, default: false },
    class: { default: void 0 }
  },
  setup(__props) {
    const props = __props;
    useCssVars((_ctx) => ({
      "74c38bf0": props.initialLine
    }));
    const highlighterInitialized = ref(false);
    onBeforeMount(async () => {
      await initHighlighter();
      highlighterInitialized.value = true;
    });
    const resolvedLang = computed(() => {
      switch (props.lang) {
        case "javascript":
        case "js":
        case "jsx":
          return "jsx";
        case "typescript":
        case "ts":
        case "tsx":
          return "tsx";
        default:
          return props.lang && langsSupported.includes(props.lang) ? props.lang : "plaintext";
      }
    });
    const trimmedCode = computed(() => props.skipTrim ? props.code : props.code.trim());
    const highlightedCode = computed(() => {
      return highlighter == null ? void 0 : highlighter.codeToHtml(trimmedCode.value, resolvedLang.value);
    });
    const codeEl = ref(null);
    const { copy: copy2 } = useClipboard();
    const copyCode = () => {
      if (codeEl.value) {
        const text3 = codeEl.value.innerText;
        copy2(text3);
      }
    };
    const numberOfLines = computed(() => props.code.trim().split("\n").length);
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1$_, [
        highlighterInitialized.value ? (openBlock(), createElementBlock("div", {
          key: 0,
          ref_key: "codeEl",
          ref: codeEl,
          class: normalizeClass([
            "shiki-wrapper",
            // All styles contain these utility classes
            "overflow-scroll hover:border-indigo-200 text-[14px] leading-[24px] font-normal",
            /**
             * 1. Single line is forced onto one line without any borders. It loses
             *    any additional padding.
             *
             * 2. Multi-line without line-numbers adds padding to compensate for the
             *    lack of margin-right that the line-numbers usually add. It has a
             *    border.
             *
             * 3. Multi-line with line-numbers doesn't have the padding, because the
             *    line numbers have margin-right.
             *
             * 4. Any of these can be wrapped with whitespace: pre-wrap. When using
             *    with line-numbers, the breaks will create a new line.
             */
            {
              "wrap": props.wrap,
              "line-numbers": props.lineNumbers,
              "p-[8px]": !props.lineNumbers && !props.codeframe,
              "p-[2px]": props.codeframe
            },
            props.class
          ]),
          onClick: _cache[0] || (_cache[0] = ($event) => __props.copyOnClick ? () => copyCode() : () => {
          }),
          innerHTML: unref(highlightedCode)
        }, null, 10, _hoisted_2$V)) : (openBlock(), createElementBlock("pre", {
          key: 1,
          class: normalizeClass(["border rounded font-normal border-gray-100 py-[8px] text-[14px] leading-[24px] overflow-scroll", [props.class, __props.lineNumbers ? "pl-[56px]" : "pl-[8px]"]])
        }, toDisplayString$1(unref(trimmedCode)), 3)),
        __props.copyButton ? (openBlock(), createBlock(_sfc_main$Y, {
          key: 2,
          variant: "outline",
          tabindex: "-1",
          class: normalizeClass(["bg-white ml-auto mt-[-32px] sticky", unref(numberOfLines) === 1 ? "bottom-[5px] right-[5px]" : "bottom-[8px] right-[8px]"]),
          text: __props.code,
          "no-icon": ""
        }, null, 8, ["class", "text"])) : createCommentVNode("", true)
      ]);
    };
  }
});
const ShikiHighlight_vue_vue_type_style_index_0_scoped_52636ce2_lang = "";
const ShikiHighlight = /* @__PURE__ */ _export_sfc$1(_sfc_main$J, [["__scopeId", "data-v-52636ce2"]]);
const _hoisted_1$Z = { class: "mt-[24px] mb-[16px] text-[16px] leading-[24px]" };
const _hoisted_2$U = /* @__PURE__ */ createBaseVNode("code", { class: "border rounded border-gray-200 m-[2px] py-[2px] px-[3px] text-purple-500 text-[16px]" }, "projectId", -1);
const _hoisted_3$N = /* @__PURE__ */ createBaseVNode("span", { class: "text-indigo-500" }, "cypress.config.js", -1);
const _hoisted_4$w = { class: "flex gap-[16px]" };
const _sfc_main$I = /* @__PURE__ */ defineComponent({
  __name: "NeedManualUpdateModal",
  props: {
    gql: null,
    newProjectId: null
  },
  emits: ["cancel"],
  setup(__props, { emit: emit3 }) {
    const props = __props;
    const { t: t2 } = useI18n();
    gql`
fragment NeedManualUpdateModal on CurrentProject {
  id
  projectId
}`;
    const projectIdCode = computed(() => `projectId: '${props.newProjectId}'`);
    const helpCode = computed(() => {
      return `
export ${"default"} {
  ${projectIdCode.value}, // <- add this line
}`;
    });
    return (_ctx, _cache) => {
      const _component_i18n_t = resolveComponent("i18n-t");
      const _component_i_cy_loading_x16 = __unplugin_components_0$d;
      return openBlock(), createBlock(_sfc_main$S, {
        "model-value": "",
        title: unref(t2)("runs.connect.modal.connectManually.title"),
        "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => emit3("cancel"))
      }, {
        footer: withCtx(() => [
          createBaseVNode("div", _hoisted_4$w, [
            createVNode(_sfc_main$10, {
              size: "lg",
              variant: "pending"
            }, {
              prefix: withCtx(() => [
                createVNode(_component_i_cy_loading_x16, { class: "animate-spin icon-dark-white icon-light-gray-400" })
              ]),
              default: withCtx(() => [
                createTextVNode(" " + toDisplayString$1(unref(t2)("runs.connect.modal.connectManually.waitingButton")), 1)
              ]),
              _: 1
            }),
            createVNode(_sfc_main$10, {
              variant: "outline",
              size: "lg",
              onClick: _cache[0] || (_cache[0] = ($event) => emit3("cancel"))
            }, {
              default: withCtx(() => [
                createTextVNode(toDisplayString$1(unref(t2)("runs.connect.modal.cancel")), 1)
              ]),
              _: 1
            })
          ])
        ]),
        default: withCtx(() => [
          createVNode(_sfc_main$M, {
            status: "warning",
            title: unref(t2)("runs.connect.modal.connectManually.warning"),
            icon: unref(WarningIcon),
            "icon-classes": "icon-dark-orange-400"
          }, null, 8, ["title", "icon"]),
          createBaseVNode("p", _hoisted_1$Z, [
            createVNode(_component_i18n_t, {
              scope: "global",
              keypath: "runs.connect.modal.connectManually.mainMessage"
            }, {
              projectId: withCtx(() => [
                _hoisted_2$U
              ]),
              configFile: withCtx(() => [
                _hoisted_3$N
              ]),
              _: 1
            })
          ]),
          createVNode(ShikiHighlight, {
            class: "rounded border border-gray-200",
            lang: "javascript",
            code: unref(helpCode),
            "line-numbers": "",
            "copy-button": ""
          }, null, 8, ["code"])
        ]),
        _: 1
      }, 8, ["title"]);
    };
  }
});
const _sfc_main$H = /* @__PURE__ */ defineComponent({
  __name: "CloudConnectModals",
  props: {
    gql: null,
    utmMedium: null,
    utmContent: null
  },
  emits: ["success", "cancel"],
  setup(__props, { emit: emit3 }) {
    const props = __props;
    gql`
fragment CloudConnectModals on Query {
  ...SelectCloudProjectModal
  cloudViewer {
    id
    ...CreateCloudOrgModal
    firstOrganization: organizations(first: 1) {
      nodes {
        id
      }
    }
  }
  currentProject{
    id
    ...NeedManualUpdateModal
  }
}
`;
    gql`
subscription CloudConnectModals_MonitorCloudViewer {
  cloudViewerChange {
    ...CloudConnectModals
  }
}
`;
    useSubscription({ query: CloudConnectModals_MonitorCloudViewerDocument });
    const newProjectId = ref("");
    const isManualUpdateOpen = ref(false);
    function showManualUpdate(projectId) {
      newProjectId.value = projectId;
      isManualUpdateOpen.value = true;
    }
    return (_ctx, _cache) => {
      var _a3, _b2;
      return isManualUpdateOpen.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
        props.gql.currentProject ? (openBlock(), createBlock(_sfc_main$I, {
          key: 0,
          gql: props.gql.currentProject,
          "new-project-id": newProjectId.value,
          onCancel: _cache[0] || (_cache[0] = ($event) => emit3("cancel"))
        }, null, 8, ["gql", "new-project-id"])) : createCommentVNode("", true)
      ], 64)) : ((_b2 = (_a3 = props.gql.cloudViewer) == null ? void 0 : _a3.organizations) == null ? void 0 : _b2.nodes.length) ?? 0 > 0 ? (openBlock(), createBlock(_sfc_main$L, {
        key: 1,
        gql: props.gql,
        show: "",
        "utm-medium": props.utmMedium,
        "utm-content": props.utmContent,
        onUpdateProjectIdFailed: showManualUpdate,
        onSuccess: _cache[1] || (_cache[1] = ($event) => emit3("success")),
        onCancel: _cache[2] || (_cache[2] = ($event) => emit3("cancel"))
      }, null, 8, ["gql", "utm-medium", "utm-content"])) : props.gql.cloudViewer ? (openBlock(), createBlock(_sfc_main$K, {
        key: 2,
        gql: props.gql.cloudViewer,
        onCancel: _cache[3] || (_cache[3] = ($event) => emit3("cancel"))
      }, null, 8, ["gql"])) : createCommentVNode("", true);
    };
  }
});
const _hoisted_1$Y = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$T = /* @__PURE__ */ createBaseVNode("path", {
  d: "M15 3C15 1.89543 14.1046 1 13 1H3C1.89543 1 1 1.89543 1 3V4H15V3Z",
  fill: "#D0D2E0",
  class: "icon-light"
}, null, -1);
const _hoisted_3$M = /* @__PURE__ */ createBaseVNode("path", {
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M15 3C15 1.89543 14.1046 1 13 1H3C1.89543 1 1 1.89543 1 3V4H15V3Z",
  fill: "#D0D2E0",
  class: "icon-light"
}, null, -1);
const _hoisted_4$v = /* @__PURE__ */ createBaseVNode("path", {
  d: "M1 4V13C1 14.1046 1.89543 15 3 15H13C14.1046 15 15 14.1046 15 13V4M1 4V3C1 1.89543 1.89543 1 3 1H13C14.1046 1 15 1.89543 15 3V4M1 4H15M5 8L6.5 9.5L5 11",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-dark"
}, null, -1);
const _hoisted_5$k = [
  _hoisted_2$T,
  _hoisted_3$M,
  _hoisted_4$v
];
function render$w(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$Y, _hoisted_5$k);
}
const IconTerminal = { name: "cy-terminal_x16", render: render$w };
const _hoisted_1$X = { class: "border rounded flex font-normal border-gray-100 pl-[16px] pr-[4px] text-gray-700 leading-[40px] items-center whitespace-nowrap overflow-hidden" };
const _hoisted_2$S = /* @__PURE__ */ createBaseVNode("span", { class: "mr-[8px] text-purple-500" }, " $ ", -1);
const _hoisted_3$L = ["value"];
const _hoisted_4$u = { class: "font-sans" };
const _sfc_main$G = /* @__PURE__ */ defineComponent({
  __name: "TerminalPrompt",
  props: {
    command: null
  },
  setup(__props) {
    return (_ctx, _cache) => {
      const _component_i_cy_terminal_x16 = IconTerminal;
      return openBlock(), createElementBlock("code", _hoisted_1$X, [
        createVNode(_component_i_cy_terminal_x16, { class: "shrink-0 h-[16px] mr-[8px] w-[16px] icon-dark-gray-500 icon-light-gray-100" }),
        _hoisted_2$S,
        createBaseVNode("input", {
          readonly: "true",
          type: "text",
          value: __props.command,
          "data-cy": "terminal-prompt-input",
          class: "border-none flex-1"
        }, null, 8, _hoisted_3$L),
        createBaseVNode("div", _hoisted_4$u, [
          createVNode(_sfc_main$Y, { text: __props.command }, null, 8, ["text"])
        ])
      ]);
    };
  }
});
const _sfc_main$F = /* @__PURE__ */ defineComponent({
  __name: "RecordPrompt",
  props: {
    recordKey: null,
    currentTestingType: null
  },
  setup(__props) {
    const props = __props;
    const firstRecordKey = computed(() => {
      return props.recordKey ?? "<record-key>";
    });
    const recordCommand = computed(() => {
      const componentFlagOrSpace = props.currentTestingType === "component" ? " --component " : " ";
      return `npx cypress run${componentFlagOrSpace}--record --key ${firstRecordKey.value}`;
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(_sfc_main$G, {
        command: unref(recordCommand),
        class: "bg-white max-w-[900px]"
      }, null, 8, ["command"]);
    };
  }
});
const _sfc_main$E = /* @__PURE__ */ defineComponent({
  __name: "RecordPromptAdapter",
  setup(__props) {
    gql`
query RecordPromptAdapter {
  currentProject {
    id
    title
    currentTestingType
    cloudProject {
      __typename
      ... on CloudProject {
        id
        recordKeys {
          id
          key
        }
      }
    }
  }
}
`;
    const query2 = useQuery({ query: RecordPromptAdapterDocument });
    return (_ctx, _cache) => {
      var _a3, _b2, _c, _d, _e, _f, _g, _h;
      return openBlock(), createBlock(_sfc_main$F, {
        "record-key": ((_c = (_b2 = (_a3 = unref(query2).data.value) == null ? void 0 : _a3.currentProject) == null ? void 0 : _b2.cloudProject) == null ? void 0 : _c.__typename) === "CloudProject" ? (_f = (_e = (_d = unref(query2).data.value) == null ? void 0 : _d.currentProject.cloudProject.recordKeys) == null ? void 0 : _e[0]) == null ? void 0 : _f.key : "",
        "current-testing-type": (_h = (_g = unref(query2).data.value) == null ? void 0 : _g.currentProject) == null ? void 0 : _h.currentTestingType
      }, null, 8, ["record-key", "current-testing-type"]);
    };
  }
});
const getUrlWithParams = (link4) => {
  let result = link4.url;
  const paramNames = Object.keys(link4.params);
  if (paramNames.length > 0) {
    const hasUtmParams = paramNames.some((param) => param.startsWith("utm_"));
    if (hasUtmParams) {
      link4.params.utm_source = getUtmSource();
    }
    let url2;
    let searchParams;
    if (link4.url.includes("?")) {
      url2 = link4.url.substring(0, link4.url.indexOf("?"));
      searchParams = new URLSearchParams(link4.url.substring(link4.url.indexOf("?")));
    } else {
      url2 = link4.url;
      searchParams = new URLSearchParams();
    }
    Object.entries(link4.params).forEach(([key, value]) => searchParams.append(key, value));
    result = `${url2}?${searchParams.toString()}`;
  }
  return result;
};
const units = {};
units.second = 1e3;
units.minute = units.second * 60;
units.hour = units.minute * 60;
units.day = units.hour * 24;
units.week = units.day * 7;
units.month = units.day * 30;
units.year = units.day * 365;
const languageMap = {
  one: 1,
  two: 2,
  three: 3,
  four: 4,
  five: 5,
  six: 6,
  seven: 7,
  eight: 8,
  nine: 9,
  ten: 10
};
const swapLanguageToDecimals = (time) => {
  const language = languageMap;
  const languageMapRegex = new RegExp("(" + Object.keys(language).join("|") + ")", "g");
  const matches2 = time.match(languageMapRegex);
  if (!matches2) {
    return time;
  }
  matches2.forEach((match3) => {
    const matchStr = language[match3] > 1 ? language[match3] : language[match3].toString().slice(1);
    time = time.replace(match3, matchStr);
  });
  return time;
};
const processUnits = (time) => {
  if (time.match(/(second|minute|hour|day|week|month|year)s?/) === null) {
    return void 0;
  }
  const num2 = parseFloat(time, 10) || 1;
  const unit = time.match(/(second|minute|hour|day|week|month|year)s?/)[1];
  return units[unit] * num2;
};
const humanInterval = (time) => {
  if (!time) {
    return time;
  }
  if (typeof time === "number") {
    return time;
  }
  time = swapLanguageToDecimals(time);
  time = time.replace(/(second|minute|hour|day|week|month|year)s?(?! ?(s )?and |s?$)/, "$1,");
  return time.split(/and|,/).reduce((sum2, group) => {
    return sum2 + (group ? processUnits(group) : 0);
  }, 0);
};
humanInterval.languageMap = languageMap;
var humanInterval_1 = humanInterval;
const BANNER_ID_BY_STATE = {
  isLoggedOut: BannerIds.ACI_082022_LOGIN,
  needsOrgConnect: BannerIds.ACI_082022_CREATE_ORG,
  needsProjectConnect: BannerIds.ACI_082022_CONNECT_PROJECT,
  needsRecordedRun: BannerIds.ACI_082022_RECORD,
  isComponentTestingCandidate: BannerIds.CT_052023_AVAILABLE
};
const minTimeSinceEvent = (eventTime, waitTime) => {
  if (!eventTime) {
    return true;
  }
  const waitTimestamp = humanInterval_1(waitTime.toLocaleLowerCase());
  if (isNaN(waitTimestamp)) {
    throw new Error(`incorrect format for waitTime provided, value must be \`n days\`, \`n minutes\` etc. Value received was ${waitTime}`);
  }
  return Date.now() - eventTime > waitTimestamp;
};
const isAllowedFeature = (featureName, userProjectStatusStore, state = "allTasksCompleted") => {
  const {
    cypressFirstOpened,
    promptsShown,
    latestBannerShownTime,
    bannersState,
    project
  } = userProjectStatusStore;
  const events2 = {
    cypressFirstOpened,
    navCiPromptAutoOpened: promptsShown.ci1,
    loginModalRecordPromptShown: promptsShown.loginModalRecord,
    latestSmartBannerShown: latestBannerShownTime
  };
  function bannerForCurrentStatusWasNotDismissed() {
    var _a3;
    if (!state) {
      return true;
    }
    const bannerId = BANNER_ID_BY_STATE[state];
    if (!bannerId) {
      return true;
    }
    return !((_a3 = bannersState == null ? void 0 : bannersState[bannerId]) == null ? void 0 : _a3.dismissed);
  }
  function noOtherSmartBannerShownWithin(interval2) {
    const currentBannerId = BANNER_ID_BY_STATE[state];
    return Object.entries(BannerIds).map(([_2, bannerId]) => bannerId).filter((bannerId) => bannerId !== currentBannerId).map((bannerId) => {
      var _a3;
      return (_a3 = bannersState[bannerId]) == null ? void 0 : _a3.dismissed;
    }).every((bannerDismissed) => minTimeSinceEvent(bannerDismissed, interval2));
  }
  function bannersAreNotDisabledForTesting() {
    return !(bannersState == null ? void 0 : bannersState._disabled);
  }
  const rules = {
    specsListBanner: {
      base: [
        minTimeSinceEvent(events2.cypressFirstOpened, "4 days"),
        minTimeSinceEvent(events2.navCiPromptAutoOpened, "1 day"),
        bannerForCurrentStatusWasNotDismissed(),
        bannersAreNotDisabledForTesting()
      ],
      needsRecordedRun: [
        minTimeSinceEvent(events2.loginModalRecordPromptShown, "1 day"),
        project.hasNonExampleSpec
      ],
      needsOrgConnect: [],
      needsProjectConnect: [],
      isLoggedOut: [],
      isComponentTestingCandidate: [
        noOtherSmartBannerShownWithin("2 days")
      ]
    },
    docsCiPrompt: {
      base: [
        minTimeSinceEvent(events2.cypressFirstOpened, "4 days"),
        minTimeSinceEvent(events2.latestSmartBannerShown, "1 day")
      ],
      needsRecordedRun: [],
      needsOrgConnect: [],
      needsProjectConnect: [],
      isLoggedOut: [],
      allTasksCompleted: [],
      isComponentTestingCandidate: []
    }
  };
  const baseRules = [...rules[featureName].base];
  const statusSpecificRules = (state && rules[featureName][state]) ?? [false];
  const rulesToCheck = baseRules.concat(statusSpecificRules);
  return rulesToCheck.every((rule) => rule === true);
};
gql`
mutation UsePromptManager_SetProjectPreferences($value: String!) {
  setPreferences(type: project, value: $value) {
    currentProject {
      id
      savedState
    }
  }
}
`;
gql`
mutation UsePromptManager_SetGlobalPreferences($value: String!) {
  setPreferences(type: global, value: $value) {
    localSettings {
      preferences {
        majorVersionWelcomeDismissed
      }
    }
  }
}
`;
function usePromptManager() {
  const setProjectPreferencesMutation = useMutation(UsePromptManager_SetProjectPreferencesDocument);
  const setGlobalPreferencesMutation = useMutation(UsePromptManager_SetGlobalPreferencesDocument);
  const userProjectStatusStore = useUserProjectStatusStore();
  function setPromptShown(slug) {
    return setProjectPreferencesMutation.executeMutation({ value: JSON.stringify({ promptsShown: { [slug]: Date.now() } }) });
  }
  function setMajorVersionWelcomeDismissed(majorVersion) {
    return setGlobalPreferencesMutation.executeMutation({ value: JSON.stringify({ majorVersionWelcomeDismissed: { [majorVersion]: Date.now() } }) });
  }
  const wrappedIsAllowedFeature = (featureName, state) => {
    return isAllowedFeature(featureName, userProjectStatusStore, state);
  };
  const getEffectiveBannerState = (featureName) => {
    const cloudStatus = userProjectStatusStore.cloudStatus;
    const projectStatus = userProjectStatusStore.projectStatus;
    if (featureName === "specsListBanner") {
      if (cloudStatus !== "allTasksCompleted" && wrappedIsAllowedFeature("specsListBanner", cloudStatus)) {
        return cloudStatus;
      }
      if (projectStatus !== "allTasksCompleted" && wrappedIsAllowedFeature("specsListBanner", projectStatus)) {
        return projectStatus;
      }
    }
    return null;
  };
  return {
    setPromptShown,
    isAllowedFeature: wrappedIsAllowedFeature,
    setMajorVersionWelcomeDismissed,
    getEffectiveBannerState
  };
}
const _hoisted_1$W = { class: "max-w-[43.75rem] py-7 px-6 text-gray-600" };
const _hoisted_2$R = { class: "mb-[24px]" };
const _sfc_main$D = /* @__PURE__ */ defineComponent({
  __name: "RecordRunModal",
  props: {
    utmMedium: null,
    utmContent: null
  },
  emits: ["cancel"],
  setup(__props, { emit: emit3 }) {
    const props = __props;
    const { setPromptShown } = usePromptManager();
    onMounted(() => {
      setPromptShown("loginModalRecord");
    });
    const { t: t2 } = useI18n();
    const isModalOpen = ref(true);
    const helpLink = getUrlWithParams({
      url: "https://on.cypress.io/cypress-run-record-key",
      params: {
        utm_medium: props.utmMedium,
        utm_source: getUtmSource(),
        utm_content: props.utmContent || ""
      }
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(_sfc_main$S, {
        class: "transition transition-all duration-200",
        variant: "bare",
        title: unref(t2)("specPage.banners.record.title"),
        "model-value": isModalOpen.value,
        "help-link": unref(helpLink),
        "no-help": !unref(helpLink),
        "data-cy": "record-run-modal",
        "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit3("cancel"))
      }, {
        default: withCtx(() => [
          createBaseVNode("div", _hoisted_1$W, [
            createBaseVNode("p", _hoisted_2$R, toDisplayString$1(unref(t2)("specPage.banners.record.content")), 1),
            createVNode(_sfc_main$E)
          ])
        ]),
        _: 1
      }, 8, ["title", "model-value", "help-link", "no-help"]);
    };
  }
});
const _sfc_main$C = /* @__PURE__ */ defineComponent({
  __name: "LoginConnectModalsContent",
  props: {
    gql: null
  },
  setup(__props) {
    const props = __props;
    gql`
fragment LoginConnectModalsContent on Query {
  ...LoginModal
  ...CloudConnectModals
  currentProject {
    id
    currentTestingType
  }
}
`;
    const userProjectStatusStore = useUserProjectStatusStore();
    const { closeLoginConnectModal, cloudStatusMatches } = userProjectStatusStore;
    const keepLoginOpen = ref(false);
    watch(() => userProjectStatusStore.cloudStatus, (newVal, oldVal) => {
      if (oldVal === "isLoggedOut" && newVal !== "isLoggedOut") {
        keepLoginOpen.value = true;
      }
    }, {
      immediate: true
    });
    const handleCloseLogin = () => {
      if (cloudStatusMatches("allTasksCompleted")) {
        closeLoginConnectModal();
      } else {
        keepLoginOpen.value = false;
      }
    };
    const gqlRef = ref(null);
    debouncedWatch(() => props.gql, (newVal) => {
      if (newVal) {
        gqlRef.value = newVal;
      }
    }, {
      debounce: 10,
      immediate: true
    });
    return (_ctx, _cache) => {
      return unref(userProjectStatusStore).isLoginConnectOpen && gqlRef.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
        unref(cloudStatusMatches)("isLoggedOut") || keepLoginOpen.value ? (openBlock(), createBlock(_sfc_main$V, {
          key: 0,
          gql: gqlRef.value,
          "utm-medium": unref(userProjectStatusStore).utmMedium,
          "utm-content": unref(userProjectStatusStore).utmContent,
          onCancel: unref(closeLoginConnectModal),
          onClose: handleCloseLogin
        }, null, 8, ["gql", "utm-medium", "utm-content", "onCancel"])) : unref(cloudStatusMatches)("needsRecordedRun") ? (openBlock(), createBlock(_sfc_main$D, {
          key: 1,
          "utm-medium": unref(userProjectStatusStore).utmMedium,
          "utm-content": unref(userProjectStatusStore).utmContent,
          onCancel: unref(closeLoginConnectModal)
        }, null, 8, ["utm-medium", "utm-content", "onCancel"])) : unref(cloudStatusMatches)("needsProjectConnect") || unref(cloudStatusMatches)("needsOrgConnect") ? (openBlock(), createBlock(_sfc_main$H, {
          key: 2,
          show: unref(userProjectStatusStore).user.isLoggedIn,
          gql: gqlRef.value,
          "utm-medium": unref(userProjectStatusStore).utmMedium,
          "utm-content": unref(userProjectStatusStore).utmContent,
          onCancel: unref(closeLoginConnectModal),
          onSuccess: unref(closeLoginConnectModal)
        }, null, 8, ["show", "gql", "utm-medium", "utm-content", "onCancel", "onSuccess"])) : createCommentVNode("", true)
      ], 64)) : createCommentVNode("", true);
    };
  }
});
const _sfc_main$B = /* @__PURE__ */ defineComponent({
  __name: "LoginConnectModals",
  setup(__props) {
    const userProjectStatusStore = useUserProjectStatusStore();
    gql`
query LoginConnectModals_LoginConnectModalsQuery {
  ...LoginConnectModalsContent
}
`;
    const query2 = useQuery({ query: LoginConnectModals_LoginConnectModalsQueryDocument, pause: true });
    const executeQuery = async () => {
      await query2.executeQuery();
    };
    whenever(() => userProjectStatusStore.isLoginConnectOpen, executeQuery);
    return (_ctx, _cache) => {
      return unref(userProjectStatusStore).isLoginConnectOpen ? (openBlock(), createBlock(_sfc_main$C, {
        key: 0,
        gql: unref(query2).data.value
      }, null, 8, ["gql"])) : createCommentVNode("", true);
    };
  }
});
const _sfc_main$A = /* @__PURE__ */ defineComponent({
  __name: "CloudViewerAndProject",
  setup(__props) {
    gql`
fragment CloudViewerAndProject on Query {
  cloudViewer {
    id
    fullName
    email
    firstOrganization: organizations(first: 1) {
      nodes {
        id
      }
    }
  }
  cachedUser {
    id
    fullName
    email
  }
  authState {
    name
  }
  currentProject {
    id
    projectId
    config
    currentTestingType
    isFullConfigReady
    isCTConfigured
    hasNonExampleSpec
    savedState
    branch
    cloudProject {
      __typename
      ... on CloudProject {
        id
        runs(first: 10) {
          nodes {
            id
            status
            url
          }
        }
      }
    }
  }
  wizard {
    framework {
      id
      name
      icon
      isDetected
    }
  }
}
`;
    gql`
query CloudViewerAndProject_RequiredData {
  ...CloudViewerAndProject
}
`;
    gql`
subscription CloudViewerAndProject_CheckCloudOrgMembership {
  cloudViewerChange {
    ...CloudViewerAndProject
  }
}
`;
    gql`
mutation CloudViewerAndProject_DetectCtFrameworks {
  initializeCtFrameworks
}
`;
    const hasDetectedFrameworks = ref(false);
    const userProjectStatusStore = useUserProjectStatusStore();
    const {
      setHasInitiallyLoaded,
      setUserFlag,
      setProjectFlag,
      setUserData,
      setPromptShown,
      setCypressFirstOpened,
      setTestingType,
      setProjectId,
      setBannersState
    } = userProjectStatusStore;
    useSubscription({ query: CloudViewerAndProject_CheckCloudOrgMembershipDocument });
    const query2 = useQuery({ query: CloudViewerAndProject_RequiredDataDocument });
    const detectCtFrameworks = useMutation(CloudViewerAndProject_DetectCtFrameworksDocument);
    watchEffect(async () => {
      var _a3, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k;
      if (!query2.data.value) {
        return;
      }
      if (!hasDetectedFrameworks.value && ((_a3 = query2.data.value.currentProject) == null ? void 0 : _a3.currentTestingType) === "e2e") {
        await detectCtFrameworks.executeMutation({});
        hasDetectedFrameworks.value = true;
        return;
      }
      setHasInitiallyLoaded();
      const {
        currentProject,
        cachedUser,
        cloudViewer,
        authState,
        wizard
      } = query2.data.value;
      const savedState = currentProject == null ? void 0 : currentProject.savedState;
      if (savedState == null ? void 0 : savedState.promptsShown) {
        for (const item in savedState.promptsShown) {
          setPromptShown(item, savedState.promptsShown[item]);
        }
      }
      if (savedState == null ? void 0 : savedState.firstOpened) {
        setCypressFirstOpened(savedState.firstOpened);
      }
      if (savedState == null ? void 0 : savedState.banners) {
        setBannersState(savedState.banners);
      }
      setTestingType((currentProject == null ? void 0 : currentProject.currentTestingType) ?? void 0);
      setProjectId((currentProject == null ? void 0 : currentProject.projectId) ?? void 0);
      const AUTH_STATE_ERRORS = ["AUTH_COULD_NOT_LAUNCH_BROWSER", "AUTH_ERROR_DURING_LOGIN", "AUTH_COULD_NOT_LAUNCH_BROWSER"];
      setUserData(cloudViewer ?? cachedUser ?? void 0);
      setUserFlag("isLoggedIn", !!(cachedUser == null ? void 0 : cachedUser.id) || !!(cloudViewer == null ? void 0 : cloudViewer.id));
      setUserFlag("loginError", AUTH_STATE_ERRORS.includes((authState == null ? void 0 : authState.name) ?? ""));
      if (cloudViewer) {
        setUserFlag("isOrganizationLoaded", !!cloudViewer.firstOrganization);
        setUserFlag("isMemberOfOrganization", (((_c = (_b2 = cloudViewer.firstOrganization) == null ? void 0 : _b2.nodes) == null ? void 0 : _c.length) ?? 0) > 0);
      }
      setProjectFlag("isConfigLoaded", !!(currentProject == null ? void 0 : currentProject.isFullConfigReady));
      setProjectFlag("isNotAuthorized", ((_d = currentProject == null ? void 0 : currentProject.cloudProject) == null ? void 0 : _d.__typename) === "CloudProjectUnauthorized");
      setProjectFlag("isNotFound", ((_e = currentProject == null ? void 0 : currentProject.cloudProject) == null ? void 0 : _e.__typename) === "CloudProjectNotFound");
      setProjectFlag("hasNonExampleSpec", !!(currentProject == null ? void 0 : currentProject.hasNonExampleSpec));
      setProjectFlag("hasNoRecordedRuns", ((_f = currentProject == null ? void 0 : currentProject.cloudProject) == null ? void 0 : _f.__typename) === "CloudProject" && (((_i = (_h = (_g = currentProject.cloudProject) == null ? void 0 : _g.runs) == null ? void 0 : _h.nodes) == null ? void 0 : _i.length) ?? 0) === 0);
      if ((currentProject == null ? void 0 : currentProject.cloudProject) || !userProjectStatusStore.user.isLoggedIn) {
        setProjectFlag("isProjectConnected", ((_j = currentProject == null ? void 0 : currentProject.cloudProject) == null ? void 0 : _j.__typename) === "CloudProject");
      }
      setProjectFlag("isCTConfigured", !!(currentProject == null ? void 0 : currentProject.isCTConfigured));
      setProjectFlag("hasDetectedCtFramework", ((_k = wizard == null ? void 0 : wizard.framework) == null ? void 0 : _k.isDetected) ?? false);
      setProjectFlag("isUsingGit", !!(currentProject == null ? void 0 : currentProject.branch));
    });
    return () => {
    };
  }
});
const _sfc_main$z = /* @__PURE__ */ defineComponent({
  __name: "App",
  setup(__props) {
    return (_ctx, _cache) => {
      const _component_router_view = resolveComponent("router-view");
      return openBlock(), createElementBlock(Fragment, null, [
        createVNode(_component_router_view, null, {
          default: withCtx(({ Component }) => [
            (openBlock(), createBlock(resolveDynamicComponent(Component)))
          ]),
          _: 1
        }),
        !unref(isRunMode) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
          createVNode(_sfc_main$A),
          createVNode(_sfc_main$B)
        ], 64)) : createCommentVNode("", true)
      ], 64);
    };
  }
});
const scriptRel = "modulepreload";
const assetsURL = function(dep, importerUrl) {
  return new URL(dep, importerUrl).href;
};
const seen = {};
const __vitePreload = function preload(baseModule, deps, importerUrl) {
  if (!deps || deps.length === 0) {
    return baseModule();
  }
  const links = document.getElementsByTagName("link");
  return Promise.all(deps.map((dep) => {
    dep = assetsURL(dep, importerUrl);
    if (dep in seen)
      return;
    seen[dep] = true;
    const isCss = dep.endsWith(".css");
    const cssSelector = isCss ? '[rel="stylesheet"]' : "";
    const isBaseRelative = !!importerUrl;
    if (isBaseRelative) {
      for (let i = links.length - 1; i >= 0; i--) {
        const link5 = links[i];
        if (link5.href === dep && (!isCss || link5.rel === "stylesheet")) {
          return;
        }
      }
    } else if (document.querySelector(`link[href="${dep}"]${cssSelector}`)) {
      return;
    }
    const link4 = document.createElement("link");
    link4.rel = isCss ? "stylesheet" : scriptRel;
    if (!isCss) {
      link4.as = "script";
      link4.crossOrigin = "";
    }
    link4.href = dep;
    document.head.appendChild(link4);
    if (isCss) {
      return new Promise((res, rej) => {
        link4.addEventListener("load", res);
        link4.addEventListener("error", () => rej(new Error(`Unable to preload CSS for ${dep}`)));
      });
    }
  })).then(() => baseModule());
};
const __pages_import_0__ = () => __vitePreload(() => import("./Specs-fed2ec57.js"), true ? ["./Specs-fed2ec57.js","./route-block-c0a8bdd8.js"] : void 0, import.meta.url);
const __pages_import_1__ = () => __vitePreload(() => import("./Runner-9e05d46b.js"), true ? ["./Runner-9e05d46b.js","./InlineCodeFragment.vue_vue_type_script_setup_true_lang-836da798.js","./box-open_x48-f096e71a.js","./SpecPatterns.vue_vue_type_script_setup_true_lang-87f36c2c.js","./InlineCodeFragment-63f519c9.css","./Switch.vue_vue_type_script_setup_true_lang-bfd43a35.js","./refresh_x16-bb6873ea.js","./route-block-c0a8bdd8.js","./graphql-b6253c41.js","./Runner-ad79f59f.css"] : void 0, import.meta.url);
const __pages_import_2__ = () => __vitePreload(() => import("./Index-caa4c942.js"), true ? ["./Index-caa4c942.js","./TrackedBanner.vue_vue_type_script_setup_true_lang-817c5bd7.js","./InlineCodeFragment.vue_vue_type_script_setup_true_lang-836da798.js","./box-open_x48-f096e71a.js","./SpecPatterns.vue_vue_type_script_setup_true_lang-87f36c2c.js","./InlineCodeFragment-63f519c9.css","./graphql-b6253c41.js","./SpecNameDisplay.vue_vue_type_script_setup_true_lang-a345f125.js","./PromoHeader.vue_vue_type_script_setup_true_lang-e6d6714c.js","./settings_x16-6e77dd11.js","./route-block-c0a8bdd8.js","./Index-f90bad12.css"] : void 0, import.meta.url);
const __pages_import_3__ = () => __vitePreload(() => import("./Settings-48b4bbdc.js"), true ? ["./Settings-48b4bbdc.js","./ListRowHeader.vue_vue_type_script_setup_true_lang-acb9c120.js","./SpecPatterns.vue_vue_type_script_setup_true_lang-87f36c2c.js","./CloudConnectButton.vue_vue_type_script_setup_true_lang-b0302c16.js","./Switch.vue_vue_type_script_setup_true_lang-bfd43a35.js","./settings_x16-6e77dd11.js","./graphql-b6253c41.js","./Settings-b8118c26.css"] : void 0, import.meta.url);
const __pages_import_4__ = () => __vitePreload(() => import("./Runs-28190256.js"), true ? ["./Runs-28190256.js","./ListRowHeader.vue_vue_type_script_setup_true_lang-acb9c120.js","./locked-project_x48-87dbe387.js","./PromoHeader.vue_vue_type_script_setup_true_lang-e6d6714c.js","./CloudConnectButton.vue_vue_type_script_setup_true_lang-b0302c16.js","./refresh_x16-bb6873ea.js","./TrackedBanner.vue_vue_type_script_setup_true_lang-817c5bd7.js","./Runs-da442fd8.css"] : void 0, import.meta.url);
const __pages_import_5__ = () => __vitePreload(() => import("./Debug-7578477e.js"), true ? ["./Debug-7578477e.js","./SpecNameDisplay.vue_vue_type_script_setup_true_lang-a345f125.js","./locked-project_x48-87dbe387.js","./PromoHeader.vue_vue_type_script_setup_true_lang-e6d6714c.js","./graphql-b6253c41.js","./box-open_x48-f096e71a.js","./CloudConnectButton.vue_vue_type_script_setup_true_lang-b0302c16.js","./Debug-e87f6959.css"] : void 0, import.meta.url);
const __pages_import_6__ = () => __vitePreload(() => import("./_...all_-ce1fe200.js"), true ? ["./_...all_-ce1fe200.js","./route-block-c0a8bdd8.js"] : void 0, import.meta.url);
const routes = [{ "path": "/specs", "component": __pages_import_0__, "children": [{ "name": "SpecRunner", "path": "runner", "component": __pages_import_1__, "props": true, "meta": { "header": false, "navBarExpandedAllowed": false } }, { "name": "Specs", "path": "", "component": __pages_import_2__, "props": true }], "props": true, "meta": { "default": true } }, { "name": "Settings", "path": "/settings", "component": __pages_import_3__, "props": true }, { "name": "Runs", "path": "/runs", "component": __pages_import_4__, "props": true }, { "name": "Debug", "path": "/debug", "component": __pages_import_5__, "props": true }, { "name": "all", "path": "/:all(.*)*", "component": __pages_import_6__, "props": true, "meta": { "title": "404" } }];
const _hoisted_1$V = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$Q = /* @__PURE__ */ createBaseVNode("path", {
  d: "M8 1C4.13401 1 1 4.13401 1 8C1 9.95827 1.80412 11.7287 3.10018 12.9992C3.43799 11.3365 4.60091 9.97347 6.14289 9.35625C5.4468 8.80686 5 7.95561 5 7C5 5.34315 6.34315 4 8 4C9.65685 4 11 5.34315 11 7C11 7.95561 10.5532 8.80686 9.85711 9.35625C11.3991 9.97347 12.562 11.3365 12.8998 12.9992C14.1959 11.7287 15 9.95827 15 8C15 4.13401 11.866 1 8 1Z",
  fill: "#D0D2E0",
  class: "icon-light"
}, null, -1);
const _hoisted_3$K = /* @__PURE__ */ createBaseVNode("path", {
  d: "M6.14289 9.35625C6.6537 9.7594 7.29875 10 8 10C8.70125 10 9.3463 9.7594 9.85711 9.35625M6.14289 9.35625C5.4468 8.80686 5 7.95561 5 7C5 5.34315 6.34315 4 8 4C9.65685 4 11 5.34315 11 7C11 7.95561 10.5532 8.80686 9.85711 9.35625M6.14289 9.35625C4.60091 9.97347 3.43799 11.3365 3.10018 12.9992M9.85711 9.35625C11.3991 9.97347 12.562 11.3365 12.8998 12.9992M12.8998 12.9992C14.1959 11.7287 15 9.95827 15 8C15 4.13401 11.866 1 8 1C4.13401 1 1 4.13401 1 8C1 9.95827 1.80412 11.7287 3.10018 12.9992M12.8998 12.9992C11.6372 14.2369 9.90772 15 8 15C6.09228 15 4.36279 14.2369 3.10018 12.9992",
  stroke: "#1B1E2E",
  class: "icon-dark",
  "stroke-width": "2"
}, null, -1);
const _hoisted_4$t = [
  _hoisted_2$Q,
  _hoisted_3$K
];
function render$v(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$V, _hoisted_4$t);
}
const __unplugin_components_1$5 = { name: "cy-profile_x16", render: render$v };
const _hoisted_1$U = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$P = /* @__PURE__ */ createBaseVNode("path", {
  d: "M6 12L10 8L6 4",
  stroke: "#1B1E2E",
  class: "icon-dark",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$J = [
  _hoisted_2$P
];
function render$u(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$U, _hoisted_3$J);
}
const __unplugin_components_1$4 = { name: "cy-chevron-right_x16", render: render$u };
const _imports_0 = "" + new URL("cypress-dark-d55042cf.png", import.meta.url).href;
const _hoisted_1$T = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$O = /* @__PURE__ */ createBaseVNode("path", {
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M8 1C11.866 1 15 4.13401 15 8H11C11 6.34315 9.65685 5 8 5V1ZM5 8H1C1 11.866 4.13401 15 8 15V11C6.34315 11 5 9.65685 5 8Z",
  fill: "#C5C9FD",
  class: "icon-light"
}, null, -1);
const _hoisted_3$I = /* @__PURE__ */ createBaseVNode("path", {
  d: "M15 8C15 11.866 11.866 15 8 15M15 8C15 4.13401 11.866 1 8 1M15 8H11M8 15C4.13401 15 1 11.866 1 8M8 15V11M1 8C1 4.13401 4.13401 1 8 1M1 8H5M8 1V5M11 8C11 9.65685 9.65685 11 8 11M11 8C11 6.34315 9.65685 5 8 5M8 11C6.34315 11 5 9.65685 5 8M5 8C5 6.34315 6.34315 5 8 5",
  stroke: "#4956E3",
  class: "icon-dark",
  "stroke-width": "2"
}, null, -1);
const _hoisted_4$s = [
  _hoisted_2$O,
  _hoisted_3$I
];
function render$t(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$T, _hoisted_4$s);
}
const __unplugin_components_1$3 = { name: "cy-life-ring_x16", render: render$t };
const _hoisted_1$S = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$N = /* @__PURE__ */ createBaseVNode("path", {
  class: "icon-dark",
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M7.87174 8.85352C7.73926 9.16908 7.5428 9.45192 7.29832 9.68632C7.2355 9.74655 7.16951 9.80357 7.10061 9.85714C6.67114 10.1911 6.12892 10.3903 5.53951 10.3903C4.14608 10.3903 3.01648 9.27667 3.01648 7.90292C3.01648 6.52917 4.14608 5.41553 5.53951 5.41553C6.03261 5.41553 6.49267 5.55499 6.88132 5.79608C7.01087 5.87644 7.13248 5.96809 7.24473 6.06963C7.51416 6.31334 7.72971 6.61403 7.87174 6.95233L6.5334 7.41607C6.36444 7.03052 6.00101 6.76384 5.57993 6.76384C4.99763 6.76384 4.52558 7.27382 4.52558 7.90292C4.52558 8.53202 4.99763 9.04201 5.57993 9.04201C6.00101 9.04201 6.36444 8.77533 6.5334 8.38977L7.87174 8.85352Z",
  fill: "#1B1E2E"
}, null, -1);
const _hoisted_3$H = /* @__PURE__ */ createBaseVNode("path", {
  class: "icon-dark",
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M7.87174 8.85352C7.73926 9.16908 7.5428 9.45192 7.29832 9.68632C7.2355 9.74655 7.16951 9.80357 7.10061 9.85714C6.67114 10.1911 6.12892 10.3903 5.53951 10.3903C4.14608 10.3903 3.01648 9.27667 3.01648 7.90292C3.01648 6.52917 4.14608 5.41553 5.53951 5.41553C6.03261 5.41553 6.49267 5.55499 6.88132 5.79608C7.01087 5.87644 7.13248 5.96809 7.24473 6.06963C7.51416 6.31334 7.72971 6.61403 7.87174 6.95233L6.5334 7.41607C6.36444 7.03052 6.00101 6.76384 5.57993 6.76384C4.99763 6.76384 4.52558 7.27382 4.52558 7.90292C4.52558 8.53202 4.99763 9.04201 5.57993 9.04201C6.00101 9.04201 6.36444 8.77533 6.5334 8.38977L7.87174 8.85352Z",
  fill: "#1B1E2E"
}, null, -1);
const _hoisted_4$r = /* @__PURE__ */ createBaseVNode("path", {
  class: "icon-dark",
  d: "M2 8C2 4.68629 4.68629 2 8 2C10.0081 2 11.7858 2.9865 12.8749 4.5013C13.2604 5.03749 13.5596 5.63988 13.7523 6.28815C13.9134 6.83061 14 7.4052 14 8C14 10.1687 12.8494 12.0703 11.1221 13.1249L10.126 15.7142C10.5774 15.59 11.0131 15.4272 11.4291 15.2296C14.1296 13.9468 16 11.1928 16 8C16 3.58172 12.4183 0 8 0C3.58172 0 0 3.58172 0 8C0 12.4183 3.58172 16 8 16C8.1209 16 8.2412 15.9973 8.36084 15.992C8.73085 15.9755 9.04397 15.7267 9.17712 15.3811L12.9835 5.5013H11.5254L10.3889 8.71776L9.23097 5.5013H7.68707L9.61695 10.4761L8.25252 13.9948C7.89952 14.0094 7.54154 13.9928 7.19735 13.9468C4.26315 13.5545 2 11.0415 2 8Z",
  fill: "#1B1E2E"
}, null, -1);
const _hoisted_5$j = [
  _hoisted_2$N,
  _hoisted_3$H,
  _hoisted_4$r
];
function render$s(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$S, _hoisted_5$j);
}
const CypressIcon = { name: "cy-cypress-logo_x16", render: render$s };
const _hoisted_1$R = { key: 0 };
const _hoisted_2$M = { class: "flex h-full items-center align-middle" };
const _hoisted_3$G = { class: "grow" };
const _hoisted_4$q = {
  key: 0,
  class: "flex h-full items-center align-middle"
};
const _sfc_main$y = /* @__PURE__ */ defineComponent({
  __name: "TopNavListItem",
  props: {
    selectable: null
  },
  setup(__props) {
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("li", {
        class: normalizeClass(["border-b flex border-b-gray-50 transition-colors duration-300", __props.selectable ? "hover:bg-indigo-50" : ""])
      }, [
        _ctx.$slots.prefix ? (openBlock(), createElementBlock("div", _hoisted_1$R, [
          createBaseVNode("div", _hoisted_2$M, [
            renderSlot(_ctx.$slots, "prefix")
          ])
        ])) : createCommentVNode("", true),
        createBaseVNode("div", _hoisted_3$G, [
          renderSlot(_ctx.$slots, "default")
        ]),
        createBaseVNode("div", null, [
          _ctx.$slots.suffix ? (openBlock(), createElementBlock("div", _hoisted_4$q, [
            renderSlot(_ctx.$slots, "suffix")
          ])) : createCommentVNode("", true)
        ])
      ], 2);
    };
  }
});
const _hoisted_1$Q = {
  key: 0,
  class: "flex flex-col max-h-[50vh] overflow-auto"
};
const _sfc_main$x = /* @__PURE__ */ defineComponent({
  __name: "TopNavList",
  props: {
    variant: null,
    forceOpenState: { type: Boolean }
  },
  emits: ["clearForceOpen"],
  setup(__props, { emit: emit3 }) {
    const props = __props;
    return (_ctx, _cache) => {
      const _component_i_cy_chevron_down = __unplugin_components_0$8;
      return openBlock(), createBlock(unref(Popover), { class: "bg-white relative" }, {
        default: withCtx(({ open, close }) => [
          createVNode(unref(PopoverButton), {
            class: "grow h-full group focus:outline-none focus:ring-0",
            onClick: _cache[0] || (_cache[0] = ($event) => emit3("clearForceOpen"))
          }, {
            default: withCtx(() => [
              createBaseVNode("div", {
                class: normalizeClass(["flex gap-[8px] items-center group-hocus:text-indigo-600", open || props.forceOpenState ? "text-indigo-600" : "text-gray-600"])
              }, [
                renderSlot(_ctx.$slots, "heading", {
                  open,
                  close
                }),
                createVNode(_component_i_cy_chevron_down, {
                  class: normalizeClass(["transform transition-all w-[10px] duration-300 group-hocus:icon-dark-indigo-500", open || props.forceOpenState ? "rotate-180 icon-dark-indigo-500" : "icon-dark-gray-200"])
                }, null, 8, ["class"])
              ], 2)
            ]),
            _: 2
          }, 1024),
          createVNode(TransitionQuickFade, null, {
            default: withCtx(() => [
              createVNode(unref(PopoverPanel), {
                static: "",
                class: normalizeClass(["bg-white rounded shadow-dropdown top-[36px] right-0 z-10 absolute", __props.forceOpenState === true || open ? "" : "hidden"])
              }, {
                default: withCtx(() => [
                  __props.variant !== "panel" ? (openBlock(), createElementBlock("ul", _hoisted_1$Q, [
                    renderSlot(_ctx.$slots, "default")
                  ])) : renderSlot(_ctx.$slots, "default", { key: 1 })
                ]),
                _: 2
              }, 1032, ["class"])
            ]),
            _: 2
          }, 1024)
        ]),
        _: 3
      });
    };
  }
});
const _hoisted_1$P = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$L = /* @__PURE__ */ createBaseVNode("path", {
  d: "M9 12L13 8M13 8L9 4M13 8L3 8",
  stroke: "currentColor",
  class: "icon-dark",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$F = [
  _hoisted_2$L
];
function render$r(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$P, _hoisted_3$F);
}
const __unplugin_components_5 = { name: "cy-arrow-right_x16", render: render$r };
const _hoisted_1$O = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 10 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$K = /* @__PURE__ */ createBaseVNode("path", {
  class: "icon-dark",
  d: "M5 3H8C8.55228 3 9 3.44772 9 4V4.5M5 3H2C1.44772 3 1 3.44772 1 4V7C1 7.55228 1.44772 8 2 8H5M5 3V1M5 3V8M5 13H8C8.55228 13 9 12.5523 9 12V9C9 8.44772 8.55228 8 8 8H5M5 13H2C1.44772 13 1 12.5523 1 12V11.5M5 13V15M5 13V8",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$E = [
  _hoisted_2$K
];
function render$q(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$O, _hoisted_3$E);
}
const __unplugin_components_4 = { name: "cy-dollar_x16", render: render$q };
const _hoisted_1$N = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 14 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$J = /* @__PURE__ */ createBaseVNode("path", {
  d: "M7 1V6H12.5L7 15V10H1.5L7 1Z",
  fill: "#D0D2E0",
  class: "icon-light icon-dark-stroke",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$D = [
  _hoisted_2$J
];
function render$p(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$N, _hoisted_3$D);
}
const __unplugin_components_3 = { name: "cy-lightning_x16", render: render$p };
const _hoisted_1$M = {
  height: "1em",
  width: "1em",
  viewBox: "0 0 20 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$I = /* @__PURE__ */ createBaseVNode("path", {
  class: "icon-dark",
  d: "M12 15L19 8M19 8L12 1M19 8L1 8",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$C = [
  _hoisted_2$I
];
function render$o(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$M, _hoisted_3$C);
}
const __unplugin_components_2 = { name: "cy-arrow-outline-right", render: render$o };
const _hoisted_1$L = {
  height: "1em",
  width: "1em",
  style: { "min-width": "18px", "min-height": "18px" },
  viewBox: "0 0 20 20",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$H = /* @__PURE__ */ createBaseVNode("path", {
  class: "icon-dark",
  d: "M11 13V12H9V13H11ZM9 7V8H11V7H9ZM5.5 9C3.567 9 2 7.433 2 5.5H0C0 8.53757 2.46243 11 5.5 11V9ZM2 5.5C2 3.567 3.567 2 5.5 2V0C2.46243 0 0 2.46243 0 5.5H2ZM5.5 2C7.433 2 9 3.567 9 5.5H11C11 2.46243 8.53757 0 5.5 0V2ZM18 14.5C18 16.433 16.433 18 14.5 18V20C17.5376 20 20 17.5376 20 14.5H18ZM14.5 18C12.567 18 11 16.433 11 14.5H9C9 17.5376 11.4624 20 14.5 20V18ZM14.5 11C16.433 11 18 12.567 18 14.5H20C20 11.4624 17.5376 9 14.5 9V11ZM14.5 9H5.5V11H14.5V9ZM11 14.5V13H9V14.5H11ZM9 5.5V7H11V5.5H9Z",
  fill: "#1B1E2E"
}, null, -1);
const _hoisted_3$B = [
  _hoisted_2$H
];
function render$n(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$L, _hoisted_3$B);
}
const __unplugin_components_1$2 = { name: "cy-infinity-loop_x18", render: render$n };
const _hoisted_1$K = {
  height: "1em",
  width: "1em",
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$G = /* @__PURE__ */ createBaseVNode("path", {
  d: "M13 2H4C3.44772 2 3 2.44772 3 3V11H4H13V2Z",
  fill: "#D0D2E0",
  class: "icon-light background",
  style: {}
}, null, -1);
const _hoisted_3$A = /* @__PURE__ */ createBaseVNode("path", {
  d: "M13 11V2H4M13 11H4M13 11V14H4M3 11V13C3 13.5523 3.44772 14 4 14V14M3 11V3C3 2.44772 3.44772 2 4 2V2M3 11H4M4 2V11M4 11V14M10 5H7",
  stroke: "#1B1E2E",
  class: "border icon-dark",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_4$p = [
  _hoisted_2$G,
  _hoisted_3$A
];
function render$m(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$K, _hoisted_4$p);
}
const __unplugin_components_0$5 = { name: "cy-book", render: render$m };
const CircleCI = "" + new URL("circleci-24e4167f.svg", import.meta.url).href;
const GitHubActions = "" + new URL("github-actions-6dfde8a3.svg", import.meta.url).href;
const Bitbucket = "" + new URL("bitbucket-b0e5576f.svg", import.meta.url).href;
const Gitlab = "" + new URL("gitlab-af370db4.svg", import.meta.url).href;
const AwsCodeBuild = "" + new URL("aws-codebuild-bc37b58b.svg", import.meta.url).href;
const _hoisted_1$J = { key: 0 };
const _hoisted_2$F = { class: "p-[24px] pt-[20px]" };
const _hoisted_3$z = { class: "mb-[16px] text-gray-600" };
const _hoisted_4$o = {
  class: "flex flex-wrap gap-[16px]",
  "data-testid": "provider-list"
};
const _hoisted_5$i = ["src"];
const _hoisted_6$c = { class: "grow" };
const _hoisted_7$9 = { class: "pb-[4px] text-indigo-500" };
const _hoisted_8$7 = { class: "text-gray-600 text-[14px]" };
const _hoisted_9$8 = {
  key: 1,
  class: "p-[24px]"
};
const _hoisted_10$6 = { class: "border-b border-b-gray-50 pb-[12px] text-[14px]" };
const _hoisted_11$4 = { class: "font-bold" };
const _hoisted_12$4 = { class: "border-l border-l-jade-500 border-opacity-50 grid w-[28px] place-content-center" };
const _hoisted_13$4 = { class: "rounded flex bg-gray-500 text-white mb-[12px] pt-[9px] pr-[3px] pb-[7px] pl-[12px] justify-between" };
const _hoisted_14$3 = { class: "font-bold" };
const _hoisted_15$3 = { class: "border-l border-l-gray-600 border-opacity-50 grid w-[28px] place-content-center" };
const _hoisted_16$3 = { class: "mt-[20px] mb-[10px] text-gray-600" };
const _hoisted_17$3 = { class: "text-gray-700" };
const _sfc_main$w = /* @__PURE__ */ defineComponent({
  __name: "PromptContent",
  props: {
    type: null,
    automatic: { type: Boolean }
  },
  setup(__props) {
    const props = __props;
    const { t: t2 } = useI18n();
    const getUrl = (link4) => {
      return getUrlWithParams(link4);
    };
    const shrink = useTimeout(500);
    const utmMedium = "CI Prompt 1";
    const utmContent = computed(() => props.automatic ? "Automatic" : "Manual");
    const ciProviders = [
      {
        name: "Circle CI",
        icon: CircleCI,
        link: {
          url: "https://on.cypress.io/setup-ci-circleci",
          params: {
            utm_medium: utmMedium,
            utm_campaign: "Circle",
            utm_content: utmContent.value
          }
        }
      },
      {
        name: "GitHub Actions",
        icon: GitHubActions,
        link: {
          url: "https://on.cypress.io/github-actions",
          params: {
            utm_medium: utmMedium,
            utm_campaign: "GitHub",
            utm_content: utmContent.value
          }
        }
      },
      {
        name: "Bitbucket Pipelines",
        icon: Bitbucket,
        link: {
          url: "https://on.cypress.io/bitbucket-pipelines",
          params: {
            utm_medium: utmMedium,
            utm_campaign: "Bitbucket",
            utm_content: utmContent.value
          }
        }
      },
      {
        name: "GitLab",
        icon: Gitlab,
        link: {
          url: "https://on.cypress.io/gitlab-ci",
          params: {
            utm_medium: utmMedium,
            utm_campaign: "GitLab",
            utm_content: utmContent.value
          }
        }
      },
      {
        name: "AWS CodeBuild",
        icon: AwsCodeBuild,
        link: {
          url: "https://on.cypress.io/aws-codebuild",
          params: {
            utm_medium: utmMedium,
            utm_campaign: "AWS",
            utm_content: utmContent.value
          }
        }
      }
    ];
    const seeOtherGuidesInfo = {
      url: "https://on.cypress.io/setup-ci",
      params: {
        utm_medium: utmMedium,
        utm_campaign: "Other",
        utm_content: utmContent.value
      }
    };
    const orchestrationBullets = [
      t2("topNav.docsMenu.prompts.orchestration1.bullet1"),
      t2("topNav.docsMenu.prompts.orchestration1.bullet2"),
      t2("topNav.docsMenu.prompts.orchestration1.bullet3")
    ];
    return (_ctx, _cache) => {
      const _component_i_cy_book = __unplugin_components_0$5;
      const _component_i_cy_infinity_loop_x18 = __unplugin_components_1$2;
      const _component_i_cy_arrow_outline_right = __unplugin_components_2;
      const _component_i_cy_lightning_x16 = __unplugin_components_3;
      const _component_i_cy_dollar_x16 = __unplugin_components_4;
      const _component_i_cy_arrow_right_x16 = __unplugin_components_5;
      return __props.type === "ci1" ? (openBlock(), createElementBlock("div", _hoisted_1$J, [
        createBaseVNode("div", _hoisted_2$F, [
          createBaseVNode("p", _hoisted_3$z, toDisplayString$1(unref(t2)("topNav.docsMenu.prompts.ci1.description")), 1),
          createBaseVNode("ul", _hoisted_4$o, [
            (openBlock(), createElementBlock(Fragment, null, renderList(ciProviders, (provider) => {
              return createBaseVNode("li", {
                key: provider.name,
                class: ""
              }, [
                createVNode(_sfc_main$10, {
                  href: getUrl(provider.link),
                  class: "!w-[210px]",
                  size: "lg",
                  variant: "outline"
                }, {
                  prefix: withCtx(() => [
                    createBaseVNode("img", {
                      src: provider.icon,
                      width: "14"
                    }, null, 8, _hoisted_5$i)
                  ]),
                  default: withCtx(() => [
                    createTextVNode(" " + toDisplayString$1(provider.name), 1)
                  ]),
                  _: 2
                }, 1032, ["href"])
              ]);
            }), 64)),
            createBaseVNode("li", null, [
              createVNode(_sfc_main$10, {
                href: getUrl(seeOtherGuidesInfo),
                variant: "outline",
                size: "lg",
                class: "!w-[210px]"
              }, {
                prefix: withCtx(() => [
                  createVNode(_component_i_cy_book, { class: "h-[16px] w-[16px] icon-dark-gray-500 icon-light-gray-50" })
                ]),
                default: withCtx(() => [
                  createTextVNode(" " + toDisplayString$1(unref(t2)("topNav.docsMenu.prompts.ci1.seeOtherGuides")), 1)
                ]),
                _: 1
              }, 8, ["href"])
            ])
          ])
        ]),
        createVNode(_sfc_main$11, {
          href: getUrl({
            url: "https://on.cypress.io/ci",
            params: {
              utm_medium: utmMedium,
              utm_campaign: "Learn More"
            }
          }),
          "use-default-hocus": false,
          class: "border border-transparent flex outline-transparent bg-gray-50 py-[16px] px-[24px] box-border items-center group hocus-default"
        }, {
          default: withCtx(() => [
            createVNode(_component_i_cy_infinity_loop_x18, { class: "h-[20px] mr-[20px] w-[20px] icon-dark-indigo-500" }),
            createBaseVNode("div", _hoisted_6$c, [
              createBaseVNode("p", _hoisted_7$9, toDisplayString$1(unref(t2)("topNav.docsMenu.prompts.ci1.intro")), 1),
              createBaseVNode("p", _hoisted_8$7, toDisplayString$1(unref(t2)("topNav.docsMenu.prompts.ci1.learnTheBasics")), 1)
            ]),
            createVNode(_component_i_cy_arrow_outline_right, { class: "h-[20px] transform transition-transform ease-in w-[20px] duration-200 icon-dark-gray-400 group-hocus:translate-x-[2px]" })
          ]),
          _: 1
        }, 8, ["href"])
      ])) : __props.type === "orchestration1" ? (openBlock(), createElementBlock("div", _hoisted_9$8, [
        createBaseVNode("div", _hoisted_10$6, [
          createBaseVNode("div", {
            class: normalizeClass(["rounded flex bg-jade-400 text-white mb-[12px] w-full pt-[9px] pr-[3px] pb-[7px] pl-[12px] transition-all duration-800 justify-between", { "w-[50%]": unref(shrink) }])
          }, [
            createBaseVNode("span", null, [
              createBaseVNode("span", _hoisted_11$4, toDisplayString$1(unref(t2)("topNav.docsMenu.prompts.orchestration1.parallelTime")), 1),
              createTextVNode(" " + toDisplayString$1(unref(t2)("topNav.docsMenu.prompts.orchestration1.withParallelization")), 1)
            ]),
            createBaseVNode("div", _hoisted_12$4, [
              createVNode(_component_i_cy_lightning_x16, { class: "h-[16px] w-[16px] icon-dark-white icon-light-jade-400" })
            ])
          ], 2),
          createBaseVNode("div", _hoisted_13$4, [
            createBaseVNode("span", null, [
              createBaseVNode("span", _hoisted_14$3, toDisplayString$1(unref(t2)("topNav.docsMenu.prompts.orchestration1.noParallelTime")), 1),
              createTextVNode(" " + toDisplayString$1(unref(t2)("topNav.docsMenu.prompts.orchestration1.withoutParallelization")), 1)
            ]),
            createBaseVNode("div", _hoisted_15$3, [
              createVNode(_component_i_cy_dollar_x16, { class: "h-[16px] w-[16px] icon-dark-white" })
            ])
          ])
        ]),
        createBaseVNode("p", _hoisted_16$3, toDisplayString$1(unref(t2)("topNav.docsMenu.prompts.orchestration1.intro")), 1),
        createBaseVNode("ul", _hoisted_17$3, [
          (openBlock(), createElementBlock(Fragment, null, renderList(orchestrationBullets, (bullet2) => {
            return createBaseVNode("li", {
              key: bullet2,
              class: "flex py-[4px] items-center"
            }, [
              createVNode(_component_i_cy_lightning_x16, { class: "h-[16px] mr-[10px] w-[16px] icon-dark-jade-400 icon-light-jade-200" }),
              createTextVNode(" " + toDisplayString$1(bullet2), 1)
            ]);
          }), 64))
        ]),
        createVNode(_sfc_main$10, {
          href: getUrl(
            {
              url: "https://on.cypress.io/smart-orchestration",
              params: {
                utm_medium: utmMedium,
                utm_campaign: "Learn More"
              }
            }
          ),
          size: "lg",
          class: "mt-[12px]"
        }, {
          suffix: withCtx(() => [
            createVNode(_component_i_cy_arrow_right_x16, { class: "icon-dark-current" })
          ]),
          default: withCtx(() => [
            createTextVNode(toDisplayString$1(unref(t2)("topNav.docsMenu.prompts.orchestration1.learnMore")) + " ", 1)
          ]),
          _: 1
        }, 8, ["href"])
      ])) : createCommentVNode("", true);
    };
  }
});
const chromeIcon = "" + new URL("chrome-98045c79.svg", import.meta.url).href;
const firefoxIcon = "" + new URL("firefox-9be61e66.svg", import.meta.url).href;
const edgeIcon = "" + new URL("edge-e54a3dc2.svg", import.meta.url).href;
const electronIcon = "" + new URL("electron-fb07f5cc.svg", import.meta.url).href;
const canaryIcon = "" + new URL("chrome-canary-0acefc94.svg", import.meta.url).href;
const chromeBetaIcon = "" + new URL("chrome-beta-c9aa05de.svg", import.meta.url).href;
const chromiumIcon = "" + new URL("chromium-8e77d142.svg", import.meta.url).href;
const edgeBetaIcon = "" + new URL("edge-beta-133307b4.png", import.meta.url).href;
const edgeCanaryIcon = "" + new URL("edge-canary-1fc5e3a2.png", import.meta.url).href;
const edgeDevIcon = "" + new URL("edge-dev-51b8edea.png", import.meta.url).href;
const firefoxNightlyIcon = "" + new URL("firefox-nightly-fb69ff49.svg", import.meta.url).href;
const firefoxDeveloperEditionIcon = "" + new URL("firefox-developer-edition-8f88b864.svg", import.meta.url).href;
const webKitIcon = "" + new URL("webkit-53e0cd5c.svg", import.meta.url).href;
const genericBrowserLogo = "" + new URL("generic-browser-b2bc06f2.svg", import.meta.url).href;
const allBrowsersIcons = {
  "Electron": electronIcon,
  "Chrome": chromeIcon,
  "Firefox": firefoxIcon,
  "Edge": edgeIcon,
  "Chromium": chromiumIcon,
  "Canary": canaryIcon,
  "Chrome Beta": chromeBetaIcon,
  "Firefox Nightly": firefoxNightlyIcon,
  "Firefox Developer Edition": firefoxDeveloperEditionIcon,
  "Edge Canary": edgeCanaryIcon,
  "Edge Beta": edgeBetaIcon,
  "Edge Dev": edgeDevIcon,
  "WebKit": webKitIcon,
  "generic": genericBrowserLogo
};
const _hoisted_1$I = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
function render$l(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$I, [
    createBaseVNode("path", {
      d: "M13 2H4C3.44772 2 3 2.44772 3 3V11H4H13V2Z",
      class: normalizeClass(["background", "icon-light"]),
      fill: "#D0D2E0",
      style: {}
    }),
    createBaseVNode("path", {
      d: "M13 11V2H4M13 11H4M13 11V14H4M3 11V13C3 13.5523 3.44772 14 4 14V14M3 11V3C3 2.44772 3.44772 2 4 2V2M3 11H4M4 2V11M4 11V14M10 5H7",
      class: normalizeClass(["border", "icon-dark"]),
      stroke: "#1B1E2E",
      "stroke-width": "2",
      "stroke-linecap": "round",
      "stroke-linejoin": "round"
    })
  ]);
}
const __unplugin_components_0$4 = { name: "cy-book_x16", render: render$l };
const _hoisted_1$H = { class: "font-medium text-gray-800" };
const _hoisted_2$E = /* @__PURE__ */ createBaseVNode("hr", { class: "border-gray-50 my-[10px]" }, null, -1);
const _hoisted_3$y = ["onClick"];
const _sfc_main$v = /* @__PURE__ */ defineComponent({
  __name: "DocsMenuContent",
  props: {
    currentProjectExists: { type: Boolean }
  },
  emits: ["setDocsContent"],
  setup(__props, { emit: emit3 }) {
    const { t: t2 } = useI18n();
    const utm_medium = "Docs Menu";
    const switchToGrowthPrompt = (target2) => {
      emit3("setDocsContent", target2);
    };
    const getUrl = (link4) => {
      return getUrlWithParams(link4);
    };
    const docsMenu = [{
      title: t2("topNav.docsMenu.gettingStartedTitle"),
      children: [
        {
          text: t2("topNav.docsMenu.firstTest"),
          link: {
            url: "https://on.cypress.io/writing-first-test",
            params: {
              utm_medium,
              utm_content: "First Test"
            }
          }
        },
        {
          text: t2("topNav.docsMenu.testingApp"),
          link: {
            url: "https://on.cypress.io/testing-your-app",
            params: {
              utm_medium,
              utm_content: "Testing Your App"
            }
          }
        },
        {
          text: t2("topNav.docsMenu.organizingTests"),
          link: {
            url: "https://on.cypress.io/writing-and-organizing-tests",
            params: {
              utm_medium,
              utm_content: "Organizing Tests"
            }
          }
        }
      ]
    }, {
      title: t2("topNav.docsMenu.referencesTitle"),
      children: [{
        text: t2("topNav.docsMenu.bestPractices"),
        link: {
          url: "https://on.cypress.io/best-practices",
          params: {
            utm_medium,
            utm_content: "Best Practices"
          }
        }
      }, {
        text: t2("topNav.docsMenu.configuration"),
        link: {
          url: "https://on.cypress.io/configuration",
          params: {
            utm_medium,
            utm_content: "Configuration"
          }
        }
      }, {
        text: t2("topNav.docsMenu.api"),
        link: {
          url: "https://on.cypress.io/api",
          params: {
            utm_medium,
            utm_content: "API"
          }
        }
      }]
    }, {
      title: t2("topNav.docsMenu.ciTitle"),
      children: [{
        text: t2("topNav.docsMenu.ciSetup"),
        changeContent: "ci1",
        link: {
          url: "https://on.cypress.io/ci",
          params: {
            utm_medium,
            utm_content: "Set Up CI"
          }
        }
      }, {
        text: t2("topNav.docsMenu.fasterTests"),
        changeContent: "orchestration1",
        link: {
          url: "https://on.cypress.io/parallelization",
          params: {
            utm_medium,
            utm_content: "Parallelization"
          }
        }
      }]
    }];
    return (_ctx, _cache) => {
      const _component_i_cy_book_x16 = __unplugin_components_0$4;
      return openBlock(), createElementBlock(Fragment, null, renderList(docsMenu, (list3) => {
        return createBaseVNode("div", {
          key: list3.title,
          class: "min-w-[164px]"
        }, [
          createBaseVNode("h2", _hoisted_1$H, toDisplayString$1(list3.title), 1),
          _hoisted_2$E,
          createBaseVNode("ul", null, [
            (openBlock(true), createElementBlock(Fragment, null, renderList(list3.children, (item) => {
              return openBlock(), createElementBlock("li", {
                key: item.text,
                class: "flex mb-[4px] text-indigo-500 items-center"
              }, [
                createVNode(_component_i_cy_book_x16, { class: "icon-dark-indigo-500 icon-light-indigo-50" }),
                !item.changeContent || !__props.currentProjectExists ? (openBlock(), createBlock(_sfc_main$11, {
                  key: 0,
                  href: getUrl(item.link),
                  class: "font-normal ml-[4px] whitespace-nowrap"
                }, {
                  default: withCtx(() => [
                    createTextVNode(toDisplayString$1(item.text), 1)
                  ]),
                  _: 2
                }, 1032, ["href"])) : (openBlock(), createElementBlock("button", {
                  key: 1,
                  class: "font-normal ml-[4px] whitespace-nowrap hocus-link-default",
                  onClick: ($event) => switchToGrowthPrompt(item.changeContent)
                }, toDisplayString$1(item.text), 9, _hoisted_3$y))
              ]);
            }), 128))
          ])
        ]);
      }), 64);
    };
  }
});
const _hoisted_1$G = { class: "p-[24px] text-gray-700" };
const _hoisted_2$D = { class: "mb-[16px]" };
const _hoisted_3$x = { class: "font-bold" };
const _sfc_main$u = /* @__PURE__ */ defineComponent({
  __name: "UpdateCypressModal",
  props: {
    installCommand: null,
    installedVersion: null,
    latestVersion: null,
    projectName: { default: "" },
    show: { type: Boolean }
  },
  emits: ["close"],
  setup(__props, { emit: emits }) {
    const props = __props;
    const { t: t2 } = useI18n();
    const title = `${t2("topNav.updateCypress.title")} ${props.latestVersion}`;
    return (_ctx, _cache) => {
      const _component_i18n_t = resolveComponent("i18n-t");
      return openBlock(), createBlock(_sfc_main$S, {
        class: "transition transition-all w-[680px] duration-200",
        variant: "bare",
        title,
        "model-value": __props.show,
        "no-help": true,
        "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emits("close"))
      }, {
        default: withCtx(() => [
          createBaseVNode("div", _hoisted_1$G, [
            createBaseVNode("p", _hoisted_2$D, [
              createVNode(_component_i18n_t, {
                scope: "global",
                keypath: "topNav.updateCypress.currentlyRunning"
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(__props.installedVersion), 1)
                ]),
                _: 1
              }),
              createVNode(_component_i18n_t, {
                scope: "global",
                keypath: props.projectName ? "topNav.updateCypress.pasteToUpgradeProject" : "topNav.updateCypress.pasteToUpgradeGlobal"
              }, {
                default: withCtx(() => [
                  createBaseVNode("span", _hoisted_3$x, toDisplayString$1(unref(t2)("topNav.updateCypress.rememberToCloseInsert")), 1)
                ]),
                _: 1
              }, 8, ["keypath"])
            ]),
            createVNode(_sfc_main$G, {
              command: __props.installCommand + "cypress@" + __props.latestVersion,
              "project-folder-name": __props.projectName
            }, null, 8, ["command", "project-folder-name"])
          ])
        ]),
        _: 1
      }, 8, ["model-value"]);
    };
  }
});
const _hoisted_1$F = {
  height: "1em",
  width: "1em",
  style: { "min-width": "24px", "min-height": "24px" },
  viewBox: "0 0 24 24",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$C = /* @__PURE__ */ createBaseVNode("path", {
  d: "M20.4853 20.4853C15.799 25.1716 8.20101 25.1716 3.51472 20.4853C-1.17157 15.799 -1.17157 8.20101 3.51472 3.51472C8.20101 -1.17157 15.799 -1.17157 20.4853 3.51472C25.1716 8.20101 25.1716 15.799 20.4853 20.4853Z",
  fill: "#FFF",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$w = /* @__PURE__ */ createBaseVNode("path", {
  d: "M15.999 9L11 15L8.00098 12",
  stroke: "white",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-light"
}, null, -1);
const _hoisted_4$n = /* @__PURE__ */ createBaseVNode("circle", {
  cx: "12",
  cy: "12",
  r: "12",
  stroke: "black",
  "stroke-width": "1",
  style: { "stroke": "rgba(0,0,0,0.1)" }
}, null, -1);
const _hoisted_5$h = [
  _hoisted_2$C,
  _hoisted_3$w,
  _hoisted_4$n
];
function render$k(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$F, _hoisted_5$h);
}
const __unplugin_components_0$3 = { name: "cy-circle-check_x24", render: render$k };
const _sfc_main$t = /* @__PURE__ */ defineComponent({
  __name: "Tooltip",
  props: {
    color: { default: void 0 },
    hideArrow: { type: Boolean, default: false },
    disabled: { type: Boolean, default: false },
    isInteractive: { type: Boolean, default: false },
    distance: { default: void 0 },
    skidding: { default: void 0 },
    placement: { default: void 0 },
    popperClass: { default: void 0 },
    showDelay: { default: 0 },
    hideDelay: { default: 100 },
    instantMove: { type: Boolean, default: void 0 },
    showGroup: { default: void 0 }
  },
  setup(__props) {
    const props = __props;
    options.disposeTimeout = 0;
    const theme = computed(() => {
      return props.isInteractive ? "menu" : "tooltip";
    });
    const actualPopperClass = computed(() => {
      const result = props.popperClass ? [props.popperClass] : [];
      if (props.hideArrow) {
        result.push("no-arrow");
      }
      if (props.color === "dark") {
        result.push("cypress-v-tooltip-dark");
      } else if (props.color === "light") {
        result.push("cypress-v-tooltip-light");
      } else if (!props.isInteractive) {
        result.push("cypress-v-tooltip-dark");
      } else {
        result.push("cypress-v-tooltip-light");
      }
      return result;
    });
    return (_ctx, _cache) => {
      return !__props.disabled ? (openBlock(), createBlock(resolveDynamicComponent(__props.isInteractive ? unref(Menu) : unref(Tooltip)), {
        key: 0,
        "popper-class": unref(actualPopperClass),
        theme: unref(theme),
        placement: __props.placement ?? "auto",
        distance: __props.distance,
        skidding: __props.skidding,
        "auto-hide": false,
        delay: { show: __props.showDelay, hide: __props.hideDelay },
        "show-group": __props.showGroup
      }, {
        popper: withCtx(({ shown, hide: hide2 }) => [
          renderSlot(_ctx.$slots, "popper", {
            shown,
            hide: hide2
          })
        ]),
        default: withCtx(() => [
          renderSlot(_ctx.$slots, "default")
        ]),
        _: 3
      }, 8, ["popper-class", "theme", "placement", "distance", "skidding", "delay", "show-group"])) : renderSlot(_ctx.$slots, "default", { key: 1 });
    };
  }
});
const Tooltip_vue_vue_type_style_index_0_lang = "";
function sortBrowsers(browsers) {
  return browsers.sort((a2, b2) => a2.displayName > b2.displayName ? 1 : -1);
}
const _hoisted_1$E = ["data-browser-id", "onClick"];
const _hoisted_2$B = ["src"];
const _hoisted_3$v = { class: "grow" };
const _hoisted_4$m = { class: "font-normal mr-[20px] text-gray-500 text-[14px] filter whitespace-nowrap group-focus-within:mix-blend-luminosity group-hover:mix-blend-luminosity" };
const _hoisted_5$g = { key: 0 };
const _hoisted_6$b = { class: "flex h-full items-center align-middle" };
const _hoisted_7$8 = {
  key: 0,
  "data-cy": "top-nav-browser-list-selected-item"
};
const _hoisted_8$6 = {
  key: 1,
  class: "h-[16px] relative"
};
const _hoisted_9$7 = { class: "text-center p-2 text-gray-300 text-[14px] leading-[20px]" };
const _hoisted_10$5 = /* @__PURE__ */ createBaseVNode("div", { class: "font-medium text-white mb-2" }, " Unsupported browser ", -1);
const _sfc_main$s = /* @__PURE__ */ defineComponent({
  __name: "VerticalBrowserListItems",
  props: {
    selectable: { type: Boolean, default: false },
    gql: null,
    specPath: { default: "" }
  },
  setup(__props) {
    const props = __props;
    const { t: t2 } = useI18n();
    gql`
fragment VerticalBrowserListItems on CurrentProject {
  id
  browsers {
    id
    isSelected
    displayName
    version
    majorVersion
    isVersionSupported
    warning
    disabled
  }
}
`;
    gql`
mutation VerticalBrowserListItems_SetBrowser($id: ID!, $specPath: String) {
  launchpadSetBrowser(id: $id) {
    id
    ...VerticalBrowserListItems
  }
  launchOpenProject(specPath: $specPath) {
    id
  }
}
`;
    const browsers = computed(() => {
      if (!props.gql.browsers) {
        return void 0;
      }
      return sortBrowsers([...props.gql.browsers]);
    });
    const setBrowser = useMutation(VerticalBrowserListItems_SetBrowserDocument);
    const handleBrowserChoice = async (browser2) => {
      if (browser2.disabled || !browser2.isVersionSupported || browser2.isSelected) {
        return;
      }
      const mutation = { id: browser2.id, specPath: props.specPath };
      await setBrowser.executeMutation(mutation);
    };
    return (_ctx, _cache) => {
      const _component_i_cy_circle_check_x24 = __unplugin_components_0$3;
      const _component_i_cy_circle_bg_question_mark_x16 = __unplugin_components_0$9;
      return props.gql ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(browsers), (browser2) => {
        return openBlock(), createElementBlock("li", {
          key: browser2.id,
          class: normalizeClass(["border-b border-transparent cursor-pointer flex border-b-gray-50 border-[1px] min-w-[240px] py-[12px] px-[16px] transition-colors duration-300 group focus-within-default", {
            "bg-jade-50": browser2.isSelected,
            "hover:bg-indigo-50 focus-within:bg-indigo-50": !browser2.isSelected && !browser2.disabled && browser2.isVersionSupported,
            "bg-gray-50 cursor-not-allowed": browser2.disabled || !browser2.isVersionSupported,
            "cursor-pointer": !browser2.disabled && browser2.isVersionSupported
          }]),
          "data-cy": "top-nav-browser-list-item",
          "data-browser-id": browser2.id,
          onClick: ($event) => handleBrowserChoice(browser2)
        }, [
          createBaseVNode("img", {
            class: normalizeClass(["mr-[16px] min-w-[26px] w-[26px]", { "filter grayscale": browser2.disabled || !browser2.isVersionSupported }]),
            src: unref(allBrowsersIcons)[browser2.displayName] || unref(allBrowsersIcons).generic,
            alt: ""
          }, null, 10, _hoisted_2$B),
          createBaseVNode("div", _hoisted_3$v, [
            createBaseVNode("div", null, [
              createBaseVNode("button", {
                class: normalizeClass(["font-medium box-border focus:outline-none", {
                  "text-indigo-500 group-hover:text-indigo-700": !browser2.isSelected && !browser2.disabled && browser2.isVersionSupported,
                  "text-jade-700": browser2.isSelected,
                  "text-gray-500": browser2.disabled || !browser2.isVersionSupported
                }])
              }, toDisplayString$1(browser2.displayName), 3),
              createBaseVNode("div", _hoisted_4$m, [
                createTextVNode(toDisplayString$1(unref(t2)("topNav.version")) + " " + toDisplayString$1(browser2.majorVersion) + " ", 1),
                browser2.version === "unsupported" ? (openBlock(), createElementBlock("span", _hoisted_5$g, " (" + toDisplayString$1(unref(t2)("topNav.versionUnsupported")) + ") ", 1)) : createCommentVNode("", true)
              ])
            ])
          ]),
          createBaseVNode("div", null, [
            createBaseVNode("div", _hoisted_6$b, [
              browser2.isSelected ? (openBlock(), createElementBlock("div", _hoisted_7$8, [
                createVNode(_component_i_cy_circle_check_x24, { class: "h-[24px] w-[24px] icon-dark-jade-100 icon-light-jade-500" })
              ])) : !browser2.isVersionSupported ? (openBlock(), createElementBlock("div", _hoisted_8$6, [
                createVNode(_sfc_main$t, null, {
                  popper: withCtx(() => [
                    createBaseVNode("div", _hoisted_9$7, [
                      _hoisted_10$5,
                      createTextVNode(" " + toDisplayString$1(browser2.warning), 1)
                    ])
                  ]),
                  default: withCtx(() => [
                    createVNode(_component_i_cy_circle_bg_question_mark_x16, {
                      class: "icon-dark-gray-700 icon-light-gray-200",
                      "data-cy": "unsupported-browser-tooltip-trigger"
                    })
                  ]),
                  _: 2
                }, 1024)
              ])) : createCommentVNode("", true)
            ])
          ])
        ], 10, _hoisted_1$E);
      }), 128)) : createCommentVNode("", true);
    };
  }
});
const _hoisted_1$D = {
  "data-cy": "top-nav-version-list",
  class: "font-medium text-indigo-500 whitespace-nowrap"
};
const _hoisted_2$A = /* @__PURE__ */ createBaseVNode("span", {
  class: "text-indigo-300",
  "aria-hidden": "true"
}, "â€¢", -1);
const _hoisted_3$u = { class: "font-medium" };
const _hoisted_4$l = /* @__PURE__ */ createBaseVNode("br", null, null, -1);
const _hoisted_5$f = { class: "text-gray-500 text-[14px] leading-[20px]" };
const _hoisted_6$a = { class: "rounded-md bg-indigo-50" };
const _hoisted_7$7 = { class: "p-[5px] text-indigo-500" };
const _hoisted_8$5 = { class: "leading-normal py-[8px] pb-[16px] text-gray-500 text-[14px]" };
const _hoisted_9$6 = { class: "whitespace-nowrap" };
const _hoisted_10$4 = /* @__PURE__ */ createBaseVNode("br", null, null, -1);
const _hoisted_11$3 = { class: "text-gray-600 text-[14px]" };
const _hoisted_12$3 = { class: "rounded-md bg-orange-100" };
const _hoisted_13$3 = { class: "p-[5px] text-amber-800" };
const _hoisted_14$2 = ["alt", "src"];
const _hoisted_15$2 = {
  "data-cy": "top-nav-active-browser",
  class: "font-medium whitespace-nowrap"
};
const _hoisted_16$2 = {
  key: 0,
  "data-cy": "docs-menu-container",
  class: "flex flex-col p-[16px] gap-[24px] md:flex-row"
};
const _hoisted_17$2 = { class: "border-b border-b-gray-50 py-3 px-6 text-lg relative" };
const _sfc_main$r = /* @__PURE__ */ defineComponent({
  __name: "TopNav",
  props: {
    gql: null,
    showBrowsers: { type: Boolean },
    forceOpenDocs: { type: Boolean }
  },
  emits: ["clearForceOpen"],
  setup(__props, { emit: emit3 }) {
    var _a3, _b2, _c, _d;
    const props = __props;
    const { t: t2 } = useI18n();
    gql`
fragment TopNav on Query {
  versions {
    current {
      id
      version
      released
    }
    latest {
      id
      version
      released
    }
  }

  currentProject {
    id
    title
    packageManager
    activeBrowser {
      id
      displayName
      majorVersion
    }
    ...VerticalBrowserListItems
  }
}
`;
    gql`
mutation TopNav_SetPromptShown($slug: String!) {
  setPromptShown(slug: $slug)
}
`;
    const setPromptShown = useMutation(TopNav_SetPromptShownDocument);
    const promptsEl = ref(null);
    const currentReleased = useTimeAgo(
      ((_b2 = (_a3 = props.gql.versions) == null ? void 0 : _a3.current) == null ? void 0 : _b2.released) ? new Date(props.gql.versions.current.released) : ""
    );
    const latestReleased = useTimeAgo(
      ((_d = (_c = props.gql.versions) == null ? void 0 : _c.latest) == null ? void 0 : _d.released) ? new Date(props.gql.versions.latest.released) : ""
    );
    const versions = computed(() => {
      if (!props.gql.versions) {
        return null;
      }
      return {
        current: {
          released: currentReleased.value,
          version: props.gql.versions.current.version
        },
        latest: {
          released: latestReleased.value,
          version: props.gql.versions.latest.version
        }
      };
    });
    const runningOldVersion = computed(() => {
      return props.gql.versions ? props.gql.versions.current.released < props.gql.versions.latest.released : false;
    });
    const showUpdateModal = ref(false);
    const docsMenuVariant = ref("main");
    watchEffect(() => {
      docsMenuVariant.value = props.forceOpenDocs ? "ci1" : "main";
    });
    watch(docsMenuVariant, (newVal, oldVal) => {
      if (oldVal !== "main") {
        setPromptShown.executeMutation({ slug: `${oldVal}` });
      }
    });
    onClickOutside(promptsEl, () => {
      emit3("clearForceOpen");
      setTimeout(() => {
        docsMenuVariant.value = "main";
      }, 300);
    });
    const resetPrompt = (event) => {
      var _a4;
      if (promptsEl.value === null) {
        return;
      }
      const target2 = event.target;
      if (!((_a4 = promptsEl.value) == null ? void 0 : _a4.$el.contains(target2))) {
        docsMenuVariant.value = "main";
      }
    };
    const installCommand = computed(() => {
      var _a4;
      switch ((_a4 = props.gql.currentProject) == null ? void 0 : _a4.packageManager) {
        case "npm":
          return "npm install -D ";
        case "yarn":
          return "yarn add -D ";
        case "pnpm":
          return "pnpm add -D ";
        default:
          return "npm install -D ";
      }
    });
    onKeyStroke(["Enter", " ", "Escape"], (event) => {
      resetPrompt(event);
    });
    const changelogLink = (version2) => {
      return `https://on.cypress.io/changelog#${version2.replaceAll(".", "-")}`;
    };
    return (_ctx, _cache) => {
      var _a4, _b3, _c2, _d2;
      const _component_i_cy_cypress_logo_x16 = CypressIcon;
      const _component_i_cy_life_ring_x16 = __unplugin_components_1$3;
      const _component_i_cy_delete_x12 = __unplugin_components_0$a;
      return openBlock(), createElementBlock(Fragment, null, [
        unref(versions) && unref(runningOldVersion) ? (openBlock(), createBlock(_sfc_main$x, {
          key: 0,
          "data-cy": "cypress-update-popover"
        }, {
          heading: withCtx(() => [
            createVNode(_component_i_cy_cypress_logo_x16, { class: "h-[16px] text-indigo-500 w-[16px] icon-dark-indigo-500 icon-light-indigo-50" }),
            createBaseVNode("span", _hoisted_1$D, [
              createTextVNode("v" + toDisplayString$1(unref(versions).current.version) + " ", 1),
              _hoisted_2$A,
              createTextVNode(" " + toDisplayString$1(unref(t2)("topNav.upgradeText")), 1)
            ])
          ]),
          default: withCtx(() => [
            createVNode(_sfc_main$y, {
              class: "min-w-[278px] py-[8px] px-[16px]",
              "data-cy": "update-hint"
            }, {
              suffix: withCtx(() => [
                createBaseVNode("span", _hoisted_6$a, [
                  createBaseVNode("span", _hoisted_7$7, toDisplayString$1(unref(t2)("topNav.latest")), 1)
                ])
              ]),
              default: withCtx(() => [
                createBaseVNode("div", _hoisted_3$u, [
                  createVNode(_sfc_main$11, {
                    href: changelogLink(unref(versions).latest.version),
                    class: "text-indigo-500",
                    "data-cy": "latest-version"
                  }, {
                    default: withCtx(() => [
                      createTextVNode(toDisplayString$1(unref(versions).latest.version), 1)
                    ]),
                    _: 1
                  }, 8, ["href"]),
                  _hoisted_4$l,
                  createBaseVNode("span", _hoisted_5$f, toDisplayString$1(unref(t2)("topNav.released")) + " " + toDisplayString$1(unref(versions).latest.released), 1)
                ])
              ]),
              _: 1
            }),
            createVNode(_sfc_main$y, { class: "py-[8px] px-[16px] pb-[16px]" }, {
              default: withCtx(() => [
                createBaseVNode("p", _hoisted_8$5, toDisplayString$1(unref(t2)("topNav.runningOldVersion")), 1),
                createVNode(_sfc_main$10, {
                  class: "!w-full",
                  onClick: _cache[0] || (_cache[0] = ($event) => showUpdateModal.value = true)
                }, {
                  default: withCtx(() => [
                    createTextVNode(" Update to " + toDisplayString$1(unref(versions).latest.version), 1)
                  ]),
                  _: 1
                })
              ]),
              _: 1
            }),
            createVNode(_sfc_main$y, {
              class: "bg-orange-50 py-[8px] px-[16px]",
              "data-cy": "current-hint"
            }, {
              suffix: withCtx(() => [
                createBaseVNode("span", _hoisted_12$3, [
                  createBaseVNode("span", _hoisted_13$3, toDisplayString$1(unref(t2)("topNav.installed")), 1)
                ])
              ]),
              default: withCtx(() => [
                createBaseVNode("div", _hoisted_9$6, [
                  createVNode(_sfc_main$11, {
                    href: changelogLink(unref(versions).current.version),
                    class: "font-medium text-amber-800",
                    "data-cy": "current-version"
                  }, {
                    default: withCtx(() => [
                      createTextVNode(toDisplayString$1(unref(versions).current.version), 1)
                    ]),
                    _: 1
                  }, 8, ["href"]),
                  _hoisted_10$4,
                  createBaseVNode("span", _hoisted_11$3, toDisplayString$1(unref(t2)("topNav.released")) + " " + toDisplayString$1(unref(versions).current.released), 1)
                ])
              ]),
              _: 1
            }),
            createVNode(_sfc_main$y, { class: "text-center p-[16px] text-indigo-600" }, {
              default: withCtx(() => [
                createVNode(_sfc_main$11, {
                  href: "https://on.cypress.io/changelog",
                  class: "border-rounded border-gray-100 border w-full py-[8px] text-[12px] block whitespace-nowrap hover:border-gray-200 hover:no-underline"
                }, {
                  default: withCtx(() => [
                    createTextVNode(toDisplayString$1(unref(t2)("topNav.seeAllReleases")), 1)
                  ]),
                  _: 1
                })
              ]),
              _: 1
            })
          ]),
          _: 1
        })) : unref(versions) ? (openBlock(), createBlock(_sfc_main$11, {
          key: 1,
          href: changelogLink(unref(versions).current.version),
          class: "flex font-medium outline-transparent text-gray-600 gap-[8px] items-center group hocus:text-indigo-500 hocus:outline-0",
          "use-default-hocus": false,
          "data-cy": "top-nav-cypress-version-current-link"
        }, {
          default: withCtx(() => [
            createVNode(_component_i_cy_cypress_logo_x16, { class: "h-[16px] w-[16px] group-hocus:icon-dark-indigo-500 group-hocus:icon-light-indigo-50 icon-dark-gray-500 icon-light-gray-100" }),
            createBaseVNode("span", null, " v" + toDisplayString$1(unref(versions).current.version), 1)
          ]),
          _: 1
        }, 8, ["href"])) : createCommentVNode("", true),
        ((_b3 = (_a4 = props.gql) == null ? void 0 : _a4.currentProject) == null ? void 0 : _b3.activeBrowser) && __props.showBrowsers ? (openBlock(), createBlock(_sfc_main$x, { key: 2 }, {
          heading: withCtx(({ open }) => {
            var _a5, _b4, _c3, _d3, _e, _f, _g, _h, _i, _j;
            return [
              ((_c3 = (_b4 = (_a5 = props.gql) == null ? void 0 : _a5.currentProject) == null ? void 0 : _b4.activeBrowser) == null ? void 0 : _c3.displayName) ? (openBlock(), createElementBlock("img", {
                key: 0,
                class: normalizeClass(["w-[16px] filter group-hocus:grayscale-0", open ? "grayscale-0" : "grayscale"]),
                "data-cy": "top-nav-active-browser-icon",
                alt: (_f = (_e = (_d3 = props.gql) == null ? void 0 : _d3.currentProject) == null ? void 0 : _e.activeBrowser) == null ? void 0 : _f.displayName,
                src: unref(allBrowsersIcons)[props.gql.currentProject.activeBrowser.displayName] || unref(allBrowsersIcons).generic
              }, null, 10, _hoisted_14$2)) : createCommentVNode("", true),
              createBaseVNode("span", _hoisted_15$2, toDisplayString$1((_h = (_g = props.gql.currentProject) == null ? void 0 : _g.activeBrowser) == null ? void 0 : _h.displayName) + " " + toDisplayString$1((_j = (_i = props.gql.currentProject) == null ? void 0 : _i.activeBrowser) == null ? void 0 : _j.majorVersion), 1)
            ];
          }),
          default: withCtx(() => [
            createVNode(_sfc_main$s, {
              gql: props.gql.currentProject
            }, null, 8, ["gql"])
          ]),
          _: 1
        })) : createCommentVNode("", true),
        createVNode(_sfc_main$x, {
          ref_key: "promptsEl",
          ref: promptsEl,
          variant: "panel",
          role: "region",
          "aria-live": "polite",
          "force-open-state": props.forceOpenDocs,
          onClearForceOpen: _cache[3] || (_cache[3] = ($event) => emit3("clearForceOpen"))
        }, {
          heading: withCtx(({ open }) => [
            createVNode(_component_i_cy_life_ring_x16, {
              class: normalizeClass(["h-[16px] w-[16px] group-hocus:icon-dark-indigo-500 group-hocus:icon-light-indigo-50", open || props.forceOpenDocs ? "icon-dark-indigo-500 icon-light-indigo-50" : "icon-dark-gray-500 icon-light-gray-100"])
            }, null, 8, ["class"]),
            createBaseVNode("span", {
              class: normalizeClass(["font-medium", { "text-indigo-600": open }])
            }, toDisplayString$1(unref(t2)("topNav.docsMenu.docsHeading")), 3)
          ]),
          default: withCtx(() => {
            var _a5;
            return [
              docsMenuVariant.value === "main" ? (openBlock(), createElementBlock("div", _hoisted_16$2, [
                createVNode(_sfc_main$v, {
                  "current-project-exists": !!((_a5 = props.gql) == null ? void 0 : _a5.currentProject),
                  onSetDocsContent: _cache[1] || (_cache[1] = ($event) => docsMenuVariant.value = $event)
                }, null, 8, ["current-project-exists"])
              ])) : (openBlock(), createElementBlock("div", {
                key: 1,
                ref_key: "promptsEl",
                ref: promptsEl,
                class: "w-[484px]"
              }, [
                createBaseVNode("div", _hoisted_17$2, [
                  createTextVNode(toDisplayString$1(unref(t2)(`topNav.docsMenu.prompts.${docsMenuVariant.value}.title`)) + " ", 1),
                  createBaseVNode("button", {
                    "aria-label": "Close",
                    class: "border-transparent rounded-full border p-[5px] top-[15px] right-[20px] absolute hocus-default hover:border-indigo-300",
                    onClick: _cache[2] || (_cache[2] = ($event) => docsMenuVariant.value = "main")
                  }, [
                    createVNode(_component_i_cy_delete_x12, { class: "h-[12px] w-[12px] icon-dark-gray-400" })
                  ])
                ]),
                createVNode(_sfc_main$w, {
                  type: docsMenuVariant.value,
                  automatic: props.forceOpenDocs
                }, null, 8, ["type", "automatic"])
              ], 512))
            ];
          }),
          _: 1
        }, 8, ["force-open-state"]),
        _ctx.$slots["login-title"] ? (openBlock(), createBlock(_sfc_main$x, {
          key: 3,
          variant: "panel"
        }, {
          heading: withCtx(() => [
            renderSlot(_ctx.$slots, "login-title")
          ]),
          default: withCtx(() => [
            renderSlot(_ctx.$slots, "login-panel")
          ]),
          _: 3
        })) : createCommentVNode("", true),
        unref(versions) ? (openBlock(), createBlock(_sfc_main$u, {
          key: 4,
          show: showUpdateModal.value,
          "installed-version": unref(versions).current.version,
          "latest-version": unref(versions).latest.version,
          "project-name": (_d2 = (_c2 = props.gql) == null ? void 0 : _c2.currentProject) == null ? void 0 : _d2.title,
          "install-command": unref(installCommand),
          onClose: _cache[4] || (_cache[4] = ($event) => showUpdateModal.value = false)
        }, null, 8, ["show", "installed-version", "latest-version", "project-name", "install-command"])) : createCommentVNode("", true)
      ], 64);
    };
  }
});
var gravatarExports$1 = {};
var gravatar$2 = {
  get exports() {
    return gravatarExports$1;
  },
  set exports(v2) {
    gravatarExports$1 = v2;
  }
};
var gravatarExports = {};
var gravatar$1 = {
  get exports() {
    return gravatarExports;
  },
  set exports(v2) {
    gravatarExports = v2;
  }
};
var md5Exports = {};
var md5$1 = {
  get exports() {
    return md5Exports;
  },
  set exports(v2) {
    md5Exports = v2;
  }
};
(function(module) {
  (function($2) {
    function safeAdd(x2, y2) {
      var lsw = (x2 & 65535) + (y2 & 65535);
      var msw = (x2 >> 16) + (y2 >> 16) + (lsw >> 16);
      return msw << 16 | lsw & 65535;
    }
    function bitRotateLeft(num2, cnt) {
      return num2 << cnt | num2 >>> 32 - cnt;
    }
    function md5cmn(q, a2, b2, x2, s2, t2) {
      return safeAdd(bitRotateLeft(safeAdd(safeAdd(a2, q), safeAdd(x2, t2)), s2), b2);
    }
    function md5ff(a2, b2, c2, d2, x2, s2, t2) {
      return md5cmn(b2 & c2 | ~b2 & d2, a2, b2, x2, s2, t2);
    }
    function md5gg(a2, b2, c2, d2, x2, s2, t2) {
      return md5cmn(b2 & d2 | c2 & ~d2, a2, b2, x2, s2, t2);
    }
    function md5hh(a2, b2, c2, d2, x2, s2, t2) {
      return md5cmn(b2 ^ c2 ^ d2, a2, b2, x2, s2, t2);
    }
    function md5ii(a2, b2, c2, d2, x2, s2, t2) {
      return md5cmn(c2 ^ (b2 | ~d2), a2, b2, x2, s2, t2);
    }
    function binlMD5(x2, len) {
      x2[len >> 5] |= 128 << len % 32;
      x2[(len + 64 >>> 9 << 4) + 14] = len;
      var i;
      var olda;
      var oldb;
      var oldc;
      var oldd;
      var a2 = 1732584193;
      var b2 = -271733879;
      var c2 = -1732584194;
      var d2 = 271733878;
      for (i = 0; i < x2.length; i += 16) {
        olda = a2;
        oldb = b2;
        oldc = c2;
        oldd = d2;
        a2 = md5ff(a2, b2, c2, d2, x2[i], 7, -680876936);
        d2 = md5ff(d2, a2, b2, c2, x2[i + 1], 12, -389564586);
        c2 = md5ff(c2, d2, a2, b2, x2[i + 2], 17, 606105819);
        b2 = md5ff(b2, c2, d2, a2, x2[i + 3], 22, -1044525330);
        a2 = md5ff(a2, b2, c2, d2, x2[i + 4], 7, -176418897);
        d2 = md5ff(d2, a2, b2, c2, x2[i + 5], 12, 1200080426);
        c2 = md5ff(c2, d2, a2, b2, x2[i + 6], 17, -1473231341);
        b2 = md5ff(b2, c2, d2, a2, x2[i + 7], 22, -45705983);
        a2 = md5ff(a2, b2, c2, d2, x2[i + 8], 7, 1770035416);
        d2 = md5ff(d2, a2, b2, c2, x2[i + 9], 12, -1958414417);
        c2 = md5ff(c2, d2, a2, b2, x2[i + 10], 17, -42063);
        b2 = md5ff(b2, c2, d2, a2, x2[i + 11], 22, -1990404162);
        a2 = md5ff(a2, b2, c2, d2, x2[i + 12], 7, 1804603682);
        d2 = md5ff(d2, a2, b2, c2, x2[i + 13], 12, -40341101);
        c2 = md5ff(c2, d2, a2, b2, x2[i + 14], 17, -1502002290);
        b2 = md5ff(b2, c2, d2, a2, x2[i + 15], 22, 1236535329);
        a2 = md5gg(a2, b2, c2, d2, x2[i + 1], 5, -165796510);
        d2 = md5gg(d2, a2, b2, c2, x2[i + 6], 9, -1069501632);
        c2 = md5gg(c2, d2, a2, b2, x2[i + 11], 14, 643717713);
        b2 = md5gg(b2, c2, d2, a2, x2[i], 20, -373897302);
        a2 = md5gg(a2, b2, c2, d2, x2[i + 5], 5, -701558691);
        d2 = md5gg(d2, a2, b2, c2, x2[i + 10], 9, 38016083);
        c2 = md5gg(c2, d2, a2, b2, x2[i + 15], 14, -660478335);
        b2 = md5gg(b2, c2, d2, a2, x2[i + 4], 20, -405537848);
        a2 = md5gg(a2, b2, c2, d2, x2[i + 9], 5, 568446438);
        d2 = md5gg(d2, a2, b2, c2, x2[i + 14], 9, -1019803690);
        c2 = md5gg(c2, d2, a2, b2, x2[i + 3], 14, -187363961);
        b2 = md5gg(b2, c2, d2, a2, x2[i + 8], 20, 1163531501);
        a2 = md5gg(a2, b2, c2, d2, x2[i + 13], 5, -1444681467);
        d2 = md5gg(d2, a2, b2, c2, x2[i + 2], 9, -51403784);
        c2 = md5gg(c2, d2, a2, b2, x2[i + 7], 14, 1735328473);
        b2 = md5gg(b2, c2, d2, a2, x2[i + 12], 20, -1926607734);
        a2 = md5hh(a2, b2, c2, d2, x2[i + 5], 4, -378558);
        d2 = md5hh(d2, a2, b2, c2, x2[i + 8], 11, -2022574463);
        c2 = md5hh(c2, d2, a2, b2, x2[i + 11], 16, 1839030562);
        b2 = md5hh(b2, c2, d2, a2, x2[i + 14], 23, -35309556);
        a2 = md5hh(a2, b2, c2, d2, x2[i + 1], 4, -1530992060);
        d2 = md5hh(d2, a2, b2, c2, x2[i + 4], 11, 1272893353);
        c2 = md5hh(c2, d2, a2, b2, x2[i + 7], 16, -155497632);
        b2 = md5hh(b2, c2, d2, a2, x2[i + 10], 23, -1094730640);
        a2 = md5hh(a2, b2, c2, d2, x2[i + 13], 4, 681279174);
        d2 = md5hh(d2, a2, b2, c2, x2[i], 11, -358537222);
        c2 = md5hh(c2, d2, a2, b2, x2[i + 3], 16, -722521979);
        b2 = md5hh(b2, c2, d2, a2, x2[i + 6], 23, 76029189);
        a2 = md5hh(a2, b2, c2, d2, x2[i + 9], 4, -640364487);
        d2 = md5hh(d2, a2, b2, c2, x2[i + 12], 11, -421815835);
        c2 = md5hh(c2, d2, a2, b2, x2[i + 15], 16, 530742520);
        b2 = md5hh(b2, c2, d2, a2, x2[i + 2], 23, -995338651);
        a2 = md5ii(a2, b2, c2, d2, x2[i], 6, -198630844);
        d2 = md5ii(d2, a2, b2, c2, x2[i + 7], 10, 1126891415);
        c2 = md5ii(c2, d2, a2, b2, x2[i + 14], 15, -1416354905);
        b2 = md5ii(b2, c2, d2, a2, x2[i + 5], 21, -57434055);
        a2 = md5ii(a2, b2, c2, d2, x2[i + 12], 6, 1700485571);
        d2 = md5ii(d2, a2, b2, c2, x2[i + 3], 10, -1894986606);
        c2 = md5ii(c2, d2, a2, b2, x2[i + 10], 15, -1051523);
        b2 = md5ii(b2, c2, d2, a2, x2[i + 1], 21, -2054922799);
        a2 = md5ii(a2, b2, c2, d2, x2[i + 8], 6, 1873313359);
        d2 = md5ii(d2, a2, b2, c2, x2[i + 15], 10, -30611744);
        c2 = md5ii(c2, d2, a2, b2, x2[i + 6], 15, -1560198380);
        b2 = md5ii(b2, c2, d2, a2, x2[i + 13], 21, 1309151649);
        a2 = md5ii(a2, b2, c2, d2, x2[i + 4], 6, -145523070);
        d2 = md5ii(d2, a2, b2, c2, x2[i + 11], 10, -1120210379);
        c2 = md5ii(c2, d2, a2, b2, x2[i + 2], 15, 718787259);
        b2 = md5ii(b2, c2, d2, a2, x2[i + 9], 21, -343485551);
        a2 = safeAdd(a2, olda);
        b2 = safeAdd(b2, oldb);
        c2 = safeAdd(c2, oldc);
        d2 = safeAdd(d2, oldd);
      }
      return [a2, b2, c2, d2];
    }
    function binl2rstr(input) {
      var i;
      var output = "";
      var length32 = input.length * 32;
      for (i = 0; i < length32; i += 8) {
        output += String.fromCharCode(input[i >> 5] >>> i % 32 & 255);
      }
      return output;
    }
    function rstr2binl(input) {
      var i;
      var output = [];
      output[(input.length >> 2) - 1] = void 0;
      for (i = 0; i < output.length; i += 1) {
        output[i] = 0;
      }
      var length8 = input.length * 8;
      for (i = 0; i < length8; i += 8) {
        output[i >> 5] |= (input.charCodeAt(i / 8) & 255) << i % 32;
      }
      return output;
    }
    function rstrMD5(s2) {
      return binl2rstr(binlMD5(rstr2binl(s2), s2.length * 8));
    }
    function rstrHMACMD5(key, data) {
      var i;
      var bkey = rstr2binl(key);
      var ipad = [];
      var opad = [];
      var hash2;
      ipad[15] = opad[15] = void 0;
      if (bkey.length > 16) {
        bkey = binlMD5(bkey, key.length * 8);
      }
      for (i = 0; i < 16; i += 1) {
        ipad[i] = bkey[i] ^ 909522486;
        opad[i] = bkey[i] ^ 1549556828;
      }
      hash2 = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
      return binl2rstr(binlMD5(opad.concat(hash2), 512 + 128));
    }
    function rstr2hex(input) {
      var hexTab = "0123456789abcdef";
      var output = "";
      var x2;
      var i;
      for (i = 0; i < input.length; i += 1) {
        x2 = input.charCodeAt(i);
        output += hexTab.charAt(x2 >>> 4 & 15) + hexTab.charAt(x2 & 15);
      }
      return output;
    }
    function str2rstrUTF8(input) {
      return unescape(encodeURIComponent(input));
    }
    function rawMD5(s2) {
      return rstrMD5(str2rstrUTF8(s2));
    }
    function hexMD5(s2) {
      return rstr2hex(rawMD5(s2));
    }
    function rawHMACMD5(k2, d2) {
      return rstrHMACMD5(str2rstrUTF8(k2), str2rstrUTF8(d2));
    }
    function hexHMACMD5(k2, d2) {
      return rstr2hex(rawHMACMD5(k2, d2));
    }
    function md52(string, key, raw) {
      if (!key) {
        if (!raw) {
          return hexMD5(string);
        }
        return rawMD5(string);
      }
      if (!raw) {
        return hexHMACMD5(key, string);
      }
      return rawHMACMD5(key, string);
    }
    if (module.exports) {
      module.exports = md52;
    } else {
      $2.md5 = md52;
    }
  })(commonjsGlobal$1);
})(md5$1);
var querystring$1 = {};
function hasOwnProperty$1(obj, prop2) {
  return Object.prototype.hasOwnProperty.call(obj, prop2);
}
var decode$2 = function(qs, sep, eq2, options2) {
  sep = sep || "&";
  eq2 = eq2 || "=";
  var obj = {};
  if (typeof qs !== "string" || qs.length === 0) {
    return obj;
  }
  var regexp = /\+/g;
  qs = qs.split(sep);
  var maxKeys = 1e3;
  if (options2 && typeof options2.maxKeys === "number") {
    maxKeys = options2.maxKeys;
  }
  var len = qs.length;
  if (maxKeys > 0 && len > maxKeys) {
    len = maxKeys;
  }
  for (var i = 0; i < len; ++i) {
    var x2 = qs[i].replace(regexp, "%20"), idx = x2.indexOf(eq2), kstr, vstr, k2, v2;
    if (idx >= 0) {
      kstr = x2.substr(0, idx);
      vstr = x2.substr(idx + 1);
    } else {
      kstr = x2;
      vstr = "";
    }
    k2 = decodeURIComponent(kstr);
    v2 = decodeURIComponent(vstr);
    if (!hasOwnProperty$1(obj, k2)) {
      obj[k2] = v2;
    } else if (Array.isArray(obj[k2])) {
      obj[k2].push(v2);
    } else {
      obj[k2] = [obj[k2], v2];
    }
  }
  return obj;
};
var stringifyPrimitive = function(v2) {
  switch (typeof v2) {
    case "string":
      return v2;
    case "boolean":
      return v2 ? "true" : "false";
    case "number":
      return isFinite(v2) ? v2 : "";
    default:
      return "";
  }
};
var encode$2 = function(obj, sep, eq2, name2) {
  sep = sep || "&";
  eq2 = eq2 || "=";
  if (obj === null) {
    obj = void 0;
  }
  if (typeof obj === "object") {
    return Object.keys(obj).map(function(k2) {
      var ks = encodeURIComponent(stringifyPrimitive(k2)) + eq2;
      if (Array.isArray(obj[k2])) {
        return obj[k2].map(function(v2) {
          return ks + encodeURIComponent(stringifyPrimitive(v2));
        }).join(sep);
      } else {
        return ks + encodeURIComponent(stringifyPrimitive(obj[k2]));
      }
    }).join(sep);
  }
  if (!name2)
    return "";
  return encodeURIComponent(stringifyPrimitive(name2)) + eq2 + encodeURIComponent(stringifyPrimitive(obj));
};
querystring$1.decode = querystring$1.parse = decode$2;
querystring$1.encode = querystring$1.stringify = encode$2;
var md5 = md5Exports, querystring = querystring$1, MD5_REGEX = /^[0-9a-f]{32}$/;
function params(options2) {
  var params2 = {}, removing = { protocol: 1, format: 1 };
  for (var key in options2) {
    if (!removing[key])
      params2[key] = options2[key];
  }
  return params2;
}
function proto(options2, protocol) {
  if (!options2)
    return;
  if (typeof options2.protocol === "boolean")
    return options2.protocol;
  return options2.protocol === "http" ? false : options2.protocol === "https" ? true : void 0;
}
function getHash(email) {
  email = typeof email === "string" ? email.trim().toLowerCase() : "unspecified";
  return email.match(MD5_REGEX) ? email : md5(email);
}
function getQueryString(options2) {
  var queryData = querystring.stringify(params(options2));
  return queryData && "?" + queryData || "";
}
gravatar$1.exports = {
  url: function(email, options2, protocol) {
    var baseURL = "//www.gravatar.com/avatar/";
    if (options2 && options2.cdn) {
      baseURL = options2.cdn + "/avatar/";
      delete options2.cdn;
    } else {
      if (options2 && options2.protocol)
        protocol = proto(options2);
      if (typeof protocol !== "undefined") {
        baseURL = protocol ? "https://s.gravatar.com/avatar/" : "http://www.gravatar.com/avatar/";
      }
    }
    var query2 = getQueryString(options2);
    return baseURL + getHash(email) + query2;
  },
  profile_url: function(email, options2, https) {
    var format3 = options2 != void 0 && options2.format != void 0 ? String(options2.format) : "json";
    var baseURL;
    if (options2 && options2.cdn) {
      baseURL = options2.cdn + "/";
      delete options2.cdn;
    } else {
      if (options2 && options2.protocol)
        https = proto(options2);
      var baseURL = https && "https://secure.gravatar.com/" || "http://www.gravatar.com/";
    }
    var query2 = getQueryString(options2);
    return baseURL + getHash(email) + "." + format3 + query2;
  }
};
(function(module) {
  module.exports = gravatarExports;
})(gravatar$2);
const gravatar = /* @__PURE__ */ getDefaultExportFromCjs(gravatarExports$1);
const _sfc_main$q = /* @__PURE__ */ defineComponent({
  __name: "UserAvatar",
  props: {
    email: null
  },
  setup(__props) {
    const props = __props;
    const gravatarUrl = computed(() => {
      let opts = { size: "48", default: "mm" };
      if (!props.email) {
        opts.forcedefault = "y";
      }
      return gravatar.url(props.email, opts, true);
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        style: normalizeStyle(`background-image: url(${unref(gravatarUrl)});`),
        class: "bg-cover border-[1px] border-gray-200 rounded-[50px] overflow-hidden",
        "data-cy": "user-avatar"
      }, null, 4);
    };
  }
});
const _hoisted_1$C = {
  "data-cy": "header-bar-content",
  class: "bg-white border-b border-b-gray-100 h-[64px] py-[15px] px-6"
};
const _hoisted_2$z = { class: "flex h-full gap-[12px] items-center justify-between" };
const _hoisted_3$t = {
  key: 0,
  class: "whitespace-nowrap"
};
const _hoisted_4$k = {
  key: 1,
  class: "flex font-medium text-gray-700 items-center children:leading-[24px]"
};
const _hoisted_5$e = /* @__PURE__ */ createBaseVNode("img", {
  class: "h-[32px] mr-[18px] w-[32px]",
  src: _imports_0,
  alt: "cypress"
}, null, -1);
const _hoisted_6$9 = {
  key: 0,
  class: "inline-block"
};
const _hoisted_7$6 = ["role", "href", "ariaDisabled", "onClick"];
const _hoisted_8$4 = {
  key: 0,
  class: "mx-[2px] align-middle inline-block",
  "aria-hidden": "true"
};
const _hoisted_9$5 = { class: "inline-block" };
const _hoisted_10$3 = { class: "font-medium" };
const _hoisted_11$2 = { class: "font-normal max-w-[200px] text-gray-500 inline-block truncate align-top" };
const _hoisted_12$2 = {
  class: "mx-[2px] inline-block align-middle",
  "aria-hidden": "true"
};
const _hoisted_13$2 = { class: "inline-block" };
const _hoisted_14$1 = { class: "flex gap-6" };
const _hoisted_15$1 = { class: "sr-only" };
const _hoisted_16$1 = {
  class: "min-w-[248px]",
  "data-cy": "login-panel"
};
const _hoisted_17$1 = { class: "border-b flex border-b-gray-100 p-[16px]" };
const _hoisted_18$1 = { class: "text-gray-800" };
const _hoisted_19 = /* @__PURE__ */ createBaseVNode("br", null, null, -1);
const _hoisted_20 = { class: "text-gray-600" };
const _hoisted_21 = /* @__PURE__ */ createBaseVNode("br", null, null, -1);
const _hoisted_22$1 = { class: "p-[16px]" };
const _hoisted_23 = { key: 0 };
const _hoisted_24 = { class: "font-medium whitespace-nowrap group-hocus:text-indigo-500" };
const _sfc_main$p = /* @__PURE__ */ defineComponent({
  __name: "HeaderBarContent",
  props: {
    gql: null,
    showBrowsers: { type: Boolean },
    pageName: null,
    allowAutomaticPromptOpen: { type: Boolean }
  },
  setup(__props) {
    const props = __props;
    const userProjectStatusStore = useUserProjectStatusStore();
    gql`
fragment HeaderBarContent_Auth on Query {
  cloudViewer {
    id
    fullName
    email
  }
  cachedUser {
    id
    fullName
    email
  }
}
`;
    gql`
subscription HeaderBarContent_authChange {
  authChange {
    ...Auth
    ...HeaderBarContent_Auth
  }
}
`;
    useSubscription({ query: HeaderBarContent_AuthChangeDocument });
    gql`
mutation GlobalPageHeader_clearCurrentProject {
  clearCurrentProject {
    baseError {
      id
      ...BaseError
    }
    warnings {
      id
    }
    currentProject {
      id
    }
    # This ensures the cache is updated with null after clearing project
    migration {
      configFileNameBefore
    }
  }
}
`;
    gql`
fragment HeaderBar_HeaderBarContent on Query {
  currentProject {
    id
    title
    config
    savedState
    currentTestingType
    branch
  }
  isGlobalMode
  ...TopNav
  ...Auth
  ...HeaderBarContent_Auth
}
`;
    const savedState = computed(() => {
      var _a3, _b2;
      return (_b2 = (_a3 = props.gql) == null ? void 0 : _a3.currentProject) == null ? void 0 : _b2.savedState;
    });
    const currentProject = computed(() => props.gql.currentProject);
    const cloudProjectId = computed(() => {
      var _a3, _b2, _c, _d;
      return (_d = (_c = (_b2 = (_a3 = props.gql) == null ? void 0 : _a3.currentProject) == null ? void 0 : _b2.config) == null ? void 0 : _c.find((item) => item.field === "projectId")) == null ? void 0 : _d.value;
    });
    const clearCurrentProjectMutation = useMutation(GlobalPageHeader_ClearCurrentProjectDocument);
    const clearCurrentProject = () => {
      if (currentProject.value) {
        clearCurrentProjectMutation.executeMutation({});
      }
    };
    const { t: t2 } = useI18n();
    const prompts = lodashExports.sortBy([
      {
        slug: "ci1",
        interval: humanInterval_1("4 days"),
        noProjectId: true
      },
      {
        slug: "orchestration1",
        noProjectId: true
      }
    ], "interval");
    const isForceOpenAllowed = ref(true);
    const isOpenDelayElapsed = ref(false);
    onMounted(() => {
      setTimeout(() => isOpenDelayElapsed.value = true, 2e3);
    });
    const isShowablePromptInSavedState = computed(() => {
      if (!isOpenDelayElapsed.value) {
        return false;
      }
      if (savedState.value) {
        for (const prompt of prompts) {
          if (shouldShowPrompt(prompt)) {
            return true;
          }
        }
      }
      return false;
    });
    function shouldShowPrompt(prompt) {
      var _a3, _b2, _c, _d, _e;
      if (props.allowAutomaticPromptOpen !== true) {
        return false;
      }
      const now2 = Date.now();
      const timeSinceOpened = now2 - (((_a3 = savedState.value) == null ? void 0 : _a3.firstOpened) ?? now2);
      const allPromptShownTimes = Object.values(((_b2 = savedState.value) == null ? void 0 : _b2.promptsShown) ?? {});
      const bannersLastShown = Object.values(((_c = savedState.value) == null ? void 0 : _c.banners) ?? {}).map((banner) => typeof banner === "object" && (banner == null ? void 0 : banner.lastShown)).filter((val) => !!val);
      if ((_e = (_d = savedState.value) == null ? void 0 : _d.promptsShown) == null ? void 0 : _e[prompt.slug]) {
        return false;
      }
      if (allPromptShownTimes == null ? void 0 : allPromptShownTimes.find((time) => now2 - time < humanInterval_1("24 hours"))) {
        return false;
      }
      if (bannersLastShown.some((bannerLastShown) => now2 - bannerLastShown < humanInterval_1("24 hours"))) {
        return false;
      }
      if (!prompt.interval || timeSinceOpened < prompt.interval) {
        return false;
      }
      if (prompt.noProjectId && cloudProjectId.value) {
        return false;
      }
      return true;
    }
    return (_ctx, _cache) => {
      var _a3;
      const _component_i_cy_chevron_right_x16 = __unplugin_components_1$4;
      const _component_i_cy_profile_x16 = __unplugin_components_1$5;
      return openBlock(), createElementBlock("div", _hoisted_1$C, [
        createBaseVNode("div", _hoisted_2$z, [
          props.pageName ? (openBlock(), createElementBlock("div", _hoisted_3$t, toDisplayString$1(props.pageName), 1)) : (openBlock(), createElementBlock("div", _hoisted_4$k, [
            _hoisted_5$e,
            createBaseVNode("nav", null, [
              createBaseVNode("ol", null, [
                props.gql.isGlobalMode ? (openBlock(), createElementBlock("li", _hoisted_6$9, [
                  (openBlock(), createElementBlock("a", {
                    key: Boolean(unref(currentProject)).toString(),
                    class: normalizeClass(["font-medium", unref(currentProject) ? "text-indigo-500 hocus-link-default" : "text-gray-700"]),
                    role: unref(currentProject) ? void 0 : "link",
                    href: unref(currentProject) ? "select-project" : void 0,
                    ariaDisabled: !unref(currentProject),
                    onClick: withModifiers(clearCurrentProject, ["prevent"])
                  }, toDisplayString$1(unref(t2)("topNav.global.projects")), 11, _hoisted_7$6))
                ])) : createCommentVNode("", true),
                ((_a3 = unref(currentProject)) == null ? void 0 : _a3.title) ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
                  props.gql.isGlobalMode ? (openBlock(), createElementBlock("li", _hoisted_8$4, [
                    createVNode(_component_i_cy_chevron_right_x16, { class: "icon-dark-gray-200" })
                  ])) : createCommentVNode("", true),
                  createBaseVNode("li", _hoisted_9$5, [
                    createBaseVNode("span", _hoisted_10$3, toDisplayString$1(unref(currentProject).title), 1),
                    unref(currentProject).branch ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
                      createTextVNode(toDisplayString$1(" ") + " "),
                      createVNode(_sfc_main$t, {
                        placement: "bottom",
                        class: "inline-block"
                      }, {
                        popper: withCtx(() => [
                          createTextVNode(toDisplayString$1(unref(currentProject).branch), 1)
                        ]),
                        default: withCtx(() => [
                          createBaseVNode("span", _hoisted_11$2, " (" + toDisplayString$1(unref(currentProject).branch) + ") ", 1)
                        ]),
                        _: 1
                      })
                    ], 64)) : createCommentVNode("", true)
                  ]),
                  unref(currentProject).currentTestingType ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
                    createBaseVNode("li", _hoisted_12$2, [
                      createVNode(_component_i_cy_chevron_right_x16, { class: "icon-dark-gray-200" })
                    ]),
                    createBaseVNode("li", _hoisted_13$2, toDisplayString$1(unref(t2)(`testingType.${unref(currentProject).currentTestingType}.name`)), 1)
                  ], 64)) : createCommentVNode("", true)
                ], 64)) : createCommentVNode("", true)
              ])
            ])
          ])),
          createBaseVNode("div", _hoisted_14$1, [
            createVNode(_sfc_main$r, {
              gql: props.gql,
              "show-browsers": props.showBrowsers,
              "force-open-docs": isForceOpenAllowed.value && unref(isShowablePromptInSavedState),
              onClearForceOpen: _cache[0] || (_cache[0] = ($event) => isForceOpenAllowed.value = false)
            }, createSlots({ _: 2 }, [
              unref(userProjectStatusStore).user.isLoggedIn ? {
                name: "login-title",
                fn: withCtx(() => {
                  var _a4;
                  return [
                    createVNode(_sfc_main$q, {
                      email: (_a4 = unref(userProjectStatusStore).userData) == null ? void 0 : _a4.email,
                      class: "h-[24px] w-[24px]",
                      "data-cy": "user-avatar-title"
                    }, null, 8, ["email"]),
                    createBaseVNode("span", _hoisted_15$1, toDisplayString$1(unref(t2)("topNav.login.profileMenuLabel")), 1)
                  ];
                }),
                key: "0"
              } : void 0,
              unref(userProjectStatusStore).userData ? {
                name: "login-panel",
                fn: withCtx(() => {
                  var _a4, _b2, _c;
                  return [
                    createBaseVNode("div", _hoisted_16$1, [
                      createBaseVNode("div", _hoisted_17$1, [
                        createVNode(_sfc_main$q, {
                          email: (_a4 = unref(userProjectStatusStore).userData) == null ? void 0 : _a4.email,
                          class: "h-[48px] mr-[16px] w-[48px]",
                          "data-cy": "user-avatar-panel"
                        }, null, 8, ["email"]),
                        createBaseVNode("div", null, [
                          createBaseVNode("span", _hoisted_18$1, toDisplayString$1((_b2 = unref(userProjectStatusStore).userData) == null ? void 0 : _b2.fullName), 1),
                          _hoisted_19,
                          createBaseVNode("span", _hoisted_20, toDisplayString$1((_c = unref(userProjectStatusStore).userData) == null ? void 0 : _c.email), 1),
                          _hoisted_21,
                          createVNode(_sfc_main$11, { href: "https://on.cypress.io/dashboard/profile" }, {
                            default: withCtx(() => [
                              createTextVNode(" Profile Settings ")
                            ]),
                            _: 1
                          })
                        ])
                      ]),
                      createBaseVNode("div", _hoisted_22$1, [
                        createVNode(_sfc_main$$, {
                          gql: props.gql,
                          "show-logout": true,
                          "utm-medium": "Nav"
                        }, null, 8, ["gql"])
                      ])
                    ])
                  ];
                }),
                key: "1"
              } : void 0
            ]), 1032, ["gql", "show-browsers", "force-open-docs"]),
            !unref(userProjectStatusStore).user.isLoggedIn ? (openBlock(), createElementBlock("div", _hoisted_23, [
              createBaseVNode("button", {
                class: "flex text-gray-600 items-center group focus:outline-transparent",
                onClick: _cache[1] || (_cache[1] = ($event) => unref(userProjectStatusStore).openLoginConnectModal({ utmMedium: "Nav" }))
              }, [
                createVNode(_component_i_cy_profile_x16, { class: "h-[16px] mr-[8px] w-[16px] block icon-dark-gray-500 icon-light-gray-100 group-hocus:icon-dark-indigo-500 group-hocus:icon-light-indigo-50" }),
                createBaseVNode("span", _hoisted_24, toDisplayString$1(unref(t2)("topNav.login.actionLogin")), 1)
              ])
            ])) : createCommentVNode("", true)
          ])
        ])
      ]);
    };
  }
});
const _hoisted_1$B = { key: 0 };
const _sfc_main$o = /* @__PURE__ */ defineComponent({
  __name: "HeaderBar",
  props: {
    showBrowsers: { type: Boolean },
    pageName: { default: void 0 },
    allowAutomaticPromptOpen: { type: Boolean, default: false }
  },
  emits: ["connect-project"],
  setup(__props, { emit: emit3 }) {
    const props = __props;
    gql`
query HeaderBar_HeaderBarQuery {
  ...HeaderBar_HeaderBarContent
}
`;
    const query2 = useQuery({ query: HeaderBar_HeaderBarQueryDocument });
    return (_ctx, _cache) => {
      return unref(query2).data.value ? (openBlock(), createElementBlock("div", _hoisted_1$B, [
        createVNode(_sfc_main$p, {
          gql: unref(query2).data.value,
          "show-browsers": props.showBrowsers,
          "page-name": props.pageName,
          "allow-automatic-prompt-open": props.allowAutomaticPromptOpen,
          onConnectProject: _cache[0] || (_cache[0] = ($event) => emit3("connect-project"))
        }, null, 8, ["gql", "show-browsers", "page-name", "allow-automatic-prompt-open"]),
        renderSlot(_ctx.$slots, "banner")
      ])) : createCommentVNode("", true);
    };
  }
});
const _hoisted_1$A = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$y = /* @__PURE__ */ createBaseVNode("path", {
  d: "M6 12L10 8L6 4",
  stroke: "#1B1E2E",
  class: "icon-dark",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$s = [
  _hoisted_2$y
];
function render$j(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$A, _hoisted_3$s);
}
const __unplugin_components_0$2 = { name: "cy-chevron-right-small_x16", render: render$j };
var markdownItExports = {};
var markdownIt = {
  get exports() {
    return markdownItExports;
  },
  set exports(v2) {
    markdownItExports = v2;
  }
};
var utils$1 = {};
var entitiesExports = {};
var entities$1 = {
  get exports() {
    return entitiesExports;
  },
  set exports(v2) {
    entitiesExports = v2;
  }
};
const Aacute = "Ã�";
const aacute = "Ã¡";
const Abreve = "Ä‚";
const abreve = "Äƒ";
const ac = "âˆ¾";
const acd = "âˆ¿";
const acE = "âˆ¾Ì³";
const Acirc = "Ã‚";
const acirc = "Ã¢";
const acute = "Â´";
const Acy = "Ð�";
const acy = "Ð°";
const AElig = "Ã†";
const aelig = "Ã¦";
const af = "â�¡";
const Afr = "ð�”„";
const afr = "ð�”ž";
const Agrave = "Ã€";
const agrave = "Ã ";
const alefsym = "â„µ";
const aleph = "â„µ";
const Alpha = "Î‘";
const alpha = "Î±";
const Amacr = "Ä€";
const amacr = "Ä�";
const amalg = "â¨¿";
const amp = "&";
const AMP = "&";
const andand = "â©•";
const And = "â©“";
const and = "âˆ§";
const andd = "â©œ";
const andslope = "â©˜";
const andv = "â©š";
const ang = "âˆ ";
const ange = "â¦¤";
const angle = "âˆ ";
const angmsdaa = "â¦¨";
const angmsdab = "â¦©";
const angmsdac = "â¦ª";
const angmsdad = "â¦«";
const angmsdae = "â¦¬";
const angmsdaf = "â¦­";
const angmsdag = "â¦®";
const angmsdah = "â¦¯";
const angmsd = "âˆ¡";
const angrt = "âˆŸ";
const angrtvb = "âŠ¾";
const angrtvbd = "â¦�";
const angsph = "âˆ¢";
const angst = "Ã…";
const angzarr = "â�¼";
const Aogon = "Ä„";
const aogon = "Ä…";
const Aopf = "ð�”¸";
const aopf = "ð�•’";
const apacir = "â©¯";
const ap = "â‰ˆ";
const apE = "â©°";
const ape = "â‰Š";
const apid = "â‰‹";
const apos = "'";
const ApplyFunction = "â�¡";
const approx = "â‰ˆ";
const approxeq = "â‰Š";
const Aring = "Ã…";
const aring = "Ã¥";
const Ascr = "ð�’œ";
const ascr = "ð�’¶";
const Assign = "â‰”";
const ast = "*";
const asymp = "â‰ˆ";
const asympeq = "â‰�";
const Atilde = "Ãƒ";
const atilde = "Ã£";
const Auml = "Ã„";
const auml = "Ã¤";
const awconint = "âˆ³";
const awint = "â¨‘";
const backcong = "â‰Œ";
const backepsilon = "Ï¶";
const backprime = "â€µ";
const backsim = "âˆ½";
const backsimeq = "â‹�";
const Backslash = "âˆ–";
const Barv = "â«§";
const barvee = "âŠ½";
const barwed = "âŒ…";
const Barwed = "âŒ†";
const barwedge = "âŒ…";
const bbrk = "âŽµ";
const bbrktbrk = "âŽ¶";
const bcong = "â‰Œ";
const Bcy = "Ð‘";
const bcy = "Ð±";
const bdquo = "â€ž";
const becaus = "âˆµ";
const because = "âˆµ";
const Because = "âˆµ";
const bemptyv = "â¦°";
const bepsi = "Ï¶";
const bernou = "â„¬";
const Bernoullis = "â„¬";
const Beta = "Î’";
const beta = "Î²";
const beth = "â„¶";
const between = "â‰¬";
const Bfr = "ð�”…";
const bfr = "ð�”Ÿ";
const bigcap = "â‹‚";
const bigcirc = "â—¯";
const bigcup = "â‹ƒ";
const bigodot = "â¨€";
const bigoplus = "â¨�";
const bigotimes = "â¨‚";
const bigsqcup = "â¨†";
const bigstar = "â˜…";
const bigtriangledown = "â–½";
const bigtriangleup = "â–³";
const biguplus = "â¨„";
const bigvee = "â‹�";
const bigwedge = "â‹€";
const bkarow = "â¤�";
const blacklozenge = "â§«";
const blacksquare = "â–ª";
const blacktriangle = "â–´";
const blacktriangledown = "â–¾";
const blacktriangleleft = "â—‚";
const blacktriangleright = "â–¸";
const blank = "â�£";
const blk12 = "â–’";
const blk14 = "â–‘";
const blk34 = "â–“";
const block$1 = "â–ˆ";
const bne = "=âƒ¥";
const bnequiv = "â‰¡âƒ¥";
const bNot = "â«­";
const bnot = "âŒ�";
const Bopf = "ð�”¹";
const bopf = "ð�•“";
const bot = "âŠ¥";
const bottom$1 = "âŠ¥";
const bowtie = "â‹ˆ";
const boxbox = "â§‰";
const boxdl = "â”�";
const boxdL = "â••";
const boxDl = "â•–";
const boxDL = "â•—";
const boxdr = "â”Œ";
const boxdR = "â•’";
const boxDr = "â•“";
const boxDR = "â•”";
const boxh = "â”€";
const boxH = "â•�";
const boxhd = "â”¬";
const boxHd = "â•¤";
const boxhD = "â•¥";
const boxHD = "â•¦";
const boxhu = "â”´";
const boxHu = "â•§";
const boxhU = "â•¨";
const boxHU = "â•©";
const boxminus = "âŠŸ";
const boxplus = "âŠž";
const boxtimes = "âŠ ";
const boxul = "â”˜";
const boxuL = "â•›";
const boxUl = "â•œ";
const boxUL = "â•�";
const boxur = "â””";
const boxuR = "â•˜";
const boxUr = "â•™";
const boxUR = "â•š";
const boxv = "â”‚";
const boxV = "â•‘";
const boxvh = "â”¼";
const boxvH = "â•ª";
const boxVh = "â•«";
const boxVH = "â•¬";
const boxvl = "â”¤";
const boxvL = "â•¡";
const boxVl = "â•¢";
const boxVL = "â•£";
const boxvr = "â”œ";
const boxvR = "â•ž";
const boxVr = "â•Ÿ";
const boxVR = "â• ";
const bprime = "â€µ";
const breve = "Ë˜";
const Breve = "Ë˜";
const brvbar = "Â¦";
const bscr = "ð�’·";
const Bscr = "â„¬";
const bsemi = "â��";
const bsim = "âˆ½";
const bsime = "â‹�";
const bsolb = "â§…";
const bsol = "\\";
const bsolhsub = "âŸˆ";
const bull = "â€¢";
const bullet = "â€¢";
const bump = "â‰Ž";
const bumpE = "âª®";
const bumpe = "â‰�";
const Bumpeq = "â‰Ž";
const bumpeq = "â‰�";
const Cacute = "Ä†";
const cacute = "Ä‡";
const capand = "â©„";
const capbrcup = "â©‰";
const capcap = "â©‹";
const cap = "âˆ©";
const Cap = "â‹’";
const capcup = "â©‡";
const capdot = "â©€";
const CapitalDifferentialD = "â……";
const caps = "âˆ©ï¸€";
const caret = "â��";
const caron = "Ë‡";
const Cayleys = "â„­";
const ccaps = "â©�";
const Ccaron = "ÄŒ";
const ccaron = "Ä�";
const Ccedil = "Ã‡";
const ccedil = "Ã§";
const Ccirc = "Äˆ";
const ccirc = "Ä‰";
const Cconint = "âˆ°";
const ccups = "â©Œ";
const ccupssm = "â©�";
const Cdot = "ÄŠ";
const cdot = "Ä‹";
const cedil = "Â¸";
const Cedilla = "Â¸";
const cemptyv = "â¦²";
const cent = "Â¢";
const centerdot = "Â·";
const CenterDot = "Â·";
const cfr = "ð�” ";
const Cfr = "â„­";
const CHcy = "Ð§";
const chcy = "Ñ‡";
const check = "âœ“";
const checkmark = "âœ“";
const Chi = "Î§";
const chi = "Ï‡";
const circ = "Ë†";
const circeq = "â‰—";
const circlearrowleft = "â†º";
const circlearrowright = "â†»";
const circledast = "âŠ›";
const circledcirc = "âŠš";
const circleddash = "âŠ�";
const CircleDot = "âŠ™";
const circledR = "Â®";
const circledS = "â“ˆ";
const CircleMinus = "âŠ–";
const CirclePlus = "âŠ•";
const CircleTimes = "âŠ—";
const cir = "â—‹";
const cirE = "â§ƒ";
const cire = "â‰—";
const cirfnint = "â¨�";
const cirmid = "â«¯";
const cirscir = "â§‚";
const ClockwiseContourIntegral = "âˆ²";
const CloseCurlyDoubleQuote = "â€�";
const CloseCurlyQuote = "â€™";
const clubs = "â™£";
const clubsuit = "â™£";
const colon = ":";
const Colon = "âˆ·";
const Colone = "â©´";
const colone = "â‰”";
const coloneq = "â‰”";
const comma = ",";
const commat = "@";
const comp = "âˆ�";
const compfn = "âˆ˜";
const complement = "âˆ�";
const complexes = "â„‚";
const cong = "â‰…";
const congdot = "â©­";
const Congruent = "â‰¡";
const conint = "âˆ®";
const Conint = "âˆ¯";
const ContourIntegral = "âˆ®";
const copf = "ð�•”";
const Copf = "â„‚";
const coprod = "âˆ�";
const Coproduct = "âˆ�";
const copy = "Â©";
const COPY = "Â©";
const copysr = "â„—";
const CounterClockwiseContourIntegral = "âˆ³";
const crarr = "â†µ";
const cross = "âœ—";
const Cross = "â¨¯";
const Cscr = "ð�’ž";
const cscr = "ð�’¸";
const csub = "â«�";
const csube = "â«‘";
const csup = "â«�";
const csupe = "â«’";
const ctdot = "â‹¯";
const cudarrl = "â¤¸";
const cudarrr = "â¤µ";
const cuepr = "â‹ž";
const cuesc = "â‹Ÿ";
const cularr = "â†¶";
const cularrp = "â¤½";
const cupbrcap = "â©ˆ";
const cupcap = "â©†";
const CupCap = "â‰�";
const cup = "âˆª";
const Cup = "â‹“";
const cupcup = "â©Š";
const cupdot = "âŠ�";
const cupor = "â©…";
const cups = "âˆªï¸€";
const curarr = "â†·";
const curarrm = "â¤¼";
const curlyeqprec = "â‹ž";
const curlyeqsucc = "â‹Ÿ";
const curlyvee = "â‹Ž";
const curlywedge = "â‹�";
const curren = "Â¤";
const curvearrowleft = "â†¶";
const curvearrowright = "â†·";
const cuvee = "â‹Ž";
const cuwed = "â‹�";
const cwconint = "âˆ²";
const cwint = "âˆ±";
const cylcty = "âŒ­";
const dagger = "â€ ";
const Dagger = "â€¡";
const daleth = "â„¸";
const darr = "â†“";
const Darr = "â†¡";
const dArr = "â‡“";
const dash = "â€�";
const Dashv = "â«¤";
const dashv = "âŠ£";
const dbkarow = "â¤�";
const dblac = "Ë�";
const Dcaron = "ÄŽ";
const dcaron = "Ä�";
const Dcy = "Ð”";
const dcy = "Ð´";
const ddagger = "â€¡";
const ddarr = "â‡Š";
const DD = "â……";
const dd = "â…†";
const DDotrahd = "â¤‘";
const ddotseq = "â©·";
const deg = "Â°";
const Del = "âˆ‡";
const Delta = "Î”";
const delta = "Î´";
const demptyv = "â¦±";
const dfisht = "â¥¿";
const Dfr = "ð�”‡";
const dfr = "ð�”¡";
const dHar = "â¥¥";
const dharl = "â‡ƒ";
const dharr = "â‡‚";
const DiacriticalAcute = "Â´";
const DiacriticalDot = "Ë™";
const DiacriticalDoubleAcute = "Ë�";
const DiacriticalGrave = "`";
const DiacriticalTilde = "Ëœ";
const diam = "â‹„";
const diamond = "â‹„";
const Diamond = "â‹„";
const diamondsuit = "â™¦";
const diams = "â™¦";
const die = "Â¨";
const DifferentialD = "â…†";
const digamma = "Ï�";
const disin = "â‹²";
const div = "Ã·";
const divide = "Ã·";
const divideontimes = "â‹‡";
const divonx = "â‹‡";
const DJcy = "Ð‚";
const djcy = "Ñ’";
const dlcorn = "âŒž";
const dlcrop = "âŒ�";
const dollar = "$";
const Dopf = "ð�”»";
const dopf = "ð�••";
const Dot = "Â¨";
const dot = "Ë™";
const DotDot = "âƒœ";
const doteq = "â‰�";
const doteqdot = "â‰‘";
const DotEqual = "â‰�";
const dotminus = "âˆ¸";
const dotplus = "âˆ”";
const dotsquare = "âŠ¡";
const doublebarwedge = "âŒ†";
const DoubleContourIntegral = "âˆ¯";
const DoubleDot = "Â¨";
const DoubleDownArrow = "â‡“";
const DoubleLeftArrow = "â‡�";
const DoubleLeftRightArrow = "â‡”";
const DoubleLeftTee = "â«¤";
const DoubleLongLeftArrow = "âŸ¸";
const DoubleLongLeftRightArrow = "âŸº";
const DoubleLongRightArrow = "âŸ¹";
const DoubleRightArrow = "â‡’";
const DoubleRightTee = "âŠ¨";
const DoubleUpArrow = "â‡‘";
const DoubleUpDownArrow = "â‡•";
const DoubleVerticalBar = "âˆ¥";
const DownArrowBar = "â¤“";
const downarrow = "â†“";
const DownArrow = "â†“";
const Downarrow = "â‡“";
const DownArrowUpArrow = "â‡µ";
const DownBreve = "Ì‘";
const downdownarrows = "â‡Š";
const downharpoonleft = "â‡ƒ";
const downharpoonright = "â‡‚";
const DownLeftRightVector = "â¥�";
const DownLeftTeeVector = "â¥ž";
const DownLeftVectorBar = "â¥–";
const DownLeftVector = "â†½";
const DownRightTeeVector = "â¥Ÿ";
const DownRightVectorBar = "â¥—";
const DownRightVector = "â‡�";
const DownTeeArrow = "â†§";
const DownTee = "âŠ¤";
const drbkarow = "â¤�";
const drcorn = "âŒŸ";
const drcrop = "âŒŒ";
const Dscr = "ð�’Ÿ";
const dscr = "ð�’¹";
const DScy = "Ð…";
const dscy = "Ñ•";
const dsol = "â§¶";
const Dstrok = "Ä�";
const dstrok = "Ä‘";
const dtdot = "â‹±";
const dtri = "â–¿";
const dtrif = "â–¾";
const duarr = "â‡µ";
const duhar = "â¥¯";
const dwangle = "â¦¦";
const DZcy = "Ð�";
const dzcy = "ÑŸ";
const dzigrarr = "âŸ¿";
const Eacute = "Ã‰";
const eacute = "Ã©";
const easter = "â©®";
const Ecaron = "Äš";
const ecaron = "Ä›";
const Ecirc = "ÃŠ";
const ecirc = "Ãª";
const ecir = "â‰–";
const ecolon = "â‰•";
const Ecy = "Ð­";
const ecy = "Ñ�";
const eDDot = "â©·";
const Edot = "Ä–";
const edot = "Ä—";
const eDot = "â‰‘";
const ee = "â…‡";
const efDot = "â‰’";
const Efr = "ð�”ˆ";
const efr = "ð�”¢";
const eg = "âªš";
const Egrave = "Ãˆ";
const egrave = "Ã¨";
const egs = "âª–";
const egsdot = "âª˜";
const el = "âª™";
const Element$1 = "âˆˆ";
const elinters = "â�§";
const ell = "â„“";
const els = "âª•";
const elsdot = "âª—";
const Emacr = "Ä’";
const emacr = "Ä“";
const empty$1 = "âˆ…";
const emptyset = "âˆ…";
const EmptySmallSquare = "â—»";
const emptyv = "âˆ…";
const EmptyVerySmallSquare = "â–«";
const emsp13 = "â€„";
const emsp14 = "â€…";
const emsp = "â€ƒ";
const ENG = "ÅŠ";
const eng = "Å‹";
const ensp = "â€‚";
const Eogon = "Ä˜";
const eogon = "Ä™";
const Eopf = "ð�”¼";
const eopf = "ð�•–";
const epar = "â‹•";
const eparsl = "â§£";
const eplus = "â©±";
const epsi = "Îµ";
const Epsilon = "Î•";
const epsilon = "Îµ";
const epsiv = "Ïµ";
const eqcirc = "â‰–";
const eqcolon = "â‰•";
const eqsim = "â‰‚";
const eqslantgtr = "âª–";
const eqslantless = "âª•";
const Equal = "â©µ";
const equals = "=";
const EqualTilde = "â‰‚";
const equest = "â‰Ÿ";
const Equilibrium = "â‡Œ";
const equiv = "â‰¡";
const equivDD = "â©¸";
const eqvparsl = "â§¥";
const erarr = "â¥±";
const erDot = "â‰“";
const escr = "â„¯";
const Escr = "â„°";
const esdot = "â‰�";
const Esim = "â©³";
const esim = "â‰‚";
const Eta = "Î—";
const eta = "Î·";
const ETH = "Ã�";
const eth = "Ã°";
const Euml = "Ã‹";
const euml = "Ã«";
const euro = "â‚¬";
const excl = "!";
const exist = "âˆƒ";
const Exists = "âˆƒ";
const expectation = "â„°";
const exponentiale = "â…‡";
const ExponentialE = "â…‡";
const fallingdotseq = "â‰’";
const Fcy = "Ð¤";
const fcy = "Ñ„";
const female = "â™€";
const ffilig = "ï¬ƒ";
const fflig = "ï¬€";
const ffllig = "ï¬„";
const Ffr = "ð�”‰";
const ffr = "ð�”£";
const filig = "ï¬�";
const FilledSmallSquare = "â—¼";
const FilledVerySmallSquare = "â–ª";
const fjlig = "fj";
const flat = "â™­";
const fllig = "ï¬‚";
const fltns = "â–±";
const fnof = "Æ’";
const Fopf = "ð�”½";
const fopf = "ð�•—";
const forall = "âˆ€";
const ForAll = "âˆ€";
const fork = "â‹”";
const forkv = "â«™";
const Fouriertrf = "â„±";
const fpartint = "â¨�";
const frac12 = "Â½";
const frac13 = "â…“";
const frac14 = "Â¼";
const frac15 = "â…•";
const frac16 = "â…™";
const frac18 = "â…›";
const frac23 = "â…”";
const frac25 = "â…–";
const frac34 = "Â¾";
const frac35 = "â…—";
const frac38 = "â…œ";
const frac45 = "â…˜";
const frac56 = "â…š";
const frac58 = "â…�";
const frac78 = "â…ž";
const frasl = "â�„";
const frown = "âŒ¢";
const fscr = "ð�’»";
const Fscr = "â„±";
const gacute = "Çµ";
const Gamma = "Î“";
const gamma = "Î³";
const Gammad = "Ïœ";
const gammad = "Ï�";
const gap = "âª†";
const Gbreve = "Äž";
const gbreve = "ÄŸ";
const Gcedil = "Ä¢";
const Gcirc = "Äœ";
const gcirc = "Ä�";
const Gcy = "Ð“";
const gcy = "Ð³";
const Gdot = "Ä ";
const gdot = "Ä¡";
const ge = "â‰¥";
const gE = "â‰§";
const gEl = "âªŒ";
const gel = "â‹›";
const geq = "â‰¥";
const geqq = "â‰§";
const geqslant = "â©¾";
const gescc = "âª©";
const ges = "â©¾";
const gesdot = "âª€";
const gesdoto = "âª‚";
const gesdotol = "âª„";
const gesl = "â‹›ï¸€";
const gesles = "âª”";
const Gfr = "ð�”Š";
const gfr = "ð�”¤";
const gg = "â‰«";
const Gg = "â‹™";
const ggg = "â‹™";
const gimel = "â„·";
const GJcy = "Ðƒ";
const gjcy = "Ñ“";
const gla = "âª¥";
const gl = "â‰·";
const glE = "âª’";
const glj = "âª¤";
const gnap = "âªŠ";
const gnapprox = "âªŠ";
const gne = "âªˆ";
const gnE = "â‰©";
const gneq = "âªˆ";
const gneqq = "â‰©";
const gnsim = "â‹§";
const Gopf = "ð�”¾";
const gopf = "ð�•˜";
const grave = "`";
const GreaterEqual = "â‰¥";
const GreaterEqualLess = "â‹›";
const GreaterFullEqual = "â‰§";
const GreaterGreater = "âª¢";
const GreaterLess = "â‰·";
const GreaterSlantEqual = "â©¾";
const GreaterTilde = "â‰³";
const Gscr = "ð�’¢";
const gscr = "â„Š";
const gsim = "â‰³";
const gsime = "âªŽ";
const gsiml = "âª�";
const gtcc = "âª§";
const gtcir = "â©º";
const gt = ">";
const GT = ">";
const Gt = "â‰«";
const gtdot = "â‹—";
const gtlPar = "â¦•";
const gtquest = "â©¼";
const gtrapprox = "âª†";
const gtrarr = "â¥¸";
const gtrdot = "â‹—";
const gtreqless = "â‹›";
const gtreqqless = "âªŒ";
const gtrless = "â‰·";
const gtrsim = "â‰³";
const gvertneqq = "â‰©ï¸€";
const gvnE = "â‰©ï¸€";
const Hacek = "Ë‡";
const hairsp = "â€Š";
const half = "Â½";
const hamilt = "â„‹";
const HARDcy = "Ðª";
const hardcy = "ÑŠ";
const harrcir = "â¥ˆ";
const harr = "â†”";
const hArr = "â‡”";
const harrw = "â†­";
const Hat = "^";
const hbar = "â„�";
const Hcirc = "Ä¤";
const hcirc = "Ä¥";
const hearts = "â™¥";
const heartsuit = "â™¥";
const hellip = "â€¦";
const hercon = "âŠ¹";
const hfr = "ð�”¥";
const Hfr = "â„Œ";
const HilbertSpace = "â„‹";
const hksearow = "â¤¥";
const hkswarow = "â¤¦";
const hoarr = "â‡¿";
const homtht = "âˆ»";
const hookleftarrow = "â†©";
const hookrightarrow = "â†ª";
const hopf = "ð�•™";
const Hopf = "â„�";
const horbar = "â€•";
const HorizontalLine = "â”€";
const hscr = "ð�’½";
const Hscr = "â„‹";
const hslash = "â„�";
const Hstrok = "Ä¦";
const hstrok = "Ä§";
const HumpDownHump = "â‰Ž";
const HumpEqual = "â‰�";
const hybull = "â�ƒ";
const hyphen = "â€�";
const Iacute = "Ã�";
const iacute = "Ã­";
const ic = "â�£";
const Icirc = "ÃŽ";
const icirc = "Ã®";
const Icy = "Ð˜";
const icy = "Ð¸";
const Idot = "Ä°";
const IEcy = "Ð•";
const iecy = "Ðµ";
const iexcl = "Â¡";
const iff = "â‡”";
const ifr = "ð�”¦";
const Ifr = "â„‘";
const Igrave = "ÃŒ";
const igrave = "Ã¬";
const ii = "â…ˆ";
const iiiint = "â¨Œ";
const iiint = "âˆ­";
const iinfin = "â§œ";
const iiota = "â„©";
const IJlig = "Ä²";
const ijlig = "Ä³";
const Imacr = "Äª";
const imacr = "Ä«";
const image$1 = "â„‘";
const ImaginaryI = "â…ˆ";
const imagline = "â„�";
const imagpart = "â„‘";
const imath = "Ä±";
const Im = "â„‘";
const imof = "âŠ·";
const imped = "Æµ";
const Implies = "â‡’";
const incare = "â„…";
const infin = "âˆž";
const infintie = "â§�";
const inodot = "Ä±";
const intcal = "âŠº";
const int = "âˆ«";
const Int = "âˆ¬";
const integers = "â„¤";
const Integral = "âˆ«";
const intercal = "âŠº";
const Intersection = "â‹‚";
const intlarhk = "â¨—";
const intprod = "â¨¼";
const InvisibleComma = "â�£";
const InvisibleTimes = "â�¢";
const IOcy = "Ð�";
const iocy = "Ñ‘";
const Iogon = "Ä®";
const iogon = "Ä¯";
const Iopf = "ð�•€";
const iopf = "ð�•š";
const Iota = "Î™";
const iota = "Î¹";
const iprod = "â¨¼";
const iquest = "Â¿";
const iscr = "ð�’¾";
const Iscr = "â„�";
const isin = "âˆˆ";
const isindot = "â‹µ";
const isinE = "â‹¹";
const isins = "â‹´";
const isinsv = "â‹³";
const isinv = "âˆˆ";
const it = "â�¢";
const Itilde = "Ä¨";
const itilde = "Ä©";
const Iukcy = "Ð†";
const iukcy = "Ñ–";
const Iuml = "Ã�";
const iuml = "Ã¯";
const Jcirc = "Ä´";
const jcirc = "Äµ";
const Jcy = "Ð™";
const jcy = "Ð¹";
const Jfr = "ð�”�";
const jfr = "ð�”§";
const jmath = "È·";
const Jopf = "ð�•�";
const jopf = "ð�•›";
const Jscr = "ð�’¥";
const jscr = "ð�’¿";
const Jsercy = "Ðˆ";
const jsercy = "Ñ˜";
const Jukcy = "Ð„";
const jukcy = "Ñ”";
const Kappa = "Îš";
const kappa = "Îº";
const kappav = "Ï°";
const Kcedil = "Ä¶";
const kcedil = "Ä·";
const Kcy = "Ðš";
const kcy = "Ðº";
const Kfr = "ð�”Ž";
const kfr = "ð�”¨";
const kgreen = "Ä¸";
const KHcy = "Ð¥";
const khcy = "Ñ…";
const KJcy = "ÐŒ";
const kjcy = "Ñœ";
const Kopf = "ð�•‚";
const kopf = "ð�•œ";
const Kscr = "ð�’¦";
const kscr = "ð�“€";
const lAarr = "â‡š";
const Lacute = "Ä¹";
const lacute = "Äº";
const laemptyv = "â¦´";
const lagran = "â„’";
const Lambda = "Î›";
const lambda = "Î»";
const lang = "âŸ¨";
const Lang = "âŸª";
const langd = "â¦‘";
const langle = "âŸ¨";
const lap = "âª…";
const Laplacetrf = "â„’";
const laquo = "Â«";
const larrb = "â‡¤";
const larrbfs = "â¤Ÿ";
const larr = "â†�";
const Larr = "â†ž";
const lArr = "â‡�";
const larrfs = "â¤�";
const larrhk = "â†©";
const larrlp = "â†«";
const larrpl = "â¤¹";
const larrsim = "â¥³";
const larrtl = "â†¢";
const latail = "â¤™";
const lAtail = "â¤›";
const lat = "âª«";
const late = "âª­";
const lates = "âª­ï¸€";
const lbarr = "â¤Œ";
const lBarr = "â¤Ž";
const lbbrk = "â�²";
const lbrace = "{";
const lbrack = "[";
const lbrke = "â¦‹";
const lbrksld = "â¦�";
const lbrkslu = "â¦�";
const Lcaron = "Ä½";
const lcaron = "Ä¾";
const Lcedil = "Ä»";
const lcedil = "Ä¼";
const lceil = "âŒˆ";
const lcub = "{";
const Lcy = "Ð›";
const lcy = "Ð»";
const ldca = "â¤¶";
const ldquo = "â€œ";
const ldquor = "â€ž";
const ldrdhar = "â¥§";
const ldrushar = "â¥‹";
const ldsh = "â†²";
const le = "â‰¤";
const lE = "â‰¦";
const LeftAngleBracket = "âŸ¨";
const LeftArrowBar = "â‡¤";
const leftarrow = "â†�";
const LeftArrow = "â†�";
const Leftarrow = "â‡�";
const LeftArrowRightArrow = "â‡†";
const leftarrowtail = "â†¢";
const LeftCeiling = "âŒˆ";
const LeftDoubleBracket = "âŸ¦";
const LeftDownTeeVector = "â¥¡";
const LeftDownVectorBar = "â¥™";
const LeftDownVector = "â‡ƒ";
const LeftFloor = "âŒŠ";
const leftharpoondown = "â†½";
const leftharpoonup = "â†¼";
const leftleftarrows = "â‡‡";
const leftrightarrow = "â†”";
const LeftRightArrow = "â†”";
const Leftrightarrow = "â‡”";
const leftrightarrows = "â‡†";
const leftrightharpoons = "â‡‹";
const leftrightsquigarrow = "â†­";
const LeftRightVector = "â¥Ž";
const LeftTeeArrow = "â†¤";
const LeftTee = "âŠ£";
const LeftTeeVector = "â¥š";
const leftthreetimes = "â‹‹";
const LeftTriangleBar = "â§�";
const LeftTriangle = "âŠ²";
const LeftTriangleEqual = "âŠ´";
const LeftUpDownVector = "â¥‘";
const LeftUpTeeVector = "â¥ ";
const LeftUpVectorBar = "â¥˜";
const LeftUpVector = "â†¿";
const LeftVectorBar = "â¥’";
const LeftVector = "â†¼";
const lEg = "âª‹";
const leg = "â‹š";
const leq = "â‰¤";
const leqq = "â‰¦";
const leqslant = "â©½";
const lescc = "âª¨";
const les = "â©½";
const lesdot = "â©¿";
const lesdoto = "âª�";
const lesdotor = "âªƒ";
const lesg = "â‹šï¸€";
const lesges = "âª“";
const lessapprox = "âª…";
const lessdot = "â‹–";
const lesseqgtr = "â‹š";
const lesseqqgtr = "âª‹";
const LessEqualGreater = "â‹š";
const LessFullEqual = "â‰¦";
const LessGreater = "â‰¶";
const lessgtr = "â‰¶";
const LessLess = "âª¡";
const lesssim = "â‰²";
const LessSlantEqual = "â©½";
const LessTilde = "â‰²";
const lfisht = "â¥¼";
const lfloor = "âŒŠ";
const Lfr = "ð�”�";
const lfr = "ð�”©";
const lg = "â‰¶";
const lgE = "âª‘";
const lHar = "â¥¢";
const lhard = "â†½";
const lharu = "â†¼";
const lharul = "â¥ª";
const lhblk = "â–„";
const LJcy = "Ð‰";
const ljcy = "Ñ™";
const llarr = "â‡‡";
const ll = "â‰ª";
const Ll = "â‹˜";
const llcorner = "âŒž";
const Lleftarrow = "â‡š";
const llhard = "â¥«";
const lltri = "â—º";
const Lmidot = "Ä¿";
const lmidot = "Å€";
const lmoustache = "âŽ°";
const lmoust = "âŽ°";
const lnap = "âª‰";
const lnapprox = "âª‰";
const lne = "âª‡";
const lnE = "â‰¨";
const lneq = "âª‡";
const lneqq = "â‰¨";
const lnsim = "â‹¦";
const loang = "âŸ¬";
const loarr = "â‡½";
const lobrk = "âŸ¦";
const longleftarrow = "âŸµ";
const LongLeftArrow = "âŸµ";
const Longleftarrow = "âŸ¸";
const longleftrightarrow = "âŸ·";
const LongLeftRightArrow = "âŸ·";
const Longleftrightarrow = "âŸº";
const longmapsto = "âŸ¼";
const longrightarrow = "âŸ¶";
const LongRightArrow = "âŸ¶";
const Longrightarrow = "âŸ¹";
const looparrowleft = "â†«";
const looparrowright = "â†¬";
const lopar = "â¦…";
const Lopf = "ð�•ƒ";
const lopf = "ð�•�";
const loplus = "â¨­";
const lotimes = "â¨´";
const lowast = "âˆ—";
const lowbar = "_";
const LowerLeftArrow = "â†™";
const LowerRightArrow = "â†˜";
const loz = "â—Š";
const lozenge = "â—Š";
const lozf = "â§«";
const lpar = "(";
const lparlt = "â¦“";
const lrarr = "â‡†";
const lrcorner = "âŒŸ";
const lrhar = "â‡‹";
const lrhard = "â¥­";
const lrm = "â€Ž";
const lrtri = "âŠ¿";
const lsaquo = "â€¹";
const lscr = "ð�“�";
const Lscr = "â„’";
const lsh = "â†°";
const Lsh = "â†°";
const lsim = "â‰²";
const lsime = "âª�";
const lsimg = "âª�";
const lsqb = "[";
const lsquo = "â€˜";
const lsquor = "â€š";
const Lstrok = "Å�";
const lstrok = "Å‚";
const ltcc = "âª¦";
const ltcir = "â©¹";
const lt = "<";
const LT = "<";
const Lt = "â‰ª";
const ltdot = "â‹–";
const lthree = "â‹‹";
const ltimes = "â‹‰";
const ltlarr = "â¥¶";
const ltquest = "â©»";
const ltri = "â—ƒ";
const ltrie = "âŠ´";
const ltrif = "â—‚";
const ltrPar = "â¦–";
const lurdshar = "â¥Š";
const luruhar = "â¥¦";
const lvertneqq = "â‰¨ï¸€";
const lvnE = "â‰¨ï¸€";
const macr = "Â¯";
const male = "â™‚";
const malt = "âœ ";
const maltese = "âœ ";
const map$1 = "â†¦";
const mapsto = "â†¦";
const mapstodown = "â†§";
const mapstoleft = "â†¤";
const mapstoup = "â†¥";
const marker = "â–®";
const mcomma = "â¨©";
const Mcy = "Ðœ";
const mcy = "Ð¼";
const mdash = "â€”";
const mDDot = "âˆº";
const measuredangle = "âˆ¡";
const MediumSpace = "â�Ÿ";
const Mellintrf = "â„³";
const Mfr = "ð�”�";
const mfr = "ð�”ª";
const mho = "â„§";
const micro = "Âµ";
const midast = "*";
const midcir = "â«°";
const mid = "âˆ£";
const middot = "Â·";
const minusb = "âŠŸ";
const minus = "âˆ’";
const minusd = "âˆ¸";
const minusdu = "â¨ª";
const MinusPlus = "âˆ“";
const mlcp = "â«›";
const mldr = "â€¦";
const mnplus = "âˆ“";
const models = "âŠ§";
const Mopf = "ð�•„";
const mopf = "ð�•ž";
const mp = "âˆ“";
const mscr = "ð�“‚";
const Mscr = "â„³";
const mstpos = "âˆ¾";
const Mu = "Îœ";
const mu = "Î¼";
const multimap = "âŠ¸";
const mumap = "âŠ¸";
const nabla = "âˆ‡";
const Nacute = "Åƒ";
const nacute = "Å„";
const nang = "âˆ âƒ’";
const nap = "â‰‰";
const napE = "â©°Ì¸";
const napid = "â‰‹Ì¸";
const napos = "Å‰";
const napprox = "â‰‰";
const natural = "â™®";
const naturals = "â„•";
const natur = "â™®";
const nbsp = "Â ";
const nbump = "â‰ŽÌ¸";
const nbumpe = "â‰�Ì¸";
const ncap = "â©ƒ";
const Ncaron = "Å‡";
const ncaron = "Åˆ";
const Ncedil = "Å…";
const ncedil = "Å†";
const ncong = "â‰‡";
const ncongdot = "â©­Ì¸";
const ncup = "â©‚";
const Ncy = "Ð�";
const ncy = "Ð½";
const ndash = "â€“";
const nearhk = "â¤¤";
const nearr = "â†—";
const neArr = "â‡—";
const nearrow = "â†—";
const ne = "â‰ ";
const nedot = "â‰�Ì¸";
const NegativeMediumSpace = "â€‹";
const NegativeThickSpace = "â€‹";
const NegativeThinSpace = "â€‹";
const NegativeVeryThinSpace = "â€‹";
const nequiv = "â‰¢";
const nesear = "â¤¨";
const nesim = "â‰‚Ì¸";
const NestedGreaterGreater = "â‰«";
const NestedLessLess = "â‰ª";
const NewLine = "\n";
const nexist = "âˆ„";
const nexists = "âˆ„";
const Nfr = "ð�”‘";
const nfr = "ð�”«";
const ngE = "â‰§Ì¸";
const nge = "â‰±";
const ngeq = "â‰±";
const ngeqq = "â‰§Ì¸";
const ngeqslant = "â©¾Ì¸";
const nges = "â©¾Ì¸";
const nGg = "â‹™Ì¸";
const ngsim = "â‰µ";
const nGt = "â‰«âƒ’";
const ngt = "â‰¯";
const ngtr = "â‰¯";
const nGtv = "â‰«Ì¸";
const nharr = "â†®";
const nhArr = "â‡Ž";
const nhpar = "â«²";
const ni = "âˆ‹";
const nis = "â‹¼";
const nisd = "â‹º";
const niv = "âˆ‹";
const NJcy = "ÐŠ";
const njcy = "Ñš";
const nlarr = "â†š";
const nlArr = "â‡�";
const nldr = "â€¥";
const nlE = "â‰¦Ì¸";
const nle = "â‰°";
const nleftarrow = "â†š";
const nLeftarrow = "â‡�";
const nleftrightarrow = "â†®";
const nLeftrightarrow = "â‡Ž";
const nleq = "â‰°";
const nleqq = "â‰¦Ì¸";
const nleqslant = "â©½Ì¸";
const nles = "â©½Ì¸";
const nless = "â‰®";
const nLl = "â‹˜Ì¸";
const nlsim = "â‰´";
const nLt = "â‰ªâƒ’";
const nlt = "â‰®";
const nltri = "â‹ª";
const nltrie = "â‹¬";
const nLtv = "â‰ªÌ¸";
const nmid = "âˆ¤";
const NoBreak = "â� ";
const NonBreakingSpace = "Â ";
const nopf = "ð�•Ÿ";
const Nopf = "â„•";
const Not = "â«¬";
const not = "Â¬";
const NotCongruent = "â‰¢";
const NotCupCap = "â‰­";
const NotDoubleVerticalBar = "âˆ¦";
const NotElement = "âˆ‰";
const NotEqual = "â‰ ";
const NotEqualTilde = "â‰‚Ì¸";
const NotExists = "âˆ„";
const NotGreater = "â‰¯";
const NotGreaterEqual = "â‰±";
const NotGreaterFullEqual = "â‰§Ì¸";
const NotGreaterGreater = "â‰«Ì¸";
const NotGreaterLess = "â‰¹";
const NotGreaterSlantEqual = "â©¾Ì¸";
const NotGreaterTilde = "â‰µ";
const NotHumpDownHump = "â‰ŽÌ¸";
const NotHumpEqual = "â‰�Ì¸";
const notin = "âˆ‰";
const notindot = "â‹µÌ¸";
const notinE = "â‹¹Ì¸";
const notinva = "âˆ‰";
const notinvb = "â‹·";
const notinvc = "â‹¶";
const NotLeftTriangleBar = "â§�Ì¸";
const NotLeftTriangle = "â‹ª";
const NotLeftTriangleEqual = "â‹¬";
const NotLess = "â‰®";
const NotLessEqual = "â‰°";
const NotLessGreater = "â‰¸";
const NotLessLess = "â‰ªÌ¸";
const NotLessSlantEqual = "â©½Ì¸";
const NotLessTilde = "â‰´";
const NotNestedGreaterGreater = "âª¢Ì¸";
const NotNestedLessLess = "âª¡Ì¸";
const notni = "âˆŒ";
const notniva = "âˆŒ";
const notnivb = "â‹¾";
const notnivc = "â‹½";
const NotPrecedes = "âŠ€";
const NotPrecedesEqual = "âª¯Ì¸";
const NotPrecedesSlantEqual = "â‹ ";
const NotReverseElement = "âˆŒ";
const NotRightTriangleBar = "â§�Ì¸";
const NotRightTriangle = "â‹«";
const NotRightTriangleEqual = "â‹­";
const NotSquareSubset = "âŠ�Ì¸";
const NotSquareSubsetEqual = "â‹¢";
const NotSquareSuperset = "âŠ�Ì¸";
const NotSquareSupersetEqual = "â‹£";
const NotSubset = "âŠ‚âƒ’";
const NotSubsetEqual = "âŠˆ";
const NotSucceeds = "âŠ�";
const NotSucceedsEqual = "âª°Ì¸";
const NotSucceedsSlantEqual = "â‹¡";
const NotSucceedsTilde = "â‰¿Ì¸";
const NotSuperset = "âŠƒâƒ’";
const NotSupersetEqual = "âŠ‰";
const NotTilde = "â‰�";
const NotTildeEqual = "â‰„";
const NotTildeFullEqual = "â‰‡";
const NotTildeTilde = "â‰‰";
const NotVerticalBar = "âˆ¤";
const nparallel = "âˆ¦";
const npar = "âˆ¦";
const nparsl = "â«½âƒ¥";
const npart = "âˆ‚Ì¸";
const npolint = "â¨”";
const npr = "âŠ€";
const nprcue = "â‹ ";
const nprec = "âŠ€";
const npreceq = "âª¯Ì¸";
const npre = "âª¯Ì¸";
const nrarrc = "â¤³Ì¸";
const nrarr = "â†›";
const nrArr = "â‡�";
const nrarrw = "â†�Ì¸";
const nrightarrow = "â†›";
const nRightarrow = "â‡�";
const nrtri = "â‹«";
const nrtrie = "â‹­";
const nsc = "âŠ�";
const nsccue = "â‹¡";
const nsce = "âª°Ì¸";
const Nscr = "ð�’©";
const nscr = "ð�“ƒ";
const nshortmid = "âˆ¤";
const nshortparallel = "âˆ¦";
const nsim = "â‰�";
const nsime = "â‰„";
const nsimeq = "â‰„";
const nsmid = "âˆ¤";
const nspar = "âˆ¦";
const nsqsube = "â‹¢";
const nsqsupe = "â‹£";
const nsub = "âŠ„";
const nsubE = "â«…Ì¸";
const nsube = "âŠˆ";
const nsubset = "âŠ‚âƒ’";
const nsubseteq = "âŠˆ";
const nsubseteqq = "â«…Ì¸";
const nsucc = "âŠ�";
const nsucceq = "âª°Ì¸";
const nsup = "âŠ…";
const nsupE = "â«†Ì¸";
const nsupe = "âŠ‰";
const nsupset = "âŠƒâƒ’";
const nsupseteq = "âŠ‰";
const nsupseteqq = "â«†Ì¸";
const ntgl = "â‰¹";
const Ntilde = "Ã‘";
const ntilde = "Ã±";
const ntlg = "â‰¸";
const ntriangleleft = "â‹ª";
const ntrianglelefteq = "â‹¬";
const ntriangleright = "â‹«";
const ntrianglerighteq = "â‹­";
const Nu = "Î�";
const nu = "Î½";
const num = "#";
const numero = "â„–";
const numsp = "â€‡";
const nvap = "â‰�âƒ’";
const nvdash = "âŠ¬";
const nvDash = "âŠ­";
const nVdash = "âŠ®";
const nVDash = "âŠ¯";
const nvge = "â‰¥âƒ’";
const nvgt = ">âƒ’";
const nvHarr = "â¤„";
const nvinfin = "â§ž";
const nvlArr = "â¤‚";
const nvle = "â‰¤âƒ’";
const nvlt = "<âƒ’";
const nvltrie = "âŠ´âƒ’";
const nvrArr = "â¤ƒ";
const nvrtrie = "âŠµâƒ’";
const nvsim = "âˆ¼âƒ’";
const nwarhk = "â¤£";
const nwarr = "â†–";
const nwArr = "â‡–";
const nwarrow = "â†–";
const nwnear = "â¤§";
const Oacute = "Ã“";
const oacute = "Ã³";
const oast = "âŠ›";
const Ocirc = "Ã”";
const ocirc = "Ã´";
const ocir = "âŠš";
const Ocy = "Ðž";
const ocy = "Ð¾";
const odash = "âŠ�";
const Odblac = "Å�";
const odblac = "Å‘";
const odiv = "â¨¸";
const odot = "âŠ™";
const odsold = "â¦¼";
const OElig = "Å’";
const oelig = "Å“";
const ofcir = "â¦¿";
const Ofr = "ð�”’";
const ofr = "ð�”¬";
const ogon = "Ë›";
const Ograve = "Ã’";
const ograve = "Ã²";
const ogt = "â§�";
const ohbar = "â¦µ";
const ohm = "Î©";
const oint = "âˆ®";
const olarr = "â†º";
const olcir = "â¦¾";
const olcross = "â¦»";
const oline = "â€¾";
const olt = "â§€";
const Omacr = "ÅŒ";
const omacr = "Å�";
const Omega = "Î©";
const omega = "Ï‰";
const Omicron = "ÎŸ";
const omicron = "Î¿";
const omid = "â¦¶";
const ominus = "âŠ–";
const Oopf = "ð�•†";
const oopf = "ð�• ";
const opar = "â¦·";
const OpenCurlyDoubleQuote = "â€œ";
const OpenCurlyQuote = "â€˜";
const operp = "â¦¹";
const oplus = "âŠ•";
const orarr = "â†»";
const Or = "â©”";
const or = "âˆ¨";
const ord = "â©�";
const order$1 = "â„´";
const orderof = "â„´";
const ordf = "Âª";
const ordm = "Âº";
const origof = "âŠ¶";
const oror = "â©–";
const orslope = "â©—";
const orv = "â©›";
const oS = "â“ˆ";
const Oscr = "ð�’ª";
const oscr = "â„´";
const Oslash = "Ã˜";
const oslash = "Ã¸";
const osol = "âŠ˜";
const Otilde = "Ã•";
const otilde = "Ãµ";
const otimesas = "â¨¶";
const Otimes = "â¨·";
const otimes = "âŠ—";
const Ouml = "Ã–";
const ouml = "Ã¶";
const ovbar = "âŒ½";
const OverBar = "â€¾";
const OverBrace = "â�ž";
const OverBracket = "âŽ´";
const OverParenthesis = "â�œ";
const para = "Â¶";
const parallel = "âˆ¥";
const par = "âˆ¥";
const parsim = "â«³";
const parsl = "â«½";
const part = "âˆ‚";
const PartialD = "âˆ‚";
const Pcy = "ÐŸ";
const pcy = "Ð¿";
const percnt = "%";
const period = ".";
const permil = "â€°";
const perp = "âŠ¥";
const pertenk = "â€±";
const Pfr = "ð�”“";
const pfr = "ð�”­";
const Phi = "Î¦";
const phi = "Ï†";
const phiv = "Ï•";
const phmmat = "â„³";
const phone = "â˜Ž";
const Pi = "Î ";
const pi = "Ï€";
const pitchfork = "â‹”";
const piv = "Ï–";
const planck = "â„�";
const planckh = "â„Ž";
const plankv = "â„�";
const plusacir = "â¨£";
const plusb = "âŠž";
const pluscir = "â¨¢";
const plus = "+";
const plusdo = "âˆ”";
const plusdu = "â¨¥";
const pluse = "â©²";
const PlusMinus = "Â±";
const plusmn = "Â±";
const plussim = "â¨¦";
const plustwo = "â¨§";
const pm = "Â±";
const Poincareplane = "â„Œ";
const pointint = "â¨•";
const popf = "ð�•¡";
const Popf = "â„™";
const pound = "Â£";
const prap = "âª·";
const Pr = "âª»";
const pr = "â‰º";
const prcue = "â‰¼";
const precapprox = "âª·";
const prec = "â‰º";
const preccurlyeq = "â‰¼";
const Precedes = "â‰º";
const PrecedesEqual = "âª¯";
const PrecedesSlantEqual = "â‰¼";
const PrecedesTilde = "â‰¾";
const preceq = "âª¯";
const precnapprox = "âª¹";
const precneqq = "âªµ";
const precnsim = "â‹¨";
const pre = "âª¯";
const prE = "âª³";
const precsim = "â‰¾";
const prime = "â€²";
const Prime = "â€³";
const primes = "â„™";
const prnap = "âª¹";
const prnE = "âªµ";
const prnsim = "â‹¨";
const prod = "âˆ�";
const Product = "âˆ�";
const profalar = "âŒ®";
const profline = "âŒ’";
const profsurf = "âŒ“";
const prop = "âˆ�";
const Proportional = "âˆ�";
const Proportion = "âˆ·";
const propto = "âˆ�";
const prsim = "â‰¾";
const prurel = "âŠ°";
const Pscr = "ð�’«";
const pscr = "ð�“…";
const Psi = "Î¨";
const psi = "Ïˆ";
const puncsp = "â€ˆ";
const Qfr = "ð�””";
const qfr = "ð�”®";
const qint = "â¨Œ";
const qopf = "ð�•¢";
const Qopf = "â„š";
const qprime = "â�—";
const Qscr = "ð�’¬";
const qscr = "ð�“†";
const quaternions = "â„�";
const quatint = "â¨–";
const quest = "?";
const questeq = "â‰Ÿ";
const quot = '"';
const QUOT = '"';
const rAarr = "â‡›";
const race = "âˆ½Ì±";
const Racute = "Å”";
const racute = "Å•";
const radic = "âˆš";
const raemptyv = "â¦³";
const rang = "âŸ©";
const Rang = "âŸ«";
const rangd = "â¦’";
const range = "â¦¥";
const rangle = "âŸ©";
const raquo = "Â»";
const rarrap = "â¥µ";
const rarrb = "â‡¥";
const rarrbfs = "â¤ ";
const rarrc = "â¤³";
const rarr = "â†’";
const Rarr = "â† ";
const rArr = "â‡’";
const rarrfs = "â¤ž";
const rarrhk = "â†ª";
const rarrlp = "â†¬";
const rarrpl = "â¥…";
const rarrsim = "â¥´";
const Rarrtl = "â¤–";
const rarrtl = "â†£";
const rarrw = "â†�";
const ratail = "â¤š";
const rAtail = "â¤œ";
const ratio = "âˆ¶";
const rationals = "â„š";
const rbarr = "â¤�";
const rBarr = "â¤�";
const RBarr = "â¤�";
const rbbrk = "â�³";
const rbrace = "}";
const rbrack = "]";
const rbrke = "â¦Œ";
const rbrksld = "â¦Ž";
const rbrkslu = "â¦�";
const Rcaron = "Å˜";
const rcaron = "Å™";
const Rcedil = "Å–";
const rcedil = "Å—";
const rceil = "âŒ‰";
const rcub = "}";
const Rcy = "Ð ";
const rcy = "Ñ€";
const rdca = "â¤·";
const rdldhar = "â¥©";
const rdquo = "â€�";
const rdquor = "â€�";
const rdsh = "â†³";
const real = "â„œ";
const realine = "â„›";
const realpart = "â„œ";
const reals = "â„�";
const Re = "â„œ";
const rect = "â–­";
const reg = "Â®";
const REG = "Â®";
const ReverseElement = "âˆ‹";
const ReverseEquilibrium = "â‡‹";
const ReverseUpEquilibrium = "â¥¯";
const rfisht = "â¥½";
const rfloor = "âŒ‹";
const rfr = "ð�”¯";
const Rfr = "â„œ";
const rHar = "â¥¤";
const rhard = "â‡�";
const rharu = "â‡€";
const rharul = "â¥¬";
const Rho = "Î¡";
const rho = "Ï�";
const rhov = "Ï±";
const RightAngleBracket = "âŸ©";
const RightArrowBar = "â‡¥";
const rightarrow = "â†’";
const RightArrow = "â†’";
const Rightarrow = "â‡’";
const RightArrowLeftArrow = "â‡„";
const rightarrowtail = "â†£";
const RightCeiling = "âŒ‰";
const RightDoubleBracket = "âŸ§";
const RightDownTeeVector = "â¥�";
const RightDownVectorBar = "â¥•";
const RightDownVector = "â‡‚";
const RightFloor = "âŒ‹";
const rightharpoondown = "â‡�";
const rightharpoonup = "â‡€";
const rightleftarrows = "â‡„";
const rightleftharpoons = "â‡Œ";
const rightrightarrows = "â‡‰";
const rightsquigarrow = "â†�";
const RightTeeArrow = "â†¦";
const RightTee = "âŠ¢";
const RightTeeVector = "â¥›";
const rightthreetimes = "â‹Œ";
const RightTriangleBar = "â§�";
const RightTriangle = "âŠ³";
const RightTriangleEqual = "âŠµ";
const RightUpDownVector = "â¥�";
const RightUpTeeVector = "â¥œ";
const RightUpVectorBar = "â¥”";
const RightUpVector = "â†¾";
const RightVectorBar = "â¥“";
const RightVector = "â‡€";
const ring = "Ëš";
const risingdotseq = "â‰“";
const rlarr = "â‡„";
const rlhar = "â‡Œ";
const rlm = "â€�";
const rmoustache = "âŽ±";
const rmoust = "âŽ±";
const rnmid = "â«®";
const roang = "âŸ­";
const roarr = "â‡¾";
const robrk = "âŸ§";
const ropar = "â¦†";
const ropf = "ð�•£";
const Ropf = "â„�";
const roplus = "â¨®";
const rotimes = "â¨µ";
const RoundImplies = "â¥°";
const rpar = ")";
const rpargt = "â¦”";
const rppolint = "â¨’";
const rrarr = "â‡‰";
const Rrightarrow = "â‡›";
const rsaquo = "â€º";
const rscr = "ð�“‡";
const Rscr = "â„›";
const rsh = "â†±";
const Rsh = "â†±";
const rsqb = "]";
const rsquo = "â€™";
const rsquor = "â€™";
const rthree = "â‹Œ";
const rtimes = "â‹Š";
const rtri = "â–¹";
const rtrie = "âŠµ";
const rtrif = "â–¸";
const rtriltri = "â§Ž";
const RuleDelayed = "â§´";
const ruluhar = "â¥¨";
const rx = "â„ž";
const Sacute = "Åš";
const sacute = "Å›";
const sbquo = "â€š";
const scap = "âª¸";
const Scaron = "Å ";
const scaron = "Å¡";
const Sc = "âª¼";
const sc = "â‰»";
const sccue = "â‰½";
const sce = "âª°";
const scE = "âª´";
const Scedil = "Åž";
const scedil = "ÅŸ";
const Scirc = "Åœ";
const scirc = "Å�";
const scnap = "âªº";
const scnE = "âª¶";
const scnsim = "â‹©";
const scpolint = "â¨“";
const scsim = "â‰¿";
const Scy = "Ð¡";
const scy = "Ñ�";
const sdotb = "âŠ¡";
const sdot = "â‹…";
const sdote = "â©¦";
const searhk = "â¤¥";
const searr = "â†˜";
const seArr = "â‡˜";
const searrow = "â†˜";
const sect = "Â§";
const semi = ";";
const seswar = "â¤©";
const setminus = "âˆ–";
const setmn = "âˆ–";
const sext = "âœ¶";
const Sfr = "ð�”–";
const sfr = "ð�”°";
const sfrown = "âŒ¢";
const sharp = "â™¯";
const SHCHcy = "Ð©";
const shchcy = "Ñ‰";
const SHcy = "Ð¨";
const shcy = "Ñˆ";
const ShortDownArrow = "â†“";
const ShortLeftArrow = "â†�";
const shortmid = "âˆ£";
const shortparallel = "âˆ¥";
const ShortRightArrow = "â†’";
const ShortUpArrow = "â†‘";
const shy = "Â­";
const Sigma = "Î£";
const sigma = "Ïƒ";
const sigmaf = "Ï‚";
const sigmav = "Ï‚";
const sim = "âˆ¼";
const simdot = "â©ª";
const sime = "â‰ƒ";
const simeq = "â‰ƒ";
const simg = "âªž";
const simgE = "âª ";
const siml = "âª�";
const simlE = "âªŸ";
const simne = "â‰†";
const simplus = "â¨¤";
const simrarr = "â¥²";
const slarr = "â†�";
const SmallCircle = "âˆ˜";
const smallsetminus = "âˆ–";
const smashp = "â¨³";
const smeparsl = "â§¤";
const smid = "âˆ£";
const smile = "âŒ£";
const smt = "âªª";
const smte = "âª¬";
const smtes = "âª¬ï¸€";
const SOFTcy = "Ð¬";
const softcy = "ÑŒ";
const solbar = "âŒ¿";
const solb = "â§„";
const sol = "/";
const Sopf = "ð�•Š";
const sopf = "ð�•¤";
const spades = "â™ ";
const spadesuit = "â™ ";
const spar = "âˆ¥";
const sqcap = "âŠ“";
const sqcaps = "âŠ“ï¸€";
const sqcup = "âŠ”";
const sqcups = "âŠ”ï¸€";
const Sqrt = "âˆš";
const sqsub = "âŠ�";
const sqsube = "âŠ‘";
const sqsubset = "âŠ�";
const sqsubseteq = "âŠ‘";
const sqsup = "âŠ�";
const sqsupe = "âŠ’";
const sqsupset = "âŠ�";
const sqsupseteq = "âŠ’";
const square = "â–¡";
const Square = "â–¡";
const SquareIntersection = "âŠ“";
const SquareSubset = "âŠ�";
const SquareSubsetEqual = "âŠ‘";
const SquareSuperset = "âŠ�";
const SquareSupersetEqual = "âŠ’";
const SquareUnion = "âŠ”";
const squarf = "â–ª";
const squ = "â–¡";
const squf = "â–ª";
const srarr = "â†’";
const Sscr = "ð�’®";
const sscr = "ð�“ˆ";
const ssetmn = "âˆ–";
const ssmile = "âŒ£";
const sstarf = "â‹†";
const Star = "â‹†";
const star = "â˜†";
const starf = "â˜…";
const straightepsilon = "Ïµ";
const straightphi = "Ï•";
const strns = "Â¯";
const sub = "âŠ‚";
const Sub = "â‹�";
const subdot = "âª½";
const subE = "â«…";
const sube = "âŠ†";
const subedot = "â«ƒ";
const submult = "â«�";
const subnE = "â«‹";
const subne = "âŠŠ";
const subplus = "âª¿";
const subrarr = "â¥¹";
const subset = "âŠ‚";
const Subset = "â‹�";
const subseteq = "âŠ†";
const subseteqq = "â«…";
const SubsetEqual = "âŠ†";
const subsetneq = "âŠŠ";
const subsetneqq = "â«‹";
const subsim = "â«‡";
const subsub = "â«•";
const subsup = "â«“";
const succapprox = "âª¸";
const succ = "â‰»";
const succcurlyeq = "â‰½";
const Succeeds = "â‰»";
const SucceedsEqual = "âª°";
const SucceedsSlantEqual = "â‰½";
const SucceedsTilde = "â‰¿";
const succeq = "âª°";
const succnapprox = "âªº";
const succneqq = "âª¶";
const succnsim = "â‹©";
const succsim = "â‰¿";
const SuchThat = "âˆ‹";
const sum = "âˆ‘";
const Sum = "âˆ‘";
const sung = "â™ª";
const sup1 = "Â¹";
const sup2 = "Â²";
const sup3 = "Â³";
const sup = "âŠƒ";
const Sup = "â‹‘";
const supdot = "âª¾";
const supdsub = "â«˜";
const supE = "â«†";
const supe = "âŠ‡";
const supedot = "â«„";
const Superset = "âŠƒ";
const SupersetEqual = "âŠ‡";
const suphsol = "âŸ‰";
const suphsub = "â«—";
const suplarr = "â¥»";
const supmult = "â«‚";
const supnE = "â«Œ";
const supne = "âŠ‹";
const supplus = "â«€";
const supset = "âŠƒ";
const Supset = "â‹‘";
const supseteq = "âŠ‡";
const supseteqq = "â«†";
const supsetneq = "âŠ‹";
const supsetneqq = "â«Œ";
const supsim = "â«ˆ";
const supsub = "â«”";
const supsup = "â«–";
const swarhk = "â¤¦";
const swarr = "â†™";
const swArr = "â‡™";
const swarrow = "â†™";
const swnwar = "â¤ª";
const szlig = "ÃŸ";
const Tab = "	";
const target = "âŒ–";
const Tau = "Î¤";
const tau = "Ï„";
const tbrk = "âŽ´";
const Tcaron = "Å¤";
const tcaron = "Å¥";
const Tcedil = "Å¢";
const tcedil = "Å£";
const Tcy = "Ð¢";
const tcy = "Ñ‚";
const tdot = "âƒ›";
const telrec = "âŒ•";
const Tfr = "ð�”—";
const tfr = "ð�”±";
const there4 = "âˆ´";
const therefore = "âˆ´";
const Therefore = "âˆ´";
const Theta = "Î˜";
const theta = "Î¸";
const thetasym = "Ï‘";
const thetav = "Ï‘";
const thickapprox = "â‰ˆ";
const thicksim = "âˆ¼";
const ThickSpace = "â�Ÿâ€Š";
const ThinSpace = "â€‰";
const thinsp = "â€‰";
const thkap = "â‰ˆ";
const thksim = "âˆ¼";
const THORN = "Ãž";
const thorn = "Ã¾";
const tilde = "Ëœ";
const Tilde = "âˆ¼";
const TildeEqual = "â‰ƒ";
const TildeFullEqual = "â‰…";
const TildeTilde = "â‰ˆ";
const timesbar = "â¨±";
const timesb = "âŠ ";
const times = "Ã—";
const timesd = "â¨°";
const tint = "âˆ­";
const toea = "â¤¨";
const topbot = "âŒ¶";
const topcir = "â«±";
const top$1 = "âŠ¤";
const Topf = "ð�•‹";
const topf = "ð�•¥";
const topfork = "â«š";
const tosa = "â¤©";
const tprime = "â€´";
const trade = "â„¢";
const TRADE = "â„¢";
const triangle = "â–µ";
const triangledown = "â–¿";
const triangleleft = "â—ƒ";
const trianglelefteq = "âŠ´";
const triangleq = "â‰œ";
const triangleright = "â–¹";
const trianglerighteq = "âŠµ";
const tridot = "â—¬";
const trie = "â‰œ";
const triminus = "â¨º";
const TripleDot = "âƒ›";
const triplus = "â¨¹";
const trisb = "â§�";
const tritime = "â¨»";
const trpezium = "â�¢";
const Tscr = "ð�’¯";
const tscr = "ð�“‰";
const TScy = "Ð¦";
const tscy = "Ñ†";
const TSHcy = "Ð‹";
const tshcy = "Ñ›";
const Tstrok = "Å¦";
const tstrok = "Å§";
const twixt = "â‰¬";
const twoheadleftarrow = "â†ž";
const twoheadrightarrow = "â† ";
const Uacute = "Ãš";
const uacute = "Ãº";
const uarr = "â†‘";
const Uarr = "â†Ÿ";
const uArr = "â‡‘";
const Uarrocir = "â¥‰";
const Ubrcy = "ÐŽ";
const ubrcy = "Ñž";
const Ubreve = "Å¬";
const ubreve = "Å­";
const Ucirc = "Ã›";
const ucirc = "Ã»";
const Ucy = "Ð£";
const ucy = "Ñƒ";
const udarr = "â‡…";
const Udblac = "Å°";
const udblac = "Å±";
const udhar = "â¥®";
const ufisht = "â¥¾";
const Ufr = "ð�”˜";
const ufr = "ð�”²";
const Ugrave = "Ã™";
const ugrave = "Ã¹";
const uHar = "â¥£";
const uharl = "â†¿";
const uharr = "â†¾";
const uhblk = "â–€";
const ulcorn = "âŒœ";
const ulcorner = "âŒœ";
const ulcrop = "âŒ�";
const ultri = "â—¸";
const Umacr = "Åª";
const umacr = "Å«";
const uml = "Â¨";
const UnderBar = "_";
const UnderBrace = "â�Ÿ";
const UnderBracket = "âŽµ";
const UnderParenthesis = "â��";
const Union = "â‹ƒ";
const UnionPlus = "âŠŽ";
const Uogon = "Å²";
const uogon = "Å³";
const Uopf = "ð�•Œ";
const uopf = "ð�•¦";
const UpArrowBar = "â¤’";
const uparrow = "â†‘";
const UpArrow = "â†‘";
const Uparrow = "â‡‘";
const UpArrowDownArrow = "â‡…";
const updownarrow = "â†•";
const UpDownArrow = "â†•";
const Updownarrow = "â‡•";
const UpEquilibrium = "â¥®";
const upharpoonleft = "â†¿";
const upharpoonright = "â†¾";
const uplus = "âŠŽ";
const UpperLeftArrow = "â†–";
const UpperRightArrow = "â†—";
const upsi = "Ï…";
const Upsi = "Ï’";
const upsih = "Ï’";
const Upsilon = "Î¥";
const upsilon = "Ï…";
const UpTeeArrow = "â†¥";
const UpTee = "âŠ¥";
const upuparrows = "â‡ˆ";
const urcorn = "âŒ�";
const urcorner = "âŒ�";
const urcrop = "âŒŽ";
const Uring = "Å®";
const uring = "Å¯";
const urtri = "â—¹";
const Uscr = "ð�’°";
const uscr = "ð�“Š";
const utdot = "â‹°";
const Utilde = "Å¨";
const utilde = "Å©";
const utri = "â–µ";
const utrif = "â–´";
const uuarr = "â‡ˆ";
const Uuml = "Ãœ";
const uuml = "Ã¼";
const uwangle = "â¦§";
const vangrt = "â¦œ";
const varepsilon = "Ïµ";
const varkappa = "Ï°";
const varnothing = "âˆ…";
const varphi = "Ï•";
const varpi = "Ï–";
const varpropto = "âˆ�";
const varr = "â†•";
const vArr = "â‡•";
const varrho = "Ï±";
const varsigma = "Ï‚";
const varsubsetneq = "âŠŠï¸€";
const varsubsetneqq = "â«‹ï¸€";
const varsupsetneq = "âŠ‹ï¸€";
const varsupsetneqq = "â«Œï¸€";
const vartheta = "Ï‘";
const vartriangleleft = "âŠ²";
const vartriangleright = "âŠ³";
const vBar = "â«¨";
const Vbar = "â««";
const vBarv = "â«©";
const Vcy = "Ð’";
const vcy = "Ð²";
const vdash = "âŠ¢";
const vDash = "âŠ¨";
const Vdash = "âŠ©";
const VDash = "âŠ«";
const Vdashl = "â«¦";
const veebar = "âŠ»";
const vee = "âˆ¨";
const Vee = "â‹�";
const veeeq = "â‰š";
const vellip = "â‹®";
const verbar = "|";
const Verbar = "â€–";
const vert = "|";
const Vert = "â€–";
const VerticalBar = "âˆ£";
const VerticalLine = "|";
const VerticalSeparator = "â�˜";
const VerticalTilde = "â‰€";
const VeryThinSpace = "â€Š";
const Vfr = "ð�”™";
const vfr = "ð�”³";
const vltri = "âŠ²";
const vnsub = "âŠ‚âƒ’";
const vnsup = "âŠƒâƒ’";
const Vopf = "ð�•�";
const vopf = "ð�•§";
const vprop = "âˆ�";
const vrtri = "âŠ³";
const Vscr = "ð�’±";
const vscr = "ð�“‹";
const vsubnE = "â«‹ï¸€";
const vsubne = "âŠŠï¸€";
const vsupnE = "â«Œï¸€";
const vsupne = "âŠ‹ï¸€";
const Vvdash = "âŠª";
const vzigzag = "â¦š";
const Wcirc = "Å´";
const wcirc = "Åµ";
const wedbar = "â©Ÿ";
const wedge = "âˆ§";
const Wedge = "â‹€";
const wedgeq = "â‰™";
const weierp = "â„˜";
const Wfr = "ð�”š";
const wfr = "ð�”´";
const Wopf = "ð�•Ž";
const wopf = "ð�•¨";
const wp = "â„˜";
const wr = "â‰€";
const wreath = "â‰€";
const Wscr = "ð�’²";
const wscr = "ð�“Œ";
const xcap = "â‹‚";
const xcirc = "â—¯";
const xcup = "â‹ƒ";
const xdtri = "â–½";
const Xfr = "ð�”›";
const xfr = "ð�”µ";
const xharr = "âŸ·";
const xhArr = "âŸº";
const Xi = "Îž";
const xi = "Î¾";
const xlarr = "âŸµ";
const xlArr = "âŸ¸";
const xmap = "âŸ¼";
const xnis = "â‹»";
const xodot = "â¨€";
const Xopf = "ð�•�";
const xopf = "ð�•©";
const xoplus = "â¨�";
const xotime = "â¨‚";
const xrarr = "âŸ¶";
const xrArr = "âŸ¹";
const Xscr = "ð�’³";
const xscr = "ð�“�";
const xsqcup = "â¨†";
const xuplus = "â¨„";
const xutri = "â–³";
const xvee = "â‹�";
const xwedge = "â‹€";
const Yacute = "Ã�";
const yacute = "Ã½";
const YAcy = "Ð¯";
const yacy = "Ñ�";
const Ycirc = "Å¶";
const ycirc = "Å·";
const Ycy = "Ð«";
const ycy = "Ñ‹";
const yen = "Â¥";
const Yfr = "ð�”œ";
const yfr = "ð�”¶";
const YIcy = "Ð‡";
const yicy = "Ñ—";
const Yopf = "ð�•�";
const yopf = "ð�•ª";
const Yscr = "ð�’´";
const yscr = "ð�“Ž";
const YUcy = "Ð®";
const yucy = "ÑŽ";
const yuml = "Ã¿";
const Yuml = "Å¸";
const Zacute = "Å¹";
const zacute = "Åº";
const Zcaron = "Å½";
const zcaron = "Å¾";
const Zcy = "Ð—";
const zcy = "Ð·";
const Zdot = "Å»";
const zdot = "Å¼";
const zeetrf = "â„¨";
const ZeroWidthSpace = "â€‹";
const Zeta = "Î–";
const zeta = "Î¶";
const zfr = "ð�”·";
const Zfr = "â„¨";
const ZHcy = "Ð–";
const zhcy = "Ð¶";
const zigrarr = "â‡�";
const zopf = "ð�•«";
const Zopf = "â„¤";
const Zscr = "ð�’µ";
const zscr = "ð�“�";
const zwj = "â€�";
const zwnj = "â€Œ";
const require$$0 = {
  Aacute,
  aacute,
  Abreve,
  abreve,
  ac,
  acd,
  acE,
  Acirc,
  acirc,
  acute,
  Acy,
  acy,
  AElig,
  aelig,
  af,
  Afr,
  afr,
  Agrave,
  agrave,
  alefsym,
  aleph,
  Alpha,
  alpha,
  Amacr,
  amacr,
  amalg,
  amp,
  AMP,
  andand,
  And,
  and,
  andd,
  andslope,
  andv,
  ang,
  ange,
  angle,
  angmsdaa,
  angmsdab,
  angmsdac,
  angmsdad,
  angmsdae,
  angmsdaf,
  angmsdag,
  angmsdah,
  angmsd,
  angrt,
  angrtvb,
  angrtvbd,
  angsph,
  angst,
  angzarr,
  Aogon,
  aogon,
  Aopf,
  aopf,
  apacir,
  ap,
  apE,
  ape,
  apid,
  apos,
  ApplyFunction,
  approx,
  approxeq,
  Aring,
  aring,
  Ascr,
  ascr,
  Assign,
  ast,
  asymp,
  asympeq,
  Atilde,
  atilde,
  Auml,
  auml,
  awconint,
  awint,
  backcong,
  backepsilon,
  backprime,
  backsim,
  backsimeq,
  Backslash,
  Barv,
  barvee,
  barwed,
  Barwed,
  barwedge,
  bbrk,
  bbrktbrk,
  bcong,
  Bcy,
  bcy,
  bdquo,
  becaus,
  because,
  Because,
  bemptyv,
  bepsi,
  bernou,
  Bernoullis,
  Beta,
  beta,
  beth,
  between,
  Bfr,
  bfr,
  bigcap,
  bigcirc,
  bigcup,
  bigodot,
  bigoplus,
  bigotimes,
  bigsqcup,
  bigstar,
  bigtriangledown,
  bigtriangleup,
  biguplus,
  bigvee,
  bigwedge,
  bkarow,
  blacklozenge,
  blacksquare,
  blacktriangle,
  blacktriangledown,
  blacktriangleleft,
  blacktriangleright,
  blank,
  blk12,
  blk14,
  blk34,
  block: block$1,
  bne,
  bnequiv,
  bNot,
  bnot,
  Bopf,
  bopf,
  bot,
  bottom: bottom$1,
  bowtie,
  boxbox,
  boxdl,
  boxdL,
  boxDl,
  boxDL,
  boxdr,
  boxdR,
  boxDr,
  boxDR,
  boxh,
  boxH,
  boxhd,
  boxHd,
  boxhD,
  boxHD,
  boxhu,
  boxHu,
  boxhU,
  boxHU,
  boxminus,
  boxplus,
  boxtimes,
  boxul,
  boxuL,
  boxUl,
  boxUL,
  boxur,
  boxuR,
  boxUr,
  boxUR,
  boxv,
  boxV,
  boxvh,
  boxvH,
  boxVh,
  boxVH,
  boxvl,
  boxvL,
  boxVl,
  boxVL,
  boxvr,
  boxvR,
  boxVr,
  boxVR,
  bprime,
  breve,
  Breve,
  brvbar,
  bscr,
  Bscr,
  bsemi,
  bsim,
  bsime,
  bsolb,
  bsol,
  bsolhsub,
  bull,
  bullet,
  bump,
  bumpE,
  bumpe,
  Bumpeq,
  bumpeq,
  Cacute,
  cacute,
  capand,
  capbrcup,
  capcap,
  cap,
  Cap,
  capcup,
  capdot,
  CapitalDifferentialD,
  caps,
  caret,
  caron,
  Cayleys,
  ccaps,
  Ccaron,
  ccaron,
  Ccedil,
  ccedil,
  Ccirc,
  ccirc,
  Cconint,
  ccups,
  ccupssm,
  Cdot,
  cdot,
  cedil,
  Cedilla,
  cemptyv,
  cent,
  centerdot,
  CenterDot,
  cfr,
  Cfr,
  CHcy,
  chcy,
  check,
  checkmark,
  Chi,
  chi,
  circ,
  circeq,
  circlearrowleft,
  circlearrowright,
  circledast,
  circledcirc,
  circleddash,
  CircleDot,
  circledR,
  circledS,
  CircleMinus,
  CirclePlus,
  CircleTimes,
  cir,
  cirE,
  cire,
  cirfnint,
  cirmid,
  cirscir,
  ClockwiseContourIntegral,
  CloseCurlyDoubleQuote,
  CloseCurlyQuote,
  clubs,
  clubsuit,
  colon,
  Colon,
  Colone,
  colone,
  coloneq,
  comma,
  commat,
  comp,
  compfn,
  complement,
  complexes,
  cong,
  congdot,
  Congruent,
  conint,
  Conint,
  ContourIntegral,
  copf,
  Copf,
  coprod,
  Coproduct,
  copy,
  COPY,
  copysr,
  CounterClockwiseContourIntegral,
  crarr,
  cross,
  Cross,
  Cscr,
  cscr,
  csub,
  csube,
  csup,
  csupe,
  ctdot,
  cudarrl,
  cudarrr,
  cuepr,
  cuesc,
  cularr,
  cularrp,
  cupbrcap,
  cupcap,
  CupCap,
  cup,
  Cup,
  cupcup,
  cupdot,
  cupor,
  cups,
  curarr,
  curarrm,
  curlyeqprec,
  curlyeqsucc,
  curlyvee,
  curlywedge,
  curren,
  curvearrowleft,
  curvearrowright,
  cuvee,
  cuwed,
  cwconint,
  cwint,
  cylcty,
  dagger,
  Dagger,
  daleth,
  darr,
  Darr,
  dArr,
  dash,
  Dashv,
  dashv,
  dbkarow,
  dblac,
  Dcaron,
  dcaron,
  Dcy,
  dcy,
  ddagger,
  ddarr,
  DD,
  dd,
  DDotrahd,
  ddotseq,
  deg,
  Del,
  Delta,
  delta,
  demptyv,
  dfisht,
  Dfr,
  dfr,
  dHar,
  dharl,
  dharr,
  DiacriticalAcute,
  DiacriticalDot,
  DiacriticalDoubleAcute,
  DiacriticalGrave,
  DiacriticalTilde,
  diam,
  diamond,
  Diamond,
  diamondsuit,
  diams,
  die,
  DifferentialD,
  digamma,
  disin,
  div,
  divide,
  divideontimes,
  divonx,
  DJcy,
  djcy,
  dlcorn,
  dlcrop,
  dollar,
  Dopf,
  dopf,
  Dot,
  dot,
  DotDot,
  doteq,
  doteqdot,
  DotEqual,
  dotminus,
  dotplus,
  dotsquare,
  doublebarwedge,
  DoubleContourIntegral,
  DoubleDot,
  DoubleDownArrow,
  DoubleLeftArrow,
  DoubleLeftRightArrow,
  DoubleLeftTee,
  DoubleLongLeftArrow,
  DoubleLongLeftRightArrow,
  DoubleLongRightArrow,
  DoubleRightArrow,
  DoubleRightTee,
  DoubleUpArrow,
  DoubleUpDownArrow,
  DoubleVerticalBar,
  DownArrowBar,
  downarrow,
  DownArrow,
  Downarrow,
  DownArrowUpArrow,
  DownBreve,
  downdownarrows,
  downharpoonleft,
  downharpoonright,
  DownLeftRightVector,
  DownLeftTeeVector,
  DownLeftVectorBar,
  DownLeftVector,
  DownRightTeeVector,
  DownRightVectorBar,
  DownRightVector,
  DownTeeArrow,
  DownTee,
  drbkarow,
  drcorn,
  drcrop,
  Dscr,
  dscr,
  DScy,
  dscy,
  dsol,
  Dstrok,
  dstrok,
  dtdot,
  dtri,
  dtrif,
  duarr,
  duhar,
  dwangle,
  DZcy,
  dzcy,
  dzigrarr,
  Eacute,
  eacute,
  easter,
  Ecaron,
  ecaron,
  Ecirc,
  ecirc,
  ecir,
  ecolon,
  Ecy,
  ecy,
  eDDot,
  Edot,
  edot,
  eDot,
  ee,
  efDot,
  Efr,
  efr,
  eg,
  Egrave,
  egrave,
  egs,
  egsdot,
  el,
  Element: Element$1,
  elinters,
  ell,
  els,
  elsdot,
  Emacr,
  emacr,
  empty: empty$1,
  emptyset,
  EmptySmallSquare,
  emptyv,
  EmptyVerySmallSquare,
  emsp13,
  emsp14,
  emsp,
  ENG,
  eng,
  ensp,
  Eogon,
  eogon,
  Eopf,
  eopf,
  epar,
  eparsl,
  eplus,
  epsi,
  Epsilon,
  epsilon,
  epsiv,
  eqcirc,
  eqcolon,
  eqsim,
  eqslantgtr,
  eqslantless,
  Equal,
  equals,
  EqualTilde,
  equest,
  Equilibrium,
  equiv,
  equivDD,
  eqvparsl,
  erarr,
  erDot,
  escr,
  Escr,
  esdot,
  Esim,
  esim,
  Eta,
  eta,
  ETH,
  eth,
  Euml,
  euml,
  euro,
  excl,
  exist,
  Exists,
  expectation,
  exponentiale,
  ExponentialE,
  fallingdotseq,
  Fcy,
  fcy,
  female,
  ffilig,
  fflig,
  ffllig,
  Ffr,
  ffr,
  filig,
  FilledSmallSquare,
  FilledVerySmallSquare,
  fjlig,
  flat,
  fllig,
  fltns,
  fnof,
  Fopf,
  fopf,
  forall,
  ForAll,
  fork,
  forkv,
  Fouriertrf,
  fpartint,
  frac12,
  frac13,
  frac14,
  frac15,
  frac16,
  frac18,
  frac23,
  frac25,
  frac34,
  frac35,
  frac38,
  frac45,
  frac56,
  frac58,
  frac78,
  frasl,
  frown,
  fscr,
  Fscr,
  gacute,
  Gamma,
  gamma,
  Gammad,
  gammad,
  gap,
  Gbreve,
  gbreve,
  Gcedil,
  Gcirc,
  gcirc,
  Gcy,
  gcy,
  Gdot,
  gdot,
  ge,
  gE,
  gEl,
  gel,
  geq,
  geqq,
  geqslant,
  gescc,
  ges,
  gesdot,
  gesdoto,
  gesdotol,
  gesl,
  gesles,
  Gfr,
  gfr,
  gg,
  Gg,
  ggg,
  gimel,
  GJcy,
  gjcy,
  gla,
  gl,
  glE,
  glj,
  gnap,
  gnapprox,
  gne,
  gnE,
  gneq,
  gneqq,
  gnsim,
  Gopf,
  gopf,
  grave,
  GreaterEqual,
  GreaterEqualLess,
  GreaterFullEqual,
  GreaterGreater,
  GreaterLess,
  GreaterSlantEqual,
  GreaterTilde,
  Gscr,
  gscr,
  gsim,
  gsime,
  gsiml,
  gtcc,
  gtcir,
  gt,
  GT,
  Gt,
  gtdot,
  gtlPar,
  gtquest,
  gtrapprox,
  gtrarr,
  gtrdot,
  gtreqless,
  gtreqqless,
  gtrless,
  gtrsim,
  gvertneqq,
  gvnE,
  Hacek,
  hairsp,
  half,
  hamilt,
  HARDcy,
  hardcy,
  harrcir,
  harr,
  hArr,
  harrw,
  Hat,
  hbar,
  Hcirc,
  hcirc,
  hearts,
  heartsuit,
  hellip,
  hercon,
  hfr,
  Hfr,
  HilbertSpace,
  hksearow,
  hkswarow,
  hoarr,
  homtht,
  hookleftarrow,
  hookrightarrow,
  hopf,
  Hopf,
  horbar,
  HorizontalLine,
  hscr,
  Hscr,
  hslash,
  Hstrok,
  hstrok,
  HumpDownHump,
  HumpEqual,
  hybull,
  hyphen,
  Iacute,
  iacute,
  ic,
  Icirc,
  icirc,
  Icy,
  icy,
  Idot,
  IEcy,
  iecy,
  iexcl,
  iff,
  ifr,
  Ifr,
  Igrave,
  igrave,
  ii,
  iiiint,
  iiint,
  iinfin,
  iiota,
  IJlig,
  ijlig,
  Imacr,
  imacr,
  image: image$1,
  ImaginaryI,
  imagline,
  imagpart,
  imath,
  Im,
  imof,
  imped,
  Implies,
  incare,
  "in": "âˆˆ",
  infin,
  infintie,
  inodot,
  intcal,
  int,
  Int,
  integers,
  Integral,
  intercal,
  Intersection,
  intlarhk,
  intprod,
  InvisibleComma,
  InvisibleTimes,
  IOcy,
  iocy,
  Iogon,
  iogon,
  Iopf,
  iopf,
  Iota,
  iota,
  iprod,
  iquest,
  iscr,
  Iscr,
  isin,
  isindot,
  isinE,
  isins,
  isinsv,
  isinv,
  it,
  Itilde,
  itilde,
  Iukcy,
  iukcy,
  Iuml,
  iuml,
  Jcirc,
  jcirc,
  Jcy,
  jcy,
  Jfr,
  jfr,
  jmath,
  Jopf,
  jopf,
  Jscr,
  jscr,
  Jsercy,
  jsercy,
  Jukcy,
  jukcy,
  Kappa,
  kappa,
  kappav,
  Kcedil,
  kcedil,
  Kcy,
  kcy,
  Kfr,
  kfr,
  kgreen,
  KHcy,
  khcy,
  KJcy,
  kjcy,
  Kopf,
  kopf,
  Kscr,
  kscr,
  lAarr,
  Lacute,
  lacute,
  laemptyv,
  lagran,
  Lambda,
  lambda,
  lang,
  Lang,
  langd,
  langle,
  lap,
  Laplacetrf,
  laquo,
  larrb,
  larrbfs,
  larr,
  Larr,
  lArr,
  larrfs,
  larrhk,
  larrlp,
  larrpl,
  larrsim,
  larrtl,
  latail,
  lAtail,
  lat,
  late,
  lates,
  lbarr,
  lBarr,
  lbbrk,
  lbrace,
  lbrack,
  lbrke,
  lbrksld,
  lbrkslu,
  Lcaron,
  lcaron,
  Lcedil,
  lcedil,
  lceil,
  lcub,
  Lcy,
  lcy,
  ldca,
  ldquo,
  ldquor,
  ldrdhar,
  ldrushar,
  ldsh,
  le,
  lE,
  LeftAngleBracket,
  LeftArrowBar,
  leftarrow,
  LeftArrow,
  Leftarrow,
  LeftArrowRightArrow,
  leftarrowtail,
  LeftCeiling,
  LeftDoubleBracket,
  LeftDownTeeVector,
  LeftDownVectorBar,
  LeftDownVector,
  LeftFloor,
  leftharpoondown,
  leftharpoonup,
  leftleftarrows,
  leftrightarrow,
  LeftRightArrow,
  Leftrightarrow,
  leftrightarrows,
  leftrightharpoons,
  leftrightsquigarrow,
  LeftRightVector,
  LeftTeeArrow,
  LeftTee,
  LeftTeeVector,
  leftthreetimes,
  LeftTriangleBar,
  LeftTriangle,
  LeftTriangleEqual,
  LeftUpDownVector,
  LeftUpTeeVector,
  LeftUpVectorBar,
  LeftUpVector,
  LeftVectorBar,
  LeftVector,
  lEg,
  leg,
  leq,
  leqq,
  leqslant,
  lescc,
  les,
  lesdot,
  lesdoto,
  lesdotor,
  lesg,
  lesges,
  lessapprox,
  lessdot,
  lesseqgtr,
  lesseqqgtr,
  LessEqualGreater,
  LessFullEqual,
  LessGreater,
  lessgtr,
  LessLess,
  lesssim,
  LessSlantEqual,
  LessTilde,
  lfisht,
  lfloor,
  Lfr,
  lfr,
  lg,
  lgE,
  lHar,
  lhard,
  lharu,
  lharul,
  lhblk,
  LJcy,
  ljcy,
  llarr,
  ll,
  Ll,
  llcorner,
  Lleftarrow,
  llhard,
  lltri,
  Lmidot,
  lmidot,
  lmoustache,
  lmoust,
  lnap,
  lnapprox,
  lne,
  lnE,
  lneq,
  lneqq,
  lnsim,
  loang,
  loarr,
  lobrk,
  longleftarrow,
  LongLeftArrow,
  Longleftarrow,
  longleftrightarrow,
  LongLeftRightArrow,
  Longleftrightarrow,
  longmapsto,
  longrightarrow,
  LongRightArrow,
  Longrightarrow,
  looparrowleft,
  looparrowright,
  lopar,
  Lopf,
  lopf,
  loplus,
  lotimes,
  lowast,
  lowbar,
  LowerLeftArrow,
  LowerRightArrow,
  loz,
  lozenge,
  lozf,
  lpar,
  lparlt,
  lrarr,
  lrcorner,
  lrhar,
  lrhard,
  lrm,
  lrtri,
  lsaquo,
  lscr,
  Lscr,
  lsh,
  Lsh,
  lsim,
  lsime,
  lsimg,
  lsqb,
  lsquo,
  lsquor,
  Lstrok,
  lstrok,
  ltcc,
  ltcir,
  lt,
  LT,
  Lt,
  ltdot,
  lthree,
  ltimes,
  ltlarr,
  ltquest,
  ltri,
  ltrie,
  ltrif,
  ltrPar,
  lurdshar,
  luruhar,
  lvertneqq,
  lvnE,
  macr,
  male,
  malt,
  maltese,
  "Map": "â¤…",
  map: map$1,
  mapsto,
  mapstodown,
  mapstoleft,
  mapstoup,
  marker,
  mcomma,
  Mcy,
  mcy,
  mdash,
  mDDot,
  measuredangle,
  MediumSpace,
  Mellintrf,
  Mfr,
  mfr,
  mho,
  micro,
  midast,
  midcir,
  mid,
  middot,
  minusb,
  minus,
  minusd,
  minusdu,
  MinusPlus,
  mlcp,
  mldr,
  mnplus,
  models,
  Mopf,
  mopf,
  mp,
  mscr,
  Mscr,
  mstpos,
  Mu,
  mu,
  multimap,
  mumap,
  nabla,
  Nacute,
  nacute,
  nang,
  nap,
  napE,
  napid,
  napos,
  napprox,
  natural,
  naturals,
  natur,
  nbsp,
  nbump,
  nbumpe,
  ncap,
  Ncaron,
  ncaron,
  Ncedil,
  ncedil,
  ncong,
  ncongdot,
  ncup,
  Ncy,
  ncy,
  ndash,
  nearhk,
  nearr,
  neArr,
  nearrow,
  ne,
  nedot,
  NegativeMediumSpace,
  NegativeThickSpace,
  NegativeThinSpace,
  NegativeVeryThinSpace,
  nequiv,
  nesear,
  nesim,
  NestedGreaterGreater,
  NestedLessLess,
  NewLine,
  nexist,
  nexists,
  Nfr,
  nfr,
  ngE,
  nge,
  ngeq,
  ngeqq,
  ngeqslant,
  nges,
  nGg,
  ngsim,
  nGt,
  ngt,
  ngtr,
  nGtv,
  nharr,
  nhArr,
  nhpar,
  ni,
  nis,
  nisd,
  niv,
  NJcy,
  njcy,
  nlarr,
  nlArr,
  nldr,
  nlE,
  nle,
  nleftarrow,
  nLeftarrow,
  nleftrightarrow,
  nLeftrightarrow,
  nleq,
  nleqq,
  nleqslant,
  nles,
  nless,
  nLl,
  nlsim,
  nLt,
  nlt,
  nltri,
  nltrie,
  nLtv,
  nmid,
  NoBreak,
  NonBreakingSpace,
  nopf,
  Nopf,
  Not,
  not,
  NotCongruent,
  NotCupCap,
  NotDoubleVerticalBar,
  NotElement,
  NotEqual,
  NotEqualTilde,
  NotExists,
  NotGreater,
  NotGreaterEqual,
  NotGreaterFullEqual,
  NotGreaterGreater,
  NotGreaterLess,
  NotGreaterSlantEqual,
  NotGreaterTilde,
  NotHumpDownHump,
  NotHumpEqual,
  notin,
  notindot,
  notinE,
  notinva,
  notinvb,
  notinvc,
  NotLeftTriangleBar,
  NotLeftTriangle,
  NotLeftTriangleEqual,
  NotLess,
  NotLessEqual,
  NotLessGreater,
  NotLessLess,
  NotLessSlantEqual,
  NotLessTilde,
  NotNestedGreaterGreater,
  NotNestedLessLess,
  notni,
  notniva,
  notnivb,
  notnivc,
  NotPrecedes,
  NotPrecedesEqual,
  NotPrecedesSlantEqual,
  NotReverseElement,
  NotRightTriangleBar,
  NotRightTriangle,
  NotRightTriangleEqual,
  NotSquareSubset,
  NotSquareSubsetEqual,
  NotSquareSuperset,
  NotSquareSupersetEqual,
  NotSubset,
  NotSubsetEqual,
  NotSucceeds,
  NotSucceedsEqual,
  NotSucceedsSlantEqual,
  NotSucceedsTilde,
  NotSuperset,
  NotSupersetEqual,
  NotTilde,
  NotTildeEqual,
  NotTildeFullEqual,
  NotTildeTilde,
  NotVerticalBar,
  nparallel,
  npar,
  nparsl,
  npart,
  npolint,
  npr,
  nprcue,
  nprec,
  npreceq,
  npre,
  nrarrc,
  nrarr,
  nrArr,
  nrarrw,
  nrightarrow,
  nRightarrow,
  nrtri,
  nrtrie,
  nsc,
  nsccue,
  nsce,
  Nscr,
  nscr,
  nshortmid,
  nshortparallel,
  nsim,
  nsime,
  nsimeq,
  nsmid,
  nspar,
  nsqsube,
  nsqsupe,
  nsub,
  nsubE,
  nsube,
  nsubset,
  nsubseteq,
  nsubseteqq,
  nsucc,
  nsucceq,
  nsup,
  nsupE,
  nsupe,
  nsupset,
  nsupseteq,
  nsupseteqq,
  ntgl,
  Ntilde,
  ntilde,
  ntlg,
  ntriangleleft,
  ntrianglelefteq,
  ntriangleright,
  ntrianglerighteq,
  Nu,
  nu,
  num,
  numero,
  numsp,
  nvap,
  nvdash,
  nvDash,
  nVdash,
  nVDash,
  nvge,
  nvgt,
  nvHarr,
  nvinfin,
  nvlArr,
  nvle,
  nvlt,
  nvltrie,
  nvrArr,
  nvrtrie,
  nvsim,
  nwarhk,
  nwarr,
  nwArr,
  nwarrow,
  nwnear,
  Oacute,
  oacute,
  oast,
  Ocirc,
  ocirc,
  ocir,
  Ocy,
  ocy,
  odash,
  Odblac,
  odblac,
  odiv,
  odot,
  odsold,
  OElig,
  oelig,
  ofcir,
  Ofr,
  ofr,
  ogon,
  Ograve,
  ograve,
  ogt,
  ohbar,
  ohm,
  oint,
  olarr,
  olcir,
  olcross,
  oline,
  olt,
  Omacr,
  omacr,
  Omega,
  omega,
  Omicron,
  omicron,
  omid,
  ominus,
  Oopf,
  oopf,
  opar,
  OpenCurlyDoubleQuote,
  OpenCurlyQuote,
  operp,
  oplus,
  orarr,
  Or,
  or,
  ord,
  order: order$1,
  orderof,
  ordf,
  ordm,
  origof,
  oror,
  orslope,
  orv,
  oS,
  Oscr,
  oscr,
  Oslash,
  oslash,
  osol,
  Otilde,
  otilde,
  otimesas,
  Otimes,
  otimes,
  Ouml,
  ouml,
  ovbar,
  OverBar,
  OverBrace,
  OverBracket,
  OverParenthesis,
  para,
  parallel,
  par,
  parsim,
  parsl,
  part,
  PartialD,
  Pcy,
  pcy,
  percnt,
  period,
  permil,
  perp,
  pertenk,
  Pfr,
  pfr,
  Phi,
  phi,
  phiv,
  phmmat,
  phone,
  Pi,
  pi,
  pitchfork,
  piv,
  planck,
  planckh,
  plankv,
  plusacir,
  plusb,
  pluscir,
  plus,
  plusdo,
  plusdu,
  pluse,
  PlusMinus,
  plusmn,
  plussim,
  plustwo,
  pm,
  Poincareplane,
  pointint,
  popf,
  Popf,
  pound,
  prap,
  Pr,
  pr,
  prcue,
  precapprox,
  prec,
  preccurlyeq,
  Precedes,
  PrecedesEqual,
  PrecedesSlantEqual,
  PrecedesTilde,
  preceq,
  precnapprox,
  precneqq,
  precnsim,
  pre,
  prE,
  precsim,
  prime,
  Prime,
  primes,
  prnap,
  prnE,
  prnsim,
  prod,
  Product,
  profalar,
  profline,
  profsurf,
  prop,
  Proportional,
  Proportion,
  propto,
  prsim,
  prurel,
  Pscr,
  pscr,
  Psi,
  psi,
  puncsp,
  Qfr,
  qfr,
  qint,
  qopf,
  Qopf,
  qprime,
  Qscr,
  qscr,
  quaternions,
  quatint,
  quest,
  questeq,
  quot,
  QUOT,
  rAarr,
  race,
  Racute,
  racute,
  radic,
  raemptyv,
  rang,
  Rang,
  rangd,
  range,
  rangle,
  raquo,
  rarrap,
  rarrb,
  rarrbfs,
  rarrc,
  rarr,
  Rarr,
  rArr,
  rarrfs,
  rarrhk,
  rarrlp,
  rarrpl,
  rarrsim,
  Rarrtl,
  rarrtl,
  rarrw,
  ratail,
  rAtail,
  ratio,
  rationals,
  rbarr,
  rBarr,
  RBarr,
  rbbrk,
  rbrace,
  rbrack,
  rbrke,
  rbrksld,
  rbrkslu,
  Rcaron,
  rcaron,
  Rcedil,
  rcedil,
  rceil,
  rcub,
  Rcy,
  rcy,
  rdca,
  rdldhar,
  rdquo,
  rdquor,
  rdsh,
  real,
  realine,
  realpart,
  reals,
  Re,
  rect,
  reg,
  REG,
  ReverseElement,
  ReverseEquilibrium,
  ReverseUpEquilibrium,
  rfisht,
  rfloor,
  rfr,
  Rfr,
  rHar,
  rhard,
  rharu,
  rharul,
  Rho,
  rho,
  rhov,
  RightAngleBracket,
  RightArrowBar,
  rightarrow,
  RightArrow,
  Rightarrow,
  RightArrowLeftArrow,
  rightarrowtail,
  RightCeiling,
  RightDoubleBracket,
  RightDownTeeVector,
  RightDownVectorBar,
  RightDownVector,
  RightFloor,
  rightharpoondown,
  rightharpoonup,
  rightleftarrows,
  rightleftharpoons,
  rightrightarrows,
  rightsquigarrow,
  RightTeeArrow,
  RightTee,
  RightTeeVector,
  rightthreetimes,
  RightTriangleBar,
  RightTriangle,
  RightTriangleEqual,
  RightUpDownVector,
  RightUpTeeVector,
  RightUpVectorBar,
  RightUpVector,
  RightVectorBar,
  RightVector,
  ring,
  risingdotseq,
  rlarr,
  rlhar,
  rlm,
  rmoustache,
  rmoust,
  rnmid,
  roang,
  roarr,
  robrk,
  ropar,
  ropf,
  Ropf,
  roplus,
  rotimes,
  RoundImplies,
  rpar,
  rpargt,
  rppolint,
  rrarr,
  Rrightarrow,
  rsaquo,
  rscr,
  Rscr,
  rsh,
  Rsh,
  rsqb,
  rsquo,
  rsquor,
  rthree,
  rtimes,
  rtri,
  rtrie,
  rtrif,
  rtriltri,
  RuleDelayed,
  ruluhar,
  rx,
  Sacute,
  sacute,
  sbquo,
  scap,
  Scaron,
  scaron,
  Sc,
  sc,
  sccue,
  sce,
  scE,
  Scedil,
  scedil,
  Scirc,
  scirc,
  scnap,
  scnE,
  scnsim,
  scpolint,
  scsim,
  Scy,
  scy,
  sdotb,
  sdot,
  sdote,
  searhk,
  searr,
  seArr,
  searrow,
  sect,
  semi,
  seswar,
  setminus,
  setmn,
  sext,
  Sfr,
  sfr,
  sfrown,
  sharp,
  SHCHcy,
  shchcy,
  SHcy,
  shcy,
  ShortDownArrow,
  ShortLeftArrow,
  shortmid,
  shortparallel,
  ShortRightArrow,
  ShortUpArrow,
  shy,
  Sigma,
  sigma,
  sigmaf,
  sigmav,
  sim,
  simdot,
  sime,
  simeq,
  simg,
  simgE,
  siml,
  simlE,
  simne,
  simplus,
  simrarr,
  slarr,
  SmallCircle,
  smallsetminus,
  smashp,
  smeparsl,
  smid,
  smile,
  smt,
  smte,
  smtes,
  SOFTcy,
  softcy,
  solbar,
  solb,
  sol,
  Sopf,
  sopf,
  spades,
  spadesuit,
  spar,
  sqcap,
  sqcaps,
  sqcup,
  sqcups,
  Sqrt,
  sqsub,
  sqsube,
  sqsubset,
  sqsubseteq,
  sqsup,
  sqsupe,
  sqsupset,
  sqsupseteq,
  square,
  Square,
  SquareIntersection,
  SquareSubset,
  SquareSubsetEqual,
  SquareSuperset,
  SquareSupersetEqual,
  SquareUnion,
  squarf,
  squ,
  squf,
  srarr,
  Sscr,
  sscr,
  ssetmn,
  ssmile,
  sstarf,
  Star,
  star,
  starf,
  straightepsilon,
  straightphi,
  strns,
  sub,
  Sub,
  subdot,
  subE,
  sube,
  subedot,
  submult,
  subnE,
  subne,
  subplus,
  subrarr,
  subset,
  Subset,
  subseteq,
  subseteqq,
  SubsetEqual,
  subsetneq,
  subsetneqq,
  subsim,
  subsub,
  subsup,
  succapprox,
  succ,
  succcurlyeq,
  Succeeds,
  SucceedsEqual,
  SucceedsSlantEqual,
  SucceedsTilde,
  succeq,
  succnapprox,
  succneqq,
  succnsim,
  succsim,
  SuchThat,
  sum,
  Sum,
  sung,
  sup1,
  sup2,
  sup3,
  sup,
  Sup,
  supdot,
  supdsub,
  supE,
  supe,
  supedot,
  Superset,
  SupersetEqual,
  suphsol,
  suphsub,
  suplarr,
  supmult,
  supnE,
  supne,
  supplus,
  supset,
  Supset,
  supseteq,
  supseteqq,
  supsetneq,
  supsetneqq,
  supsim,
  supsub,
  supsup,
  swarhk,
  swarr,
  swArr,
  swarrow,
  swnwar,
  szlig,
  Tab,
  target,
  Tau,
  tau,
  tbrk,
  Tcaron,
  tcaron,
  Tcedil,
  tcedil,
  Tcy,
  tcy,
  tdot,
  telrec,
  Tfr,
  tfr,
  there4,
  therefore,
  Therefore,
  Theta,
  theta,
  thetasym,
  thetav,
  thickapprox,
  thicksim,
  ThickSpace,
  ThinSpace,
  thinsp,
  thkap,
  thksim,
  THORN,
  thorn,
  tilde,
  Tilde,
  TildeEqual,
  TildeFullEqual,
  TildeTilde,
  timesbar,
  timesb,
  times,
  timesd,
  tint,
  toea,
  topbot,
  topcir,
  top: top$1,
  Topf,
  topf,
  topfork,
  tosa,
  tprime,
  trade,
  TRADE,
  triangle,
  triangledown,
  triangleleft,
  trianglelefteq,
  triangleq,
  triangleright,
  trianglerighteq,
  tridot,
  trie,
  triminus,
  TripleDot,
  triplus,
  trisb,
  tritime,
  trpezium,
  Tscr,
  tscr,
  TScy,
  tscy,
  TSHcy,
  tshcy,
  Tstrok,
  tstrok,
  twixt,
  twoheadleftarrow,
  twoheadrightarrow,
  Uacute,
  uacute,
  uarr,
  Uarr,
  uArr,
  Uarrocir,
  Ubrcy,
  ubrcy,
  Ubreve,
  ubreve,
  Ucirc,
  ucirc,
  Ucy,
  ucy,
  udarr,
  Udblac,
  udblac,
  udhar,
  ufisht,
  Ufr,
  ufr,
  Ugrave,
  ugrave,
  uHar,
  uharl,
  uharr,
  uhblk,
  ulcorn,
  ulcorner,
  ulcrop,
  ultri,
  Umacr,
  umacr,
  uml,
  UnderBar,
  UnderBrace,
  UnderBracket,
  UnderParenthesis,
  Union,
  UnionPlus,
  Uogon,
  uogon,
  Uopf,
  uopf,
  UpArrowBar,
  uparrow,
  UpArrow,
  Uparrow,
  UpArrowDownArrow,
  updownarrow,
  UpDownArrow,
  Updownarrow,
  UpEquilibrium,
  upharpoonleft,
  upharpoonright,
  uplus,
  UpperLeftArrow,
  UpperRightArrow,
  upsi,
  Upsi,
  upsih,
  Upsilon,
  upsilon,
  UpTeeArrow,
  UpTee,
  upuparrows,
  urcorn,
  urcorner,
  urcrop,
  Uring,
  uring,
  urtri,
  Uscr,
  uscr,
  utdot,
  Utilde,
  utilde,
  utri,
  utrif,
  uuarr,
  Uuml,
  uuml,
  uwangle,
  vangrt,
  varepsilon,
  varkappa,
  varnothing,
  varphi,
  varpi,
  varpropto,
  varr,
  vArr,
  varrho,
  varsigma,
  varsubsetneq,
  varsubsetneqq,
  varsupsetneq,
  varsupsetneqq,
  vartheta,
  vartriangleleft,
  vartriangleright,
  vBar,
  Vbar,
  vBarv,
  Vcy,
  vcy,
  vdash,
  vDash,
  Vdash,
  VDash,
  Vdashl,
  veebar,
  vee,
  Vee,
  veeeq,
  vellip,
  verbar,
  Verbar,
  vert,
  Vert,
  VerticalBar,
  VerticalLine,
  VerticalSeparator,
  VerticalTilde,
  VeryThinSpace,
  Vfr,
  vfr,
  vltri,
  vnsub,
  vnsup,
  Vopf,
  vopf,
  vprop,
  vrtri,
  Vscr,
  vscr,
  vsubnE,
  vsubne,
  vsupnE,
  vsupne,
  Vvdash,
  vzigzag,
  Wcirc,
  wcirc,
  wedbar,
  wedge,
  Wedge,
  wedgeq,
  weierp,
  Wfr,
  wfr,
  Wopf,
  wopf,
  wp,
  wr,
  wreath,
  Wscr,
  wscr,
  xcap,
  xcirc,
  xcup,
  xdtri,
  Xfr,
  xfr,
  xharr,
  xhArr,
  Xi,
  xi,
  xlarr,
  xlArr,
  xmap,
  xnis,
  xodot,
  Xopf,
  xopf,
  xoplus,
  xotime,
  xrarr,
  xrArr,
  Xscr,
  xscr,
  xsqcup,
  xuplus,
  xutri,
  xvee,
  xwedge,
  Yacute,
  yacute,
  YAcy,
  yacy,
  Ycirc,
  ycirc,
  Ycy,
  ycy,
  yen,
  Yfr,
  yfr,
  YIcy,
  yicy,
  Yopf,
  yopf,
  Yscr,
  yscr,
  YUcy,
  yucy,
  yuml,
  Yuml,
  Zacute,
  zacute,
  Zcaron,
  zcaron,
  Zcy,
  zcy,
  Zdot,
  zdot,
  zeetrf,
  ZeroWidthSpace,
  Zeta,
  zeta,
  zfr,
  Zfr,
  ZHcy,
  zhcy,
  zigrarr,
  zopf,
  Zopf,
  Zscr,
  zscr,
  zwj,
  zwnj
};
(function(module) {
  module.exports = require$$0;
})(entities$1);
var regex$4 = /[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4E\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/;
var mdurl$1 = {};
var encodeCache = {};
function getEncodeCache(exclude) {
  var i, ch, cache2 = encodeCache[exclude];
  if (cache2) {
    return cache2;
  }
  cache2 = encodeCache[exclude] = [];
  for (i = 0; i < 128; i++) {
    ch = String.fromCharCode(i);
    if (/^[0-9a-z]$/i.test(ch)) {
      cache2.push(ch);
    } else {
      cache2.push("%" + ("0" + i.toString(16).toUpperCase()).slice(-2));
    }
  }
  for (i = 0; i < exclude.length; i++) {
    cache2[exclude.charCodeAt(i)] = exclude[i];
  }
  return cache2;
}
function encode$1(string, exclude, keepEscaped) {
  var i, l2, code3, nextCode, cache2, result = "";
  if (typeof exclude !== "string") {
    keepEscaped = exclude;
    exclude = encode$1.defaultChars;
  }
  if (typeof keepEscaped === "undefined") {
    keepEscaped = true;
  }
  cache2 = getEncodeCache(exclude);
  for (i = 0, l2 = string.length; i < l2; i++) {
    code3 = string.charCodeAt(i);
    if (keepEscaped && code3 === 37 && i + 2 < l2) {
      if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {
        result += string.slice(i, i + 3);
        i += 2;
        continue;
      }
    }
    if (code3 < 128) {
      result += cache2[code3];
      continue;
    }
    if (code3 >= 55296 && code3 <= 57343) {
      if (code3 >= 55296 && code3 <= 56319 && i + 1 < l2) {
        nextCode = string.charCodeAt(i + 1);
        if (nextCode >= 56320 && nextCode <= 57343) {
          result += encodeURIComponent(string[i] + string[i + 1]);
          i++;
          continue;
        }
      }
      result += "%EF%BF%BD";
      continue;
    }
    result += encodeURIComponent(string[i]);
  }
  return result;
}
encode$1.defaultChars = ";/?:@&=+$,-_.!~*'()#";
encode$1.componentChars = "-_.!~*'()";
var encode_1 = encode$1;
var decodeCache = {};
function getDecodeCache(exclude) {
  var i, ch, cache2 = decodeCache[exclude];
  if (cache2) {
    return cache2;
  }
  cache2 = decodeCache[exclude] = [];
  for (i = 0; i < 128; i++) {
    ch = String.fromCharCode(i);
    cache2.push(ch);
  }
  for (i = 0; i < exclude.length; i++) {
    ch = exclude.charCodeAt(i);
    cache2[ch] = "%" + ("0" + ch.toString(16).toUpperCase()).slice(-2);
  }
  return cache2;
}
function decode$1(string, exclude) {
  var cache2;
  if (typeof exclude !== "string") {
    exclude = decode$1.defaultChars;
  }
  cache2 = getDecodeCache(exclude);
  return string.replace(/(%[a-f0-9]{2})+/gi, function(seq) {
    var i, l2, b1, b2, b3, b4, chr, result = "";
    for (i = 0, l2 = seq.length; i < l2; i += 3) {
      b1 = parseInt(seq.slice(i + 1, i + 3), 16);
      if (b1 < 128) {
        result += cache2[b1];
        continue;
      }
      if ((b1 & 224) === 192 && i + 3 < l2) {
        b2 = parseInt(seq.slice(i + 4, i + 6), 16);
        if ((b2 & 192) === 128) {
          chr = b1 << 6 & 1984 | b2 & 63;
          if (chr < 128) {
            result += "ï¿½ï¿½";
          } else {
            result += String.fromCharCode(chr);
          }
          i += 3;
          continue;
        }
      }
      if ((b1 & 240) === 224 && i + 6 < l2) {
        b2 = parseInt(seq.slice(i + 4, i + 6), 16);
        b3 = parseInt(seq.slice(i + 7, i + 9), 16);
        if ((b2 & 192) === 128 && (b3 & 192) === 128) {
          chr = b1 << 12 & 61440 | b2 << 6 & 4032 | b3 & 63;
          if (chr < 2048 || chr >= 55296 && chr <= 57343) {
            result += "ï¿½ï¿½ï¿½";
          } else {
            result += String.fromCharCode(chr);
          }
          i += 6;
          continue;
        }
      }
      if ((b1 & 248) === 240 && i + 9 < l2) {
        b2 = parseInt(seq.slice(i + 4, i + 6), 16);
        b3 = parseInt(seq.slice(i + 7, i + 9), 16);
        b4 = parseInt(seq.slice(i + 10, i + 12), 16);
        if ((b2 & 192) === 128 && (b3 & 192) === 128 && (b4 & 192) === 128) {
          chr = b1 << 18 & 1835008 | b2 << 12 & 258048 | b3 << 6 & 4032 | b4 & 63;
          if (chr < 65536 || chr > 1114111) {
            result += "ï¿½ï¿½ï¿½ï¿½";
          } else {
            chr -= 65536;
            result += String.fromCharCode(55296 + (chr >> 10), 56320 + (chr & 1023));
          }
          i += 9;
          continue;
        }
      }
      result += "ï¿½";
    }
    return result;
  });
}
decode$1.defaultChars = ";/?:@&=+$,#";
decode$1.componentChars = "";
var decode_1 = decode$1;
var format = function format2(url2) {
  var result = "";
  result += url2.protocol || "";
  result += url2.slashes ? "//" : "";
  result += url2.auth ? url2.auth + "@" : "";
  if (url2.hostname && url2.hostname.indexOf(":") !== -1) {
    result += "[" + url2.hostname + "]";
  } else {
    result += url2.hostname || "";
  }
  result += url2.port ? ":" + url2.port : "";
  result += url2.pathname || "";
  result += url2.search || "";
  result += url2.hash || "";
  return result;
};
function Url() {
  this.protocol = null;
  this.slashes = null;
  this.auth = null;
  this.port = null;
  this.hostname = null;
  this.hash = null;
  this.search = null;
  this.pathname = null;
}
var protocolPattern = /^([a-z0-9.+-]+:)/i, portPattern = /:[0-9]*$/, simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, delims = ["<", ">", '"', "`", " ", "\r", "\n", "	"], unwise = ["{", "}", "|", "\\", "^", "`"].concat(delims), autoEscape = ["'"].concat(unwise), nonHostChars = ["%", "/", "?", ";", "#"].concat(autoEscape), hostEndingChars = ["/", "?", "#"], hostnameMaxLen = 255, hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, hostlessProtocol = {
  "javascript": true,
  "javascript:": true
}, slashedProtocol = {
  "http": true,
  "https": true,
  "ftp": true,
  "gopher": true,
  "file": true,
  "http:": true,
  "https:": true,
  "ftp:": true,
  "gopher:": true,
  "file:": true
};
function urlParse(url2, slashesDenoteHost) {
  if (url2 && url2 instanceof Url) {
    return url2;
  }
  var u2 = new Url();
  u2.parse(url2, slashesDenoteHost);
  return u2;
}
Url.prototype.parse = function(url2, slashesDenoteHost) {
  var i, l2, lowerProto, hec, slashes, rest = url2;
  rest = rest.trim();
  if (!slashesDenoteHost && url2.split("#").length === 1) {
    var simplePath = simplePathPattern.exec(rest);
    if (simplePath) {
      this.pathname = simplePath[1];
      if (simplePath[2]) {
        this.search = simplePath[2];
      }
      return this;
    }
  }
  var proto2 = protocolPattern.exec(rest);
  if (proto2) {
    proto2 = proto2[0];
    lowerProto = proto2.toLowerCase();
    this.protocol = proto2;
    rest = rest.substr(proto2.length);
  }
  if (slashesDenoteHost || proto2 || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) {
    slashes = rest.substr(0, 2) === "//";
    if (slashes && !(proto2 && hostlessProtocol[proto2])) {
      rest = rest.substr(2);
      this.slashes = true;
    }
  }
  if (!hostlessProtocol[proto2] && (slashes || proto2 && !slashedProtocol[proto2])) {
    var hostEnd = -1;
    for (i = 0; i < hostEndingChars.length; i++) {
      hec = rest.indexOf(hostEndingChars[i]);
      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {
        hostEnd = hec;
      }
    }
    var auth, atSign;
    if (hostEnd === -1) {
      atSign = rest.lastIndexOf("@");
    } else {
      atSign = rest.lastIndexOf("@", hostEnd);
    }
    if (atSign !== -1) {
      auth = rest.slice(0, atSign);
      rest = rest.slice(atSign + 1);
      this.auth = auth;
    }
    hostEnd = -1;
    for (i = 0; i < nonHostChars.length; i++) {
      hec = rest.indexOf(nonHostChars[i]);
      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {
        hostEnd = hec;
      }
    }
    if (hostEnd === -1) {
      hostEnd = rest.length;
    }
    if (rest[hostEnd - 1] === ":") {
      hostEnd--;
    }
    var host = rest.slice(0, hostEnd);
    rest = rest.slice(hostEnd);
    this.parseHost(host);
    this.hostname = this.hostname || "";
    var ipv6Hostname = this.hostname[0] === "[" && this.hostname[this.hostname.length - 1] === "]";
    if (!ipv6Hostname) {
      var hostparts = this.hostname.split(/\./);
      for (i = 0, l2 = hostparts.length; i < l2; i++) {
        var part2 = hostparts[i];
        if (!part2) {
          continue;
        }
        if (!part2.match(hostnamePartPattern)) {
          var newpart = "";
          for (var j2 = 0, k2 = part2.length; j2 < k2; j2++) {
            if (part2.charCodeAt(j2) > 127) {
              newpart += "x";
            } else {
              newpart += part2[j2];
            }
          }
          if (!newpart.match(hostnamePartPattern)) {
            var validParts = hostparts.slice(0, i);
            var notHost = hostparts.slice(i + 1);
            var bit = part2.match(hostnamePartStart);
            if (bit) {
              validParts.push(bit[1]);
              notHost.unshift(bit[2]);
            }
            if (notHost.length) {
              rest = notHost.join(".") + rest;
            }
            this.hostname = validParts.join(".");
            break;
          }
        }
      }
    }
    if (this.hostname.length > hostnameMaxLen) {
      this.hostname = "";
    }
    if (ipv6Hostname) {
      this.hostname = this.hostname.substr(1, this.hostname.length - 2);
    }
  }
  var hash2 = rest.indexOf("#");
  if (hash2 !== -1) {
    this.hash = rest.substr(hash2);
    rest = rest.slice(0, hash2);
  }
  var qm = rest.indexOf("?");
  if (qm !== -1) {
    this.search = rest.substr(qm);
    rest = rest.slice(0, qm);
  }
  if (rest) {
    this.pathname = rest;
  }
  if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {
    this.pathname = "";
  }
  return this;
};
Url.prototype.parseHost = function(host) {
  var port = portPattern.exec(host);
  if (port) {
    port = port[0];
    if (port !== ":") {
      this.port = port.substr(1);
    }
    host = host.substr(0, host.length - port.length);
  }
  if (host) {
    this.hostname = host;
  }
};
var parse2 = urlParse;
mdurl$1.encode = encode_1;
mdurl$1.decode = decode_1;
mdurl$1.format = format;
mdurl$1.parse = parse2;
var uc_micro = {};
var regex$3;
var hasRequiredRegex$3;
function requireRegex$3() {
  if (hasRequiredRegex$3)
    return regex$3;
  hasRequiredRegex$3 = 1;
  regex$3 = /[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
  return regex$3;
}
var regex$2;
var hasRequiredRegex$2;
function requireRegex$2() {
  if (hasRequiredRegex$2)
    return regex$2;
  hasRequiredRegex$2 = 1;
  regex$2 = /[\0-\x1F\x7F-\x9F]/;
  return regex$2;
}
var regex$1;
var hasRequiredRegex$1;
function requireRegex$1() {
  if (hasRequiredRegex$1)
    return regex$1;
  hasRequiredRegex$1 = 1;
  regex$1 = /[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/;
  return regex$1;
}
var regex;
var hasRequiredRegex;
function requireRegex() {
  if (hasRequiredRegex)
    return regex;
  hasRequiredRegex = 1;
  regex = /[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;
  return regex;
}
var hasRequiredUc_micro;
function requireUc_micro() {
  if (hasRequiredUc_micro)
    return uc_micro;
  hasRequiredUc_micro = 1;
  uc_micro.Any = requireRegex$3();
  uc_micro.Cc = requireRegex$2();
  uc_micro.Cf = requireRegex$1();
  uc_micro.P = regex$4;
  uc_micro.Z = requireRegex();
  return uc_micro;
}
(function(exports) {
  function _class2(obj) {
    return Object.prototype.toString.call(obj);
  }
  function isString2(obj) {
    return _class2(obj) === "[object String]";
  }
  var _hasOwnProperty = Object.prototype.hasOwnProperty;
  function has2(object, key) {
    return _hasOwnProperty.call(object, key);
  }
  function assign2(obj) {
    var sources = Array.prototype.slice.call(arguments, 1);
    sources.forEach(function(source) {
      if (!source) {
        return;
      }
      if (typeof source !== "object") {
        throw new TypeError(source + "must be object");
      }
      Object.keys(source).forEach(function(key) {
        obj[key] = source[key];
      });
    });
    return obj;
  }
  function arrayReplaceAt2(src, pos, newElements) {
    return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1));
  }
  function isValidEntityCode2(c2) {
    if (c2 >= 55296 && c2 <= 57343) {
      return false;
    }
    if (c2 >= 64976 && c2 <= 65007) {
      return false;
    }
    if ((c2 & 65535) === 65535 || (c2 & 65535) === 65534) {
      return false;
    }
    if (c2 >= 0 && c2 <= 8) {
      return false;
    }
    if (c2 === 11) {
      return false;
    }
    if (c2 >= 14 && c2 <= 31) {
      return false;
    }
    if (c2 >= 127 && c2 <= 159) {
      return false;
    }
    if (c2 > 1114111) {
      return false;
    }
    return true;
  }
  function fromCodePoint2(c2) {
    if (c2 > 65535) {
      c2 -= 65536;
      var surrogate1 = 55296 + (c2 >> 10), surrogate2 = 56320 + (c2 & 1023);
      return String.fromCharCode(surrogate1, surrogate2);
    }
    return String.fromCharCode(c2);
  }
  var UNESCAPE_MD_RE = /\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g;
  var ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi;
  var UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + "|" + ENTITY_RE.source, "gi");
  var DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;
  var entities2 = entitiesExports;
  function replaceEntityPattern(match3, name2) {
    var code3 = 0;
    if (has2(entities2, name2)) {
      return entities2[name2];
    }
    if (name2.charCodeAt(0) === 35 && DIGITAL_ENTITY_TEST_RE.test(name2)) {
      code3 = name2[1].toLowerCase() === "x" ? parseInt(name2.slice(2), 16) : parseInt(name2.slice(1), 10);
      if (isValidEntityCode2(code3)) {
        return fromCodePoint2(code3);
      }
    }
    return match3;
  }
  function unescapeMd(str) {
    if (str.indexOf("\\") < 0) {
      return str;
    }
    return str.replace(UNESCAPE_MD_RE, "$1");
  }
  function unescapeAll2(str) {
    if (str.indexOf("\\") < 0 && str.indexOf("&") < 0) {
      return str;
    }
    return str.replace(UNESCAPE_ALL_RE, function(match3, escaped, entity3) {
      if (escaped) {
        return escaped;
      }
      return replaceEntityPattern(match3, entity3);
    });
  }
  var HTML_ESCAPE_TEST_RE = /[&<>"]/;
  var HTML_ESCAPE_REPLACE_RE = /[&<>"]/g;
  var HTML_REPLACEMENTS = {
    "&": "&amp;",
    "<": "&lt;",
    ">": "&gt;",
    '"': "&quot;"
  };
  function replaceUnsafeChar(ch) {
    return HTML_REPLACEMENTS[ch];
  }
  function escapeHtml2(str) {
    if (HTML_ESCAPE_TEST_RE.test(str)) {
      return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);
    }
    return str;
  }
  var REGEXP_ESCAPE_RE = /[.?*+^$[\]\\(){}|-]/g;
  function escapeRE2(str) {
    return str.replace(REGEXP_ESCAPE_RE, "\\$&");
  }
  function isSpace2(code3) {
    switch (code3) {
      case 9:
      case 32:
        return true;
    }
    return false;
  }
  function isWhiteSpace2(code3) {
    if (code3 >= 8192 && code3 <= 8202) {
      return true;
    }
    switch (code3) {
      case 9:
      case 10:
      case 11:
      case 12:
      case 13:
      case 32:
      case 160:
      case 5760:
      case 8239:
      case 8287:
      case 12288:
        return true;
    }
    return false;
  }
  var UNICODE_PUNCT_RE = regex$4;
  function isPunctChar2(ch) {
    return UNICODE_PUNCT_RE.test(ch);
  }
  function isMdAsciiPunct2(ch) {
    switch (ch) {
      case 33:
      case 34:
      case 35:
      case 36:
      case 37:
      case 38:
      case 39:
      case 40:
      case 41:
      case 42:
      case 43:
      case 44:
      case 45:
      case 46:
      case 47:
      case 58:
      case 59:
      case 60:
      case 61:
      case 62:
      case 63:
      case 64:
      case 91:
      case 92:
      case 93:
      case 94:
      case 95:
      case 96:
      case 123:
      case 124:
      case 125:
      case 126:
        return true;
      default:
        return false;
    }
  }
  function normalizeReference2(str) {
    str = str.trim().replace(/\s+/g, " ");
    if ("áºž".toLowerCase() === "á¹¾") {
      str = str.replace(/áºž/g, "ÃŸ");
    }
    return str.toLowerCase().toUpperCase();
  }
  exports.lib = {};
  exports.lib.mdurl = mdurl$1;
  exports.lib.ucmicro = requireUc_micro();
  exports.assign = assign2;
  exports.isString = isString2;
  exports.has = has2;
  exports.unescapeMd = unescapeMd;
  exports.unescapeAll = unescapeAll2;
  exports.isValidEntityCode = isValidEntityCode2;
  exports.fromCodePoint = fromCodePoint2;
  exports.escapeHtml = escapeHtml2;
  exports.arrayReplaceAt = arrayReplaceAt2;
  exports.isSpace = isSpace2;
  exports.isWhiteSpace = isWhiteSpace2;
  exports.isMdAsciiPunct = isMdAsciiPunct2;
  exports.isPunctChar = isPunctChar2;
  exports.escapeRE = escapeRE2;
  exports.normalizeReference = normalizeReference2;
})(utils$1);
var helpers$1 = {};
var parse_link_label = function parseLinkLabel(state, start2, disableNested) {
  var level, found, marker2, prevPos, labelEnd = -1, max2 = state.posMax, oldPos = state.pos;
  state.pos = start2 + 1;
  level = 1;
  while (state.pos < max2) {
    marker2 = state.src.charCodeAt(state.pos);
    if (marker2 === 93) {
      level--;
      if (level === 0) {
        found = true;
        break;
      }
    }
    prevPos = state.pos;
    state.md.inline.skipToken(state);
    if (marker2 === 91) {
      if (prevPos === state.pos - 1) {
        level++;
      } else if (disableNested) {
        state.pos = oldPos;
        return -1;
      }
    }
  }
  if (found) {
    labelEnd = state.pos;
  }
  state.pos = oldPos;
  return labelEnd;
};
var unescapeAll$2 = utils$1.unescapeAll;
var parse_link_destination = function parseLinkDestination(str, pos, max2) {
  var code3, level, lines = 0, start2 = pos, result = {
    ok: false,
    pos: 0,
    lines: 0,
    str: ""
  };
  if (str.charCodeAt(pos) === 60) {
    pos++;
    while (pos < max2) {
      code3 = str.charCodeAt(pos);
      if (code3 === 10) {
        return result;
      }
      if (code3 === 60) {
        return result;
      }
      if (code3 === 62) {
        result.pos = pos + 1;
        result.str = unescapeAll$2(str.slice(start2 + 1, pos));
        result.ok = true;
        return result;
      }
      if (code3 === 92 && pos + 1 < max2) {
        pos += 2;
        continue;
      }
      pos++;
    }
    return result;
  }
  level = 0;
  while (pos < max2) {
    code3 = str.charCodeAt(pos);
    if (code3 === 32) {
      break;
    }
    if (code3 < 32 || code3 === 127) {
      break;
    }
    if (code3 === 92 && pos + 1 < max2) {
      if (str.charCodeAt(pos + 1) === 32) {
        break;
      }
      pos += 2;
      continue;
    }
    if (code3 === 40) {
      level++;
      if (level > 32) {
        return result;
      }
    }
    if (code3 === 41) {
      if (level === 0) {
        break;
      }
      level--;
    }
    pos++;
  }
  if (start2 === pos) {
    return result;
  }
  if (level !== 0) {
    return result;
  }
  result.str = unescapeAll$2(str.slice(start2, pos));
  result.lines = lines;
  result.pos = pos;
  result.ok = true;
  return result;
};
var unescapeAll$1 = utils$1.unescapeAll;
var parse_link_title = function parseLinkTitle(str, pos, max2) {
  var code3, marker2, lines = 0, start2 = pos, result = {
    ok: false,
    pos: 0,
    lines: 0,
    str: ""
  };
  if (pos >= max2) {
    return result;
  }
  marker2 = str.charCodeAt(pos);
  if (marker2 !== 34 && marker2 !== 39 && marker2 !== 40) {
    return result;
  }
  pos++;
  if (marker2 === 40) {
    marker2 = 41;
  }
  while (pos < max2) {
    code3 = str.charCodeAt(pos);
    if (code3 === marker2) {
      result.pos = pos + 1;
      result.lines = lines;
      result.str = unescapeAll$1(str.slice(start2 + 1, pos));
      result.ok = true;
      return result;
    } else if (code3 === 40 && marker2 === 41) {
      return result;
    } else if (code3 === 10) {
      lines++;
    } else if (code3 === 92 && pos + 1 < max2) {
      pos++;
      if (str.charCodeAt(pos) === 10) {
        lines++;
      }
    }
    pos++;
  }
  return result;
};
helpers$1.parseLinkLabel = parse_link_label;
helpers$1.parseLinkDestination = parse_link_destination;
helpers$1.parseLinkTitle = parse_link_title;
var assign$1 = utils$1.assign;
var unescapeAll = utils$1.unescapeAll;
var escapeHtml = utils$1.escapeHtml;
var default_rules = {};
default_rules.code_inline = function(tokens, idx, options2, env2, slf) {
  var token2 = tokens[idx];
  return "<code" + slf.renderAttrs(token2) + ">" + escapeHtml(tokens[idx].content) + "</code>";
};
default_rules.code_block = function(tokens, idx, options2, env2, slf) {
  var token2 = tokens[idx];
  return "<pre" + slf.renderAttrs(token2) + "><code>" + escapeHtml(tokens[idx].content) + "</code></pre>\n";
};
default_rules.fence = function(tokens, idx, options2, env2, slf) {
  var token2 = tokens[idx], info = token2.info ? unescapeAll(token2.info).trim() : "", langName = "", langAttrs = "", highlighted, i, arr, tmpAttrs, tmpToken;
  if (info) {
    arr = info.split(/(\s+)/g);
    langName = arr[0];
    langAttrs = arr.slice(2).join("");
  }
  if (options2.highlight) {
    highlighted = options2.highlight(token2.content, langName, langAttrs) || escapeHtml(token2.content);
  } else {
    highlighted = escapeHtml(token2.content);
  }
  if (highlighted.indexOf("<pre") === 0) {
    return highlighted + "\n";
  }
  if (info) {
    i = token2.attrIndex("class");
    tmpAttrs = token2.attrs ? token2.attrs.slice() : [];
    if (i < 0) {
      tmpAttrs.push(["class", options2.langPrefix + langName]);
    } else {
      tmpAttrs[i] = tmpAttrs[i].slice();
      tmpAttrs[i][1] += " " + options2.langPrefix + langName;
    }
    tmpToken = {
      attrs: tmpAttrs
    };
    return "<pre><code" + slf.renderAttrs(tmpToken) + ">" + highlighted + "</code></pre>\n";
  }
  return "<pre><code" + slf.renderAttrs(token2) + ">" + highlighted + "</code></pre>\n";
};
default_rules.image = function(tokens, idx, options2, env2, slf) {
  var token2 = tokens[idx];
  token2.attrs[token2.attrIndex("alt")][1] = slf.renderInlineAsText(token2.children, options2, env2);
  return slf.renderToken(tokens, idx, options2);
};
default_rules.hardbreak = function(tokens, idx, options2) {
  return options2.xhtmlOut ? "<br />\n" : "<br>\n";
};
default_rules.softbreak = function(tokens, idx, options2) {
  return options2.breaks ? options2.xhtmlOut ? "<br />\n" : "<br>\n" : "\n";
};
default_rules.text = function(tokens, idx) {
  return escapeHtml(tokens[idx].content);
};
default_rules.html_block = function(tokens, idx) {
  return tokens[idx].content;
};
default_rules.html_inline = function(tokens, idx) {
  return tokens[idx].content;
};
function Renderer$1() {
  this.rules = assign$1({}, default_rules);
}
Renderer$1.prototype.renderAttrs = function renderAttrs(token2) {
  var i, l2, result;
  if (!token2.attrs) {
    return "";
  }
  result = "";
  for (i = 0, l2 = token2.attrs.length; i < l2; i++) {
    result += " " + escapeHtml(token2.attrs[i][0]) + '="' + escapeHtml(token2.attrs[i][1]) + '"';
  }
  return result;
};
Renderer$1.prototype.renderToken = function renderToken(tokens, idx, options2) {
  var nextToken, result = "", needLf = false, token2 = tokens[idx];
  if (token2.hidden) {
    return "";
  }
  if (token2.block && token2.nesting !== -1 && idx && tokens[idx - 1].hidden) {
    result += "\n";
  }
  result += (token2.nesting === -1 ? "</" : "<") + token2.tag;
  result += this.renderAttrs(token2);
  if (token2.nesting === 0 && options2.xhtmlOut) {
    result += " /";
  }
  if (token2.block) {
    needLf = true;
    if (token2.nesting === 1) {
      if (idx + 1 < tokens.length) {
        nextToken = tokens[idx + 1];
        if (nextToken.type === "inline" || nextToken.hidden) {
          needLf = false;
        } else if (nextToken.nesting === -1 && nextToken.tag === token2.tag) {
          needLf = false;
        }
      }
    }
  }
  result += needLf ? ">\n" : ">";
  return result;
};
Renderer$1.prototype.renderInline = function(tokens, options2, env2) {
  var type2, result = "", rules = this.rules;
  for (var i = 0, len = tokens.length; i < len; i++) {
    type2 = tokens[i].type;
    if (typeof rules[type2] !== "undefined") {
      result += rules[type2](tokens, i, options2, env2, this);
    } else {
      result += this.renderToken(tokens, i, options2);
    }
  }
  return result;
};
Renderer$1.prototype.renderInlineAsText = function(tokens, options2, env2) {
  var result = "";
  for (var i = 0, len = tokens.length; i < len; i++) {
    if (tokens[i].type === "text") {
      result += tokens[i].content;
    } else if (tokens[i].type === "image") {
      result += this.renderInlineAsText(tokens[i].children, options2, env2);
    } else if (tokens[i].type === "softbreak") {
      result += "\n";
    }
  }
  return result;
};
Renderer$1.prototype.render = function(tokens, options2, env2) {
  var i, len, type2, result = "", rules = this.rules;
  for (i = 0, len = tokens.length; i < len; i++) {
    type2 = tokens[i].type;
    if (type2 === "inline") {
      result += this.renderInline(tokens[i].children, options2, env2);
    } else if (typeof rules[type2] !== "undefined") {
      result += rules[tokens[i].type](tokens, i, options2, env2, this);
    } else {
      result += this.renderToken(tokens, i, options2, env2);
    }
  }
  return result;
};
var renderer = Renderer$1;
function Ruler$3() {
  this.__rules__ = [];
  this.__cache__ = null;
}
Ruler$3.prototype.__find__ = function(name2) {
  for (var i = 0; i < this.__rules__.length; i++) {
    if (this.__rules__[i].name === name2) {
      return i;
    }
  }
  return -1;
};
Ruler$3.prototype.__compile__ = function() {
  var self2 = this;
  var chains = [""];
  self2.__rules__.forEach(function(rule) {
    if (!rule.enabled) {
      return;
    }
    rule.alt.forEach(function(altName) {
      if (chains.indexOf(altName) < 0) {
        chains.push(altName);
      }
    });
  });
  self2.__cache__ = {};
  chains.forEach(function(chain) {
    self2.__cache__[chain] = [];
    self2.__rules__.forEach(function(rule) {
      if (!rule.enabled) {
        return;
      }
      if (chain && rule.alt.indexOf(chain) < 0) {
        return;
      }
      self2.__cache__[chain].push(rule.fn);
    });
  });
};
Ruler$3.prototype.at = function(name2, fn2, options2) {
  var index2 = this.__find__(name2);
  var opt = options2 || {};
  if (index2 === -1) {
    throw new Error("Parser rule not found: " + name2);
  }
  this.__rules__[index2].fn = fn2;
  this.__rules__[index2].alt = opt.alt || [];
  this.__cache__ = null;
};
Ruler$3.prototype.before = function(beforeName, ruleName, fn2, options2) {
  var index2 = this.__find__(beforeName);
  var opt = options2 || {};
  if (index2 === -1) {
    throw new Error("Parser rule not found: " + beforeName);
  }
  this.__rules__.splice(index2, 0, {
    name: ruleName,
    enabled: true,
    fn: fn2,
    alt: opt.alt || []
  });
  this.__cache__ = null;
};
Ruler$3.prototype.after = function(afterName, ruleName, fn2, options2) {
  var index2 = this.__find__(afterName);
  var opt = options2 || {};
  if (index2 === -1) {
    throw new Error("Parser rule not found: " + afterName);
  }
  this.__rules__.splice(index2 + 1, 0, {
    name: ruleName,
    enabled: true,
    fn: fn2,
    alt: opt.alt || []
  });
  this.__cache__ = null;
};
Ruler$3.prototype.push = function(ruleName, fn2, options2) {
  var opt = options2 || {};
  this.__rules__.push({
    name: ruleName,
    enabled: true,
    fn: fn2,
    alt: opt.alt || []
  });
  this.__cache__ = null;
};
Ruler$3.prototype.enable = function(list3, ignoreInvalid) {
  if (!Array.isArray(list3)) {
    list3 = [list3];
  }
  var result = [];
  list3.forEach(function(name2) {
    var idx = this.__find__(name2);
    if (idx < 0) {
      if (ignoreInvalid) {
        return;
      }
      throw new Error("Rules manager: invalid rule name " + name2);
    }
    this.__rules__[idx].enabled = true;
    result.push(name2);
  }, this);
  this.__cache__ = null;
  return result;
};
Ruler$3.prototype.enableOnly = function(list3, ignoreInvalid) {
  if (!Array.isArray(list3)) {
    list3 = [list3];
  }
  this.__rules__.forEach(function(rule) {
    rule.enabled = false;
  });
  this.enable(list3, ignoreInvalid);
};
Ruler$3.prototype.disable = function(list3, ignoreInvalid) {
  if (!Array.isArray(list3)) {
    list3 = [list3];
  }
  var result = [];
  list3.forEach(function(name2) {
    var idx = this.__find__(name2);
    if (idx < 0) {
      if (ignoreInvalid) {
        return;
      }
      throw new Error("Rules manager: invalid rule name " + name2);
    }
    this.__rules__[idx].enabled = false;
    result.push(name2);
  }, this);
  this.__cache__ = null;
  return result;
};
Ruler$3.prototype.getRules = function(chainName) {
  if (this.__cache__ === null) {
    this.__compile__();
  }
  return this.__cache__[chainName] || [];
};
var ruler = Ruler$3;
var NEWLINES_RE = /\r\n?|\n/g;
var NULL_RE = /\0/g;
var normalize = function normalize2(state) {
  var str;
  str = state.src.replace(NEWLINES_RE, "\n");
  str = str.replace(NULL_RE, "ï¿½");
  state.src = str;
};
var block = function block2(state) {
  var token2;
  if (state.inlineMode) {
    token2 = new state.Token("inline", "", 0);
    token2.content = state.src;
    token2.map = [0, 1];
    token2.children = [];
    state.tokens.push(token2);
  } else {
    state.md.block.parse(state.src, state.md, state.env, state.tokens);
  }
};
var inline = function inline2(state) {
  var tokens = state.tokens, tok, i, l2;
  for (i = 0, l2 = tokens.length; i < l2; i++) {
    tok = tokens[i];
    if (tok.type === "inline") {
      state.md.inline.parse(tok.content, state.md, state.env, tok.children);
    }
  }
};
var arrayReplaceAt = utils$1.arrayReplaceAt;
function isLinkOpen$1(str) {
  return /^<a[>\s]/i.test(str);
}
function isLinkClose$1(str) {
  return /^<\/a\s*>/i.test(str);
}
var linkify$1 = function linkify(state) {
  var i, j2, l2, tokens, token2, currentToken, nodes, ln, text3, pos, lastPos, level, htmlLinkLevel, url2, fullUrl, urlText, blockTokens = state.tokens, links;
  if (!state.md.options.linkify) {
    return;
  }
  for (j2 = 0, l2 = blockTokens.length; j2 < l2; j2++) {
    if (blockTokens[j2].type !== "inline" || !state.md.linkify.pretest(blockTokens[j2].content)) {
      continue;
    }
    tokens = blockTokens[j2].children;
    htmlLinkLevel = 0;
    for (i = tokens.length - 1; i >= 0; i--) {
      currentToken = tokens[i];
      if (currentToken.type === "link_close") {
        i--;
        while (tokens[i].level !== currentToken.level && tokens[i].type !== "link_open") {
          i--;
        }
        continue;
      }
      if (currentToken.type === "html_inline") {
        if (isLinkOpen$1(currentToken.content) && htmlLinkLevel > 0) {
          htmlLinkLevel--;
        }
        if (isLinkClose$1(currentToken.content)) {
          htmlLinkLevel++;
        }
      }
      if (htmlLinkLevel > 0) {
        continue;
      }
      if (currentToken.type === "text" && state.md.linkify.test(currentToken.content)) {
        text3 = currentToken.content;
        links = state.md.linkify.match(text3);
        nodes = [];
        level = currentToken.level;
        lastPos = 0;
        if (links.length > 0 && links[0].index === 0 && i > 0 && tokens[i - 1].type === "text_special") {
          links = links.slice(1);
        }
        for (ln = 0; ln < links.length; ln++) {
          url2 = links[ln].url;
          fullUrl = state.md.normalizeLink(url2);
          if (!state.md.validateLink(fullUrl)) {
            continue;
          }
          urlText = links[ln].text;
          if (!links[ln].schema) {
            urlText = state.md.normalizeLinkText("http://" + urlText).replace(/^http:\/\//, "");
          } else if (links[ln].schema === "mailto:" && !/^mailto:/i.test(urlText)) {
            urlText = state.md.normalizeLinkText("mailto:" + urlText).replace(/^mailto:/, "");
          } else {
            urlText = state.md.normalizeLinkText(urlText);
          }
          pos = links[ln].index;
          if (pos > lastPos) {
            token2 = new state.Token("text", "", 0);
            token2.content = text3.slice(lastPos, pos);
            token2.level = level;
            nodes.push(token2);
          }
          token2 = new state.Token("link_open", "a", 1);
          token2.attrs = [["href", fullUrl]];
          token2.level = level++;
          token2.markup = "linkify";
          token2.info = "auto";
          nodes.push(token2);
          token2 = new state.Token("text", "", 0);
          token2.content = urlText;
          token2.level = level;
          nodes.push(token2);
          token2 = new state.Token("link_close", "a", -1);
          token2.level = --level;
          token2.markup = "linkify";
          token2.info = "auto";
          nodes.push(token2);
          lastPos = links[ln].lastIndex;
        }
        if (lastPos < text3.length) {
          token2 = new state.Token("text", "", 0);
          token2.content = text3.slice(lastPos);
          token2.level = level;
          nodes.push(token2);
        }
        blockTokens[j2].children = tokens = arrayReplaceAt(tokens, i, nodes);
      }
    }
  }
};
var RARE_RE = /\+-|\.\.|\?\?\?\?|!!!!|,,|--/;
var SCOPED_ABBR_TEST_RE = /\((c|tm|r)\)/i;
var SCOPED_ABBR_RE = /\((c|tm|r)\)/ig;
var SCOPED_ABBR = {
  c: "Â©",
  r: "Â®",
  tm: "â„¢"
};
function replaceFn(match3, name2) {
  return SCOPED_ABBR[name2.toLowerCase()];
}
function replace_scoped(inlineTokens) {
  var i, token2, inside_autolink = 0;
  for (i = inlineTokens.length - 1; i >= 0; i--) {
    token2 = inlineTokens[i];
    if (token2.type === "text" && !inside_autolink) {
      token2.content = token2.content.replace(SCOPED_ABBR_RE, replaceFn);
    }
    if (token2.type === "link_open" && token2.info === "auto") {
      inside_autolink--;
    }
    if (token2.type === "link_close" && token2.info === "auto") {
      inside_autolink++;
    }
  }
}
function replace_rare(inlineTokens) {
  var i, token2, inside_autolink = 0;
  for (i = inlineTokens.length - 1; i >= 0; i--) {
    token2 = inlineTokens[i];
    if (token2.type === "text" && !inside_autolink) {
      if (RARE_RE.test(token2.content)) {
        token2.content = token2.content.replace(/\+-/g, "Â±").replace(/\.{2,}/g, "â€¦").replace(/([?!])â€¦/g, "$1..").replace(/([?!]){4,}/g, "$1$1$1").replace(/,{2,}/g, ",").replace(/(^|[^-])---(?=[^-]|$)/mg, "$1â€”").replace(/(^|\s)--(?=\s|$)/mg, "$1â€“").replace(/(^|[^-\s])--(?=[^-\s]|$)/mg, "$1â€“");
      }
    }
    if (token2.type === "link_open" && token2.info === "auto") {
      inside_autolink--;
    }
    if (token2.type === "link_close" && token2.info === "auto") {
      inside_autolink++;
    }
  }
}
var replacements = function replace(state) {
  var blkIdx;
  if (!state.md.options.typographer) {
    return;
  }
  for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {
    if (state.tokens[blkIdx].type !== "inline") {
      continue;
    }
    if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {
      replace_scoped(state.tokens[blkIdx].children);
    }
    if (RARE_RE.test(state.tokens[blkIdx].content)) {
      replace_rare(state.tokens[blkIdx].children);
    }
  }
};
var isWhiteSpace$1 = utils$1.isWhiteSpace;
var isPunctChar$1 = utils$1.isPunctChar;
var isMdAsciiPunct$1 = utils$1.isMdAsciiPunct;
var QUOTE_TEST_RE = /['"]/;
var QUOTE_RE = /['"]/g;
var APOSTROPHE = "â€™";
function replaceAt(str, index2, ch) {
  return str.slice(0, index2) + ch + str.slice(index2 + 1);
}
function process_inlines(tokens, state) {
  var i, token2, text3, t2, pos, max2, thisLevel, item, lastChar, nextChar, isLastPunctChar, isNextPunctChar, isLastWhiteSpace, isNextWhiteSpace, canOpen, canClose, j2, isSingle, stack, openQuote, closeQuote;
  stack = [];
  for (i = 0; i < tokens.length; i++) {
    token2 = tokens[i];
    thisLevel = tokens[i].level;
    for (j2 = stack.length - 1; j2 >= 0; j2--) {
      if (stack[j2].level <= thisLevel) {
        break;
      }
    }
    stack.length = j2 + 1;
    if (token2.type !== "text") {
      continue;
    }
    text3 = token2.content;
    pos = 0;
    max2 = text3.length;
    OUTER:
      while (pos < max2) {
        QUOTE_RE.lastIndex = pos;
        t2 = QUOTE_RE.exec(text3);
        if (!t2) {
          break;
        }
        canOpen = canClose = true;
        pos = t2.index + 1;
        isSingle = t2[0] === "'";
        lastChar = 32;
        if (t2.index - 1 >= 0) {
          lastChar = text3.charCodeAt(t2.index - 1);
        } else {
          for (j2 = i - 1; j2 >= 0; j2--) {
            if (tokens[j2].type === "softbreak" || tokens[j2].type === "hardbreak")
              break;
            if (!tokens[j2].content)
              continue;
            lastChar = tokens[j2].content.charCodeAt(tokens[j2].content.length - 1);
            break;
          }
        }
        nextChar = 32;
        if (pos < max2) {
          nextChar = text3.charCodeAt(pos);
        } else {
          for (j2 = i + 1; j2 < tokens.length; j2++) {
            if (tokens[j2].type === "softbreak" || tokens[j2].type === "hardbreak")
              break;
            if (!tokens[j2].content)
              continue;
            nextChar = tokens[j2].content.charCodeAt(0);
            break;
          }
        }
        isLastPunctChar = isMdAsciiPunct$1(lastChar) || isPunctChar$1(String.fromCharCode(lastChar));
        isNextPunctChar = isMdAsciiPunct$1(nextChar) || isPunctChar$1(String.fromCharCode(nextChar));
        isLastWhiteSpace = isWhiteSpace$1(lastChar);
        isNextWhiteSpace = isWhiteSpace$1(nextChar);
        if (isNextWhiteSpace) {
          canOpen = false;
        } else if (isNextPunctChar) {
          if (!(isLastWhiteSpace || isLastPunctChar)) {
            canOpen = false;
          }
        }
        if (isLastWhiteSpace) {
          canClose = false;
        } else if (isLastPunctChar) {
          if (!(isNextWhiteSpace || isNextPunctChar)) {
            canClose = false;
          }
        }
        if (nextChar === 34 && t2[0] === '"') {
          if (lastChar >= 48 && lastChar <= 57) {
            canClose = canOpen = false;
          }
        }
        if (canOpen && canClose) {
          canOpen = isLastPunctChar;
          canClose = isNextPunctChar;
        }
        if (!canOpen && !canClose) {
          if (isSingle) {
            token2.content = replaceAt(token2.content, t2.index, APOSTROPHE);
          }
          continue;
        }
        if (canClose) {
          for (j2 = stack.length - 1; j2 >= 0; j2--) {
            item = stack[j2];
            if (stack[j2].level < thisLevel) {
              break;
            }
            if (item.single === isSingle && stack[j2].level === thisLevel) {
              item = stack[j2];
              if (isSingle) {
                openQuote = state.md.options.quotes[2];
                closeQuote = state.md.options.quotes[3];
              } else {
                openQuote = state.md.options.quotes[0];
                closeQuote = state.md.options.quotes[1];
              }
              token2.content = replaceAt(token2.content, t2.index, closeQuote);
              tokens[item.token].content = replaceAt(
                tokens[item.token].content,
                item.pos,
                openQuote
              );
              pos += closeQuote.length - 1;
              if (item.token === i) {
                pos += openQuote.length - 1;
              }
              text3 = token2.content;
              max2 = text3.length;
              stack.length = j2;
              continue OUTER;
            }
          }
        }
        if (canOpen) {
          stack.push({
            token: i,
            pos: t2.index,
            single: isSingle,
            level: thisLevel
          });
        } else if (canClose && isSingle) {
          token2.content = replaceAt(token2.content, t2.index, APOSTROPHE);
        }
      }
  }
}
var smartquotes = function smartquotes2(state) {
  var blkIdx;
  if (!state.md.options.typographer) {
    return;
  }
  for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {
    if (state.tokens[blkIdx].type !== "inline" || !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {
      continue;
    }
    process_inlines(state.tokens[blkIdx].children, state);
  }
};
var text_join = function text_join2(state) {
  var j2, l2, tokens, curr, max2, last, blockTokens = state.tokens;
  for (j2 = 0, l2 = blockTokens.length; j2 < l2; j2++) {
    if (blockTokens[j2].type !== "inline")
      continue;
    tokens = blockTokens[j2].children;
    max2 = tokens.length;
    for (curr = 0; curr < max2; curr++) {
      if (tokens[curr].type === "text_special") {
        tokens[curr].type = "text";
      }
    }
    for (curr = last = 0; curr < max2; curr++) {
      if (tokens[curr].type === "text" && curr + 1 < max2 && tokens[curr + 1].type === "text") {
        tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;
      } else {
        if (curr !== last) {
          tokens[last] = tokens[curr];
        }
        last++;
      }
    }
    if (curr !== last) {
      tokens.length = last;
    }
  }
};
function Token$3(type2, tag, nesting) {
  this.type = type2;
  this.tag = tag;
  this.attrs = null;
  this.map = null;
  this.nesting = nesting;
  this.level = 0;
  this.children = null;
  this.content = "";
  this.markup = "";
  this.info = "";
  this.meta = null;
  this.block = false;
  this.hidden = false;
}
Token$3.prototype.attrIndex = function attrIndex(name2) {
  var attrs, i, len;
  if (!this.attrs) {
    return -1;
  }
  attrs = this.attrs;
  for (i = 0, len = attrs.length; i < len; i++) {
    if (attrs[i][0] === name2) {
      return i;
    }
  }
  return -1;
};
Token$3.prototype.attrPush = function attrPush(attrData) {
  if (this.attrs) {
    this.attrs.push(attrData);
  } else {
    this.attrs = [attrData];
  }
};
Token$3.prototype.attrSet = function attrSet(name2, value) {
  var idx = this.attrIndex(name2), attrData = [name2, value];
  if (idx < 0) {
    this.attrPush(attrData);
  } else {
    this.attrs[idx] = attrData;
  }
};
Token$3.prototype.attrGet = function attrGet(name2) {
  var idx = this.attrIndex(name2), value = null;
  if (idx >= 0) {
    value = this.attrs[idx][1];
  }
  return value;
};
Token$3.prototype.attrJoin = function attrJoin(name2, value) {
  var idx = this.attrIndex(name2);
  if (idx < 0) {
    this.attrPush([name2, value]);
  } else {
    this.attrs[idx][1] = this.attrs[idx][1] + " " + value;
  }
};
var token = Token$3;
var Token$2 = token;
function StateCore(src, md, env2) {
  this.src = src;
  this.env = env2;
  this.tokens = [];
  this.inlineMode = false;
  this.md = md;
}
StateCore.prototype.Token = Token$2;
var state_core = StateCore;
var Ruler$2 = ruler;
var _rules$2 = [
  ["normalize", normalize],
  ["block", block],
  ["inline", inline],
  ["linkify", linkify$1],
  ["replacements", replacements],
  ["smartquotes", smartquotes],
  // `text_join` finds `text_special` tokens (for escape sequences)
  // and joins them with the rest of the text
  ["text_join", text_join]
];
function Core() {
  this.ruler = new Ruler$2();
  for (var i = 0; i < _rules$2.length; i++) {
    this.ruler.push(_rules$2[i][0], _rules$2[i][1]);
  }
}
Core.prototype.process = function(state) {
  var i, l2, rules;
  rules = this.ruler.getRules("");
  for (i = 0, l2 = rules.length; i < l2; i++) {
    rules[i](state);
  }
};
Core.prototype.State = state_core;
var parser_core = Core;
var isSpace$a = utils$1.isSpace;
function getLine(state, line) {
  var pos = state.bMarks[line] + state.tShift[line], max2 = state.eMarks[line];
  return state.src.slice(pos, max2);
}
function escapedSplit(str) {
  var result = [], pos = 0, max2 = str.length, ch, isEscaped = false, lastPos = 0, current = "";
  ch = str.charCodeAt(pos);
  while (pos < max2) {
    if (ch === 124) {
      if (!isEscaped) {
        result.push(current + str.substring(lastPos, pos));
        current = "";
        lastPos = pos + 1;
      } else {
        current += str.substring(lastPos, pos - 1);
        lastPos = pos;
      }
    }
    isEscaped = ch === 92;
    pos++;
    ch = str.charCodeAt(pos);
  }
  result.push(current + str.substring(lastPos));
  return result;
}
var table = function table2(state, startLine, endLine, silent) {
  var ch, lineText, pos, i, l2, nextLine, columns, columnCount, token2, aligns, t2, tableLines, tbodyLines, oldParentType, terminate, terminatorRules, firstCh, secondCh;
  if (startLine + 2 > endLine) {
    return false;
  }
  nextLine = startLine + 1;
  if (state.sCount[nextLine] < state.blkIndent) {
    return false;
  }
  if (state.sCount[nextLine] - state.blkIndent >= 4) {
    return false;
  }
  pos = state.bMarks[nextLine] + state.tShift[nextLine];
  if (pos >= state.eMarks[nextLine]) {
    return false;
  }
  firstCh = state.src.charCodeAt(pos++);
  if (firstCh !== 124 && firstCh !== 45 && firstCh !== 58) {
    return false;
  }
  if (pos >= state.eMarks[nextLine]) {
    return false;
  }
  secondCh = state.src.charCodeAt(pos++);
  if (secondCh !== 124 && secondCh !== 45 && secondCh !== 58 && !isSpace$a(secondCh)) {
    return false;
  }
  if (firstCh === 45 && isSpace$a(secondCh)) {
    return false;
  }
  while (pos < state.eMarks[nextLine]) {
    ch = state.src.charCodeAt(pos);
    if (ch !== 124 && ch !== 45 && ch !== 58 && !isSpace$a(ch)) {
      return false;
    }
    pos++;
  }
  lineText = getLine(state, startLine + 1);
  columns = lineText.split("|");
  aligns = [];
  for (i = 0; i < columns.length; i++) {
    t2 = columns[i].trim();
    if (!t2) {
      if (i === 0 || i === columns.length - 1) {
        continue;
      } else {
        return false;
      }
    }
    if (!/^:?-+:?$/.test(t2)) {
      return false;
    }
    if (t2.charCodeAt(t2.length - 1) === 58) {
      aligns.push(t2.charCodeAt(0) === 58 ? "center" : "right");
    } else if (t2.charCodeAt(0) === 58) {
      aligns.push("left");
    } else {
      aligns.push("");
    }
  }
  lineText = getLine(state, startLine).trim();
  if (lineText.indexOf("|") === -1) {
    return false;
  }
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  columns = escapedSplit(lineText);
  if (columns.length && columns[0] === "")
    columns.shift();
  if (columns.length && columns[columns.length - 1] === "")
    columns.pop();
  columnCount = columns.length;
  if (columnCount === 0 || columnCount !== aligns.length) {
    return false;
  }
  if (silent) {
    return true;
  }
  oldParentType = state.parentType;
  state.parentType = "table";
  terminatorRules = state.md.block.ruler.getRules("blockquote");
  token2 = state.push("table_open", "table", 1);
  token2.map = tableLines = [startLine, 0];
  token2 = state.push("thead_open", "thead", 1);
  token2.map = [startLine, startLine + 1];
  token2 = state.push("tr_open", "tr", 1);
  token2.map = [startLine, startLine + 1];
  for (i = 0; i < columns.length; i++) {
    token2 = state.push("th_open", "th", 1);
    if (aligns[i]) {
      token2.attrs = [["style", "text-align:" + aligns[i]]];
    }
    token2 = state.push("inline", "", 0);
    token2.content = columns[i].trim();
    token2.children = [];
    token2 = state.push("th_close", "th", -1);
  }
  token2 = state.push("tr_close", "tr", -1);
  token2 = state.push("thead_close", "thead", -1);
  for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {
    if (state.sCount[nextLine] < state.blkIndent) {
      break;
    }
    terminate = false;
    for (i = 0, l2 = terminatorRules.length; i < l2; i++) {
      if (terminatorRules[i](state, nextLine, endLine, true)) {
        terminate = true;
        break;
      }
    }
    if (terminate) {
      break;
    }
    lineText = getLine(state, nextLine).trim();
    if (!lineText) {
      break;
    }
    if (state.sCount[nextLine] - state.blkIndent >= 4) {
      break;
    }
    columns = escapedSplit(lineText);
    if (columns.length && columns[0] === "")
      columns.shift();
    if (columns.length && columns[columns.length - 1] === "")
      columns.pop();
    if (nextLine === startLine + 2) {
      token2 = state.push("tbody_open", "tbody", 1);
      token2.map = tbodyLines = [startLine + 2, 0];
    }
    token2 = state.push("tr_open", "tr", 1);
    token2.map = [nextLine, nextLine + 1];
    for (i = 0; i < columnCount; i++) {
      token2 = state.push("td_open", "td", 1);
      if (aligns[i]) {
        token2.attrs = [["style", "text-align:" + aligns[i]]];
      }
      token2 = state.push("inline", "", 0);
      token2.content = columns[i] ? columns[i].trim() : "";
      token2.children = [];
      token2 = state.push("td_close", "td", -1);
    }
    token2 = state.push("tr_close", "tr", -1);
  }
  if (tbodyLines) {
    token2 = state.push("tbody_close", "tbody", -1);
    tbodyLines[1] = nextLine;
  }
  token2 = state.push("table_close", "table", -1);
  tableLines[1] = nextLine;
  state.parentType = oldParentType;
  state.line = nextLine;
  return true;
};
var code = function code2(state, startLine, endLine) {
  var nextLine, last, token2;
  if (state.sCount[startLine] - state.blkIndent < 4) {
    return false;
  }
  last = nextLine = startLine + 1;
  while (nextLine < endLine) {
    if (state.isEmpty(nextLine)) {
      nextLine++;
      continue;
    }
    if (state.sCount[nextLine] - state.blkIndent >= 4) {
      nextLine++;
      last = nextLine;
      continue;
    }
    break;
  }
  state.line = last;
  token2 = state.push("code_block", "code", 0);
  token2.content = state.getLines(startLine, last, 4 + state.blkIndent, false) + "\n";
  token2.map = [startLine, state.line];
  return true;
};
var fence = function fence2(state, startLine, endLine, silent) {
  var marker2, len, params2, nextLine, mem, token2, markup, haveEndMarker = false, pos = state.bMarks[startLine] + state.tShift[startLine], max2 = state.eMarks[startLine];
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  if (pos + 3 > max2) {
    return false;
  }
  marker2 = state.src.charCodeAt(pos);
  if (marker2 !== 126 && marker2 !== 96) {
    return false;
  }
  mem = pos;
  pos = state.skipChars(pos, marker2);
  len = pos - mem;
  if (len < 3) {
    return false;
  }
  markup = state.src.slice(mem, pos);
  params2 = state.src.slice(pos, max2);
  if (marker2 === 96) {
    if (params2.indexOf(String.fromCharCode(marker2)) >= 0) {
      return false;
    }
  }
  if (silent) {
    return true;
  }
  nextLine = startLine;
  for (; ; ) {
    nextLine++;
    if (nextLine >= endLine) {
      break;
    }
    pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];
    max2 = state.eMarks[nextLine];
    if (pos < max2 && state.sCount[nextLine] < state.blkIndent) {
      break;
    }
    if (state.src.charCodeAt(pos) !== marker2) {
      continue;
    }
    if (state.sCount[nextLine] - state.blkIndent >= 4) {
      continue;
    }
    pos = state.skipChars(pos, marker2);
    if (pos - mem < len) {
      continue;
    }
    pos = state.skipSpaces(pos);
    if (pos < max2) {
      continue;
    }
    haveEndMarker = true;
    break;
  }
  len = state.sCount[startLine];
  state.line = nextLine + (haveEndMarker ? 1 : 0);
  token2 = state.push("fence", "code", 0);
  token2.info = params2;
  token2.content = state.getLines(startLine + 1, nextLine, len, true);
  token2.markup = markup;
  token2.map = [startLine, state.line];
  return true;
};
var isSpace$9 = utils$1.isSpace;
var blockquote = function blockquote2(state, startLine, endLine, silent) {
  var adjustTab, ch, i, initial2, l2, lastLineEmpty, lines, nextLine, offset2, oldBMarks, oldBSCount, oldIndent, oldParentType, oldSCount, oldTShift, spaceAfterMarker, terminate, terminatorRules, token2, isOutdented, oldLineMax = state.lineMax, pos = state.bMarks[startLine] + state.tShift[startLine], max2 = state.eMarks[startLine];
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  if (state.src.charCodeAt(pos++) !== 62) {
    return false;
  }
  if (silent) {
    return true;
  }
  initial2 = offset2 = state.sCount[startLine] + 1;
  if (state.src.charCodeAt(pos) === 32) {
    pos++;
    initial2++;
    offset2++;
    adjustTab = false;
    spaceAfterMarker = true;
  } else if (state.src.charCodeAt(pos) === 9) {
    spaceAfterMarker = true;
    if ((state.bsCount[startLine] + offset2) % 4 === 3) {
      pos++;
      initial2++;
      offset2++;
      adjustTab = false;
    } else {
      adjustTab = true;
    }
  } else {
    spaceAfterMarker = false;
  }
  oldBMarks = [state.bMarks[startLine]];
  state.bMarks[startLine] = pos;
  while (pos < max2) {
    ch = state.src.charCodeAt(pos);
    if (isSpace$9(ch)) {
      if (ch === 9) {
        offset2 += 4 - (offset2 + state.bsCount[startLine] + (adjustTab ? 1 : 0)) % 4;
      } else {
        offset2++;
      }
    } else {
      break;
    }
    pos++;
  }
  oldBSCount = [state.bsCount[startLine]];
  state.bsCount[startLine] = state.sCount[startLine] + 1 + (spaceAfterMarker ? 1 : 0);
  lastLineEmpty = pos >= max2;
  oldSCount = [state.sCount[startLine]];
  state.sCount[startLine] = offset2 - initial2;
  oldTShift = [state.tShift[startLine]];
  state.tShift[startLine] = pos - state.bMarks[startLine];
  terminatorRules = state.md.block.ruler.getRules("blockquote");
  oldParentType = state.parentType;
  state.parentType = "blockquote";
  for (nextLine = startLine + 1; nextLine < endLine; nextLine++) {
    isOutdented = state.sCount[nextLine] < state.blkIndent;
    pos = state.bMarks[nextLine] + state.tShift[nextLine];
    max2 = state.eMarks[nextLine];
    if (pos >= max2) {
      break;
    }
    if (state.src.charCodeAt(pos++) === 62 && !isOutdented) {
      initial2 = offset2 = state.sCount[nextLine] + 1;
      if (state.src.charCodeAt(pos) === 32) {
        pos++;
        initial2++;
        offset2++;
        adjustTab = false;
        spaceAfterMarker = true;
      } else if (state.src.charCodeAt(pos) === 9) {
        spaceAfterMarker = true;
        if ((state.bsCount[nextLine] + offset2) % 4 === 3) {
          pos++;
          initial2++;
          offset2++;
          adjustTab = false;
        } else {
          adjustTab = true;
        }
      } else {
        spaceAfterMarker = false;
      }
      oldBMarks.push(state.bMarks[nextLine]);
      state.bMarks[nextLine] = pos;
      while (pos < max2) {
        ch = state.src.charCodeAt(pos);
        if (isSpace$9(ch)) {
          if (ch === 9) {
            offset2 += 4 - (offset2 + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4;
          } else {
            offset2++;
          }
        } else {
          break;
        }
        pos++;
      }
      lastLineEmpty = pos >= max2;
      oldBSCount.push(state.bsCount[nextLine]);
      state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0);
      oldSCount.push(state.sCount[nextLine]);
      state.sCount[nextLine] = offset2 - initial2;
      oldTShift.push(state.tShift[nextLine]);
      state.tShift[nextLine] = pos - state.bMarks[nextLine];
      continue;
    }
    if (lastLineEmpty) {
      break;
    }
    terminate = false;
    for (i = 0, l2 = terminatorRules.length; i < l2; i++) {
      if (terminatorRules[i](state, nextLine, endLine, true)) {
        terminate = true;
        break;
      }
    }
    if (terminate) {
      state.lineMax = nextLine;
      if (state.blkIndent !== 0) {
        oldBMarks.push(state.bMarks[nextLine]);
        oldBSCount.push(state.bsCount[nextLine]);
        oldTShift.push(state.tShift[nextLine]);
        oldSCount.push(state.sCount[nextLine]);
        state.sCount[nextLine] -= state.blkIndent;
      }
      break;
    }
    oldBMarks.push(state.bMarks[nextLine]);
    oldBSCount.push(state.bsCount[nextLine]);
    oldTShift.push(state.tShift[nextLine]);
    oldSCount.push(state.sCount[nextLine]);
    state.sCount[nextLine] = -1;
  }
  oldIndent = state.blkIndent;
  state.blkIndent = 0;
  token2 = state.push("blockquote_open", "blockquote", 1);
  token2.markup = ">";
  token2.map = lines = [startLine, 0];
  state.md.block.tokenize(state, startLine, nextLine);
  token2 = state.push("blockquote_close", "blockquote", -1);
  token2.markup = ">";
  state.lineMax = oldLineMax;
  state.parentType = oldParentType;
  lines[1] = state.line;
  for (i = 0; i < oldTShift.length; i++) {
    state.bMarks[i + startLine] = oldBMarks[i];
    state.tShift[i + startLine] = oldTShift[i];
    state.sCount[i + startLine] = oldSCount[i];
    state.bsCount[i + startLine] = oldBSCount[i];
  }
  state.blkIndent = oldIndent;
  return true;
};
var isSpace$8 = utils$1.isSpace;
var hr = function hr2(state, startLine, endLine, silent) {
  var marker2, cnt, ch, token2, pos = state.bMarks[startLine] + state.tShift[startLine], max2 = state.eMarks[startLine];
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  marker2 = state.src.charCodeAt(pos++);
  if (marker2 !== 42 && marker2 !== 45 && marker2 !== 95) {
    return false;
  }
  cnt = 1;
  while (pos < max2) {
    ch = state.src.charCodeAt(pos++);
    if (ch !== marker2 && !isSpace$8(ch)) {
      return false;
    }
    if (ch === marker2) {
      cnt++;
    }
  }
  if (cnt < 3) {
    return false;
  }
  if (silent) {
    return true;
  }
  state.line = startLine + 1;
  token2 = state.push("hr", "hr", 0);
  token2.map = [startLine, state.line];
  token2.markup = Array(cnt + 1).join(String.fromCharCode(marker2));
  return true;
};
var isSpace$7 = utils$1.isSpace;
function skipBulletListMarker(state, startLine) {
  var marker2, pos, max2, ch;
  pos = state.bMarks[startLine] + state.tShift[startLine];
  max2 = state.eMarks[startLine];
  marker2 = state.src.charCodeAt(pos++);
  if (marker2 !== 42 && marker2 !== 45 && marker2 !== 43) {
    return -1;
  }
  if (pos < max2) {
    ch = state.src.charCodeAt(pos);
    if (!isSpace$7(ch)) {
      return -1;
    }
  }
  return pos;
}
function skipOrderedListMarker(state, startLine) {
  var ch, start2 = state.bMarks[startLine] + state.tShift[startLine], pos = start2, max2 = state.eMarks[startLine];
  if (pos + 1 >= max2) {
    return -1;
  }
  ch = state.src.charCodeAt(pos++);
  if (ch < 48 || ch > 57) {
    return -1;
  }
  for (; ; ) {
    if (pos >= max2) {
      return -1;
    }
    ch = state.src.charCodeAt(pos++);
    if (ch >= 48 && ch <= 57) {
      if (pos - start2 >= 10) {
        return -1;
      }
      continue;
    }
    if (ch === 41 || ch === 46) {
      break;
    }
    return -1;
  }
  if (pos < max2) {
    ch = state.src.charCodeAt(pos);
    if (!isSpace$7(ch)) {
      return -1;
    }
  }
  return pos;
}
function markTightParagraphs(state, idx) {
  var i, l2, level = state.level + 2;
  for (i = idx + 2, l2 = state.tokens.length - 2; i < l2; i++) {
    if (state.tokens[i].level === level && state.tokens[i].type === "paragraph_open") {
      state.tokens[i + 2].hidden = true;
      state.tokens[i].hidden = true;
      i += 2;
    }
  }
}
var list = function list2(state, startLine, endLine, silent) {
  var ch, contentStart, i, indent2, indentAfterMarker, initial2, isOrdered, itemLines, l2, listLines, listTokIdx, markerCharCode, markerValue, max2, nextLine, offset2, oldListIndent, oldParentType, oldSCount, oldTShift, oldTight, pos, posAfterMarker, prevEmptyEnd, start2, terminate, terminatorRules, token2, isTerminatingParagraph = false, tight = true;
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  if (state.listIndent >= 0 && state.sCount[startLine] - state.listIndent >= 4 && state.sCount[startLine] < state.blkIndent) {
    return false;
  }
  if (silent && state.parentType === "paragraph") {
    if (state.sCount[startLine] >= state.blkIndent) {
      isTerminatingParagraph = true;
    }
  }
  if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) {
    isOrdered = true;
    start2 = state.bMarks[startLine] + state.tShift[startLine];
    markerValue = Number(state.src.slice(start2, posAfterMarker - 1));
    if (isTerminatingParagraph && markerValue !== 1)
      return false;
  } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) {
    isOrdered = false;
  } else {
    return false;
  }
  if (isTerminatingParagraph) {
    if (state.skipSpaces(posAfterMarker) >= state.eMarks[startLine])
      return false;
  }
  markerCharCode = state.src.charCodeAt(posAfterMarker - 1);
  if (silent) {
    return true;
  }
  listTokIdx = state.tokens.length;
  if (isOrdered) {
    token2 = state.push("ordered_list_open", "ol", 1);
    if (markerValue !== 1) {
      token2.attrs = [["start", markerValue]];
    }
  } else {
    token2 = state.push("bullet_list_open", "ul", 1);
  }
  token2.map = listLines = [startLine, 0];
  token2.markup = String.fromCharCode(markerCharCode);
  nextLine = startLine;
  prevEmptyEnd = false;
  terminatorRules = state.md.block.ruler.getRules("list");
  oldParentType = state.parentType;
  state.parentType = "list";
  while (nextLine < endLine) {
    pos = posAfterMarker;
    max2 = state.eMarks[nextLine];
    initial2 = offset2 = state.sCount[nextLine] + posAfterMarker - (state.bMarks[startLine] + state.tShift[startLine]);
    while (pos < max2) {
      ch = state.src.charCodeAt(pos);
      if (ch === 9) {
        offset2 += 4 - (offset2 + state.bsCount[nextLine]) % 4;
      } else if (ch === 32) {
        offset2++;
      } else {
        break;
      }
      pos++;
    }
    contentStart = pos;
    if (contentStart >= max2) {
      indentAfterMarker = 1;
    } else {
      indentAfterMarker = offset2 - initial2;
    }
    if (indentAfterMarker > 4) {
      indentAfterMarker = 1;
    }
    indent2 = initial2 + indentAfterMarker;
    token2 = state.push("list_item_open", "li", 1);
    token2.markup = String.fromCharCode(markerCharCode);
    token2.map = itemLines = [startLine, 0];
    if (isOrdered) {
      token2.info = state.src.slice(start2, posAfterMarker - 1);
    }
    oldTight = state.tight;
    oldTShift = state.tShift[startLine];
    oldSCount = state.sCount[startLine];
    oldListIndent = state.listIndent;
    state.listIndent = state.blkIndent;
    state.blkIndent = indent2;
    state.tight = true;
    state.tShift[startLine] = contentStart - state.bMarks[startLine];
    state.sCount[startLine] = offset2;
    if (contentStart >= max2 && state.isEmpty(startLine + 1)) {
      state.line = Math.min(state.line + 2, endLine);
    } else {
      state.md.block.tokenize(state, startLine, endLine, true);
    }
    if (!state.tight || prevEmptyEnd) {
      tight = false;
    }
    prevEmptyEnd = state.line - startLine > 1 && state.isEmpty(state.line - 1);
    state.blkIndent = state.listIndent;
    state.listIndent = oldListIndent;
    state.tShift[startLine] = oldTShift;
    state.sCount[startLine] = oldSCount;
    state.tight = oldTight;
    token2 = state.push("list_item_close", "li", -1);
    token2.markup = String.fromCharCode(markerCharCode);
    nextLine = startLine = state.line;
    itemLines[1] = nextLine;
    contentStart = state.bMarks[startLine];
    if (nextLine >= endLine) {
      break;
    }
    if (state.sCount[nextLine] < state.blkIndent) {
      break;
    }
    if (state.sCount[startLine] - state.blkIndent >= 4) {
      break;
    }
    terminate = false;
    for (i = 0, l2 = terminatorRules.length; i < l2; i++) {
      if (terminatorRules[i](state, nextLine, endLine, true)) {
        terminate = true;
        break;
      }
    }
    if (terminate) {
      break;
    }
    if (isOrdered) {
      posAfterMarker = skipOrderedListMarker(state, nextLine);
      if (posAfterMarker < 0) {
        break;
      }
      start2 = state.bMarks[nextLine] + state.tShift[nextLine];
    } else {
      posAfterMarker = skipBulletListMarker(state, nextLine);
      if (posAfterMarker < 0) {
        break;
      }
    }
    if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) {
      break;
    }
  }
  if (isOrdered) {
    token2 = state.push("ordered_list_close", "ol", -1);
  } else {
    token2 = state.push("bullet_list_close", "ul", -1);
  }
  token2.markup = String.fromCharCode(markerCharCode);
  listLines[1] = nextLine;
  state.line = nextLine;
  state.parentType = oldParentType;
  if (tight) {
    markTightParagraphs(state, listTokIdx);
  }
  return true;
};
var normalizeReference$2 = utils$1.normalizeReference;
var isSpace$6 = utils$1.isSpace;
var reference$1 = function reference(state, startLine, _endLine, silent) {
  var ch, destEndPos, destEndLineNo, endLine, href, i, l2, label, labelEnd, oldParentType, res, start2, str, terminate, terminatorRules, title, lines = 0, pos = state.bMarks[startLine] + state.tShift[startLine], max2 = state.eMarks[startLine], nextLine = startLine + 1;
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  if (state.src.charCodeAt(pos) !== 91) {
    return false;
  }
  while (++pos < max2) {
    if (state.src.charCodeAt(pos) === 93 && state.src.charCodeAt(pos - 1) !== 92) {
      if (pos + 1 === max2) {
        return false;
      }
      if (state.src.charCodeAt(pos + 1) !== 58) {
        return false;
      }
      break;
    }
  }
  endLine = state.lineMax;
  terminatorRules = state.md.block.ruler.getRules("reference");
  oldParentType = state.parentType;
  state.parentType = "reference";
  for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {
    if (state.sCount[nextLine] - state.blkIndent > 3) {
      continue;
    }
    if (state.sCount[nextLine] < 0) {
      continue;
    }
    terminate = false;
    for (i = 0, l2 = terminatorRules.length; i < l2; i++) {
      if (terminatorRules[i](state, nextLine, endLine, true)) {
        terminate = true;
        break;
      }
    }
    if (terminate) {
      break;
    }
  }
  str = state.getLines(startLine, nextLine, state.blkIndent, false).trim();
  max2 = str.length;
  for (pos = 1; pos < max2; pos++) {
    ch = str.charCodeAt(pos);
    if (ch === 91) {
      return false;
    } else if (ch === 93) {
      labelEnd = pos;
      break;
    } else if (ch === 10) {
      lines++;
    } else if (ch === 92) {
      pos++;
      if (pos < max2 && str.charCodeAt(pos) === 10) {
        lines++;
      }
    }
  }
  if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 58) {
    return false;
  }
  for (pos = labelEnd + 2; pos < max2; pos++) {
    ch = str.charCodeAt(pos);
    if (ch === 10) {
      lines++;
    } else if (isSpace$6(ch))
      ;
    else {
      break;
    }
  }
  res = state.md.helpers.parseLinkDestination(str, pos, max2);
  if (!res.ok) {
    return false;
  }
  href = state.md.normalizeLink(res.str);
  if (!state.md.validateLink(href)) {
    return false;
  }
  pos = res.pos;
  lines += res.lines;
  destEndPos = pos;
  destEndLineNo = lines;
  start2 = pos;
  for (; pos < max2; pos++) {
    ch = str.charCodeAt(pos);
    if (ch === 10) {
      lines++;
    } else if (isSpace$6(ch))
      ;
    else {
      break;
    }
  }
  res = state.md.helpers.parseLinkTitle(str, pos, max2);
  if (pos < max2 && start2 !== pos && res.ok) {
    title = res.str;
    pos = res.pos;
    lines += res.lines;
  } else {
    title = "";
    pos = destEndPos;
    lines = destEndLineNo;
  }
  while (pos < max2) {
    ch = str.charCodeAt(pos);
    if (!isSpace$6(ch)) {
      break;
    }
    pos++;
  }
  if (pos < max2 && str.charCodeAt(pos) !== 10) {
    if (title) {
      title = "";
      pos = destEndPos;
      lines = destEndLineNo;
      while (pos < max2) {
        ch = str.charCodeAt(pos);
        if (!isSpace$6(ch)) {
          break;
        }
        pos++;
      }
    }
  }
  if (pos < max2 && str.charCodeAt(pos) !== 10) {
    return false;
  }
  label = normalizeReference$2(str.slice(1, labelEnd));
  if (!label) {
    return false;
  }
  if (silent) {
    return true;
  }
  if (typeof state.env.references === "undefined") {
    state.env.references = {};
  }
  if (typeof state.env.references[label] === "undefined") {
    state.env.references[label] = { title, href };
  }
  state.parentType = oldParentType;
  state.line = startLine + lines + 1;
  return true;
};
var html_blocks = [
  "address",
  "article",
  "aside",
  "base",
  "basefont",
  "blockquote",
  "body",
  "caption",
  "center",
  "col",
  "colgroup",
  "dd",
  "details",
  "dialog",
  "dir",
  "div",
  "dl",
  "dt",
  "fieldset",
  "figcaption",
  "figure",
  "footer",
  "form",
  "frame",
  "frameset",
  "h1",
  "h2",
  "h3",
  "h4",
  "h5",
  "h6",
  "head",
  "header",
  "hr",
  "html",
  "iframe",
  "legend",
  "li",
  "link",
  "main",
  "menu",
  "menuitem",
  "nav",
  "noframes",
  "ol",
  "optgroup",
  "option",
  "p",
  "param",
  "section",
  "source",
  "summary",
  "table",
  "tbody",
  "td",
  "tfoot",
  "th",
  "thead",
  "title",
  "tr",
  "track",
  "ul"
];
var html_re = {};
var attr_name = "[a-zA-Z_:][a-zA-Z0-9:._-]*";
var unquoted = "[^\"'=<>`\\x00-\\x20]+";
var single_quoted = "'[^']*'";
var double_quoted = '"[^"]*"';
var attr_value = "(?:" + unquoted + "|" + single_quoted + "|" + double_quoted + ")";
var attribute = "(?:\\s+" + attr_name + "(?:\\s*=\\s*" + attr_value + ")?)";
var open_tag = "<[A-Za-z][A-Za-z0-9\\-]*" + attribute + "*\\s*\\/?>";
var close_tag = "<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>";
var comment = "<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->";
var processing = "<[?][\\s\\S]*?[?]>";
var declaration = "<![A-Z]+\\s+[^>]*>";
var cdata = "<!\\[CDATA\\[[\\s\\S]*?\\]\\]>";
var HTML_TAG_RE$1 = new RegExp("^(?:" + open_tag + "|" + close_tag + "|" + comment + "|" + processing + "|" + declaration + "|" + cdata + ")");
var HTML_OPEN_CLOSE_TAG_RE$1 = new RegExp("^(?:" + open_tag + "|" + close_tag + ")");
html_re.HTML_TAG_RE = HTML_TAG_RE$1;
html_re.HTML_OPEN_CLOSE_TAG_RE = HTML_OPEN_CLOSE_TAG_RE$1;
var block_names = html_blocks;
var HTML_OPEN_CLOSE_TAG_RE = html_re.HTML_OPEN_CLOSE_TAG_RE;
var HTML_SEQUENCES = [
  [/^<(script|pre|style|textarea)(?=(\s|>|$))/i, /<\/(script|pre|style|textarea)>/i, true],
  [/^<!--/, /-->/, true],
  [/^<\?/, /\?>/, true],
  [/^<![A-Z]/, />/, true],
  [/^<!\[CDATA\[/, /\]\]>/, true],
  [new RegExp("^</?(" + block_names.join("|") + ")(?=(\\s|/?>|$))", "i"), /^$/, true],
  [new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + "\\s*$"), /^$/, false]
];
var html_block = function html_block2(state, startLine, endLine, silent) {
  var i, nextLine, token2, lineText, pos = state.bMarks[startLine] + state.tShift[startLine], max2 = state.eMarks[startLine];
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  if (!state.md.options.html) {
    return false;
  }
  if (state.src.charCodeAt(pos) !== 60) {
    return false;
  }
  lineText = state.src.slice(pos, max2);
  for (i = 0; i < HTML_SEQUENCES.length; i++) {
    if (HTML_SEQUENCES[i][0].test(lineText)) {
      break;
    }
  }
  if (i === HTML_SEQUENCES.length) {
    return false;
  }
  if (silent) {
    return HTML_SEQUENCES[i][2];
  }
  nextLine = startLine + 1;
  if (!HTML_SEQUENCES[i][1].test(lineText)) {
    for (; nextLine < endLine; nextLine++) {
      if (state.sCount[nextLine] < state.blkIndent) {
        break;
      }
      pos = state.bMarks[nextLine] + state.tShift[nextLine];
      max2 = state.eMarks[nextLine];
      lineText = state.src.slice(pos, max2);
      if (HTML_SEQUENCES[i][1].test(lineText)) {
        if (lineText.length !== 0) {
          nextLine++;
        }
        break;
      }
    }
  }
  state.line = nextLine;
  token2 = state.push("html_block", "", 0);
  token2.map = [startLine, nextLine];
  token2.content = state.getLines(startLine, nextLine, state.blkIndent, true);
  return true;
};
var isSpace$5 = utils$1.isSpace;
var heading = function heading2(state, startLine, endLine, silent) {
  var ch, level, tmp, token2, pos = state.bMarks[startLine] + state.tShift[startLine], max2 = state.eMarks[startLine];
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  ch = state.src.charCodeAt(pos);
  if (ch !== 35 || pos >= max2) {
    return false;
  }
  level = 1;
  ch = state.src.charCodeAt(++pos);
  while (ch === 35 && pos < max2 && level <= 6) {
    level++;
    ch = state.src.charCodeAt(++pos);
  }
  if (level > 6 || pos < max2 && !isSpace$5(ch)) {
    return false;
  }
  if (silent) {
    return true;
  }
  max2 = state.skipSpacesBack(max2, pos);
  tmp = state.skipCharsBack(max2, 35, pos);
  if (tmp > pos && isSpace$5(state.src.charCodeAt(tmp - 1))) {
    max2 = tmp;
  }
  state.line = startLine + 1;
  token2 = state.push("heading_open", "h" + String(level), 1);
  token2.markup = "########".slice(0, level);
  token2.map = [startLine, state.line];
  token2 = state.push("inline", "", 0);
  token2.content = state.src.slice(pos, max2).trim();
  token2.map = [startLine, state.line];
  token2.children = [];
  token2 = state.push("heading_close", "h" + String(level), -1);
  token2.markup = "########".slice(0, level);
  return true;
};
var lheading = function lheading2(state, startLine, endLine) {
  var content, terminate, i, l2, token2, pos, max2, level, marker2, nextLine = startLine + 1, oldParentType, terminatorRules = state.md.block.ruler.getRules("paragraph");
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  oldParentType = state.parentType;
  state.parentType = "paragraph";
  for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {
    if (state.sCount[nextLine] - state.blkIndent > 3) {
      continue;
    }
    if (state.sCount[nextLine] >= state.blkIndent) {
      pos = state.bMarks[nextLine] + state.tShift[nextLine];
      max2 = state.eMarks[nextLine];
      if (pos < max2) {
        marker2 = state.src.charCodeAt(pos);
        if (marker2 === 45 || marker2 === 61) {
          pos = state.skipChars(pos, marker2);
          pos = state.skipSpaces(pos);
          if (pos >= max2) {
            level = marker2 === 61 ? 1 : 2;
            break;
          }
        }
      }
    }
    if (state.sCount[nextLine] < 0) {
      continue;
    }
    terminate = false;
    for (i = 0, l2 = terminatorRules.length; i < l2; i++) {
      if (terminatorRules[i](state, nextLine, endLine, true)) {
        terminate = true;
        break;
      }
    }
    if (terminate) {
      break;
    }
  }
  if (!level) {
    return false;
  }
  content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();
  state.line = nextLine + 1;
  token2 = state.push("heading_open", "h" + String(level), 1);
  token2.markup = String.fromCharCode(marker2);
  token2.map = [startLine, state.line];
  token2 = state.push("inline", "", 0);
  token2.content = content;
  token2.map = [startLine, state.line - 1];
  token2.children = [];
  token2 = state.push("heading_close", "h" + String(level), -1);
  token2.markup = String.fromCharCode(marker2);
  state.parentType = oldParentType;
  return true;
};
var paragraph = function paragraph2(state, startLine) {
  var content, terminate, i, l2, token2, oldParentType, nextLine = startLine + 1, terminatorRules = state.md.block.ruler.getRules("paragraph"), endLine = state.lineMax;
  oldParentType = state.parentType;
  state.parentType = "paragraph";
  for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {
    if (state.sCount[nextLine] - state.blkIndent > 3) {
      continue;
    }
    if (state.sCount[nextLine] < 0) {
      continue;
    }
    terminate = false;
    for (i = 0, l2 = terminatorRules.length; i < l2; i++) {
      if (terminatorRules[i](state, nextLine, endLine, true)) {
        terminate = true;
        break;
      }
    }
    if (terminate) {
      break;
    }
  }
  content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();
  state.line = nextLine;
  token2 = state.push("paragraph_open", "p", 1);
  token2.map = [startLine, state.line];
  token2 = state.push("inline", "", 0);
  token2.content = content;
  token2.map = [startLine, state.line];
  token2.children = [];
  token2 = state.push("paragraph_close", "p", -1);
  state.parentType = oldParentType;
  return true;
};
var Token$1 = token;
var isSpace$4 = utils$1.isSpace;
function StateBlock(src, md, env2, tokens) {
  var ch, s2, start2, pos, len, indent2, offset2, indent_found;
  this.src = src;
  this.md = md;
  this.env = env2;
  this.tokens = tokens;
  this.bMarks = [];
  this.eMarks = [];
  this.tShift = [];
  this.sCount = [];
  this.bsCount = [];
  this.blkIndent = 0;
  this.line = 0;
  this.lineMax = 0;
  this.tight = false;
  this.ddIndent = -1;
  this.listIndent = -1;
  this.parentType = "root";
  this.level = 0;
  this.result = "";
  s2 = this.src;
  indent_found = false;
  for (start2 = pos = indent2 = offset2 = 0, len = s2.length; pos < len; pos++) {
    ch = s2.charCodeAt(pos);
    if (!indent_found) {
      if (isSpace$4(ch)) {
        indent2++;
        if (ch === 9) {
          offset2 += 4 - offset2 % 4;
        } else {
          offset2++;
        }
        continue;
      } else {
        indent_found = true;
      }
    }
    if (ch === 10 || pos === len - 1) {
      if (ch !== 10) {
        pos++;
      }
      this.bMarks.push(start2);
      this.eMarks.push(pos);
      this.tShift.push(indent2);
      this.sCount.push(offset2);
      this.bsCount.push(0);
      indent_found = false;
      indent2 = 0;
      offset2 = 0;
      start2 = pos + 1;
    }
  }
  this.bMarks.push(s2.length);
  this.eMarks.push(s2.length);
  this.tShift.push(0);
  this.sCount.push(0);
  this.bsCount.push(0);
  this.lineMax = this.bMarks.length - 1;
}
StateBlock.prototype.push = function(type2, tag, nesting) {
  var token2 = new Token$1(type2, tag, nesting);
  token2.block = true;
  if (nesting < 0)
    this.level--;
  token2.level = this.level;
  if (nesting > 0)
    this.level++;
  this.tokens.push(token2);
  return token2;
};
StateBlock.prototype.isEmpty = function isEmpty(line) {
  return this.bMarks[line] + this.tShift[line] >= this.eMarks[line];
};
StateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) {
  for (var max2 = this.lineMax; from < max2; from++) {
    if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {
      break;
    }
  }
  return from;
};
StateBlock.prototype.skipSpaces = function skipSpaces(pos) {
  var ch;
  for (var max2 = this.src.length; pos < max2; pos++) {
    ch = this.src.charCodeAt(pos);
    if (!isSpace$4(ch)) {
      break;
    }
  }
  return pos;
};
StateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min2) {
  if (pos <= min2) {
    return pos;
  }
  while (pos > min2) {
    if (!isSpace$4(this.src.charCodeAt(--pos))) {
      return pos + 1;
    }
  }
  return pos;
};
StateBlock.prototype.skipChars = function skipChars(pos, code3) {
  for (var max2 = this.src.length; pos < max2; pos++) {
    if (this.src.charCodeAt(pos) !== code3) {
      break;
    }
  }
  return pos;
};
StateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code3, min2) {
  if (pos <= min2) {
    return pos;
  }
  while (pos > min2) {
    if (code3 !== this.src.charCodeAt(--pos)) {
      return pos + 1;
    }
  }
  return pos;
};
StateBlock.prototype.getLines = function getLines(begin, end2, indent2, keepLastLF) {
  var i, lineIndent, ch, first, last, queue2, lineStart, line = begin;
  if (begin >= end2) {
    return "";
  }
  queue2 = new Array(end2 - begin);
  for (i = 0; line < end2; line++, i++) {
    lineIndent = 0;
    lineStart = first = this.bMarks[line];
    if (line + 1 < end2 || keepLastLF) {
      last = this.eMarks[line] + 1;
    } else {
      last = this.eMarks[line];
    }
    while (first < last && lineIndent < indent2) {
      ch = this.src.charCodeAt(first);
      if (isSpace$4(ch)) {
        if (ch === 9) {
          lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4;
        } else {
          lineIndent++;
        }
      } else if (first - lineStart < this.tShift[line]) {
        lineIndent++;
      } else {
        break;
      }
      first++;
    }
    if (lineIndent > indent2) {
      queue2[i] = new Array(lineIndent - indent2 + 1).join(" ") + this.src.slice(first, last);
    } else {
      queue2[i] = this.src.slice(first, last);
    }
  }
  return queue2.join("");
};
StateBlock.prototype.Token = Token$1;
var state_block = StateBlock;
var Ruler$1 = ruler;
var _rules$1 = [
  // First 2 params - rule name & source. Secondary array - list of rules,
  // which can be terminated by this one.
  ["table", table, ["paragraph", "reference"]],
  ["code", code],
  ["fence", fence, ["paragraph", "reference", "blockquote", "list"]],
  ["blockquote", blockquote, ["paragraph", "reference", "blockquote", "list"]],
  ["hr", hr, ["paragraph", "reference", "blockquote", "list"]],
  ["list", list, ["paragraph", "reference", "blockquote"]],
  ["reference", reference$1],
  ["html_block", html_block, ["paragraph", "reference", "blockquote"]],
  ["heading", heading, ["paragraph", "reference", "blockquote"]],
  ["lheading", lheading],
  ["paragraph", paragraph]
];
function ParserBlock$1() {
  this.ruler = new Ruler$1();
  for (var i = 0; i < _rules$1.length; i++) {
    this.ruler.push(_rules$1[i][0], _rules$1[i][1], { alt: (_rules$1[i][2] || []).slice() });
  }
}
ParserBlock$1.prototype.tokenize = function(state, startLine, endLine) {
  var ok, i, rules = this.ruler.getRules(""), len = rules.length, line = startLine, hasEmptyLines = false, maxNesting = state.md.options.maxNesting;
  while (line < endLine) {
    state.line = line = state.skipEmptyLines(line);
    if (line >= endLine) {
      break;
    }
    if (state.sCount[line] < state.blkIndent) {
      break;
    }
    if (state.level >= maxNesting) {
      state.line = endLine;
      break;
    }
    for (i = 0; i < len; i++) {
      ok = rules[i](state, line, endLine, false);
      if (ok) {
        break;
      }
    }
    state.tight = !hasEmptyLines;
    if (state.isEmpty(state.line - 1)) {
      hasEmptyLines = true;
    }
    line = state.line;
    if (line < endLine && state.isEmpty(line)) {
      hasEmptyLines = true;
      line++;
      state.line = line;
    }
  }
};
ParserBlock$1.prototype.parse = function(src, md, env2, outTokens) {
  var state;
  if (!src) {
    return;
  }
  state = new this.State(src, md, env2, outTokens);
  this.tokenize(state, state.line, state.lineMax);
};
ParserBlock$1.prototype.State = state_block;
var parser_block = ParserBlock$1;
function isTerminatorChar(ch) {
  switch (ch) {
    case 10:
    case 33:
    case 35:
    case 36:
    case 37:
    case 38:
    case 42:
    case 43:
    case 45:
    case 58:
    case 60:
    case 61:
    case 62:
    case 64:
    case 91:
    case 92:
    case 93:
    case 94:
    case 95:
    case 96:
    case 123:
    case 125:
    case 126:
      return true;
    default:
      return false;
  }
}
var text = function text2(state, silent) {
  var pos = state.pos;
  while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {
    pos++;
  }
  if (pos === state.pos) {
    return false;
  }
  if (!silent) {
    state.pending += state.src.slice(state.pos, pos);
  }
  state.pos = pos;
  return true;
};
var SCHEME_RE = /(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i;
var linkify2 = function linkify3(state, silent) {
  var pos, max2, match3, proto2, link4, url2, fullUrl, token2;
  if (!state.md.options.linkify)
    return false;
  if (state.linkLevel > 0)
    return false;
  pos = state.pos;
  max2 = state.posMax;
  if (pos + 3 > max2)
    return false;
  if (state.src.charCodeAt(pos) !== 58)
    return false;
  if (state.src.charCodeAt(pos + 1) !== 47)
    return false;
  if (state.src.charCodeAt(pos + 2) !== 47)
    return false;
  match3 = state.pending.match(SCHEME_RE);
  if (!match3)
    return false;
  proto2 = match3[1];
  link4 = state.md.linkify.matchAtStart(state.src.slice(pos - proto2.length));
  if (!link4)
    return false;
  url2 = link4.url;
  url2 = url2.replace(/\*+$/, "");
  fullUrl = state.md.normalizeLink(url2);
  if (!state.md.validateLink(fullUrl))
    return false;
  if (!silent) {
    state.pending = state.pending.slice(0, -proto2.length);
    token2 = state.push("link_open", "a", 1);
    token2.attrs = [["href", fullUrl]];
    token2.markup = "linkify";
    token2.info = "auto";
    token2 = state.push("text", "", 0);
    token2.content = state.md.normalizeLinkText(url2);
    token2 = state.push("link_close", "a", -1);
    token2.markup = "linkify";
    token2.info = "auto";
  }
  state.pos += url2.length - proto2.length;
  return true;
};
var isSpace$3 = utils$1.isSpace;
var newline = function newline2(state, silent) {
  var pmax, max2, ws2, pos = state.pos;
  if (state.src.charCodeAt(pos) !== 10) {
    return false;
  }
  pmax = state.pending.length - 1;
  max2 = state.posMax;
  if (!silent) {
    if (pmax >= 0 && state.pending.charCodeAt(pmax) === 32) {
      if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 32) {
        ws2 = pmax - 1;
        while (ws2 >= 1 && state.pending.charCodeAt(ws2 - 1) === 32)
          ws2--;
        state.pending = state.pending.slice(0, ws2);
        state.push("hardbreak", "br", 0);
      } else {
        state.pending = state.pending.slice(0, -1);
        state.push("softbreak", "br", 0);
      }
    } else {
      state.push("softbreak", "br", 0);
    }
  }
  pos++;
  while (pos < max2 && isSpace$3(state.src.charCodeAt(pos))) {
    pos++;
  }
  state.pos = pos;
  return true;
};
var isSpace$2 = utils$1.isSpace;
var ESCAPED = [];
for (var i = 0; i < 256; i++) {
  ESCAPED.push(0);
}
"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(ch) {
  ESCAPED[ch.charCodeAt(0)] = 1;
});
var _escape = function escape(state, silent) {
  var ch1, ch2, origStr, escapedStr, token2, pos = state.pos, max2 = state.posMax;
  if (state.src.charCodeAt(pos) !== 92)
    return false;
  pos++;
  if (pos >= max2)
    return false;
  ch1 = state.src.charCodeAt(pos);
  if (ch1 === 10) {
    if (!silent) {
      state.push("hardbreak", "br", 0);
    }
    pos++;
    while (pos < max2) {
      ch1 = state.src.charCodeAt(pos);
      if (!isSpace$2(ch1))
        break;
      pos++;
    }
    state.pos = pos;
    return true;
  }
  escapedStr = state.src[pos];
  if (ch1 >= 55296 && ch1 <= 56319 && pos + 1 < max2) {
    ch2 = state.src.charCodeAt(pos + 1);
    if (ch2 >= 56320 && ch2 <= 57343) {
      escapedStr += state.src[pos + 1];
      pos++;
    }
  }
  origStr = "\\" + escapedStr;
  if (!silent) {
    token2 = state.push("text_special", "", 0);
    if (ch1 < 256 && ESCAPED[ch1] !== 0) {
      token2.content = escapedStr;
    } else {
      token2.content = origStr;
    }
    token2.markup = origStr;
    token2.info = "escape";
  }
  state.pos = pos + 1;
  return true;
};
var backticks = function backtick(state, silent) {
  var start2, max2, marker2, token2, matchStart, matchEnd, openerLength, closerLength, pos = state.pos, ch = state.src.charCodeAt(pos);
  if (ch !== 96) {
    return false;
  }
  start2 = pos;
  pos++;
  max2 = state.posMax;
  while (pos < max2 && state.src.charCodeAt(pos) === 96) {
    pos++;
  }
  marker2 = state.src.slice(start2, pos);
  openerLength = marker2.length;
  if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start2) {
    if (!silent)
      state.pending += marker2;
    state.pos += openerLength;
    return true;
  }
  matchStart = matchEnd = pos;
  while ((matchStart = state.src.indexOf("`", matchEnd)) !== -1) {
    matchEnd = matchStart + 1;
    while (matchEnd < max2 && state.src.charCodeAt(matchEnd) === 96) {
      matchEnd++;
    }
    closerLength = matchEnd - matchStart;
    if (closerLength === openerLength) {
      if (!silent) {
        token2 = state.push("code_inline", "code", 0);
        token2.markup = marker2;
        token2.content = state.src.slice(pos, matchStart).replace(/\n/g, " ").replace(/^ (.+) $/, "$1");
      }
      state.pos = matchEnd;
      return true;
    }
    state.backticks[closerLength] = matchStart;
  }
  state.backticksScanned = true;
  if (!silent)
    state.pending += marker2;
  state.pos += openerLength;
  return true;
};
var strikethrough = {};
strikethrough.tokenize = function strikethrough2(state, silent) {
  var i, scanned, token2, len, ch, start2 = state.pos, marker2 = state.src.charCodeAt(start2);
  if (silent) {
    return false;
  }
  if (marker2 !== 126) {
    return false;
  }
  scanned = state.scanDelims(state.pos, true);
  len = scanned.length;
  ch = String.fromCharCode(marker2);
  if (len < 2) {
    return false;
  }
  if (len % 2) {
    token2 = state.push("text", "", 0);
    token2.content = ch;
    len--;
  }
  for (i = 0; i < len; i += 2) {
    token2 = state.push("text", "", 0);
    token2.content = ch + ch;
    state.delimiters.push({
      marker: marker2,
      length: 0,
      // disable "rule of 3" length checks meant for emphasis
      token: state.tokens.length - 1,
      end: -1,
      open: scanned.can_open,
      close: scanned.can_close
    });
  }
  state.pos += scanned.length;
  return true;
};
function postProcess$1(state, delimiters) {
  var i, j2, startDelim, endDelim, token2, loneMarkers = [], max2 = delimiters.length;
  for (i = 0; i < max2; i++) {
    startDelim = delimiters[i];
    if (startDelim.marker !== 126) {
      continue;
    }
    if (startDelim.end === -1) {
      continue;
    }
    endDelim = delimiters[startDelim.end];
    token2 = state.tokens[startDelim.token];
    token2.type = "s_open";
    token2.tag = "s";
    token2.nesting = 1;
    token2.markup = "~~";
    token2.content = "";
    token2 = state.tokens[endDelim.token];
    token2.type = "s_close";
    token2.tag = "s";
    token2.nesting = -1;
    token2.markup = "~~";
    token2.content = "";
    if (state.tokens[endDelim.token - 1].type === "text" && state.tokens[endDelim.token - 1].content === "~") {
      loneMarkers.push(endDelim.token - 1);
    }
  }
  while (loneMarkers.length) {
    i = loneMarkers.pop();
    j2 = i + 1;
    while (j2 < state.tokens.length && state.tokens[j2].type === "s_close") {
      j2++;
    }
    j2--;
    if (i !== j2) {
      token2 = state.tokens[j2];
      state.tokens[j2] = state.tokens[i];
      state.tokens[i] = token2;
    }
  }
}
strikethrough.postProcess = function strikethrough3(state) {
  var curr, tokens_meta = state.tokens_meta, max2 = state.tokens_meta.length;
  postProcess$1(state, state.delimiters);
  for (curr = 0; curr < max2; curr++) {
    if (tokens_meta[curr] && tokens_meta[curr].delimiters) {
      postProcess$1(state, tokens_meta[curr].delimiters);
    }
  }
};
var emphasis = {};
emphasis.tokenize = function emphasis2(state, silent) {
  var i, scanned, token2, start2 = state.pos, marker2 = state.src.charCodeAt(start2);
  if (silent) {
    return false;
  }
  if (marker2 !== 95 && marker2 !== 42) {
    return false;
  }
  scanned = state.scanDelims(state.pos, marker2 === 42);
  for (i = 0; i < scanned.length; i++) {
    token2 = state.push("text", "", 0);
    token2.content = String.fromCharCode(marker2);
    state.delimiters.push({
      // Char code of the starting marker (number).
      //
      marker: marker2,
      // Total length of these series of delimiters.
      //
      length: scanned.length,
      // A position of the token this delimiter corresponds to.
      //
      token: state.tokens.length - 1,
      // If this delimiter is matched as a valid opener, `end` will be
      // equal to its position, otherwise it's `-1`.
      //
      end: -1,
      // Boolean flags that determine if this delimiter could open or close
      // an emphasis.
      //
      open: scanned.can_open,
      close: scanned.can_close
    });
  }
  state.pos += scanned.length;
  return true;
};
function postProcess(state, delimiters) {
  var i, startDelim, endDelim, token2, ch, isStrong, max2 = delimiters.length;
  for (i = max2 - 1; i >= 0; i--) {
    startDelim = delimiters[i];
    if (startDelim.marker !== 95 && startDelim.marker !== 42) {
      continue;
    }
    if (startDelim.end === -1) {
      continue;
    }
    endDelim = delimiters[startDelim.end];
    isStrong = i > 0 && delimiters[i - 1].end === startDelim.end + 1 && // check that first two markers match and adjacent
    delimiters[i - 1].marker === startDelim.marker && delimiters[i - 1].token === startDelim.token - 1 && // check that last two markers are adjacent (we can safely assume they match)
    delimiters[startDelim.end + 1].token === endDelim.token + 1;
    ch = String.fromCharCode(startDelim.marker);
    token2 = state.tokens[startDelim.token];
    token2.type = isStrong ? "strong_open" : "em_open";
    token2.tag = isStrong ? "strong" : "em";
    token2.nesting = 1;
    token2.markup = isStrong ? ch + ch : ch;
    token2.content = "";
    token2 = state.tokens[endDelim.token];
    token2.type = isStrong ? "strong_close" : "em_close";
    token2.tag = isStrong ? "strong" : "em";
    token2.nesting = -1;
    token2.markup = isStrong ? ch + ch : ch;
    token2.content = "";
    if (isStrong) {
      state.tokens[delimiters[i - 1].token].content = "";
      state.tokens[delimiters[startDelim.end + 1].token].content = "";
      i--;
    }
  }
}
emphasis.postProcess = function emphasis3(state) {
  var curr, tokens_meta = state.tokens_meta, max2 = state.tokens_meta.length;
  postProcess(state, state.delimiters);
  for (curr = 0; curr < max2; curr++) {
    if (tokens_meta[curr] && tokens_meta[curr].delimiters) {
      postProcess(state, tokens_meta[curr].delimiters);
    }
  }
};
var normalizeReference$1 = utils$1.normalizeReference;
var isSpace$1 = utils$1.isSpace;
var link2 = function link3(state, silent) {
  var attrs, code3, label, labelEnd, labelStart, pos, res, ref2, token2, href = "", title = "", oldPos = state.pos, max2 = state.posMax, start2 = state.pos, parseReference = true;
  if (state.src.charCodeAt(state.pos) !== 91) {
    return false;
  }
  labelStart = state.pos + 1;
  labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true);
  if (labelEnd < 0) {
    return false;
  }
  pos = labelEnd + 1;
  if (pos < max2 && state.src.charCodeAt(pos) === 40) {
    parseReference = false;
    pos++;
    for (; pos < max2; pos++) {
      code3 = state.src.charCodeAt(pos);
      if (!isSpace$1(code3) && code3 !== 10) {
        break;
      }
    }
    if (pos >= max2) {
      return false;
    }
    start2 = pos;
    res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);
    if (res.ok) {
      href = state.md.normalizeLink(res.str);
      if (state.md.validateLink(href)) {
        pos = res.pos;
      } else {
        href = "";
      }
      start2 = pos;
      for (; pos < max2; pos++) {
        code3 = state.src.charCodeAt(pos);
        if (!isSpace$1(code3) && code3 !== 10) {
          break;
        }
      }
      res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);
      if (pos < max2 && start2 !== pos && res.ok) {
        title = res.str;
        pos = res.pos;
        for (; pos < max2; pos++) {
          code3 = state.src.charCodeAt(pos);
          if (!isSpace$1(code3) && code3 !== 10) {
            break;
          }
        }
      }
    }
    if (pos >= max2 || state.src.charCodeAt(pos) !== 41) {
      parseReference = true;
    }
    pos++;
  }
  if (parseReference) {
    if (typeof state.env.references === "undefined") {
      return false;
    }
    if (pos < max2 && state.src.charCodeAt(pos) === 91) {
      start2 = pos + 1;
      pos = state.md.helpers.parseLinkLabel(state, pos);
      if (pos >= 0) {
        label = state.src.slice(start2, pos++);
      } else {
        pos = labelEnd + 1;
      }
    } else {
      pos = labelEnd + 1;
    }
    if (!label) {
      label = state.src.slice(labelStart, labelEnd);
    }
    ref2 = state.env.references[normalizeReference$1(label)];
    if (!ref2) {
      state.pos = oldPos;
      return false;
    }
    href = ref2.href;
    title = ref2.title;
  }
  if (!silent) {
    state.pos = labelStart;
    state.posMax = labelEnd;
    token2 = state.push("link_open", "a", 1);
    token2.attrs = attrs = [["href", href]];
    if (title) {
      attrs.push(["title", title]);
    }
    state.linkLevel++;
    state.md.inline.tokenize(state);
    state.linkLevel--;
    token2 = state.push("link_close", "a", -1);
  }
  state.pos = pos;
  state.posMax = max2;
  return true;
};
var normalizeReference = utils$1.normalizeReference;
var isSpace = utils$1.isSpace;
var image = function image2(state, silent) {
  var attrs, code3, content, label, labelEnd, labelStart, pos, ref2, res, title, token2, tokens, start2, href = "", oldPos = state.pos, max2 = state.posMax;
  if (state.src.charCodeAt(state.pos) !== 33) {
    return false;
  }
  if (state.src.charCodeAt(state.pos + 1) !== 91) {
    return false;
  }
  labelStart = state.pos + 2;
  labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false);
  if (labelEnd < 0) {
    return false;
  }
  pos = labelEnd + 1;
  if (pos < max2 && state.src.charCodeAt(pos) === 40) {
    pos++;
    for (; pos < max2; pos++) {
      code3 = state.src.charCodeAt(pos);
      if (!isSpace(code3) && code3 !== 10) {
        break;
      }
    }
    if (pos >= max2) {
      return false;
    }
    start2 = pos;
    res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);
    if (res.ok) {
      href = state.md.normalizeLink(res.str);
      if (state.md.validateLink(href)) {
        pos = res.pos;
      } else {
        href = "";
      }
    }
    start2 = pos;
    for (; pos < max2; pos++) {
      code3 = state.src.charCodeAt(pos);
      if (!isSpace(code3) && code3 !== 10) {
        break;
      }
    }
    res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);
    if (pos < max2 && start2 !== pos && res.ok) {
      title = res.str;
      pos = res.pos;
      for (; pos < max2; pos++) {
        code3 = state.src.charCodeAt(pos);
        if (!isSpace(code3) && code3 !== 10) {
          break;
        }
      }
    } else {
      title = "";
    }
    if (pos >= max2 || state.src.charCodeAt(pos) !== 41) {
      state.pos = oldPos;
      return false;
    }
    pos++;
  } else {
    if (typeof state.env.references === "undefined") {
      return false;
    }
    if (pos < max2 && state.src.charCodeAt(pos) === 91) {
      start2 = pos + 1;
      pos = state.md.helpers.parseLinkLabel(state, pos);
      if (pos >= 0) {
        label = state.src.slice(start2, pos++);
      } else {
        pos = labelEnd + 1;
      }
    } else {
      pos = labelEnd + 1;
    }
    if (!label) {
      label = state.src.slice(labelStart, labelEnd);
    }
    ref2 = state.env.references[normalizeReference(label)];
    if (!ref2) {
      state.pos = oldPos;
      return false;
    }
    href = ref2.href;
    title = ref2.title;
  }
  if (!silent) {
    content = state.src.slice(labelStart, labelEnd);
    state.md.inline.parse(
      content,
      state.md,
      state.env,
      tokens = []
    );
    token2 = state.push("image", "img", 0);
    token2.attrs = attrs = [["src", href], ["alt", ""]];
    token2.children = tokens;
    token2.content = content;
    if (title) {
      attrs.push(["title", title]);
    }
  }
  state.pos = pos;
  state.posMax = max2;
  return true;
};
var EMAIL_RE = /^([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/;
var AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)$/;
var autolink = function autolink2(state, silent) {
  var url2, fullUrl, token2, ch, start2, max2, pos = state.pos;
  if (state.src.charCodeAt(pos) !== 60) {
    return false;
  }
  start2 = state.pos;
  max2 = state.posMax;
  for (; ; ) {
    if (++pos >= max2)
      return false;
    ch = state.src.charCodeAt(pos);
    if (ch === 60)
      return false;
    if (ch === 62)
      break;
  }
  url2 = state.src.slice(start2 + 1, pos);
  if (AUTOLINK_RE.test(url2)) {
    fullUrl = state.md.normalizeLink(url2);
    if (!state.md.validateLink(fullUrl)) {
      return false;
    }
    if (!silent) {
      token2 = state.push("link_open", "a", 1);
      token2.attrs = [["href", fullUrl]];
      token2.markup = "autolink";
      token2.info = "auto";
      token2 = state.push("text", "", 0);
      token2.content = state.md.normalizeLinkText(url2);
      token2 = state.push("link_close", "a", -1);
      token2.markup = "autolink";
      token2.info = "auto";
    }
    state.pos += url2.length + 2;
    return true;
  }
  if (EMAIL_RE.test(url2)) {
    fullUrl = state.md.normalizeLink("mailto:" + url2);
    if (!state.md.validateLink(fullUrl)) {
      return false;
    }
    if (!silent) {
      token2 = state.push("link_open", "a", 1);
      token2.attrs = [["href", fullUrl]];
      token2.markup = "autolink";
      token2.info = "auto";
      token2 = state.push("text", "", 0);
      token2.content = state.md.normalizeLinkText(url2);
      token2 = state.push("link_close", "a", -1);
      token2.markup = "autolink";
      token2.info = "auto";
    }
    state.pos += url2.length + 2;
    return true;
  }
  return false;
};
var HTML_TAG_RE = html_re.HTML_TAG_RE;
function isLinkOpen(str) {
  return /^<a[>\s]/i.test(str);
}
function isLinkClose(str) {
  return /^<\/a\s*>/i.test(str);
}
function isLetter(ch) {
  var lc = ch | 32;
  return lc >= 97 && lc <= 122;
}
var html_inline = function html_inline2(state, silent) {
  var ch, match3, max2, token2, pos = state.pos;
  if (!state.md.options.html) {
    return false;
  }
  max2 = state.posMax;
  if (state.src.charCodeAt(pos) !== 60 || pos + 2 >= max2) {
    return false;
  }
  ch = state.src.charCodeAt(pos + 1);
  if (ch !== 33 && ch !== 63 && ch !== 47 && !isLetter(ch)) {
    return false;
  }
  match3 = state.src.slice(pos).match(HTML_TAG_RE);
  if (!match3) {
    return false;
  }
  if (!silent) {
    token2 = state.push("html_inline", "", 0);
    token2.content = state.src.slice(pos, pos + match3[0].length);
    if (isLinkOpen(token2.content))
      state.linkLevel++;
    if (isLinkClose(token2.content))
      state.linkLevel--;
  }
  state.pos += match3[0].length;
  return true;
};
var entities = entitiesExports;
var has = utils$1.has;
var isValidEntityCode = utils$1.isValidEntityCode;
var fromCodePoint = utils$1.fromCodePoint;
var DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i;
var NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i;
var entity = function entity2(state, silent) {
  var ch, code3, match3, token2, pos = state.pos, max2 = state.posMax;
  if (state.src.charCodeAt(pos) !== 38)
    return false;
  if (pos + 1 >= max2)
    return false;
  ch = state.src.charCodeAt(pos + 1);
  if (ch === 35) {
    match3 = state.src.slice(pos).match(DIGITAL_RE);
    if (match3) {
      if (!silent) {
        code3 = match3[1][0].toLowerCase() === "x" ? parseInt(match3[1].slice(1), 16) : parseInt(match3[1], 10);
        token2 = state.push("text_special", "", 0);
        token2.content = isValidEntityCode(code3) ? fromCodePoint(code3) : fromCodePoint(65533);
        token2.markup = match3[0];
        token2.info = "entity";
      }
      state.pos += match3[0].length;
      return true;
    }
  } else {
    match3 = state.src.slice(pos).match(NAMED_RE);
    if (match3) {
      if (has(entities, match3[1])) {
        if (!silent) {
          token2 = state.push("text_special", "", 0);
          token2.content = entities[match3[1]];
          token2.markup = match3[0];
          token2.info = "entity";
        }
        state.pos += match3[0].length;
        return true;
      }
    }
  }
  return false;
};
function processDelimiters(state, delimiters) {
  var closerIdx, openerIdx, closer, opener, minOpenerIdx, newMinOpenerIdx, isOddMatch, lastJump, openersBottom = {}, max2 = delimiters.length;
  if (!max2)
    return;
  var headerIdx = 0;
  var lastTokenIdx = -2;
  var jumps = [];
  for (closerIdx = 0; closerIdx < max2; closerIdx++) {
    closer = delimiters[closerIdx];
    jumps.push(0);
    if (delimiters[headerIdx].marker !== closer.marker || lastTokenIdx !== closer.token - 1) {
      headerIdx = closerIdx;
    }
    lastTokenIdx = closer.token;
    closer.length = closer.length || 0;
    if (!closer.close)
      continue;
    if (!openersBottom.hasOwnProperty(closer.marker)) {
      openersBottom[closer.marker] = [-1, -1, -1, -1, -1, -1];
    }
    minOpenerIdx = openersBottom[closer.marker][(closer.open ? 3 : 0) + closer.length % 3];
    openerIdx = headerIdx - jumps[headerIdx] - 1;
    newMinOpenerIdx = openerIdx;
    for (; openerIdx > minOpenerIdx; openerIdx -= jumps[openerIdx] + 1) {
      opener = delimiters[openerIdx];
      if (opener.marker !== closer.marker)
        continue;
      if (opener.open && opener.end < 0) {
        isOddMatch = false;
        if (opener.close || closer.open) {
          if ((opener.length + closer.length) % 3 === 0) {
            if (opener.length % 3 !== 0 || closer.length % 3 !== 0) {
              isOddMatch = true;
            }
          }
        }
        if (!isOddMatch) {
          lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open ? jumps[openerIdx - 1] + 1 : 0;
          jumps[closerIdx] = closerIdx - openerIdx + lastJump;
          jumps[openerIdx] = lastJump;
          closer.open = false;
          opener.end = closerIdx;
          opener.close = false;
          newMinOpenerIdx = -1;
          lastTokenIdx = -2;
          break;
        }
      }
    }
    if (newMinOpenerIdx !== -1) {
      openersBottom[closer.marker][(closer.open ? 3 : 0) + (closer.length || 0) % 3] = newMinOpenerIdx;
    }
  }
}
var balance_pairs = function link_pairs(state) {
  var curr, tokens_meta = state.tokens_meta, max2 = state.tokens_meta.length;
  processDelimiters(state, state.delimiters);
  for (curr = 0; curr < max2; curr++) {
    if (tokens_meta[curr] && tokens_meta[curr].delimiters) {
      processDelimiters(state, tokens_meta[curr].delimiters);
    }
  }
};
var fragments_join = function fragments_join2(state) {
  var curr, last, level = 0, tokens = state.tokens, max2 = state.tokens.length;
  for (curr = last = 0; curr < max2; curr++) {
    if (tokens[curr].nesting < 0)
      level--;
    tokens[curr].level = level;
    if (tokens[curr].nesting > 0)
      level++;
    if (tokens[curr].type === "text" && curr + 1 < max2 && tokens[curr + 1].type === "text") {
      tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;
    } else {
      if (curr !== last) {
        tokens[last] = tokens[curr];
      }
      last++;
    }
  }
  if (curr !== last) {
    tokens.length = last;
  }
};
var Token = token;
var isWhiteSpace = utils$1.isWhiteSpace;
var isPunctChar = utils$1.isPunctChar;
var isMdAsciiPunct = utils$1.isMdAsciiPunct;
function StateInline(src, md, env2, outTokens) {
  this.src = src;
  this.env = env2;
  this.md = md;
  this.tokens = outTokens;
  this.tokens_meta = Array(outTokens.length);
  this.pos = 0;
  this.posMax = this.src.length;
  this.level = 0;
  this.pending = "";
  this.pendingLevel = 0;
  this.cache = {};
  this.delimiters = [];
  this._prev_delimiters = [];
  this.backticks = {};
  this.backticksScanned = false;
  this.linkLevel = 0;
}
StateInline.prototype.pushPending = function() {
  var token2 = new Token("text", "", 0);
  token2.content = this.pending;
  token2.level = this.pendingLevel;
  this.tokens.push(token2);
  this.pending = "";
  return token2;
};
StateInline.prototype.push = function(type2, tag, nesting) {
  if (this.pending) {
    this.pushPending();
  }
  var token2 = new Token(type2, tag, nesting);
  var token_meta = null;
  if (nesting < 0) {
    this.level--;
    this.delimiters = this._prev_delimiters.pop();
  }
  token2.level = this.level;
  if (nesting > 0) {
    this.level++;
    this._prev_delimiters.push(this.delimiters);
    this.delimiters = [];
    token_meta = { delimiters: this.delimiters };
  }
  this.pendingLevel = this.level;
  this.tokens.push(token2);
  this.tokens_meta.push(token_meta);
  return token2;
};
StateInline.prototype.scanDelims = function(start2, canSplitWord) {
  var pos = start2, lastChar, nextChar, count, can_open, can_close, isLastWhiteSpace, isLastPunctChar, isNextWhiteSpace, isNextPunctChar, left_flanking = true, right_flanking = true, max2 = this.posMax, marker2 = this.src.charCodeAt(start2);
  lastChar = start2 > 0 ? this.src.charCodeAt(start2 - 1) : 32;
  while (pos < max2 && this.src.charCodeAt(pos) === marker2) {
    pos++;
  }
  count = pos - start2;
  nextChar = pos < max2 ? this.src.charCodeAt(pos) : 32;
  isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));
  isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));
  isLastWhiteSpace = isWhiteSpace(lastChar);
  isNextWhiteSpace = isWhiteSpace(nextChar);
  if (isNextWhiteSpace) {
    left_flanking = false;
  } else if (isNextPunctChar) {
    if (!(isLastWhiteSpace || isLastPunctChar)) {
      left_flanking = false;
    }
  }
  if (isLastWhiteSpace) {
    right_flanking = false;
  } else if (isLastPunctChar) {
    if (!(isNextWhiteSpace || isNextPunctChar)) {
      right_flanking = false;
    }
  }
  if (!canSplitWord) {
    can_open = left_flanking && (!right_flanking || isLastPunctChar);
    can_close = right_flanking && (!left_flanking || isNextPunctChar);
  } else {
    can_open = left_flanking;
    can_close = right_flanking;
  }
  return {
    can_open,
    can_close,
    length: count
  };
};
StateInline.prototype.Token = Token;
var state_inline = StateInline;
var Ruler = ruler;
var _rules = [
  ["text", text],
  ["linkify", linkify2],
  ["newline", newline],
  ["escape", _escape],
  ["backticks", backticks],
  ["strikethrough", strikethrough.tokenize],
  ["emphasis", emphasis.tokenize],
  ["link", link2],
  ["image", image],
  ["autolink", autolink],
  ["html_inline", html_inline],
  ["entity", entity]
];
var _rules2 = [
  ["balance_pairs", balance_pairs],
  ["strikethrough", strikethrough.postProcess],
  ["emphasis", emphasis.postProcess],
  // rules for pairs separate '**' into its own text tokens, which may be left unused,
  // rule below merges unused segments back with the rest of the text
  ["fragments_join", fragments_join]
];
function ParserInline$1() {
  var i;
  this.ruler = new Ruler();
  for (i = 0; i < _rules.length; i++) {
    this.ruler.push(_rules[i][0], _rules[i][1]);
  }
  this.ruler2 = new Ruler();
  for (i = 0; i < _rules2.length; i++) {
    this.ruler2.push(_rules2[i][0], _rules2[i][1]);
  }
}
ParserInline$1.prototype.skipToken = function(state) {
  var ok, i, pos = state.pos, rules = this.ruler.getRules(""), len = rules.length, maxNesting = state.md.options.maxNesting, cache2 = state.cache;
  if (typeof cache2[pos] !== "undefined") {
    state.pos = cache2[pos];
    return;
  }
  if (state.level < maxNesting) {
    for (i = 0; i < len; i++) {
      state.level++;
      ok = rules[i](state, true);
      state.level--;
      if (ok) {
        break;
      }
    }
  } else {
    state.pos = state.posMax;
  }
  if (!ok) {
    state.pos++;
  }
  cache2[pos] = state.pos;
};
ParserInline$1.prototype.tokenize = function(state) {
  var ok, i, rules = this.ruler.getRules(""), len = rules.length, end2 = state.posMax, maxNesting = state.md.options.maxNesting;
  while (state.pos < end2) {
    if (state.level < maxNesting) {
      for (i = 0; i < len; i++) {
        ok = rules[i](state, false);
        if (ok) {
          break;
        }
      }
    }
    if (ok) {
      if (state.pos >= end2) {
        break;
      }
      continue;
    }
    state.pending += state.src[state.pos++];
  }
  if (state.pending) {
    state.pushPending();
  }
};
ParserInline$1.prototype.parse = function(str, md, env2, outTokens) {
  var i, rules, len;
  var state = new this.State(str, md, env2, outTokens);
  this.tokenize(state);
  rules = this.ruler2.getRules("");
  len = rules.length;
  for (i = 0; i < len; i++) {
    rules[i](state);
  }
};
ParserInline$1.prototype.State = state_inline;
var parser_inline = ParserInline$1;
var re$1;
var hasRequiredRe;
function requireRe() {
  if (hasRequiredRe)
    return re$1;
  hasRequiredRe = 1;
  re$1 = function(opts) {
    var re2 = {};
    opts = opts || {};
    re2.src_Any = requireRegex$3().source;
    re2.src_Cc = requireRegex$2().source;
    re2.src_Z = requireRegex().source;
    re2.src_P = regex$4.source;
    re2.src_ZPCc = [re2.src_Z, re2.src_P, re2.src_Cc].join("|");
    re2.src_ZCc = [re2.src_Z, re2.src_Cc].join("|");
    var text_separators = "[><ï½œ]";
    re2.src_pseudo_letter = "(?:(?!" + text_separators + "|" + re2.src_ZPCc + ")" + re2.src_Any + ")";
    re2.src_ip4 = "(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";
    re2.src_auth = "(?:(?:(?!" + re2.src_ZCc + "|[@/\\[\\]()]).)+@)?";
    re2.src_port = "(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?";
    re2.src_host_terminator = "(?=$|" + text_separators + "|" + re2.src_ZPCc + ")(?!" + (opts["---"] ? "-(?!--)|" : "-|") + "_|:\\d|\\.-|\\.(?!$|" + re2.src_ZPCc + "))";
    re2.src_path = "(?:[/?#](?:(?!" + re2.src_ZCc + "|" + text_separators + `|[()[\\]{}.,"'?!\\-;]).|\\[(?:(?!` + re2.src_ZCc + "|\\]).)*\\]|\\((?:(?!" + re2.src_ZCc + "|[)]).)*\\)|\\{(?:(?!" + re2.src_ZCc + '|[}]).)*\\}|\\"(?:(?!' + re2.src_ZCc + `|["]).)+\\"|\\'(?:(?!` + re2.src_ZCc + "|[']).)+\\'|\\'(?=" + re2.src_pseudo_letter + "|[-])|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!" + re2.src_ZCc + "|[.]|$)|" + (opts["---"] ? "\\-(?!--(?:[^-]|$))(?:-*)|" : "\\-+|") + ",(?!" + re2.src_ZCc + "|$)|;(?!" + re2.src_ZCc + "|$)|\\!+(?!" + re2.src_ZCc + "|[!]|$)|\\?(?!" + re2.src_ZCc + "|[?]|$))+|\\/)?";
    re2.src_email_name = '[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*';
    re2.src_xn = "xn--[a-z0-9\\-]{1,59}";
    re2.src_domain_root = // Allow letters & digits (http://test1)
    "(?:" + re2.src_xn + "|" + re2.src_pseudo_letter + "{1,63})";
    re2.src_domain = "(?:" + re2.src_xn + "|(?:" + re2.src_pseudo_letter + ")|(?:" + re2.src_pseudo_letter + "(?:-|" + re2.src_pseudo_letter + "){0,61}" + re2.src_pseudo_letter + "))";
    re2.src_host = "(?:(?:(?:(?:" + re2.src_domain + ")\\.)*" + re2.src_domain + "))";
    re2.tpl_host_fuzzy = "(?:" + re2.src_ip4 + "|(?:(?:(?:" + re2.src_domain + ")\\.)+(?:%TLDS%)))";
    re2.tpl_host_no_ip_fuzzy = "(?:(?:(?:" + re2.src_domain + ")\\.)+(?:%TLDS%))";
    re2.src_host_strict = re2.src_host + re2.src_host_terminator;
    re2.tpl_host_fuzzy_strict = re2.tpl_host_fuzzy + re2.src_host_terminator;
    re2.src_host_port_strict = re2.src_host + re2.src_port + re2.src_host_terminator;
    re2.tpl_host_port_fuzzy_strict = re2.tpl_host_fuzzy + re2.src_port + re2.src_host_terminator;
    re2.tpl_host_port_no_ip_fuzzy_strict = re2.tpl_host_no_ip_fuzzy + re2.src_port + re2.src_host_terminator;
    re2.tpl_host_fuzzy_test = "localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:" + re2.src_ZPCc + "|>|$))";
    re2.tpl_email_fuzzy = "(^|" + text_separators + '|"|\\(|' + re2.src_ZCc + ")(" + re2.src_email_name + "@" + re2.tpl_host_fuzzy_strict + ")";
    re2.tpl_link_fuzzy = // Fuzzy link can't be prepended with .:/\- and non punctuation.
    // but can start with > (markdown blockquote)
    "(^|(?![.:/\\-_@])(?:[$+<=>^`|ï½œ]|" + re2.src_ZPCc + "))((?![$+<=>^`|ï½œ])" + re2.tpl_host_port_fuzzy_strict + re2.src_path + ")";
    re2.tpl_link_no_ip_fuzzy = // Fuzzy link can't be prepended with .:/\- and non punctuation.
    // but can start with > (markdown blockquote)
    "(^|(?![.:/\\-_@])(?:[$+<=>^`|ï½œ]|" + re2.src_ZPCc + "))((?![$+<=>^`|ï½œ])" + re2.tpl_host_port_no_ip_fuzzy_strict + re2.src_path + ")";
    return re2;
  };
  return re$1;
}
function assign(obj) {
  var sources = Array.prototype.slice.call(arguments, 1);
  sources.forEach(function(source) {
    if (!source) {
      return;
    }
    Object.keys(source).forEach(function(key) {
      obj[key] = source[key];
    });
  });
  return obj;
}
function _class(obj) {
  return Object.prototype.toString.call(obj);
}
function isString(obj) {
  return _class(obj) === "[object String]";
}
function isObject$2(obj) {
  return _class(obj) === "[object Object]";
}
function isRegExp(obj) {
  return _class(obj) === "[object RegExp]";
}
function isFunction$1(obj) {
  return _class(obj) === "[object Function]";
}
function escapeRE(str) {
  return str.replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&");
}
var defaultOptions = {
  fuzzyLink: true,
  fuzzyEmail: true,
  fuzzyIP: false
};
function isOptionsObj(obj) {
  return Object.keys(obj || {}).reduce(function(acc, k2) {
    return acc || defaultOptions.hasOwnProperty(k2);
  }, false);
}
var defaultSchemas = {
  "http:": {
    validate: function(text3, pos, self2) {
      var tail = text3.slice(pos);
      if (!self2.re.http) {
        self2.re.http = new RegExp(
          "^\\/\\/" + self2.re.src_auth + self2.re.src_host_port_strict + self2.re.src_path,
          "i"
        );
      }
      if (self2.re.http.test(tail)) {
        return tail.match(self2.re.http)[0].length;
      }
      return 0;
    }
  },
  "https:": "http:",
  "ftp:": "http:",
  "//": {
    validate: function(text3, pos, self2) {
      var tail = text3.slice(pos);
      if (!self2.re.no_http) {
        self2.re.no_http = new RegExp(
          "^" + self2.re.src_auth + // Don't allow single-level domains, because of false positives like '//test'
          // with code comments
          "(?:localhost|(?:(?:" + self2.re.src_domain + ")\\.)+" + self2.re.src_domain_root + ")" + self2.re.src_port + self2.re.src_host_terminator + self2.re.src_path,
          "i"
        );
      }
      if (self2.re.no_http.test(tail)) {
        if (pos >= 3 && text3[pos - 3] === ":") {
          return 0;
        }
        if (pos >= 3 && text3[pos - 3] === "/") {
          return 0;
        }
        return tail.match(self2.re.no_http)[0].length;
      }
      return 0;
    }
  },
  "mailto:": {
    validate: function(text3, pos, self2) {
      var tail = text3.slice(pos);
      if (!self2.re.mailto) {
        self2.re.mailto = new RegExp(
          "^" + self2.re.src_email_name + "@" + self2.re.src_host_strict,
          "i"
        );
      }
      if (self2.re.mailto.test(tail)) {
        return tail.match(self2.re.mailto)[0].length;
      }
      return 0;
    }
  }
};
var tlds_2ch_src_re = "a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]";
var tlds_default = "biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|Ñ€Ñ„".split("|");
function resetScanCache(self2) {
  self2.__index__ = -1;
  self2.__text_cache__ = "";
}
function createValidator(re2) {
  return function(text3, pos) {
    var tail = text3.slice(pos);
    if (re2.test(tail)) {
      return tail.match(re2)[0].length;
    }
    return 0;
  };
}
function createNormalizer() {
  return function(match3, self2) {
    self2.normalize(match3);
  };
}
function compile(self2) {
  var re2 = self2.re = requireRe()(self2.__opts__);
  var tlds2 = self2.__tlds__.slice();
  self2.onCompile();
  if (!self2.__tlds_replaced__) {
    tlds2.push(tlds_2ch_src_re);
  }
  tlds2.push(re2.src_xn);
  re2.src_tlds = tlds2.join("|");
  function untpl(tpl) {
    return tpl.replace("%TLDS%", re2.src_tlds);
  }
  re2.email_fuzzy = RegExp(untpl(re2.tpl_email_fuzzy), "i");
  re2.link_fuzzy = RegExp(untpl(re2.tpl_link_fuzzy), "i");
  re2.link_no_ip_fuzzy = RegExp(untpl(re2.tpl_link_no_ip_fuzzy), "i");
  re2.host_fuzzy_test = RegExp(untpl(re2.tpl_host_fuzzy_test), "i");
  var aliases = [];
  self2.__compiled__ = {};
  function schemaError(name2, val) {
    throw new Error('(LinkifyIt) Invalid schema "' + name2 + '": ' + val);
  }
  Object.keys(self2.__schemas__).forEach(function(name2) {
    var val = self2.__schemas__[name2];
    if (val === null) {
      return;
    }
    var compiled = { validate: null, link: null };
    self2.__compiled__[name2] = compiled;
    if (isObject$2(val)) {
      if (isRegExp(val.validate)) {
        compiled.validate = createValidator(val.validate);
      } else if (isFunction$1(val.validate)) {
        compiled.validate = val.validate;
      } else {
        schemaError(name2, val);
      }
      if (isFunction$1(val.normalize)) {
        compiled.normalize = val.normalize;
      } else if (!val.normalize) {
        compiled.normalize = createNormalizer();
      } else {
        schemaError(name2, val);
      }
      return;
    }
    if (isString(val)) {
      aliases.push(name2);
      return;
    }
    schemaError(name2, val);
  });
  aliases.forEach(function(alias) {
    if (!self2.__compiled__[self2.__schemas__[alias]]) {
      return;
    }
    self2.__compiled__[alias].validate = self2.__compiled__[self2.__schemas__[alias]].validate;
    self2.__compiled__[alias].normalize = self2.__compiled__[self2.__schemas__[alias]].normalize;
  });
  self2.__compiled__[""] = { validate: null, normalize: createNormalizer() };
  var slist = Object.keys(self2.__compiled__).filter(function(name2) {
    return name2.length > 0 && self2.__compiled__[name2];
  }).map(escapeRE).join("|");
  self2.re.schema_test = RegExp("(^|(?!_)(?:[><ï½œ]|" + re2.src_ZPCc + "))(" + slist + ")", "i");
  self2.re.schema_search = RegExp("(^|(?!_)(?:[><ï½œ]|" + re2.src_ZPCc + "))(" + slist + ")", "ig");
  self2.re.schema_at_start = RegExp("^" + self2.re.schema_search.source, "i");
  self2.re.pretest = RegExp(
    "(" + self2.re.schema_test.source + ")|(" + self2.re.host_fuzzy_test.source + ")|@",
    "i"
  );
  resetScanCache(self2);
}
function Match(self2, shift2) {
  var start2 = self2.__index__, end2 = self2.__last_index__, text3 = self2.__text_cache__.slice(start2, end2);
  this.schema = self2.__schema__.toLowerCase();
  this.index = start2 + shift2;
  this.lastIndex = end2 + shift2;
  this.raw = text3;
  this.text = text3;
  this.url = text3;
}
function createMatch(self2, shift2) {
  var match3 = new Match(self2, shift2);
  self2.__compiled__[match3.schema].normalize(match3, self2);
  return match3;
}
function LinkifyIt$1(schemas, options2) {
  if (!(this instanceof LinkifyIt$1)) {
    return new LinkifyIt$1(schemas, options2);
  }
  if (!options2) {
    if (isOptionsObj(schemas)) {
      options2 = schemas;
      schemas = {};
    }
  }
  this.__opts__ = assign({}, defaultOptions, options2);
  this.__index__ = -1;
  this.__last_index__ = -1;
  this.__schema__ = "";
  this.__text_cache__ = "";
  this.__schemas__ = assign({}, defaultSchemas, schemas);
  this.__compiled__ = {};
  this.__tlds__ = tlds_default;
  this.__tlds_replaced__ = false;
  this.re = {};
  compile(this);
}
LinkifyIt$1.prototype.add = function add2(schema, definition) {
  this.__schemas__[schema] = definition;
  compile(this);
  return this;
};
LinkifyIt$1.prototype.set = function set(options2) {
  this.__opts__ = assign(this.__opts__, options2);
  return this;
};
LinkifyIt$1.prototype.test = function test(text3) {
  this.__text_cache__ = text3;
  this.__index__ = -1;
  if (!text3.length) {
    return false;
  }
  var m2, ml, me, len, shift2, next, re2, tld_pos, at_pos;
  if (this.re.schema_test.test(text3)) {
    re2 = this.re.schema_search;
    re2.lastIndex = 0;
    while ((m2 = re2.exec(text3)) !== null) {
      len = this.testSchemaAt(text3, m2[2], re2.lastIndex);
      if (len) {
        this.__schema__ = m2[2];
        this.__index__ = m2.index + m2[1].length;
        this.__last_index__ = m2.index + m2[0].length + len;
        break;
      }
    }
  }
  if (this.__opts__.fuzzyLink && this.__compiled__["http:"]) {
    tld_pos = text3.search(this.re.host_fuzzy_test);
    if (tld_pos >= 0) {
      if (this.__index__ < 0 || tld_pos < this.__index__) {
        if ((ml = text3.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {
          shift2 = ml.index + ml[1].length;
          if (this.__index__ < 0 || shift2 < this.__index__) {
            this.__schema__ = "";
            this.__index__ = shift2;
            this.__last_index__ = ml.index + ml[0].length;
          }
        }
      }
    }
  }
  if (this.__opts__.fuzzyEmail && this.__compiled__["mailto:"]) {
    at_pos = text3.indexOf("@");
    if (at_pos >= 0) {
      if ((me = text3.match(this.re.email_fuzzy)) !== null) {
        shift2 = me.index + me[1].length;
        next = me.index + me[0].length;
        if (this.__index__ < 0 || shift2 < this.__index__ || shift2 === this.__index__ && next > this.__last_index__) {
          this.__schema__ = "mailto:";
          this.__index__ = shift2;
          this.__last_index__ = next;
        }
      }
    }
  }
  return this.__index__ >= 0;
};
LinkifyIt$1.prototype.pretest = function pretest(text3) {
  return this.re.pretest.test(text3);
};
LinkifyIt$1.prototype.testSchemaAt = function testSchemaAt(text3, schema, pos) {
  if (!this.__compiled__[schema.toLowerCase()]) {
    return 0;
  }
  return this.__compiled__[schema.toLowerCase()].validate(text3, pos, this);
};
LinkifyIt$1.prototype.match = function match2(text3) {
  var shift2 = 0, result = [];
  if (this.__index__ >= 0 && this.__text_cache__ === text3) {
    result.push(createMatch(this, shift2));
    shift2 = this.__last_index__;
  }
  var tail = shift2 ? text3.slice(shift2) : text3;
  while (this.test(tail)) {
    result.push(createMatch(this, shift2));
    tail = tail.slice(this.__last_index__);
    shift2 += this.__last_index__;
  }
  if (result.length) {
    return result;
  }
  return null;
};
LinkifyIt$1.prototype.matchAtStart = function matchAtStart(text3) {
  this.__text_cache__ = text3;
  this.__index__ = -1;
  if (!text3.length)
    return null;
  var m2 = this.re.schema_at_start.exec(text3);
  if (!m2)
    return null;
  var len = this.testSchemaAt(text3, m2[2], m2[0].length);
  if (!len)
    return null;
  this.__schema__ = m2[2];
  this.__index__ = m2.index + m2[1].length;
  this.__last_index__ = m2.index + m2[0].length + len;
  return createMatch(this, 0);
};
LinkifyIt$1.prototype.tlds = function tlds(list3, keepOld) {
  list3 = Array.isArray(list3) ? list3 : [list3];
  if (!keepOld) {
    this.__tlds__ = list3.slice();
    this.__tlds_replaced__ = true;
    compile(this);
    return this;
  }
  this.__tlds__ = this.__tlds__.concat(list3).sort().filter(function(el2, idx, arr) {
    return el2 !== arr[idx - 1];
  }).reverse();
  compile(this);
  return this;
};
LinkifyIt$1.prototype.normalize = function normalize3(match3) {
  if (!match3.schema) {
    match3.url = "http://" + match3.url;
  }
  if (match3.schema === "mailto:" && !/^mailto:/i.test(match3.url)) {
    match3.url = "mailto:" + match3.url;
  }
};
LinkifyIt$1.prototype.onCompile = function onCompile() {
};
var linkifyIt = LinkifyIt$1;
const maxInt = 2147483647;
const base = 36;
const tMin = 1;
const tMax = 26;
const skew = 38;
const damp = 700;
const initialBias = 72;
const initialN = 128;
const delimiter = "-";
const regexPunycode = /^xn--/;
const regexNonASCII = /[^\0-\x7F]/;
const regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g;
const errors = {
  "overflow": "Overflow: input needs wider integers to process",
  "not-basic": "Illegal input >= 0x80 (not a basic code point)",
  "invalid-input": "Invalid input"
};
const baseMinusTMin = base - tMin;
const floor = Math.floor;
const stringFromCharCode = String.fromCharCode;
function error(type2) {
  throw new RangeError(errors[type2]);
}
function map(array, callback) {
  const result = [];
  let length2 = array.length;
  while (length2--) {
    result[length2] = callback(array[length2]);
  }
  return result;
}
function mapDomain(domain, callback) {
  const parts2 = domain.split("@");
  let result = "";
  if (parts2.length > 1) {
    result = parts2[0] + "@";
    domain = parts2[1];
  }
  domain = domain.replace(regexSeparators, ".");
  const labels = domain.split(".");
  const encoded = map(labels, callback).join(".");
  return result + encoded;
}
function ucs2decode(string) {
  const output = [];
  let counter = 0;
  const length2 = string.length;
  while (counter < length2) {
    const value = string.charCodeAt(counter++);
    if (value >= 55296 && value <= 56319 && counter < length2) {
      const extra = string.charCodeAt(counter++);
      if ((extra & 64512) == 56320) {
        output.push(((value & 1023) << 10) + (extra & 1023) + 65536);
      } else {
        output.push(value);
        counter--;
      }
    } else {
      output.push(value);
    }
  }
  return output;
}
const ucs2encode = (codePoints) => String.fromCodePoint(...codePoints);
const basicToDigit = function(codePoint) {
  if (codePoint >= 48 && codePoint < 58) {
    return 26 + (codePoint - 48);
  }
  if (codePoint >= 65 && codePoint < 91) {
    return codePoint - 65;
  }
  if (codePoint >= 97 && codePoint < 123) {
    return codePoint - 97;
  }
  return base;
};
const digitToBasic = function(digit, flag) {
  return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
};
const adapt = function(delta2, numPoints, firstTime) {
  let k2 = 0;
  delta2 = firstTime ? floor(delta2 / damp) : delta2 >> 1;
  delta2 += floor(delta2 / numPoints);
  for (; delta2 > baseMinusTMin * tMax >> 1; k2 += base) {
    delta2 = floor(delta2 / baseMinusTMin);
  }
  return floor(k2 + (baseMinusTMin + 1) * delta2 / (delta2 + skew));
};
const decode = function(input) {
  const output = [];
  const inputLength = input.length;
  let i = 0;
  let n = initialN;
  let bias = initialBias;
  let basic = input.lastIndexOf(delimiter);
  if (basic < 0) {
    basic = 0;
  }
  for (let j2 = 0; j2 < basic; ++j2) {
    if (input.charCodeAt(j2) >= 128) {
      error("not-basic");
    }
    output.push(input.charCodeAt(j2));
  }
  for (let index2 = basic > 0 ? basic + 1 : 0; index2 < inputLength; ) {
    const oldi = i;
    for (let w2 = 1, k2 = base; ; k2 += base) {
      if (index2 >= inputLength) {
        error("invalid-input");
      }
      const digit = basicToDigit(input.charCodeAt(index2++));
      if (digit >= base) {
        error("invalid-input");
      }
      if (digit > floor((maxInt - i) / w2)) {
        error("overflow");
      }
      i += digit * w2;
      const t2 = k2 <= bias ? tMin : k2 >= bias + tMax ? tMax : k2 - bias;
      if (digit < t2) {
        break;
      }
      const baseMinusT = base - t2;
      if (w2 > floor(maxInt / baseMinusT)) {
        error("overflow");
      }
      w2 *= baseMinusT;
    }
    const out = output.length + 1;
    bias = adapt(i - oldi, out, oldi == 0);
    if (floor(i / out) > maxInt - n) {
      error("overflow");
    }
    n += floor(i / out);
    i %= out;
    output.splice(i++, 0, n);
  }
  return String.fromCodePoint(...output);
};
const encode = function(input) {
  const output = [];
  input = ucs2decode(input);
  const inputLength = input.length;
  let n = initialN;
  let delta2 = 0;
  let bias = initialBias;
  for (const currentValue of input) {
    if (currentValue < 128) {
      output.push(stringFromCharCode(currentValue));
    }
  }
  const basicLength = output.length;
  let handledCPCount = basicLength;
  if (basicLength) {
    output.push(delimiter);
  }
  while (handledCPCount < inputLength) {
    let m2 = maxInt;
    for (const currentValue of input) {
      if (currentValue >= n && currentValue < m2) {
        m2 = currentValue;
      }
    }
    const handledCPCountPlusOne = handledCPCount + 1;
    if (m2 - n > floor((maxInt - delta2) / handledCPCountPlusOne)) {
      error("overflow");
    }
    delta2 += (m2 - n) * handledCPCountPlusOne;
    n = m2;
    for (const currentValue of input) {
      if (currentValue < n && ++delta2 > maxInt) {
        error("overflow");
      }
      if (currentValue === n) {
        let q = delta2;
        for (let k2 = base; ; k2 += base) {
          const t2 = k2 <= bias ? tMin : k2 >= bias + tMax ? tMax : k2 - bias;
          if (q < t2) {
            break;
          }
          const qMinusT = q - t2;
          const baseMinusT = base - t2;
          output.push(
            stringFromCharCode(digitToBasic(t2 + qMinusT % baseMinusT, 0))
          );
          q = floor(qMinusT / baseMinusT);
        }
        output.push(stringFromCharCode(digitToBasic(q, 0)));
        bias = adapt(delta2, handledCPCountPlusOne, handledCPCount === basicLength);
        delta2 = 0;
        ++handledCPCount;
      }
    }
    ++delta2;
    ++n;
  }
  return output.join("");
};
const toUnicode = function(input) {
  return mapDomain(input, function(string) {
    return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;
  });
};
const toASCII = function(input) {
  return mapDomain(input, function(string) {
    return regexNonASCII.test(string) ? "xn--" + encode(string) : string;
  });
};
const punycode$1 = {
  /**
   * A string representing the current Punycode.js version number.
   * @memberOf punycode
   * @type String
   */
  "version": "2.1.0",
  /**
   * An object of methods to convert from JavaScript's internal character
   * representation (UCS-2) to Unicode code points, and back.
   * @see <https://mathiasbynens.be/notes/javascript-encoding>
   * @memberOf punycode
   * @type Object
   */
  "ucs2": {
    "decode": ucs2decode,
    "encode": ucs2encode
  },
  "decode": decode,
  "encode": encode,
  "toASCII": toASCII,
  "toUnicode": toUnicode
};
const punycode_es6 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  decode,
  default: punycode$1,
  encode,
  toASCII,
  toUnicode,
  ucs2decode,
  ucs2encode
}, Symbol.toStringTag, { value: "Module" }));
const require$$8 = /* @__PURE__ */ getAugmentedNamespace(punycode_es6);
var _default = {
  options: {
    html: false,
    // Enable HTML tags in source
    xhtmlOut: false,
    // Use '/' to close single tags (<br />)
    breaks: false,
    // Convert '\n' in paragraphs into <br>
    langPrefix: "language-",
    // CSS language prefix for fenced blocks
    linkify: false,
    // autoconvert URL-like texts to links
    // Enable some language-neutral replacements + quotes beautification
    typographer: false,
    // Double + single quotes replacement pairs, when typographer enabled,
    // and smartquotes on. Could be either a String or an Array.
    //
    // For example, you can use 'Â«Â»â€žâ€œ' for Russian, 'â€žâ€œâ€šâ€˜' for German,
    // and ['Â«\xA0', '\xA0Â»', 'â€¹\xA0', '\xA0â€º'] for French (including nbsp).
    quotes: "â€œâ€�â€˜â€™",
    /* â€œâ€�â€˜â€™ */
    // Highlighter function. Should return escaped HTML,
    // or '' if the source string is not changed and should be escaped externaly.
    // If result starts with <pre... internal wrapper is skipped.
    //
    // function (/*str, lang*/) { return ''; }
    //
    highlight: null,
    maxNesting: 100
    // Internal protection, recursion limit
  },
  components: {
    core: {},
    block: {},
    inline: {}
  }
};
var zero = {
  options: {
    html: false,
    // Enable HTML tags in source
    xhtmlOut: false,
    // Use '/' to close single tags (<br />)
    breaks: false,
    // Convert '\n' in paragraphs into <br>
    langPrefix: "language-",
    // CSS language prefix for fenced blocks
    linkify: false,
    // autoconvert URL-like texts to links
    // Enable some language-neutral replacements + quotes beautification
    typographer: false,
    // Double + single quotes replacement pairs, when typographer enabled,
    // and smartquotes on. Could be either a String or an Array.
    //
    // For example, you can use 'Â«Â»â€žâ€œ' for Russian, 'â€žâ€œâ€šâ€˜' for German,
    // and ['Â«\xA0', '\xA0Â»', 'â€¹\xA0', '\xA0â€º'] for French (including nbsp).
    quotes: "â€œâ€�â€˜â€™",
    /* â€œâ€�â€˜â€™ */
    // Highlighter function. Should return escaped HTML,
    // or '' if the source string is not changed and should be escaped externaly.
    // If result starts with <pre... internal wrapper is skipped.
    //
    // function (/*str, lang*/) { return ''; }
    //
    highlight: null,
    maxNesting: 20
    // Internal protection, recursion limit
  },
  components: {
    core: {
      rules: [
        "normalize",
        "block",
        "inline",
        "text_join"
      ]
    },
    block: {
      rules: [
        "paragraph"
      ]
    },
    inline: {
      rules: [
        "text"
      ],
      rules2: [
        "balance_pairs",
        "fragments_join"
      ]
    }
  }
};
var commonmark = {
  options: {
    html: true,
    // Enable HTML tags in source
    xhtmlOut: true,
    // Use '/' to close single tags (<br />)
    breaks: false,
    // Convert '\n' in paragraphs into <br>
    langPrefix: "language-",
    // CSS language prefix for fenced blocks
    linkify: false,
    // autoconvert URL-like texts to links
    // Enable some language-neutral replacements + quotes beautification
    typographer: false,
    // Double + single quotes replacement pairs, when typographer enabled,
    // and smartquotes on. Could be either a String or an Array.
    //
    // For example, you can use 'Â«Â»â€žâ€œ' for Russian, 'â€žâ€œâ€šâ€˜' for German,
    // and ['Â«\xA0', '\xA0Â»', 'â€¹\xA0', '\xA0â€º'] for French (including nbsp).
    quotes: "â€œâ€�â€˜â€™",
    /* â€œâ€�â€˜â€™ */
    // Highlighter function. Should return escaped HTML,
    // or '' if the source string is not changed and should be escaped externaly.
    // If result starts with <pre... internal wrapper is skipped.
    //
    // function (/*str, lang*/) { return ''; }
    //
    highlight: null,
    maxNesting: 20
    // Internal protection, recursion limit
  },
  components: {
    core: {
      rules: [
        "normalize",
        "block",
        "inline",
        "text_join"
      ]
    },
    block: {
      rules: [
        "blockquote",
        "code",
        "fence",
        "heading",
        "hr",
        "html_block",
        "lheading",
        "list",
        "reference",
        "paragraph"
      ]
    },
    inline: {
      rules: [
        "autolink",
        "backticks",
        "emphasis",
        "entity",
        "escape",
        "html_inline",
        "image",
        "link",
        "newline",
        "text"
      ],
      rules2: [
        "balance_pairs",
        "emphasis",
        "fragments_join"
      ]
    }
  }
};
var utils = utils$1;
var helpers = helpers$1;
var Renderer = renderer;
var ParserCore = parser_core;
var ParserBlock = parser_block;
var ParserInline = parser_inline;
var LinkifyIt = linkifyIt;
var mdurl = mdurl$1;
var punycode = require$$8;
var config$1 = {
  default: _default,
  zero,
  commonmark
};
var BAD_PROTO_RE = /^(vbscript|javascript|file|data):/;
var GOOD_DATA_RE = /^data:image\/(gif|png|jpeg|webp);/;
function validateLink(url2) {
  var str = url2.trim().toLowerCase();
  return BAD_PROTO_RE.test(str) ? GOOD_DATA_RE.test(str) ? true : false : true;
}
var RECODE_HOSTNAME_FOR = ["http:", "https:", "mailto:"];
function normalizeLink(url2) {
  var parsed = mdurl.parse(url2, true);
  if (parsed.hostname) {
    if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {
      try {
        parsed.hostname = punycode.toASCII(parsed.hostname);
      } catch (er) {
      }
    }
  }
  return mdurl.encode(mdurl.format(parsed));
}
function normalizeLinkText(url2) {
  var parsed = mdurl.parse(url2, true);
  if (parsed.hostname) {
    if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {
      try {
        parsed.hostname = punycode.toUnicode(parsed.hostname);
      } catch (er) {
      }
    }
  }
  return mdurl.decode(mdurl.format(parsed), mdurl.decode.defaultChars + "%");
}
function MarkdownIt$1(presetName, options2) {
  if (!(this instanceof MarkdownIt$1)) {
    return new MarkdownIt$1(presetName, options2);
  }
  if (!options2) {
    if (!utils.isString(presetName)) {
      options2 = presetName || {};
      presetName = "default";
    }
  }
  this.inline = new ParserInline();
  this.block = new ParserBlock();
  this.core = new ParserCore();
  this.renderer = new Renderer();
  this.linkify = new LinkifyIt();
  this.validateLink = validateLink;
  this.normalizeLink = normalizeLink;
  this.normalizeLinkText = normalizeLinkText;
  this.utils = utils;
  this.helpers = utils.assign({}, helpers);
  this.options = {};
  this.configure(presetName);
  if (options2) {
    this.set(options2);
  }
}
MarkdownIt$1.prototype.set = function(options2) {
  utils.assign(this.options, options2);
  return this;
};
MarkdownIt$1.prototype.configure = function(presets) {
  var self2 = this, presetName;
  if (utils.isString(presets)) {
    presetName = presets;
    presets = config$1[presetName];
    if (!presets) {
      throw new Error('Wrong `markdown-it` preset "' + presetName + '", check name');
    }
  }
  if (!presets) {
    throw new Error("Wrong `markdown-it` preset, can't be empty");
  }
  if (presets.options) {
    self2.set(presets.options);
  }
  if (presets.components) {
    Object.keys(presets.components).forEach(function(name2) {
      if (presets.components[name2].rules) {
        self2[name2].ruler.enableOnly(presets.components[name2].rules);
      }
      if (presets.components[name2].rules2) {
        self2[name2].ruler2.enableOnly(presets.components[name2].rules2);
      }
    });
  }
  return this;
};
MarkdownIt$1.prototype.enable = function(list3, ignoreInvalid) {
  var result = [];
  if (!Array.isArray(list3)) {
    list3 = [list3];
  }
  ["core", "block", "inline"].forEach(function(chain) {
    result = result.concat(this[chain].ruler.enable(list3, true));
  }, this);
  result = result.concat(this.inline.ruler2.enable(list3, true));
  var missed = list3.filter(function(name2) {
    return result.indexOf(name2) < 0;
  });
  if (missed.length && !ignoreInvalid) {
    throw new Error("MarkdownIt. Failed to enable unknown rule(s): " + missed);
  }
  return this;
};
MarkdownIt$1.prototype.disable = function(list3, ignoreInvalid) {
  var result = [];
  if (!Array.isArray(list3)) {
    list3 = [list3];
  }
  ["core", "block", "inline"].forEach(function(chain) {
    result = result.concat(this[chain].ruler.disable(list3, true));
  }, this);
  result = result.concat(this.inline.ruler2.disable(list3, true));
  var missed = list3.filter(function(name2) {
    return result.indexOf(name2) < 0;
  });
  if (missed.length && !ignoreInvalid) {
    throw new Error("MarkdownIt. Failed to disable unknown rule(s): " + missed);
  }
  return this;
};
MarkdownIt$1.prototype.use = function(plugin) {
  var args = [this].concat(Array.prototype.slice.call(arguments, 1));
  plugin.apply(plugin, args);
  return this;
};
MarkdownIt$1.prototype.parse = function(src, env2) {
  if (typeof src !== "string") {
    throw new Error("Input data should be a String");
  }
  var state = new this.core.State(src, this, env2);
  this.core.process(state);
  return state.tokens;
};
MarkdownIt$1.prototype.render = function(src, env2) {
  env2 = env2 || {};
  return this.renderer.render(this.parse(src, env2), this.options, env2);
};
MarkdownIt$1.prototype.parseInline = function(src, env2) {
  var state = new this.core.State(src, this, env2);
  state.inlineMode = true;
  this.core.process(state);
  return state.tokens;
};
MarkdownIt$1.prototype.renderInline = function(src, env2) {
  env2 = env2 || {};
  return this.renderer.render(this.parseInline(src, env2), this.options, env2);
};
var lib = MarkdownIt$1;
(function(module) {
  module.exports = lib;
})(markdownIt);
const MarkdownIt = /* @__PURE__ */ getDefaultExportFromCjs(markdownItExports);
let mapping = {};
const splitWithSpace = (s2) => s2 ? s2.split(" ") : [];
const toArray = (a2) => Array.isArray(a2) ? a2 : [a2];
function parseTokens(tokens) {
  tokens.forEach((token2) => {
    if (/(_open$|image|code_inline)/.test(token2.type) && mapping[token2.tag]) {
      const orig = splitWithSpace(token2.attrGet("class"));
      const addition = toArray(mapping[token2.tag]);
      token2.attrSet("class", [...orig, ...addition].join(" "));
    }
    if (token2.children) {
      parseTokens(token2.children);
    }
  });
}
function parseState(state) {
  parseTokens(state.tokens);
}
function markdownitTagToClass(md, _mapping) {
  mapping = _mapping || {};
  md.core.ruler.push("markdownit-tag-to-class", parseState);
}
var markdownItClass = markdownitTagToClass;
const defaultClasses = {
  h1: ["font-medium", "text-4xl", "mb-6"],
  h2: ["font-medium", "text-3xl", "mb-5"],
  h3: ["font-medium", "text-2xl", "mb-4"],
  h4: ["font-medium", "text-1xl", "mb-3"],
  h5: ["font-medium", "text-sm", "mb-3"],
  h6: ["font-medium", "text-xs", "mb-3"],
  p: ["my-3 first:mt-0 text-sm mb-4"],
  pre: ["rounded p-3 bg-white mb-2"],
  code: ["font-medium rounded text-sm px-[4px] py-[2px]"],
  a: ["text-blue-500", "hover:underline text-sm"],
  ul: ["list-disc pl-6 my-3 text-sm"],
  ol: ["list-decimal pl-6 my-3 text-sm"]
};
const buildClasses = (options2) => {
  const _classes = defaultClasses;
  const buildFlat = (value) => {
    if (lodashExports.isArray(value)) {
      return lodashExports.flatten(value).map((arrValue) => arrValue.split(" "));
    }
    return (value == null ? void 0 : value.split(" ")) ?? [];
  };
  if (options2.classes) {
    return lodashExports.mapValues(_classes, (defaultValue, key) => {
      const inputClasses = buildFlat(options2.classes[key]);
      if (options2.classes.overwrite)
        return lodashExports.flatten([...inputClasses]);
      return lodashExports.flatten([...buildFlat(defaultValue), ...inputClasses]);
    });
  }
  return _classes;
};
const useMarkdown = (target2, text3, options2 = {}) => {
  const normalizedOptions = {
    ...options2,
    openExternal: options2.openExternal ?? true
  };
  const classes = buildClasses(normalizedOptions);
  const md = new MarkdownIt({
    html: true,
    linkify: true,
    highlight(str) {
      return `<pre class="${classes.pre.join(" ")}"><code>${str}</code></pre>`;
    }
  });
  md.use(markdownItClass, classes);
  if (normalizedOptions.openExternal) {
    const open = useExternalLink();
    whenever(target2, () => {
      useEventListener(target2, "click", (e) => {
        const link4 = e.target.closest("a[href]");
        if (!link4) {
          return;
        }
        e.preventDefault();
        const url2 = link4.getAttribute("href");
        if (url2) {
          open(url2);
        }
      });
    });
  }
  return {
    markdown: computed(() => md.render(unref(text3), { sanitize: true }))
  };
};
const _hoisted_1$z = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$x = /* @__PURE__ */ createBaseVNode("path", {
  d: "M13 8C13 10.7614 10.7614 13 8 13C5.23858 13 3 10.7614 3 8C3 5.23858 5.23858 3 8 3H11M11 3L9 5M11 3L9 1",
  stroke: "#1B1E2E",
  class: "icon-dark",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$r = [
  _hoisted_2$x
];
function render$i(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$z, _hoisted_3$r);
}
const RestartIcon = { name: "cy-restart_x16", render: render$i };
const _hoisted_1$y = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$w = /* @__PURE__ */ createBaseVNode("path", {
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M2 8C2 4.68629 4.68629 2 8 2C11.3137 2 14 4.68629 14 8C14 11.3137 11.3137 14 8 14C4.68629 14 2 11.3137 2 8ZM8 0C3.58172 0 0 3.58172 0 8C0 12.4183 3.58172 16 8 16C12.4183 16 16 12.4183 16 8C16 3.58172 12.4183 0 8 0ZM9 5C9 4.44772 8.55228 4 8 4C7.44772 4 7 4.44772 7 5V8C7 8.55228 7.44772 9 8 9C8.55228 9 9 8.55228 9 8V5ZM8 12C8.55228 12 9 11.5523 9 11C9 10.4477 8.55228 10 8 10C7.44772 10 7 10.4477 7 11C7 11.5523 7.44772 12 8 12Z",
  fill: "#DB7903",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$q = [
  _hoisted_2$w
];
function render$h(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$y, _hoisted_3$q);
}
const ErrorOutlineIcon = { name: "cy-status-errored-outline_x16", render: render$h };
const _hoisted_1$x = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$v = /* @__PURE__ */ createBaseVNode("path", {
  d: "M2 14V2C2 1.44772 2.44772 1 3 1H13C13.5523 1 14 1.44772 14 2V14C14 14.5523 13.5523 15 13 15H3C2.44772 15 2 14.5523 2 14Z",
  fill: "#2E3247",
  class: "icon-light"
}, null, -1);
const _hoisted_3$p = /* @__PURE__ */ createBaseVNode("path", {
  d: "M5 8H8M5 5H11M5 11H10M13 1L3 1C2.44772 1 2 1.44772 2 2V14C2 14.5523 2.44772 15 3 15H13C13.5523 15 14 14.5523 14 14V2C14 1.44772 13.5523 1 13 1Z",
  stroke: "currentColor",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-dark"
}, null, -1);
const _hoisted_4$j = [
  _hoisted_2$v,
  _hoisted_3$p
];
function render$g(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$x, _hoisted_4$j);
}
const __unplugin_components_0$1 = { name: "cy-document-text_x16", render: render$g };
const _hoisted_1$w = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$u = /* @__PURE__ */ createBaseVNode("path", {
  d: "M3 6L6.5 9.5L3 13M9 13H13",
  stroke: "currentColor",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$o = [
  _hoisted_2$u
];
function render$f(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$w, _hoisted_3$o);
}
const __unplugin_components_1$1 = { name: "cy-technology-command-line_x16", render: render$f };
const _hoisted_1$v = {
  key: 0,
  class: "flex align-center justify-center"
};
const __default__$1 = {
  inheritAttrs: true
};
const _sfc_main$n = /* @__PURE__ */ defineComponent({
  ...__default__$1,
  __name: "Icon",
  props: {
    icon: null,
    iconClass: null
  },
  setup(__props) {
    return (_ctx, _cache) => {
      return __props.icon ? (openBlock(), createElementBlock("span", _hoisted_1$v, [
        (openBlock(), createBlock(resolveDynamicComponent(__props.icon), {
          class: normalizeClass(__props.iconClass)
        }, null, 8, ["class"]))
      ])) : createCommentVNode("", true);
    };
  }
});
const _hoisted_1$u = {
  width: "1em",
  height: "1em",
  preserveAspectRatio: "xMidYMid meet",
  viewBox: "0 0 256 254"
};
const _hoisted_2$t = ["id"];
const _hoisted_3$n = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#FFF",
  offset: "0%"
}, null, -1);
const _hoisted_4$i = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#FFF",
  "stop-opacity": "0",
  offset: "100%"
}, null, -1);
const _hoisted_5$d = [
  _hoisted_3$n,
  _hoisted_4$i
];
const _hoisted_6$8 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M180.828 252.605a15.872 15.872 0 0 0 12.65-.486l52.501-25.262a15.94 15.94 0 0 0 9.025-14.364V41.197a15.939 15.939 0 0 0-9.025-14.363l-52.5-25.263a15.877 15.877 0 0 0-18.115 3.084L74.857 96.35l-43.78-33.232a10.614 10.614 0 0 0-13.56.603L3.476 76.494c-4.63 4.211-4.635 11.495-.012 15.713l37.967 34.638l-37.967 34.637c-4.623 4.219-4.618 11.502.012 15.714l14.041 12.772a10.614 10.614 0 0 0 13.56.604l43.78-33.233l100.507 91.695a15.853 15.853 0 0 0 5.464 3.571zm10.464-183.649l-76.262 57.889l76.262 57.888V68.956z",
  id: "ssvg-id-visual-studio-codea"
}, null, -1);
const _hoisted_7$5 = ["id"];
const _hoisted_8$3 = /* @__PURE__ */ createBaseVNode("use", { "xlink:href": "#ssvg-id-visual-studio-codea" }, null, -1);
const _hoisted_9$4 = [
  _hoisted_8$3
];
const _hoisted_10$2 = ["mask"];
const _hoisted_11$1 = ["mask"];
const _hoisted_12$1 = ["mask"];
const _hoisted_13$1 = ["fill", "mask"];
function render$e(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$u, [
    createBaseVNode("defs", null, [
      createBaseVNode("linearGradient", {
        x1: "50%",
        y1: "0%",
        x2: "50%",
        y2: "100%",
        id: _ctx.idMap["ssvg-id-visual-studio-codec"]
      }, _hoisted_5$d, 8, _hoisted_2$t),
      _hoisted_6$8
    ]),
    createBaseVNode("mask", {
      id: _ctx.idMap["ssvg-id-visual-studio-codeb"],
      fill: "#fff"
    }, _hoisted_9$4, 8, _hoisted_7$5),
    createBaseVNode("path", {
      d: "M246.135 26.873L193.593 1.575a15.885 15.885 0 0 0-18.123 3.08L3.466 161.482c-4.626 4.219-4.62 11.502.012 15.714l14.05 12.772a10.625 10.625 0 0 0 13.569.604L238.229 33.436c6.949-5.271 16.93-.315 16.93 8.407v-.61a15.938 15.938 0 0 0-9.024-14.36z",
      fill: "#0065A9",
      mask: "url(#" + _ctx.idMap["ssvg-id-visual-studio-codeb"] + ")"
    }, null, 8, _hoisted_10$2),
    createBaseVNode("path", {
      d: "M246.135 226.816l-52.542 25.298a15.887 15.887 0 0 1-18.123-3.08L3.466 92.207c-4.626-4.218-4.62-11.502.012-15.713l14.05-12.773a10.625 10.625 0 0 1 13.569-.603l207.132 157.135c6.949 5.271 16.93.315 16.93-8.408v.611a15.939 15.939 0 0 1-9.024 14.36z",
      fill: "#007ACC",
      mask: "url(#" + _ctx.idMap["ssvg-id-visual-studio-codeb"] + ")"
    }, null, 8, _hoisted_11$1),
    createBaseVNode("path", {
      d: "M193.428 252.134a15.892 15.892 0 0 1-18.125-3.083c5.881 5.88 15.938 1.715 15.938-6.603V11.273c0-8.318-10.057-12.483-15.938-6.602a15.892 15.892 0 0 1 18.125-3.084l52.533 25.263a15.937 15.937 0 0 1 9.03 14.363V212.51c0 6.125-3.51 11.709-9.03 14.363l-52.533 25.262z",
      fill: "#1F9CF0",
      mask: "url(#" + _ctx.idMap["ssvg-id-visual-studio-codeb"] + ")"
    }, null, 8, _hoisted_12$1),
    createBaseVNode("path", {
      d: "M180.828 252.605a15.874 15.874 0 0 0 12.65-.486l52.5-25.263a15.938 15.938 0 0 0 9.026-14.363V41.197a15.939 15.939 0 0 0-9.025-14.363L193.477 1.57a15.877 15.877 0 0 0-18.114 3.084L74.857 96.35l-43.78-33.232a10.614 10.614 0 0 0-13.56.603L3.476 76.494c-4.63 4.211-4.635 11.495-.012 15.713l37.967 34.638l-37.967 34.637c-4.623 4.219-4.618 11.502.012 15.714l14.041 12.772a10.614 10.614 0 0 0 13.56.604l43.78-33.233l100.506 91.695a15.857 15.857 0 0 0 5.465 3.571zm10.464-183.65l-76.262 57.89l76.262 57.888V68.956z",
      "fill-opacity": ".25",
      fill: "url(#" + _ctx.idMap["ssvg-id-visual-studio-codec"] + ")",
      mask: "url(#" + _ctx.idMap["ssvg-id-visual-studio-codeb"] + ")"
    }, null, 8, _hoisted_13$1)
  ]);
}
const VSCode = { name: "logos-visual-studio-code", render: render$e, data() {
  const __randId = () => Math.random().toString(36).substr(2, 10);
  const idMap = { "ssvg-id-visual-studio-codeb": "uicons-" + __randId(), "ssvg-id-visual-studio-codec": "uicons-" + __randId() };
  return { idMap };
} };
const _hoisted_1$t = {
  width: "1em",
  height: "1em",
  preserveAspectRatio: "xMidYMid meet",
  viewBox: "0 0 256 256"
};
const _hoisted_2$s = /* @__PURE__ */ createBaseVNode("circle", {
  fill: "#60B57D",
  cx: "128.002",
  cy: "128.002",
  r: "128.002"
}, null, -1);
const _hoisted_3$m = /* @__PURE__ */ createBaseVNode("path", {
  d: "M117.82 59.143a3.605 3.605 0 0 1-4.515 5.62c-9.397-7.547-17.224-10.04-22.051-7.575c-5.618 2.865-7.797 12.083-6.663 24.946l.17 1.737c.096.879.206 1.773.33 2.682l.269 1.839c.334 2.15.745 4.376 1.235 6.67c6.767-1.05 14.05-1.735 21.698-2.02a197.699 197.699 0 0 1 10.079-11.969l1.698-1.83c4.246-4.513 8.505-8.553 12.696-12.049l1.673-1.37c15.295-12.285 29.531-17.146 38.738-11.168c8.02 5.203 10.17 16.989 7.19 32.783a3.605 3.605 0 1 1-7.084-1.336c2.495-13.227.852-22.232-4.03-25.4c-6.348-4.12-18.142.623-31.44 11.701l-1.484 1.257a127.43 127.43 0 0 0-2.246 1.982l-1.51 1.383a149.716 149.716 0 0 0-4.571 4.446l-1.535 1.577c-.256.266-.512.535-.769.805l-1.54 1.647l-1.54 1.691l-1.541 1.736c-.514.586-1.028 1.179-1.54 1.78l-1.54 1.822l-.299.363c3.586.019 7.235.123 10.932.315l1.435.08l2.852.182c2.367.166 4.707.366 7.017.599l2.758.295c.457.052.913.105 1.368.159l2.711.341c2.247.297 4.46.625 6.635.984l2.592.444l2.555.473l2.515.501c8.32 1.716 15.97 3.888 22.71 6.434l1.996.775c17.704 7.074 28.614 16.812 28.054 27.576c-.464 8.898-8.44 16.244-21.81 21.507a3.605 3.605 0 1 1-2.64-6.708c11.024-4.34 16.971-9.817 17.25-15.174c.358-6.858-7.848-13.951-21.507-19.672l-1.7-.694c-1.15-.458-2.337-.906-3.557-1.343l-1.856-.649c-.626-.213-1.261-.424-1.904-.632l-1.954-.615l-2-.598c-.337-.098-.676-.195-1.017-.292l-2.068-.57c-.348-.093-.698-.186-1.05-.278l-2.133-.54a174.737 174.737 0 0 0-6.645-1.498l-2.293-.456l-1.16-.22l-2.348-.42l-2.382-.398l-1.204-.19l-2.432-.36c-.816-.116-1.637-.227-2.463-.334l-2.495-.309l-2.523-.282a217.085 217.085 0 0 0-3.837-.37l-2.59-.213c-.868-.066-1.74-.126-2.616-.182l-2.639-.154l-2.64-.121l-2.62-.09a217.035 217.035 0 0 0-8.993-.068l-2.06.038l-.81 1.074a213.91 213.91 0 0 0-1.505 2.045l-1.496 2.082a220.968 220.968 0 0 0-6.566 9.801l-1.388 2.224a217.303 217.303 0 0 0-4.232 7.177c.123.302.248.605.375.908l.98 2.314c.166.387.334.774.504 1.162l1.036 2.331l1.074 2.342l1.112 2.349l1.15 2.356l1.186 2.362l1.215 2.348l1.233 2.314l1.249 2.28l.63 1.126l1.272 2.227c.426.736.855 1.466 1.285 2.19l1.298 2.152c.435.71.871 1.415 1.31 2.113l1.32 2.075l1.329 2.034a192.004 192.004 0 0 0 3.356 4.904l1.353 1.886a174.77 174.77 0 0 0 2.717 3.64l1.362 1.75l1.363 1.705c.227.28.455.558.682.834l1.362 1.632l1.36 1.583a129.105 129.105 0 0 0 4.06 4.446l1.342 1.377l1.334 1.324a99.254 99.254 0 0 0 1.985 1.884l1.31 1.186a82.252 82.252 0 0 0 1.945 1.673l1.28 1.042c8.703 6.925 16.414 9.722 21.534 7.11c4.807-2.45 7.102-9.608 6.932-19.757l-.043-1.545a72.96 72.96 0 0 0-.081-1.588l-.118-1.63a85.54 85.54 0 0 0-.154-1.672l-.192-1.712a97.035 97.035 0 0 0-.109-.87l-.246-1.769l-.284-1.805l-.32-1.84a127.447 127.447 0 0 0-.959-4.747l-.448-1.954l-.484-1.983c-.084-.333-.17-.667-.256-1.002l-.539-2.025l-.575-2.052l-.302-1.035l-.63-2.088l-.666-2.111c-.342-1.062-.698-2.131-1.067-3.208l-.757-2.163l-.793-2.182a199.84 199.84 0 0 0-1.694-4.415l-.902-2.23l-.937-2.243l-.482-1.126l-.991-2.261l-1.028-2.272c-.174-.379-.35-.759-.527-1.139l-1.08-2.284a220.62 220.62 0 0 0-.555-1.145a3.605 3.605 0 1 1 6.48-3.159l1.196 2.49c.392.828.778 1.656 1.156 2.482l1.118 2.474a220.378 220.378 0 0 1 3.112 7.356l.957 2.426c.157.403.311.806.464 1.208l.896 2.403c.146.399.29.797.433 1.195l.835 2.376a184.854 184.854 0 0 1 1.545 4.694l.71 2.315c8.5 28.409 7.41 51.515-5.34 58.016c-10.313 5.26-24.936-2.046-39.655-17.456l-1.523-1.622a137.51 137.51 0 0 1-3.044-3.415l-1.518-1.79c-4.046-4.844-8.055-10.257-11.938-16.147l-1.45-2.231a225.959 225.959 0 0 1-10.398-18.043l-.657-1.279a238.72 238.72 0 0 1-1.288-2.564l-1.247-2.559a230.326 230.326 0 0 1-2.826-6.112l-.582 1.151c-.18.36-.357.72-.533 1.08l-1.038 2.147l-.997 2.132l-.958 2.114c-.156.351-.31.702-.463 1.051l-.896 2.087c-.146.346-.29.69-.433 1.035l-.836 2.056c-.136.34-.27.68-.402 1.019l-.774 2.02c-.125.335-.249.669-.37 1.002l-.712 1.983l-.67 1.956c-.325.97-.633 1.931-.926 2.88l-.565 1.883l-.522 1.851c-.083.306-.165.61-.245.913l-.458 1.8a92.343 92.343 0 0 0-.956 4.344l-.307 1.67c-2.04 11.83-.71 20.554 4.345 23.835c5.092 3.303 14.533.79 26.183-7.62a3.605 3.605 0 1 1 4.22 5.845c-13.807 9.968-26.013 13.216-34.327 7.822c-10.046-6.519-10.752-23.757-4.066-45.202l.694-2.158c.478-1.448.989-2.913 1.532-4.395l.838-2.233a172.466 172.466 0 0 1 3.825-9.143l1.072-2.33l1.117-2.346a208.194 208.194 0 0 1 4.582-8.897c-.216-.552-.43-1.103-.641-1.653l-.933-2.475a188.692 188.692 0 0 1-3.296-9.713l-.714-2.374a162.63 162.63 0 0 1-1.24-4.466c-.445.089-.885.18-1.322.272l-1.96.431l-1.913.453c-.315.077-.627.155-.938.234l-1.84.483l-1.787.504c-.588.171-1.167.346-1.736.523l-1.683.542c-.552.184-1.095.371-1.628.561l-1.572.579c-10.803 4.113-17.383 9.51-17.69 15.388c-.279 5.358 5.068 11.423 15.584 16.883a3.605 3.605 0 1 1-3.322 6.398C46.567 140.033 39.395 131.898 39.86 123c.645-12.406 16.305-21.875 39.597-26.656c-4.714-22.525-2.315-40.051 8.52-45.577c8.009-4.088 18.472-.757 29.842 8.377zm19.753 67.051c1.196 5.536-2.322 10.99-7.857 12.188c-5.536 1.196-10.99-2.322-12.188-7.858c-1.194-5.535 2.322-10.989 7.858-12.187c5.535-1.196 10.989 2.322 12.187 7.857zm-34.898-25.606l-.65.045c-.497.036-.992.073-1.484.113l-2.345.202l-2.31.228c-.382.04-.762.082-1.141.124l-2.256.267l-1.113.143l-2.198.304l-.872.133l.308 1.151a167.326 167.326 0 0 0 1.568 5.342l.694 2.18l.362 1.1l.752 2.213c.207.597.418 1.196.633 1.798a238.568 238.568 0 0 1 3.54-5.705l.78-1.208a234.986 234.986 0 0 1 5.732-8.43z",
  fill: "#FFF"
}, null, -1);
const _hoisted_4$h = [
  _hoisted_2$s,
  _hoisted_3$m
];
function render$d(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$t, _hoisted_4$h);
}
const Atom$1 = { name: "logos-atom-icon", render: render$d };
const _hoisted_1$s = {
  width: "1em",
  height: "1em",
  preserveAspectRatio: "xMidYMid meet",
  viewBox: "0 0 256 256"
};
const _hoisted_2$r = ["id"];
const _hoisted_3$l = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#00CDD7",
  offset: "28%"
}, null, -1);
const _hoisted_4$g = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#2086D7",
  offset: "94%"
}, null, -1);
const _hoisted_5$c = [
  _hoisted_3$l,
  _hoisted_4$g
];
const _hoisted_6$7 = ["id"];
const _hoisted_7$4 = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#FFF045",
  offset: "14%"
}, null, -1);
const _hoisted_8$2 = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#00CDD7",
  offset: "37%"
}, null, -1);
const _hoisted_9$3 = [
  _hoisted_7$4,
  _hoisted_8$2
];
const _hoisted_10$1 = ["id"];
const _hoisted_11 = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#00CDD7",
  offset: "28%"
}, null, -1);
const _hoisted_12 = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#2086D7",
  offset: "94%"
}, null, -1);
const _hoisted_13 = [
  _hoisted_11,
  _hoisted_12
];
const _hoisted_14 = ["fill"];
const _hoisted_15 = ["fill"];
const _hoisted_16 = ["fill"];
const _hoisted_17 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M48 48h160v160H48z",
  fill: "#000"
}, null, -1);
const _hoisted_18 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M63.2 178h60v10h-60v-10zm78.4-52.4l8.4-10.4c6 4.8 12 8 19.6 8c6 0 9.6-2.4 9.6-6.4c0-3.6-2.4-5.6-13.2-8.4c-13.2-3.6-21.6-7.2-21.6-20.4v-.4c0-12 9.6-20 22.8-20a39.16 39.16 0 0 1 24.4 8.4L184 87.2a30.48 30.48 0 0 0-16.8-6.4c-5.2 0-8.4 2.4-8.4 6c0 4.4 2.8 6 14 8.8c13.2 3.6 20.8 8.4 20.8 20c0 13.2-10 20.8-24 20.8a46.12 46.12 0 0 1-28-10.8zm-12.8-56.8l-10 38.4l-11.2-38.4H96.4l-11.2 38.4l-10-38.4H59.6l19.2 66.4h12.4L102 96.8l10.8 38.4h12.4l19.2-66.4h-15.6z",
  fill: "#FFF"
}, null, -1);
function render$c(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$s, [
    createBaseVNode("defs", null, [
      createBaseVNode("linearGradient", {
        x1: "41.703%",
        y1: "1.925%",
        x2: "71.876%",
        y2: "95.235%",
        id: _ctx.idMap["ssvg-id-webstorma"]
      }, _hoisted_5$c, 8, _hoisted_2$r),
      createBaseVNode("linearGradient", {
        x1: "22.489%",
        y1: "15.127%",
        x2: "82.877%",
        y2: "84.763%",
        id: _ctx.idMap["ssvg-id-webstormb"]
      }, _hoisted_9$3, 8, _hoisted_6$7),
      createBaseVNode("linearGradient", {
        x1: "11171%",
        y1: "-27691.798%",
        x2: "11907%",
        y2: "-28759.626%",
        id: _ctx.idMap["ssvg-id-webstormc"]
      }, _hoisted_13, 8, _hoisted_10$1)
    ]),
    createBaseVNode("path", {
      fill: "url(#" + _ctx.idMap["ssvg-id-webstorma"] + ")",
      d: "M34.4 231.2L0 26.8L64 .4l40.4 24l37.6-20l77.6 30L176 256z"
    }, null, 8, _hoisted_14),
    createBaseVNode("path", {
      fill: "url(#" + _ctx.idMap["ssvg-id-webstormb"] + ")",
      d: "M256 86.8L222.8 5.2L163.2 0L70.4 88.8l24.8 114.8L142 236l114-67.6l-28-52.4z"
    }, null, 8, _hoisted_15),
    createBaseVNode("path", {
      fill: "url(#" + _ctx.idMap["ssvg-id-webstormc"] + ")",
      d: "M204.8 74.4L228 116l28-29.2L235.6 36z"
    }, null, 8, _hoisted_16),
    _hoisted_17,
    _hoisted_18
  ]);
}
const Webstorm = { name: "logos-webstorm", render: render$c, data() {
  const __randId = () => Math.random().toString(36).substr(2, 10);
  const idMap = { "ssvg-id-webstorma": "uicons-" + __randId(), "ssvg-id-webstormb": "uicons-" + __randId(), "ssvg-id-webstormc": "uicons-" + __randId() };
  return { idMap };
} };
const _hoisted_1$r = {
  width: "1em",
  height: "1em",
  preserveAspectRatio: "xMidYMid meet",
  viewBox: "0 0 256 257"
};
const _hoisted_2$q = /* @__PURE__ */ createStaticVNode('<path d="M128.286 1.952L1.945 127.885L128.286 254.4l125.761-126.515L128.286 1.952" fill="#019833"></path><path d="M128.264 13.516V2.885L2.774 127.908h10.753L128.264 13.516" fill="#66FE98"></path><path d="M128.264 13.516V2.885l125.88 125.023h-11.636L128.264 13.516" fill="#45FE02"></path><path d="M128.264 242.836v11.769L2.774 127.908h10.753l114.737 114.928" fill="#017D17"></path><path d="M128.264 242.836v11.769l125.88-126.697h-11.636L128.264 242.836" fill="#005D04"></path><path d="M65.226 230.591H40.9l-9.5-9.258V44.55h-7.54l-6.455-6.464V18.325l6.687-7.253h85.075l7.649 7.658v18.756l-6.356 7.747h-6.428v59.758l60.487-59.758h-3.377l-7.035-7.587V17.758l6.912-6.345h85.872l6.796 6.805v18.81L65.226 230.591" fill="#000"></path><path d="M128.264 256.342L0 127.908L128.264 0L256 127.908L128.264 256.342zM3.929 127.908L128.264 252.41l123.805-124.502L128.264 3.935L3.929 127.908z" fill="#000"></path><path d="M108.075 22.742l3.779-2.441l-3.861-4.008H26.156l-4.158 4.164v15.75l4.61 4.616l2.199-4.616l-2.892-2.897V22.207l2.169-1.931l77.264.095l2.727 2.371" fill="#FEFEFE"></path><path d="M41.458 35.833v184.334l2.592 2.468l-2.077 3.925l-5.451-5.369V40.612l4.936-4.779" fill="#FEFEFE"></path><path d="M28.236 35.833l-1.628 4.99h9.886l5.719-4.99H28.236" fill="gray"></path><path d="M166.531 35.897l-3.457-2.442v-9.896l3.616-3.621h75.449l2.893 3.862l4.117-3.249l-4.238-3.872h-81.114l-4.038 4.043v15.871l4.252 3.848m-65.615 76.31l-7.879 19.144l88.948-89.309l-.435-10.804l-80.634 80.969" fill="#FEFEFE"></path><path d="M107.897 22.671l3.957-2.37v15.532l-4.517 4.523h-8.778l-.163 76.395l-7.849 19.1V35.833h14.659l2.727-2.219l-.036-10.943" fill="gray"></path><path d="M244.764 22.722l4.385-2.171v14.183L62.408 226.56H41.973l1.994-3.77l15.695.001L244.791 31.379l-.027-8.657" fill="gray"></path><path d="M179.03 35.782l-4.548 4.569l-10.471.09l2.557-4.59l12.462-.069" fill="gray"></path><path d="M165.973 19.79l-2.89 2.893v10.624l2.531 2.534h13.372v10.265l-88.46 89.783V35.968h14.701l3.016-3.02V22.197l-2.784-2.154H28.093l-2.531 2.535V33.56l2.573 2.577h13.457v184.002l2.531 2.534h15.292L244.794 31.131v-8.448l-2.89-2.893h-75.931" fill="#CCC"></path><path d="M59.519 222.918H44.022l-2.674-2.678V36.381H28.034l-2.716-2.72V22.476l2.674-2.677h77.551l2.945 2.278v10.972l-3.159 3.163H90.77v99.081l87.972-89.288v-9.919h-13.229l-2.674-2.678V22.582l3.032-3.037h76.134l3.033 3.037v8.648l-.068.071L59.519 222.918zm-15.294-.489h15.087L244.55 31.033v-8.249l-2.747-2.75h-75.729l-2.747 2.75v10.422l2.388 2.391h13.516v10.609l-.07.071l-88.879 90.208V35.724h14.844l2.873-2.878V22.317l-2.623-2.03H28.194l-2.388 2.392v10.78l2.431 2.434h13.599v184.144l2.389 2.392z" fill="gray"></path><path d="M134.566 143.819a.834.834 0 0 0-.38.19l-3.585 3.083a.84.84 0 0 0-.232.359l-3.586 10.054a.835.835 0 0 0 .19.866l2.742 2.745a.835.835 0 0 0 .591.233h11.073a.83.83 0 0 0 .59-.233l2.89-2.914c.1-.1.172-.224.211-.359l3.08-10.582a.835.835 0 0 0-.211-.823l-2.384-2.387a.827.827 0 0 0-.59-.232h-10.23a.796.796 0 0 0-.169 0zm-20.29 28.343a.833.833 0 0 0-.633.613l-1.371 5.449a.833.833 0 0 0 .801 1.035h6.518l-16.157 46.19a.833.833 0 0 0 .781 1.099h23.517a.834.834 0 0 0 .802-.571l1.54-4.963a.834.834 0 0 0-.802-1.077h-5.315l15.988-46.676a.833.833 0 0 0-.781-1.099h-24.72a.943.943 0 0 0-.168 0zm74.835.169a.835.835 0 0 0-.465.275l-4.893 5.533h-7.783l-5.189-5.385a.828.828 0 0 0-.59-.254h-18.582a.832.832 0 0 0-.781.549l-1.708 5.112a.834.834 0 0 0 .78 1.098h4.978l-15.482 45.683a.835.835 0 0 0 .781 1.099h19.784a.833.833 0 0 0 .781-.549l1.518-4.457a.833.833 0 0 0-.78-1.098h-3.459l9.871-31.111h17.865l-11.263 36.138a.832.832 0 0 0 .801 1.077h19.088a.834.834 0 0 0 .76-.507l1.708-4.098a.832.832 0 0 0-.759-1.14h-3.459l10.04-31.639h17l-11.432 36.307a.833.833 0 0 0 .802 1.077h20.965a.835.835 0 0 0 .781-.528l1.708-4.457a.833.833 0 0 0-.78-1.119h-4.156l12.635-41.079a.836.836 0 0 0-.127-.761l-3.923-5.28a.832.832 0 0 0-.675-.317h-14.996a.829.829 0 0 0-.612.254l-4.725 5.195h-8.268l-4.893-5.364a.83.83 0 0 0-.612-.254h-12.086a.943.943 0 0 0-.168 0z" fill="#CCC"></path><path d="M128.359 162.524c.523.504 1.207.78 1.901.78l.046-.001h11.039c.742.023 1.444-.263 2.013-.81l2.883-2.909c.334-.334.579-.751.706-1.195l3.079-10.58a2.785 2.785 0 0 0-.705-2.752l-2.409-2.413a2.713 2.713 0 0 0-1.947-.78h-10.16a2.756 2.756 0 0 0-.436.01l-.205.032c-.47.099-.909.318-1.252.62l-3.586 3.084l-.041.037c-.349.318-.612.72-.764 1.167l-3.578 10.031a2.81 2.81 0 0 0 .647 2.907l2.769 2.772zm16.154-16.751l1.575 1.577l-2.816 9.676l-2.346 2.368l-10.168.001l-1.897-1.9l3.257-9.13l3.014-2.592h9.381z" fill="#000"></path><path d="M241.638 176.931l-3.923-5.28l-.035-.045a2.792 2.792 0 0 0-2.225-1.06h-14.948a2.763 2.763 0 0 0-2.049.848l-4.184 4.601h-6.541l-4.312-4.727l-.04-.043a2.818 2.818 0 0 0-2.016-.848h-12.016a2.759 2.759 0 0 0-.436.01l-.202.031a2.78 2.78 0 0 0-1.529.893l-4.31 4.874h-6.071l-4.615-4.79a2.81 2.81 0 0 0-1.995-.849h-18.588a2.796 2.796 0 0 0-2.612 1.837l-1.724 5.155a2.792 2.792 0 0 0 2.633 3.675h2.252l-14.61 43.11a2.794 2.794 0 0 0 1.757 3.528c.277.092.565.141.878.144h19.79a2.807 2.807 0 0 0 2.625-1.873l1.522-4.466a2.793 2.793 0 0 0-2.634-3.674h-.789l8.631-27.201H183.1l-10.476 33.611a2.791 2.791 0 0 0 1.847 3.48a3.1 3.1 0 0 0 .824.123H194.4a2.79 2.79 0 0 0 2.547-1.709l1.722-4.13a2.79 2.79 0 0 0-2.577-3.815h-.788l8.799-27.729h12.905l-10.637 33.782a2.792 2.792 0 0 0 2.657 3.601H229.995a2.817 2.817 0 0 0 2.619-1.783l1.719-4.485a2.791 2.791 0 0 0-2.616-3.745h-1.51l11.847-38.518a2.788 2.788 0 0 0-.416-2.533zm-16.723 44.96h5.169l-.842 2.195h-18.676l11.772-37.383h-21.096l-11.28 35.548h4.432l-.765 1.835h-16.815l11.599-37.214h-21.952l-11.111 35.019h4.554l-.748 2.195H141.75l15.854-46.782h-6.137l.952-2.849h17.287l5.433 5.639h9.495l5.135-5.808l11.114-.001l5.124 5.619h9.996l4.955-5.449h13.97l3.236 4.356l-13.249 43.08z" fill="#000"></path><path d="M130.096 218.105a3.01 3.01 0 0 0-.824-.123h-2.58l15.106-44.099a2.792 2.792 0 0 0-2.634-3.675h-24.65a2.771 2.771 0 0 0-.437.01l-.213.034a2.769 2.769 0 0 0-2.117 2.046l-1.372 5.454a2.794 2.794 0 0 0 2.034 3.38c.212.052.431.08.664.081h3.763l-15.255 43.615a2.792 2.792 0 0 0 2.634 3.674h23.53c1.204 0 2.263-.763 2.656-1.946l1.542-4.971a2.791 2.791 0 0 0-1.847-3.48zm-24.292 6.488l16.541-47.289h-7.826l.802-3.187h22.264l-16.364 47.774h6.534l-.838 2.702h-21.113z" fill="#000"></path>', 20);
const _hoisted_22 = [
  _hoisted_2$q
];
function render$b(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$r, _hoisted_22);
}
const Vim = { name: "logos-vim", render: render$b };
const _hoisted_1$q = {
  width: "1em",
  height: "1em",
  preserveAspectRatio: "xMidYMid meet",
  viewBox: "0 0 256 332"
};
const _hoisted_2$p = ["id"];
const _hoisted_3$k = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#FF9700",
  offset: "0%"
}, null, -1);
const _hoisted_4$f = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#F48E00",
  offset: "53%"
}, null, -1);
const _hoisted_5$b = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#D06F00",
  offset: "100%"
}, null, -1);
const _hoisted_6$6 = [
  _hoisted_3$k,
  _hoisted_4$f,
  _hoisted_5$b
];
const _hoisted_7$3 = ["fill"];
const _hoisted_8$1 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M0 164.291c0 3.887 2.865 7.95 6.397 9.071l242.53 76.902c3.531 1.12 6.397-1.127 6.397-5.007V166.66c0-3.88-2.866-7.944-6.397-9.064L6.397 80.694C2.865 79.574 0 81.814 0 85.7v78.59z",
  fill: "#FF9800"
}, null, -1);
const _hoisted_9$2 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M255.288 5.302c0-3.886-2.872-6.135-6.397-5.014L6.397 77.176C2.865 78.296 0 82.36 0 86.247v78.59c0 3.887 2.865 6.128 6.397 5.014l242.494-76.895c3.525-1.12 6.397-5.184 6.397-9.064V5.302z",
  fill: "#FF9800"
}, null, -1);
function render$a(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$q, [
    createBaseVNode("defs", null, [
      createBaseVNode("linearGradient", {
        x1: "55.117%",
        y1: "58.68%",
        x2: "63.68%",
        y2: "39.597%",
        id: _ctx.idMap["ssvg-id-sublimetext-icona"]
      }, _hoisted_6$6, 8, _hoisted_2$p)
    ]),
    createBaseVNode("path", {
      d: "M255.288 166.795c0-3.887-2.872-6.128-6.397-5.015L6.397 238.675C2.865 239.796 0 243.86 0 247.74v78.59c0 3.887 2.865 6.135 6.397 5.015l242.494-76.888c3.525-1.12 6.397-5.185 6.397-9.071v-78.59z",
      fill: "url(#" + _ctx.idMap["ssvg-id-sublimetext-icona"] + ")"
    }, null, 8, _hoisted_7$3),
    _hoisted_8$1,
    _hoisted_9$2
  ]);
}
const Sublime = { name: "logos-sublimetext-icon", render: render$a, data() {
  const __randId = () => Math.random().toString(36).substr(2, 10);
  const idMap = { "ssvg-id-sublimetext-icona": "uicons-" + __randId() };
  return { idMap };
} };
const _hoisted_1$p = {
  width: "1em",
  height: "1em",
  preserveAspectRatio: "xMidYMid meet",
  viewBox: "0 0 24 24"
};
const _hoisted_2$o = /* @__PURE__ */ createBaseVNode("path", {
  d: "M4 6h16v10H4m16 2a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4c-1.11 0-2 .89-2 2v10a2 2 0 0 0 2 2H0v2h24v-2h-4z",
  fill: "currentColor"
}, null, -1);
const _hoisted_3$j = [
  _hoisted_2$o
];
function render$9(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$p, _hoisted_3$j);
}
const Computer = { name: "mdi-computer", render: render$9 };
const _hoisted_1$o = {
  width: "1em",
  height: "1em",
  preserveAspectRatio: "xMidYMid meet",
  viewBox: "0 0 256 216"
};
const _hoisted_2$n = /* @__PURE__ */ createStaticVNode('<path d="M255.568 162.465a9.062 9.062 0 0 0-.232-.583c.087-2.236-.577-4.31-1.958-6.068c-1.773-2.259-4.582-3.829-8.506-4.742a91.355 91.355 0 0 1 1.795-.535l4.548-3.087c.806-.547 1.005-1.515.89-2.602c-.351-3.302-3.5-5.582-6.797-5.187c-5.338.639-13.694 1.68-15.479 2.127l-6.34-2.407a11.62 11.62 0 0 0-6.659-.486a88.29 88.29 0 0 0-9.042 2.527c2.708-15.206 9.729-51.155 19.705-77.002l.069-.191c9.393-28.387 10.518-46.95 3.439-56.749C227.446 2.56 222.07.065 215.02.065c-10.075.291-21.764 19.619-21.764 19.619l-2.083 4.283l-1.274 1.273l-1.273-1.62l-4.014 4.593c-.03.052-2.973 5.16-6.897 9.515c-1.748 1.224-2.901 1.519-3.572 1.544c-4.047.15-4.328-.775-4.563-1.518c-.256-.81-.854-2.705-2.98-3.467c-1.319-.472-2.782-.286-4.013.513c-.672.437-1.411 1.07-2.774 3.345c-.084.018-.165.055-.249.078c1.2-2.962 2.234-6.226 3.081-9.784l-.066-1.733c-.144-3.826-4.901-5.495-7.405-2.599l-4.917 5.685c-1.166 1.513-2.197 2.85-3.124 3.977c-.727.342-1.508.522-2.503.588c-.31.02-.602.042-.88.064c-2.13.165-2.307.178-4.234-1.314c-2.969-2.296-8.009-7.389-17.502-17.24c-9.215-9.563-17.332-14.08-24.841-13.875c-5.364.162-10.086 2.696-14.43 7.747l-.141.001C79.06 5.47 73.396 0 66.334 0l-.149.001c-3.492.037-7.223 2.315-12.448 7.607c-3.279 2.616-6.637 6.338-9.886 9.94c-1.245 1.38-2.424 2.687-3.523 3.844c-3.129 2.449-5.732 3.753-7.539 3.774c-.959.002-3.886.044-6.647-8.696l-3.52-11.144l-3.152 7.916l-1.231-3.895L7.118 37.271l.658 1.57c.486 1.158 4.986 11.338 13.342 12.123c8.574.797 16.61-6.014 21.947-11.284c4.352-3.649 8.398-8.144 11.656-11.763c.551-.612 1.083-1.204 1.596-1.767c1.981.765 5.895 3.365 9.557 8.041l-4.623 5.621C49.048 54.64 47.772 56.19 40.141 68.746c-9.577 15.759-11.423 25.862-5.643 30.887c1.263 1.097 4.451 3.338 9.405 3.338c1.736 0 3.691-.278 5.854-.975a266.471 266.471 0 0 0-6.499 5.138c-12.063 9.842-25.061 22.115-20.869 31.192c-.062 1.852.37 3.549 1.259 5.019C11.853 153.818-3.543 174.107.729 185.717c.119 4.011 1.85 7.276 4.937 9.26c8.449 5.434 26.242-4.355 38.62-12.637c-.523 1.502-.879 2.786-.999 3.726l-.467 3.663l1.236.312l-.013.095l-.467 3.671l3.59.897c1.231.31 2.186.245 3.55-.599c-1.346 4.402-1.388 6.799-1.38 7.277l.211 13.302l2.875-4.282l.076 5.413l7.438-11.082c.05-.075 2.061-3.071 5.32-7.844l6.244-9.038l-3.472 10.88l11.128-8.897c6.402-5.418 12.872-12.205 18.021-17.585c-.926 2.528-.866 4.935.129 6.916c-.197 2.771.904 5.23 3.135 6.823c4.304 3.071 12 2.076 20.252-2.33c.409 2.367 1.842 3.634 2.643 4.171c5.683 3.813 15.555-2.952 23.52-9.269l1.328-1.054c.542 3.699 2.548 6.636 5.721 8.256c1.745.892 3.745 1.332 5.968 1.332c5.343 0 11.973-2.548 19.435-7.498c.995 2.41 2.765 4.37 5.188 5.662c5.184 2.763 12.516 1.991 20.958-2.008l4.563 1.31c5.597 1.607 9.555 2.182 13.378 2.182c3.065-.001 6.042-.37 9.706-.874c8.548-1.173 18.797-8.443 21.931-15.556c.496-1.128.819-2.248.968-3.341l-.432-4.506" fill="#FFF"></path><path d="M188.478 30.281s-9.613 16.85-18.315 17.172c-10.2.378-7.96-6.103-9.438-5.142c-1.474.958-7.134 12.944-7.223 14.407c10.985 18.13 31.297-12.458 34.976-26.437zM21.758 46.815c14.006 1.316 29.593-25.201 33.983-25.072c4.391.129 13.296 7.095 18.029 16.818c6.231-12.189 13.815-17.603 26.391-8.57c7.317 5.255 22.611 26.044 31.765 27.068c9.911 1.109 18.428-8.323 22.533-25.567c-5.682 7.36-7.995 10.665-13.688 11.04c-5.875.387-5.359 1.55-25.89-19.756S84.666 11.671 78.597 20.71c-1.356-1.485-8.224-12.615-16.5-12.526c-5.864.064-15.633 13.943-21.475 18.982c-6.07 5.235-9.709 6.158-11.916 6.184c-3.42.041-7.542-1.708-10.669-11.607L11.869 37.23s3.778 9.011 9.889 9.585zm46.401-8.538c-15.461 18.812-16.08 19.26-24.207 32.633c-8.127 13.373-10.284 22.262-6.47 25.578c3.843 3.341 10.69 3.526 19.079-2.674c11.673-8.946 27.254-21.712 31.531-32.581c1.112-2.825-19.13 16.337-27.253 21.089c-4.874 2.851-11.425 3.601-14.944.196c-7.182-6.949 24.966-41.317 22.264-44.241zm32.131 15.231c-1.356.452-9.2 12.041-9.168 13.558c.032 1.52 7.393 3.745 10.33 12.913c2.938 9.168 1.808 23.759 1.808 23.759c6.456-2.97 16.702-37.001-2.97-50.23zM238.67 158.41c-29.66-1.382 7.102-11.88 7.102-11.88c-16.012-1.033-45.122 16.859-21.37 14.139c23.914-2.761 24.192 18.914-.517 18.885c-3.458-.004-2.389-3.454-2.389-3.454l-10.079 4.455c9.541 2.739 13.824 2.222 21.367 1.186c13.3-1.826 32.878-22.068 5.886-23.331zm-69.634-12.368c-15.776 4.961-28.133 14.053-35.695 22.183c-6.747 4.081-26.05 14.114-13.98-13.24c6.87-15.569-15.866-.18-22.209 5.767c1.326-6.022 6.089-16.716-1.622-13.755c-7.71 2.962-16.024 8.988-30.257 22.345c8.173-13.165 8.598-14.544 11.063-20.935c-2.348.606-4.912 2.591-7.502 5.384c-61.969 47.396-53.111 15.025-41.458 3.432c8.145-9.924 34.254-16.982 41.177-31.023c-35.825 19.235-38.032 2.764-8.184-16.388c5.489-3.515 41.765-20.164 14.006 3.205c16.42-7.644 30.331-19.457 19.604-21.773c-13.942-3.009-35.868 14.037-47.081 23.187c-6.595 5.381-33.54 27.383-11.731 30.42c-14.14 7.761-38.61 39.155-26.998 46.622c7.934 5.1 35.283-11.471 52.576-26.736c-6.582 10.544-11.92 22.797-12.319 25.926c2.583.645 56.737-62.912 28.288-4.01c20.627-17.455 41.351-48.86 25.47-9.133c-3.435 8.591 11.66 9.315 27.993-5.61c-9.54 12.171-6.583 19.979 14.34 3.386c-12.74 2.838-8.418-6.872 24.519-29.254zm53.055.301c-10.172 1.902-18.214 5.056-24.305 8.735c.117-.446.204-.866.253-1.239c.551-4.261 8.651-53.781 21.435-86.902c5.238-15.83 18.29-58.688-8.587-58.688c-10.765 0-19.205 21.361-17.348 29.263c7.13-9.041 6.681-14.628 14.599-14.527c15.521.043 9.937 29.352 5.346 45.785c-8.753 31.333-16.039 58.185-20.094 81.195c-.718 4.075-1.056 6.987-1.124 8.998c-4.868 4.014-7.777 8.316-8.92 12.142c-11.644.756-25.87 3.996-10.329-20.291c-31.204 15.597-26.169 49.7 10.129 21.024c-2.645 10.864 9.37 17.352 31.596 1.074c-9.189 4.258-37.984.203 7.349-26.569z" fill="#000"></path><path d="M197.922 33.494c-1.857-7.901 6.583-29.262 17.348-29.262c26.876 0 13.824 42.858 8.586 58.687c-12.783 33.121-20.883 82.642-21.435 86.902c-.673 5.202-8.703 19.137-4.648-3.873c4.055-23.011 11.341-49.863 20.094-81.195c4.591-16.434 10.174-45.742-5.346-45.785c-7.918-.102-7.469 5.486-14.599 14.526" fill="#C73D27"></path><path d="M237.914 154.341c-29.66-1.382 7.102-11.88 7.102-11.88c-16.012-1.033-45.122 16.86-21.371 14.14c23.915-2.761 24.193 18.913-.516 18.884c-3.458-.004-2.389-3.454-2.389-3.454l-10.08 4.455c9.542 2.739 13.825 2.222 21.368 1.186c13.3-1.826 32.878-22.068 5.886-23.331zm-69.634-12.368c-15.776 4.961-28.133 14.053-35.695 22.184c-6.747 4.08-26.051 14.113-13.98-13.241c6.87-15.569-15.866-.18-22.209 5.767c1.326-6.022 6.088-16.716-1.622-13.754c-7.711 2.961-16.024 8.987-30.258 22.344c8.174-13.165 8.599-14.543 11.064-20.935c-2.348.606-4.912 2.591-7.502 5.384c-61.969 47.396-53.111 15.025-41.458 3.432c8.145-9.924 34.254-16.982 41.177-31.023c-35.825 19.235-38.032 2.764-8.184-16.388c5.488-3.514 41.765-20.164 14.006 3.205c16.42-7.643 30.331-19.457 19.604-21.773c-13.942-3.009-35.868 14.037-47.081 23.187c-6.595 5.382-33.54 27.383-11.731 30.421c-14.141 7.76-38.61 39.154-26.998 46.621c7.934 5.101 35.283-11.471 52.576-26.736c-6.582 10.544-11.92 22.797-12.319 25.926c2.583.645 56.737-62.912 28.288-4.01c20.627-17.455 41.351-48.859 25.469-9.132c-3.434 8.59 11.661 9.314 27.994-5.611c-9.54 12.171-6.583 19.98 14.34 3.386c-12.74 2.838-8.418-6.872 24.519-29.254zm53.055.301c-23.951 4.478-36.097 15.897-38.745 24.762c-11.644.756-25.87 3.997-10.329-20.291c-31.204 15.597-26.169 49.7 10.128 21.024c-2.645 10.865 9.37 17.352 31.597 1.074c-9.189 4.258-37.984.203 7.349-26.569z" fill="#1370C2"></path><path d="M172.385 97.46c-.594-1.917-12.692 20.088-12.692 20.088s-15.403 26.694-17.074 17.165c-3.728-21.253-30.642 41.883-26.023 44.192c.548.274 17.896-43.233 20.453-28.213c2.53 14.862 38.155-44.123 35.336-53.232" fill="#000"></path><path d="M76.396 159.132c-22.872 28.67-22.644 42.183-22.644 42.183s25.199-37.551 43.376-60.971c15.573-20.065 19.078-37.639 19.078-37.639s-21.374 33.317-39.81 56.427" fill="#000"></path><path d="M60.124 17.725c4.391.129 13.296 7.096 18.029 16.818c6.231-12.188 13.815-17.603 26.391-8.57c7.316 5.256 22.611 26.044 31.765 27.068c9.911 1.109 18.427-8.322 22.532-25.567c-5.681 7.361-7.995 10.665-13.687 11.041c-5.875.387-5.359 1.549-25.89-19.757S89.049 7.653 82.98 16.692c-1.356-1.485-8.224-12.615-16.5-12.525c-5.864.064-15.633 13.943-21.476 18.982c-6.069 5.235-9.708 6.158-11.915 6.183c-3.421.041-7.542-1.707-10.67-11.607l-6.168 15.488s3.778 9.011 9.889 9.585c14.006 1.316 29.594-25.202 33.984-25.073zm32.351 39.491c1.112-2.825-19.13 16.337-27.254 21.088c-4.873 2.851-11.424 3.601-14.944.196c-7.181-6.948 24.967-41.316 22.265-44.24c-15.461 18.812-16.081 19.26-24.207 32.632c-8.127 13.373-10.284 22.263-6.47 25.579c3.843 3.341 10.69 3.525 19.078-2.675c11.673-8.946 27.255-21.712 31.532-32.58zm12.198-7.726c-1.356.452-9.2 12.041-9.168 13.559c.032 1.52 7.392 3.744 10.33 12.912c2.938 9.168 1.808 23.76 1.808 23.76c6.456-2.97 16.701-37.001-2.97-50.231zm70.659 44.997c-.594-1.917-12.691 20.088-12.691 20.088s-15.404 26.693-17.075 17.165c-3.727-21.254-30.642 41.882-26.022 44.192c.548.274 17.895-43.234 20.453-28.213c2.53 14.861 38.154-44.123 35.335-53.232zm-95.963 65.741c-22.872 28.67-22.644 42.183-22.644 42.183s25.199-37.551 43.377-60.971c15.572-20.065 19.077-37.64 19.077-37.64s-21.373 33.318-39.81 56.428zm85.739-121.935c-1.475.958-7.134 12.945-7.223 14.407c10.984 18.13 31.296-12.457 34.976-26.436c0 0-9.613 16.849-18.315 17.172c-10.2.377-7.96-6.103-9.438-5.143z" fill="#C73D27"></path>', 7);
const _hoisted_9$1 = [
  _hoisted_2$n
];
function render$8(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$o, _hoisted_9$1);
}
const Emacs = { name: "logos-emacs", render: render$8 };
const _hoisted_1$n = { class: "flex items-center" };
const _hoisted_2$m = {
  key: 0,
  class: "flex py-[16px] pb-[4px] items-center"
};
const _hoisted_3$i = { class: "w-[400px]" };
const _hoisted_4$e = {
  for: "customPath",
  class: "sr-only"
};
const _sfc_main$m = /* @__PURE__ */ defineComponent({
  __name: "ChooseExternalEditor",
  props: {
    gql: null
  },
  emits: ["choseEditor"],
  setup(__props, { emit: emit3 }) {
    const props = __props;
    const icons = {
      "code": VSCode,
      "webstorm": Webstorm,
      "atom": Atom$1,
      "sublimetext": Sublime,
      "sublimetext2": Sublime,
      "sublimetextdev": Sublime,
      "vim": Vim,
      "emacs": Emacs,
      "finder": Computer,
      "computer": Computer,
      "File Explorer": Computer,
      "File System": Computer,
      "custom": IconTerminal
    };
    const customEditor = { id: "custom", icon: IconTerminal, name: "Custom", binary: "custom" };
    const editorOptions = computed(() => {
      var _a3;
      const editors = ((_a3 = props.gql.localSettings.availableEditors) == null ? void 0 : _a3.map((x2) => ({ ...x2, icon: icons[x2.id] }))) || [];
      editors.push(customEditor);
      return editors;
    });
    gql`
fragment ChooseExternalEditor on Query {
  localSettings {
    availableEditors {
      id
      name
      binary
    }

    preferences {
      preferredEditorBinary
    }
  }
}`;
    const { t: t2 } = useI18n();
    const selectedWellKnownEditor = props.gql.localSettings.availableEditors.find((editor) => {
      return editor.binary && editor.binary === props.gql.localSettings.preferences.preferredEditorBinary;
    });
    const customBinary = ref(
      selectedWellKnownEditor ? "" : props.gql.localSettings.preferences.preferredEditorBinary ?? ""
    );
    const editorToUse = ref(
      customBinary.value ? "custom" : "found"
    );
    const selectedEditor = ref(
      editorToUse.value === "custom" ? customEditor : selectedWellKnownEditor
    );
    watch(customBinary, (val) => {
      if (editorToUse.value !== "custom") {
        editorToUse.value = "custom";
      }
      emit3("choseEditor", val);
    });
    const updateEditor = (editor) => {
      selectedEditor.value = editor;
      if (editor.id === "custom") {
        editorToUse.value = "custom";
        if (customBinary.value) {
          emit3("choseEditor", customBinary.value);
        }
      } else {
        editorToUse.value = "found";
        emit3("choseEditor", selectedEditor.value.binary);
      }
    };
    return (_ctx, _cache) => {
      const _component_i_cy_terminal_x16 = IconTerminal;
      const _component_i_cy_technology_command_line_x16 = __unplugin_components_1$1;
      return openBlock(), createElementBlock(Fragment, null, [
        createBaseVNode("div", _hoisted_1$n, [
          createVNode(_sfc_main$R, {
            "model-value": selectedEditor.value,
            options: unref(editorOptions),
            "item-value": "name",
            "item-key": "id",
            placeholder: unref(t2)("settingsPage.editor.noEditorSelectedPlaceholder"),
            class: "w-[400px]",
            "onUpdate:modelValue": updateEditor
          }, {
            "input-prefix": withCtx(({ value }) => [
              value ? (openBlock(), createBlock(_sfc_main$n, {
                key: 0,
                icon: icons[value.id],
                class: "text-md text-gray-500",
                "icon-class": "icon-dark-gray-500"
              }, null, 8, ["icon"])) : (openBlock(), createBlock(_component_i_cy_terminal_x16, {
                key: 1,
                class: "text-md icon-dark-gray-500"
              }))
            ]),
            "item-prefix": withCtx(({ value }) => [
              createVNode(_sfc_main$n, {
                icon: value.icon,
                class: "text-md"
              }, null, 8, ["icon"])
            ]),
            _: 1
          }, 8, ["model-value", "options", "placeholder"])
        ]),
        editorToUse.value === "custom" ? (openBlock(), createElementBlock("div", _hoisted_2$m, [
          createBaseVNode("div", _hoisted_3$i, [
            createVNode(Input, {
              id: "customPath",
              modelValue: customBinary.value,
              "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => customBinary.value = $event),
              "data-cy": "custom-editor",
              "input-classes": "text-sm text-gray-500",
              placeholder: unref(t2)("settingsPage.editor.customPathPlaceholder")
            }, {
              prefix: withCtx(() => [
                createVNode(_component_i_cy_technology_command_line_x16, { class: "text-md icon-dark-gray-500" })
              ]),
              _: 1
            }, 8, ["modelValue", "placeholder"]),
            createBaseVNode("label", _hoisted_4$e, toDisplayString$1(unref(t2)("settingsPage.editor.customPathPlaceholder")), 1)
          ])
        ])) : createCommentVNode("", true)
      ], 64);
    };
  }
});
const _hoisted_1$m = { class: "m-[24px]" };
const _hoisted_2$l = { class: "font-normal text-sm text-gray-600 select-none" };
const _hoisted_3$h = { class: "font-normal text-sm text-gray-600 select-none" };
const _hoisted_4$d = {
  key: 0,
  class: "mt-[16px]"
};
const _hoisted_5$a = {
  key: 1,
  class: "flex h-full items-center justify-center"
};
const _hoisted_6$5 = { class: "flex space-x-4" };
const _sfc_main$l = /* @__PURE__ */ defineComponent({
  __name: "ChooseExternalEditorModal",
  props: {
    open: { type: Boolean },
    gql: null
  },
  emits: ["selected", "close"],
  setup(__props, { emit: emit3 }) {
    const props = __props;
    const { t: t2 } = useI18n();
    gql`
fragment ChooseExternalEditorModal on Query {
  ...ChooseExternalEditor
}`;
    gql`
mutation ChooseExternalEditorModal_SetPreferredEditorBinary ($value: String!) {
  setPreferences (value: $value, type: global) {
    localSettings {
      preferences {
        preferredEditorBinary
      }
    }
  }
}`;
    const setPreferredBinaryEditor = useMutation(ChooseExternalEditorModal_SetPreferredEditorBinaryDocument);
    const preferredEditor = ref("");
    function close() {
      preferredEditor.value = "";
      emit3("close");
    }
    async function selectEditor() {
      await setPreferredBinaryEditor.executeMutation({
        value: JSON.stringify({ preferredEditorBinary: preferredEditor.value })
      });
      emit3("selected");
    }
    return (_ctx, _cache) => {
      const _component_i18n_t = resolveComponent("i18n-t");
      const _component_i_cy_loading_x16 = __unplugin_components_0$d;
      return openBlock(), createBlock(_sfc_main$S, {
        "model-value": props.open,
        variant: "bare",
        "help-link": "https://on.cypress.io/file-opener-preference",
        "help-text": unref(t2)("links.needHelp"),
        "data-cy": "choose-editor-modal",
        "onUpdate:modelValue": close
      }, {
        title: withCtx(() => [
          createTextVNode(toDisplayString$1(unref(t2)("globalPage.externalEditorPreferences")), 1)
        ]),
        footer: withCtx(() => {
          var _a3;
          return [
            createBaseVNode("div", _hoisted_6$5, [
              createVNode(_sfc_main$10, {
                disabled: !((_a3 = preferredEditor.value) == null ? void 0 : _a3.length),
                onClick: selectEditor
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)("globalPage.saveChanges")), 1)
                ]),
                _: 1
              }, 8, ["disabled"]),
              createVNode(_sfc_main$10, {
                variant: "outline",
                onClick: close
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)("globalPage.cancel")), 1)
                ]),
                _: 1
              })
            ])
          ];
        }),
        default: withCtx(() => [
          createBaseVNode("div", _hoisted_1$m, [
            createBaseVNode("div", null, [
              createBaseVNode("p", _hoisted_2$l, [
                renderSlot(_ctx.$slots, "description", {}, () => [
                  createBaseVNode("span", null, toDisplayString$1(unref(t2)("globalPage.externalEditorPreferencesDescription1")), 1)
                ])
              ]),
              createBaseVNode("p", _hoisted_3$h, [
                renderSlot(_ctx.$slots, "description", {}, () => [
                  createVNode(_component_i18n_t, {
                    scope: "global",
                    keypath: "globalPage.externalEditorPreferencesDescription2"
                  }, {
                    default: withCtx(() => [
                      createBaseVNode("strong", null, toDisplayString$1(unref(t2)("globalPage.settings")), 1)
                    ]),
                    _: 1
                  })
                ])
              ])
            ]),
            props.gql.localSettings ? (openBlock(), createElementBlock("div", _hoisted_4$d, [
              createVNode(_sfc_main$m, {
                gql: props.gql,
                onChoseEditor: _cache[0] || (_cache[0] = (val) => preferredEditor.value = val ?? "")
              }, null, 8, ["gql"])
            ])) : (openBlock(), createElementBlock("div", _hoisted_5$a, [
              createVNode(_component_i_cy_loading_x16, { class: "animate-spin icon-dark-white icon-light-gray-400" })
            ]))
          ])
        ]),
        _: 3
      }, 8, ["model-value", "help-text"]);
    };
  }
});
const _sfc_main$k = /* @__PURE__ */ defineComponent({
  __name: "OpenFileInIDE",
  props: {
    line: null,
    column: null,
    filePath: null
  },
  setup(__props) {
    const props = __props;
    gql`
query OpenFileInIDE {
  localSettings {
    preferences {
      preferredEditorBinary
    }
  }
  ...ChooseExternalEditorModal
}
`;
    gql`
mutation OpenFileInIDE_Mutation ($input: FileDetailsInput!) {
  openFileInIDE (input: $input)
}
`;
    const query2 = useQuery({ query: OpenFileInIdeDocument, requestPolicy: "network-only" });
    const OpenFileInIDE = useMutation(OpenFileInIde_MutationDocument);
    const openFileInIDE = () => {
      OpenFileInIDE.executeMutation({
        input: {
          filePath: props.filePath,
          line: props.line ?? 1,
          column: props.column ?? 1
        }
      });
    };
    const openFile = () => {
      isChooseEditorOpen.value = false;
      openFileInIDE();
    };
    const maybeShowFileInIDE = () => {
      var _a3, _b2;
      if (query2.fetching.value) {
        query2.then(() => {
          maybeShowFileInIDE();
        });
        return;
      }
      if ((_b2 = (_a3 = query2.data) == null ? void 0 : _a3.value) == null ? void 0 : _b2.localSettings.preferences.preferredEditorBinary) {
        openFileInIDE();
      } else {
        isChooseEditorOpen.value = true;
      }
    };
    const isChooseEditorOpen = ref(false);
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock(Fragment, null, [
        renderSlot(_ctx.$slots, "default", { onClick: maybeShowFileInIDE }),
        isChooseEditorOpen.value && unref(query2).data.value ? (openBlock(), createBlock(_sfc_main$l, {
          key: 0,
          open: isChooseEditorOpen.value,
          gql: unref(query2).data.value,
          onClose: _cache[0] || (_cache[0] = ($event) => isChooseEditorOpen.value = false),
          onSelected: openFile
        }, null, 8, ["open", "gql"])) : createCommentVNode("", true)
      ], 64);
    };
  }
});
const _hoisted_1$l = ["onClick"];
const _hoisted_2$k = { class: "break-all" };
const _sfc_main$j = /* @__PURE__ */ defineComponent({
  __name: "ErrorCodeFrame",
  props: {
    gql: null
  },
  setup(__props) {
    const props = __props;
    gql`
fragment ErrorCodeFrame on CodeFrame {
  line
  column
  codeBlock
  file {
    id
    absolute
    relative
  }
}`;
    const fileText = computed(() => {
      const { file, line, column } = props.gql;
      return `${file.relative}${line && column ? `:${line}:${column}` : ""}`;
    });
    return (_ctx, _cache) => {
      const _component_i_cy_document_text_x16 = __unplugin_components_0$1;
      return openBlock(), createElementBlock(Fragment, null, [
        createVNode(_sfc_main$k, {
          "file-path": props.gql.file.absolute,
          line: props.gql.line ?? 0,
          column: props.gql.column ?? 0
        }, {
          default: withCtx(({ onClick }) => [
            createBaseVNode("div", {
              class: "border rounded cursor-pointer flex flex-row bg-gray-50 border-red-100 mt-[16px] text-indigo-500 text-[14px] leading-[24px] items-center",
              "tab-index": "1",
              "data-testid": "error-code-frame",
              onClick
            }, [
              createVNode(_component_i_cy_document_text_x16, { class: "h-[16px] m-[12px] mr-[8px] w-[16px] icon-dark-indigo-500 icon-light-indigo-100" }),
              createBaseVNode("code", _hoisted_2$k, toDisplayString$1(unref(fileText)), 1)
            ], 8, _hoisted_1$l)
          ]),
          _: 1
        }, 8, ["file-path", "line", "column"]),
        props.gql.codeBlock ? (openBlock(), createBlock(ShikiHighlight, {
          key: 0,
          code: props.gql.codeBlock,
          lang: "js",
          "skip-trim": "",
          codeframe: ""
        }, null, 8, ["code"])) : createCommentVNode("", true)
      ], 64);
    };
  }
});
const _hoisted_1$k = {
  key: 0,
  class: "pt-[16px] min-w-[476px] max-w-[848px] m-auto"
};
const _hoisted_2$j = { class: "pb-[24px] text-center" };
const _hoisted_3$g = {
  key: 0,
  class: "font-medium leading-snug text-[32px] text-gray-900",
  "data-cy": "error-header"
};
const _hoisted_4$c = {
  key: 1,
  class: "font-medium w-full pt-[12px] gap-4 inline-flex justify-center"
};
const _hoisted_5$9 = { class: "border-b border-b-red-100 p-[16px] pt-0" };
const _hoisted_6$4 = ["innerHTML"];
const _hoisted_7$2 = { class: "m-[16px] mb-0 overflow-hidden" };
const _hoisted_8 = ["data-cy"];
const _hoisted_9 = ["onClick", "onKeypress"];
const _hoisted_10 = ["innerHTML"];
const _sfc_main$i = /* @__PURE__ */ defineComponent({
  __name: "BaseError",
  props: {
    gql: null,
    showButtons: { type: Boolean, default: true }
  },
  emits: ["retry"],
  setup(__props, { emit: emit3 }) {
    const props = __props;
    gql`
fragment BaseError on ErrorWrapper {
  id
  title
  errorName
  errorStack
  errorType
  errorMessage
  isUserCodeError
  codeFrame {
    ...ErrorCodeFrame
  }
}
`;
    const { t: t2 } = useI18n();
    const markdownTarget = ref();
    const baseError = computed(() => props.gql);
    const { markdown } = useMarkdown(markdownTarget, computed(() => props.gql.errorMessage), { classes: { code: ["bg-error-200"] } });
    const getDocsType = () => {
      const { errorType, errorStack } = baseError.value;
      switch (true) {
        case errorStack.startsWith("UNKNOWN"):
          return "docsHomepage";
        case errorType.includes("RECORD"):
        case errorType.includes("PROJECT"):
        case errorType.includes("CLOUD"):
        case errorType.includes("PLAN"):
          return "cloudGuide";
        default:
          return "configGuide";
      }
    };
    const docsType = getDocsType();
    return (_ctx, _cache) => {
      const _component_i_cy_chevron_right_small_x16 = __unplugin_components_0$2;
      return unref(baseError) ? (openBlock(), createElementBlock("div", _hoisted_1$k, [
        createBaseVNode("div", null, [
          createBaseVNode("div", _hoisted_2$j, [
            unref(baseError).title ? (openBlock(), createElementBlock("h1", _hoisted_3$g, [
              renderSlot(_ctx.$slots, "header", {}, () => [
                createTextVNode(toDisplayString$1(unref(baseError).title), 1)
              ])
            ])) : createCommentVNode("", true),
            __props.showButtons ? (openBlock(), createElementBlock("div", _hoisted_4$c, [
              createVNode(_sfc_main$10, {
                variant: "outline",
                "data-testid": "error-retry-button",
                "prefix-icon": unref(RestartIcon),
                "prefix-icon-class": "icon-dark-indigo-500",
                onClick: _cache[0] || (_cache[0] = ($event) => emit3("retry", unref(baseError).id))
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)("launchpadErrors.generic.retryButton")), 1)
                ]),
                _: 1
              }, 8, ["prefix-icon"]),
              createVNode(_sfc_main$10, {
                variant: "outline",
                "data-testid": "error-docs-button",
                "prefix-icon": unref(__unplugin_components_0$4),
                "prefix-icon-class": "icon-dark-indigo-500 group-hocus:icon-dark-indigo-500 group-hocus:icon-light-indigo-50",
                href: unref(t2)(`launchpadErrors.generic.docsButton.${unref(docsType)}.link`)
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)(`launchpadErrors.generic.docsButton.${unref(docsType)}.text`)), 1)
                ]),
                _: 1
              }, 8, ["prefix-icon", "href"])
            ])) : createCommentVNode("", true)
          ]),
          renderSlot(_ctx.$slots, "message", {}, () => [
            createVNode(_sfc_main$M, {
              title: unref(baseError).errorName,
              status: "error",
              "body-class": "px-[0px] bg-red-50",
              "alert-class": "bg-red-50",
              "header-class": "bg-red-100 text-red-600 rounded-b-none",
              icon: unref(ErrorOutlineIcon),
              "icon-classes": "icon-dark-red-400",
              "max-height": "none"
            }, {
              default: withCtx(() => [
                createBaseVNode("div", _hoisted_5$9, [
                  createBaseVNode("div", {
                    ref_key: "markdownTarget",
                    ref: markdownTarget,
                    class: "text-red-500",
                    "data-testid": "error-message",
                    innerHTML: unref(markdown)
                  }, null, 8, _hoisted_6$4),
                  unref(baseError).codeFrame ? (openBlock(), createBlock(_sfc_main$j, {
                    key: 0,
                    gql: unref(baseError).codeFrame
                  }, null, 8, ["gql"])) : createCommentVNode("", true)
                ]),
                createBaseVNode("div", _hoisted_7$2, [
                  createVNode(_sfc_main$N, {
                    disable: "",
                    "max-height": "none",
                    "initially-open": unref(baseError).isUserCodeError
                  }, {
                    target: withCtx(({ open, toggle }) => [
                      createBaseVNode("p", {
                        class: normalizeClass(["gap-[8px] inline-flex items-center justify-center", { "pb-[8px]": open }]),
                        "data-cy": `stack-open-${open}`
                      }, [
                        createVNode(_component_i_cy_chevron_right_small_x16, {
                          class: normalizeClass(["min-w-[8px] min-h-[8px] transform duration-150 icon-dark-red-400", { "rotate-90": open }])
                        }, null, 8, ["class"]),
                        createBaseVNode("a", {
                          href: "#",
                          class: "cursor-pointer font-medium outline-none text-red-600 hocus:underline",
                          onClick: ($event) => toggle(),
                          onKeypress: withKeys(withModifiers(($event) => toggle(), ["self", "prevent"]), ["space", "enter"])
                        }, toDisplayString$1(unref(t2)("launchpadErrors.generic.stackTraceLabel")), 41, _hoisted_9)
                      ], 10, _hoisted_8)
                    ]),
                    default: withCtx(() => [
                      createBaseVNode("pre", {
                        "data-testid": "error-header",
                        class: "bg-white rounded font-light border border-red-200 p-[16px] overflow-auto",
                        innerHTML: unref(baseError).errorStack
                      }, null, 8, _hoisted_10)
                    ]),
                    _: 1
                  }, 8, ["initially-open"])
                ])
              ]),
              _: 1
            }, 8, ["title", "icon"])
          ]),
          renderSlot(_ctx.$slots, "stack")
        ])
      ])) : createCommentVNode("", true);
    };
  }
});
const Spinner_vue_vue_type_style_index_0_scoped_16f1736f_lang = "";
const _sfc_main$h = {};
const _withScopeId = (n) => (pushScopeId("data-v-16f1736f"), n = n(), popScopeId(), n);
const _hoisted_1$j = {
  class: "flex top-0 right-0 bottom-0 left-0 absolute items-center justify-center",
  "data-cy": "loading-spinner"
};
const _hoisted_2$i = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createBaseVNode("p", {
  "aria-live": "assertive",
  role: "alert",
  class: "sr-only"
}, " Loading... ", -1));
const _hoisted_3$f = /* @__PURE__ */ createStaticVNode('<svg width="48" height="48" viewBox="0 0 48 48" fill="none" class="spinner" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-v-16f1736f><defs data-v-16f1736f><mask id="y_and_circle" data-v-16f1736f><path d="M37.3061 16.0737L32.658 27.8353L27.979 16.0737H24.1514L30.7133 32.1268L26.0446 43.449L25.828 43.963C25.6788 44.3224 25.3533 44.5752 24.9776 44.6273C24.6537 44.6423 24.3277 44.65 24 44.65C23.9323 44.65 23.8647 44.6497 23.7972 44.649C12.4859 44.5402 3.35 35.337 3.35 24C3.35 12.5953 12.5953 3.35 24 3.35C35.4047 3.35 44.65 12.5953 44.65 24C44.65 32.5719 39.4271 39.924 31.99 43.0474L30.7772 45.9958C30.5987 46.43 30.3755 46.8377 30.1141 47.2142C40.4075 44.5105 48 35.1419 48 24C48 10.7452 37.2548 0 24 0C10.7452 0 0 10.7452 0 24C0 37.1872 10.6357 47.8902 23.7972 47.9992C23.8247 47.9994 25.0196 47.9794 25.0177 47.9794C26.736 47.9075 28.2717 46.8308 28.9276 45.235L29.4694 43.9179L40.9228 16.0737H37.3061Z" fill="white" data-v-16f1736f></path></mask></defs><path d="M16.877 19.0494C18.819 19.0494 20.401 20.085 21.2139 21.8915L21.2782 22.0329L24.5398 20.9253L24.4704 20.7583C23.2074 17.6823 20.2981 15.7704 16.877 15.7704C14.4719 15.7704 12.5169 16.5414 10.9015 18.1243C9.29635 19.697 8.48353 21.6757 8.48353 24.0064C8.48353 26.3166 9.29635 28.285 10.9015 29.8577C12.5169 31.4407 14.4719 32.2116 16.877 32.2116C20.2981 32.2116 23.2074 30.2997 24.4704 27.2263L24.5398 27.0593L21.273 25.9491L21.2113 26.0956C20.4833 27.8713 18.8628 28.9326 16.877 28.9326C15.5239 28.9326 14.3818 28.4598 13.4763 27.5295C12.5606 26.5864 12.0976 25.4018 12.0976 24.009C12.0976 22.6059 12.5503 21.4444 13.4763 20.4576C14.3792 19.5222 15.5239 19.0494 16.877 19.0494Z" data-v-16f1736f></path><rect x="0" y="0" width="48" height="48" mask="url(#y_and_circle)" data-v-16f1736f></rect><circle cx="24" cy="24" r="23" stroke-width="5" mask="url(#y_and_circle)" data-v-16f1736f></circle></svg>', 1);
const _hoisted_4$b = [
  _hoisted_2$i,
  _hoisted_3$f
];
function _sfc_render(_ctx, _cache) {
  return openBlock(), createElementBlock("div", _hoisted_1$j, _hoisted_4$b);
}
const Spinner = /* @__PURE__ */ _export_sfc$1(_sfc_main$h, [["render", _sfc_render], ["__scopeId", "data-v-16f1736f"]]);
const PromoDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "Promo" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "savedState" } }] } }] } }] };
const Promo_PromoSeenDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "Promo_PromoSeen" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "campaign" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "messageId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "medium" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "cohort" } }, "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "recordEvent" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "campaign" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "campaign" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "messageId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "messageId" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "medium" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "medium" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "cohort" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "cohort" } } }] }] } }] };
const CloudData_RefetchDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "CloudData_Refetch" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "ids" } }, "type": { "kind": "NonNullType", "type": { "kind": "ListType", "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "ID" } } } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "loadRemoteFetchables" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "ids" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "ids" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fetchingStatus" } }] } }] } }] };
const Preferences_SetPreferencesDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "Preferences_SetPreferences" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setPreferences" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "value" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "type" }, "value": { "kind": "EnumValue", "value": "global" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "autoScrollingEnabled" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isSideNavigationOpen" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isSpecsListOpen" } }, { "kind": "Field", "name": { "kind": "Name", "value": "reporterWidth" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specListWidth" } }] } }] } }] } }] } }] };
const UseRecordEvent_RecordEventDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "useRecordEvent_recordEvent" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "messageId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "campaign" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "medium" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "payload" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "includeMachineId" } }, "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "Boolean" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "recordEvent" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "includeMachineId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "includeMachineId" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "messageId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "messageId" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "campaign" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "campaign" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "medium" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "medium" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "payload" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "payload" } } }] }] } }] };
const Debug_RelevantRuns_SubscriptionDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "Debug_RelevantRuns_Subscription" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "location" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "RelevantRunLocationEnum" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "relevantRuns" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "location" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "location" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "all" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "runId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "runNumber" } }, { "kind": "Field", "name": { "kind": "Name", "value": "sha" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "latest" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "runId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "runNumber" } }, { "kind": "Field", "name": { "kind": "Name", "value": "sha" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "commitsAhead" } }, { "kind": "Field", "name": { "kind": "Name", "value": "selectedRunNumber" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentCommitInfo" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "sha" } }, { "kind": "Field", "name": { "kind": "Name", "value": "message" } }] } }] } }] } }] };
const Sidebar_RelevantRuns_SubscriptionDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "Sidebar_RelevantRuns_Subscription" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "location" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "RelevantRunLocationEnum" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "relevantRuns" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "location" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "location" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "all" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "runId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "runNumber" } }, { "kind": "Field", "name": { "kind": "Name", "value": "sha" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "latest" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "runId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "runNumber" } }, { "kind": "Field", "name": { "kind": "Name", "value": "sha" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "commitsAhead" } }, { "kind": "Field", "name": { "kind": "Name", "value": "selectedRunNumber" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentCommitInfo" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "sha" } }, { "kind": "Field", "name": { "kind": "Name", "value": "message" } }] } }] } }] } }] };
const SpecFilter_SetPreferencesDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "SpecFilter_SetPreferences" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setPreferences" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "value" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "type" }, "value": { "kind": "EnumValue", "value": "project" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "autoScrollingEnabled" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isSideNavigationOpen" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isSpecsListOpen" } }, { "kind": "Field", "name": { "kind": "Name", "value": "reporterWidth" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specListWidth" } }] } }] } }] } }] } }] };
const UseTestingType_TestingTypeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "UseTestingType_TestingType" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCTConfigured" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isE2EConfigured" } }] } }] } }] };
const UseTestingType_ActivateTestingTypeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "UseTestingType_ActivateTestingType" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "testingType" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "TestingTypeEnum" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "switchTestingTypeAndRelaunch" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "testingType" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "testingType" } } }] }] } }] };
const DebugRunNavigation_MoveToRunDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "DebugRunNavigation_moveToRun" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "runNumber" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "Int" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "moveToRelevantRun" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "runNumber" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "runNumber" } } }] }] } }] };
const SetTestsForDebugDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "SetTestsForDebug" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "testsBySpec" } }, "type": { "kind": "NonNullType", "type": { "kind": "ListType", "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "TestsBySpecInput" } } } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setTestsForRun" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "testsBySpec" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "testsBySpec" } } }] }] } }] };
const DebugTestingProgress_SpecsDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "DebugTestingProgress_Specs" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "ID" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "relevantRunSpecChange" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "runId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "totalSpecs" }, "name": { "kind": "Name", "value": "totalInstanceCount" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "completedSpecs" }, "name": { "kind": "Name", "value": "completedInstanceCount" } }, { "kind": "Field", "name": { "kind": "Name", "value": "scheduledToCompleteAt" } }] } }] } }] };
const DebugProgress_SpecsDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "DebugProgress_Specs" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "ID" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "relevantRunSpecChange" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "runId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "runNumber" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalDuration" } }, { "kind": "Field", "name": { "kind": "Name", "value": "createdAt" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "completedInstanceCount" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalInstanceCount" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPassed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFailed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPending" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalSkipped" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFlakyTests" } }] } }] } }] };
const MainAppQueryDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "MainAppQuery" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "baseError" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorStack" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorMessage" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isUserCodeError" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeFrame" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "line" } }, { "kind": "Field", "name": { "kind": "Name", "value": "column" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeBlock" } }, { "kind": "Field", "name": { "kind": "Name", "value": "file" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isLoadingConfigFile" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isLoadingNodeEvents" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "desktopNotificationsEnabled" } }, { "kind": "Field", "name": { "kind": "Name", "value": "dismissNotificationBannerUntil" } }] } }] } }] } }] };
const MainApp_ResetErrorsAndLoadConfigDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "MainApp_ResetErrorsAndLoadConfig" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "ID" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "resetErrorAndLoadConfig" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "id" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "baseError" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorStack" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorMessage" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isUserCodeError" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeFrame" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "line" } }, { "kind": "Field", "name": { "kind": "Name", "value": "column" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeBlock" } }, { "kind": "Field", "name": { "kind": "Name", "value": "file" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isLoadingConfigFile" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isLoadingNodeEvents" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "desktopNotificationsEnabled" } }, { "kind": "Field", "name": { "kind": "Name", "value": "dismissNotificationBannerUntil" } }] } }] } }] } }] } }] };
const SideBarNavigation_SetPreferencesDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "SideBarNavigation_SetPreferences" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setPreferences" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "value" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "type" }, "value": { "kind": "EnumValue", "value": "global" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "isSideNavigationOpen" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isSpecsListOpen" } }, { "kind": "Field", "name": { "kind": "Name", "value": "autoScrollingEnabled" } }, { "kind": "Field", "name": { "kind": "Name", "value": "reporterWidth" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specListWidth" } }] } }] } }] } }] } }] };
const SideBarNavigationContainerDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "SideBarNavigationContainer" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "runNumber" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "Int" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "hasCurrentRun" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "Boolean" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "isSideNavigationOpen" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isSpecsListOpen" } }, { "kind": "Field", "name": { "kind": "Name", "value": "autoScrollingEnabled" } }, { "kind": "Field", "name": { "kind": "Name", "value": "reporterWidth" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specListWidth" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "runByNumber" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "runNumber" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "runNumber" } } }], "directives": [{ "kind": "Directive", "name": { "kind": "Name", "value": "include" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "if" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "hasCurrentRun" } } }] }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "runNumber" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFailed" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCTConfigured" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isE2EConfigured" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "branch" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "invokedFromCli" } }] } }] };
const SwitchTestingTypeAndRelaunchDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "SwitchTestingTypeAndRelaunch" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "testingType" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "TestingTypeEnum" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "switchTestingTypeAndRelaunch" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "testingType" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "testingType" } } }] }] } }] };
const Debug_SpecsChangeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "Debug_specsChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "specsChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specs" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }] } }] } }] } }] };
const DebugDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "Debug" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "runNumber" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "Int" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "commitShas" } }, "type": { "kind": "NonNullType", "type": { "kind": "ListType", "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "runByNumber" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "runNumber" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "runNumber" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "runNumber" } }, { "kind": "Field", "name": { "kind": "Name", "value": "createdAt" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalDuration" } }, { "kind": "Field", "name": { "kind": "Name", "value": "commitInfo" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "sha" } }, { "kind": "Field", "name": { "kind": "Name", "value": "authorName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "authorEmail" } }, { "kind": "Field", "name": { "kind": "Name", "value": "summary" } }, { "kind": "Field", "name": { "kind": "Name", "value": "branch" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "url" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPassed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFailed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPending" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalSkipped" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFlakyTests" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cancelledBy" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cancelledAt" } }, { "kind": "Field", "name": { "kind": "Name", "value": "scheduledToCompleteAt" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errors" } }, { "kind": "Field", "name": { "kind": "Name", "value": "overLimitActionType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "overLimitActionUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isHidden" } }, { "kind": "Field", "name": { "kind": "Name", "value": "reasonsRunIsHidden" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "DataRetentionLimitExceeded" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "dataRetentionDays" } }] } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "UsageLimitExceeded" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "monthlyTests" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalTests" } }, { "kind": "Field", "name": { "kind": "Name", "value": "ci" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "ciBuildNumberFormatted" } }, { "kind": "Field", "name": { "kind": "Name", "value": "formattedProvider" } }, { "kind": "Field", "name": { "kind": "Name", "value": "url" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "testsForReview" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "limit" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "depth" }, "value": { "kind": "IntValue", "value": "2" } }] }, { "kind": "Field", "name": { "kind": "Name", "value": "titleParts" } }, { "kind": "Field", "name": { "kind": "Name", "value": "duration" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isFlaky" } }, { "kind": "Field", "name": { "kind": "Name", "value": "testUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "thumbprint" } }, { "kind": "Field", "name": { "kind": "Name", "value": "instance" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "groupId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPassed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFailed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPending" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalSkipped" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalRunning" } }, { "kind": "Field", "name": { "kind": "Name", "value": "hasStdout" } }, { "kind": "Field", "name": { "kind": "Name", "value": "stdoutUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "hasScreenshots" } }, { "kind": "Field", "name": { "kind": "Name", "value": "screenshotsUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "hasVideo" } }, { "kind": "Field", "name": { "kind": "Name", "value": "videoUrl" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "specs" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "path" } }, { "kind": "Field", "name": { "kind": "Name", "value": "basename" } }, { "kind": "Field", "name": { "kind": "Name", "value": "extension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "shortPath" } }, { "kind": "Field", "name": { "kind": "Name", "value": "groupIds" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specDuration" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "min" } }, { "kind": "Field", "name": { "kind": "Name", "value": "max" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "testsPassed" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "min" } }, { "kind": "Field", "name": { "kind": "Name", "value": "max" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "testsFailed" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "min" } }, { "kind": "Field", "name": { "kind": "Name", "value": "max" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "testsPending" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "min" } }, { "kind": "Field", "name": { "kind": "Name", "value": "max" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "groups" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "testingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "groupName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "os" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "nameWithVersion" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "browser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "formattedName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "formattedNameWithVersion" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProjectUrl" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "allRuns" }, "name": { "kind": "Name", "value": "runsByCommitShas" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "commitShas" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "commitShas" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPassed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFailed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPending" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalSkipped" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFlakyTests" } }, { "kind": "Field", "name": { "kind": "Name", "value": "runNumber" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalDuration" } }, { "kind": "Field", "name": { "kind": "Name", "value": "createdAt" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "completedInstanceCount" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalInstanceCount" } }, { "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalTests" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specs" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "path" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "commitInfo" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "sha" } }, { "kind": "Field", "name": { "kind": "Name", "value": "summary" } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "specs" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }] } }] } }] };
const SettingsDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "Settings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "autoScrollingEnabled" } }, { "kind": "Field", "name": { "kind": "Name", "value": "preferredEditorBinary" } }, { "kind": "Field", "name": { "kind": "Name", "value": "proxyServer" } }, { "kind": "Field", "name": { "kind": "Name", "value": "proxyBypass" } }, { "kind": "Field", "name": { "kind": "Name", "value": "notifyWhenRunStarts" } }, { "kind": "Field", "name": { "kind": "Name", "value": "notifyWhenRunStartsFailing" } }, { "kind": "Field", "name": { "kind": "Name", "value": "notifyWhenRunCompletes" } }, { "kind": "Field", "name": { "kind": "Name", "value": "desktopNotificationsEnabled" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "availableEditors" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "binary" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "config" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "configFile" } }, { "kind": "Field", "name": { "kind": "Name", "value": "configFileAbsolutePath" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specs" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProjectSettingsUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "recordKeys" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "key" } }] } }] } }] } }] } }] } }] };
const Config_ConfigChangeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "Config_ConfigChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "configChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "config" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "configFile" } }, { "kind": "Field", "name": { "kind": "Name", "value": "configFileAbsolutePath" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specs" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }] };
const SpecsPageContainerDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "SpecsPageContainer" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "runIds" } }, "type": { "kind": "NonNullType", "type": { "kind": "ListType", "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "ID" } } } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "hasRunIds" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "Boolean" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectRoot" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProjectUnauthorized" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "hasRequestedAccess" } }, { "kind": "Field", "name": { "kind": "Name", "value": "message" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "specs" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "baseName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specFileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }, { "kind": "Field", "name": { "kind": "Name", "value": "gitInfo" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "lastModifiedTimestamp" } }, { "kind": "Field", "name": { "kind": "Name", "value": "lastModifiedHumanReadable" } }, { "kind": "Field", "name": { "kind": "Name", "value": "author" } }, { "kind": "Field", "name": { "kind": "Name", "value": "statusType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "shortHash" } }, { "kind": "Field", "name": { "kind": "Name", "value": "subject" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudSpec" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "name" }, "value": { "kind": "StringValue", "value": "cloudSpec", "block": false } }], "directives": [{ "kind": "Directive", "name": { "kind": "Name", "value": "include" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "if" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "hasRunIds" } } }] }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fetchingStatus" } }, { "kind": "Field", "name": { "kind": "Name", "value": "data" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProjectSpecNotFound" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "retrievedAt" } }, { "kind": "Field", "name": { "kind": "Name", "value": "message" } }] } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProjectSpec" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "retrievedAt" } }, { "kind": "Field", "name": { "kind": "Name", "value": "averageDurationForRunIds" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "cloudRunIds" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "runIds" } } }] }, { "kind": "Field", "name": { "kind": "Name", "value": "isConsideredFlakyForRunIds" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "cloudRunIds" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "runIds" } } }] }, { "kind": "Field", "name": { "kind": "Name", "value": "flakyStatusForRunIds" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "cloudRunIds" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "runIds" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProjectSpecFlakyStatus" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "dashboardUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "severity" } }, { "kind": "Field", "name": { "kind": "Name", "value": "flakyRuns" } }, { "kind": "Field", "name": { "kind": "Name", "value": "flakyRunsWindow" } }, { "kind": "Field", "name": { "kind": "Name", "value": "lastFlaky" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "specRunsForRunIds" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "cloudRunIds" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "runIds" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "runNumber" } }, { "kind": "Field", "name": { "kind": "Name", "value": "basename" } }, { "kind": "Field", "name": { "kind": "Name", "value": "path" } }, { "kind": "Field", "name": { "kind": "Name", "value": "extension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "testsFailed" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "min" } }, { "kind": "Field", "name": { "kind": "Name", "value": "max" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "testsPassed" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "min" } }, { "kind": "Field", "name": { "kind": "Name", "value": "max" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "testsPending" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "min" } }, { "kind": "Field", "name": { "kind": "Name", "value": "max" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "testsSkipped" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "min" } }, { "kind": "Field", "name": { "kind": "Name", "value": "max" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "createdAt" } }, { "kind": "Field", "name": { "kind": "Name", "value": "groupCount" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specDuration" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "min" } }, { "kind": "Field", "name": { "kind": "Name", "value": "max" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "url" } }] } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "config" } }, { "kind": "Field", "name": { "kind": "Name", "value": "savedState" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "configFile" } }, { "kind": "Field", "name": { "kind": "Name", "value": "configFileAbsolutePath" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "branch" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeGenGlobs" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "component" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtensionToUse" } }, { "kind": "Field", "name": { "kind": "Name", "value": "defaultSpecFileName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeGenFramework" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDefaultSpecPattern" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cachedUser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "machineId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "wizard" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "framework" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "icon" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "bundler" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "availableEditors" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "binary" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferredEditorBinary" } }] } }] } }] } }] };
const SpecsPageContainer_SpecsChangeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "SpecsPageContainer_specsChange" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "runIds" } }, "type": { "kind": "NonNullType", "type": { "kind": "ListType", "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "ID" } } } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "hasRunIds" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "Boolean" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "specsChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specs" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "baseName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specFileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }, { "kind": "Field", "name": { "kind": "Name", "value": "gitInfo" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "lastModifiedTimestamp" } }, { "kind": "Field", "name": { "kind": "Name", "value": "lastModifiedHumanReadable" } }, { "kind": "Field", "name": { "kind": "Name", "value": "author" } }, { "kind": "Field", "name": { "kind": "Name", "value": "statusType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "shortHash" } }, { "kind": "Field", "name": { "kind": "Name", "value": "subject" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudSpec" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "name" }, "value": { "kind": "StringValue", "value": "cloudSpec", "block": false } }], "directives": [{ "kind": "Directive", "name": { "kind": "Name", "value": "include" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "if" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "hasRunIds" } } }] }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fetchingStatus" } }, { "kind": "Field", "name": { "kind": "Name", "value": "data" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProjectSpecNotFound" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "retrievedAt" } }, { "kind": "Field", "name": { "kind": "Name", "value": "message" } }] } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProjectSpec" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "retrievedAt" } }, { "kind": "Field", "name": { "kind": "Name", "value": "averageDurationForRunIds" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "cloudRunIds" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "runIds" } } }] }, { "kind": "Field", "name": { "kind": "Name", "value": "isConsideredFlakyForRunIds" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "cloudRunIds" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "runIds" } } }] }, { "kind": "Field", "name": { "kind": "Name", "value": "flakyStatusForRunIds" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "cloudRunIds" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "runIds" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProjectSpecFlakyStatus" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "dashboardUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "severity" } }, { "kind": "Field", "name": { "kind": "Name", "value": "flakyRuns" } }, { "kind": "Field", "name": { "kind": "Name", "value": "flakyRunsWindow" } }, { "kind": "Field", "name": { "kind": "Name", "value": "lastFlaky" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "specRunsForRunIds" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "cloudRunIds" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "runIds" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "runNumber" } }, { "kind": "Field", "name": { "kind": "Name", "value": "basename" } }, { "kind": "Field", "name": { "kind": "Name", "value": "path" } }, { "kind": "Field", "name": { "kind": "Name", "value": "extension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "testsFailed" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "min" } }, { "kind": "Field", "name": { "kind": "Name", "value": "max" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "testsPassed" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "min" } }, { "kind": "Field", "name": { "kind": "Name", "value": "max" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "testsPending" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "min" } }, { "kind": "Field", "name": { "kind": "Name", "value": "max" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "testsSkipped" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "min" } }, { "kind": "Field", "name": { "kind": "Name", "value": "max" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "createdAt" } }, { "kind": "Field", "name": { "kind": "Name", "value": "groupCount" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specDuration" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "min" } }, { "kind": "Field", "name": { "kind": "Name", "value": "max" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "url" } }] } }] } }] } }] } }] } }] } }] } }] };
const SpecPageContainerDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "SpecPageContainer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "config" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeGenGlobs" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "component" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtensionToUse" } }, { "kind": "Field", "name": { "kind": "Name", "value": "defaultSpecFileName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeGenFramework" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "configFile" } }, { "kind": "Field", "name": { "kind": "Name", "value": "configFileAbsolutePath" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specs" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "baseName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specFileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectRoot" } }, { "kind": "Field", "name": { "kind": "Name", "value": "savedState" } }, { "kind": "Field", "name": { "kind": "Name", "value": "activeBrowser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "displayName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "majorVersion" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "browsers" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isSelected" } }, { "kind": "Field", "name": { "kind": "Name", "value": "displayName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "version" } }, { "kind": "Field", "name": { "kind": "Name", "value": "majorVersion" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isVersionSupported" } }, { "kind": "Field", "name": { "kind": "Name", "value": "warning" } }, { "kind": "Field", "name": { "kind": "Name", "value": "disabled" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "availableEditors" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "binary" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferredEditorBinary" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isSideNavigationOpen" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isSpecsListOpen" } }, { "kind": "Field", "name": { "kind": "Name", "value": "autoScrollingEnabled" } }, { "kind": "Field", "name": { "kind": "Name", "value": "reporterWidth" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specListWidth" } }] } }] } }] } }] };
const SpecPageContainer_SpecsChangeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "SpecPageContainer_specsChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "specsChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specs" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "baseName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specFileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }] } }] } }] } }] };
const Runner_ConfigChangeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "Runner_ConfigChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "configChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "serveConfig" } }] } }] } }] };
const SpecRunnerOpenMode_OpenFileInIdeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "SpecRunnerOpenMode_OpenFileInIDE" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "input" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "FileDetailsInput" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "openFileInIDE" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "input" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "input" } } }] }] } }] };
const AutomationDisconnected_RelaunchBrowserDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "AutomationDisconnected_RelaunchBrowser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "launchOpenProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] };
const TestsForRunDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "TestsForRun" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "spec" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "testsForRun" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "spec" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "spec" } } }] }] } }] };
const RunCard_ChangeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "RunCard_Change" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "ID" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "relevantRunSpecChange" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "runId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "createdAt" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalDuration" } }, { "kind": "Field", "name": { "kind": "Name", "value": "url" } }, { "kind": "Field", "name": { "kind": "Name", "value": "tags" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPassed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFailed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPending" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalSkipped" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFlakyTests" } }, { "kind": "Field", "name": { "kind": "Name", "value": "commitInfo" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "authorName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "authorEmail" } }, { "kind": "Field", "name": { "kind": "Name", "value": "summary" } }, { "kind": "Field", "name": { "kind": "Name", "value": "branch" } }] } }] } }] } }] };
const RunsErrorRenderer_RequestAccessDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "RunsErrorRenderer_RequestAccess" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "projectId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudProjectRequestAccess" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "projectSlug" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "projectId" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProjectUnauthorized" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "message" } }, { "kind": "Field", "name": { "kind": "Name", "value": "hasRequestedAccess" } }] } }] } }] } }] };
const RunsGitTreeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "RunsGitTree" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "runIds" } }, "type": { "kind": "NonNullType", "type": { "kind": "ListType", "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "ID" } } } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProjectNotFound" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "message" } }] } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProjectUnauthorized" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "message" } }, { "kind": "Field", "name": { "kind": "Name", "value": "hasRequestedAccess" } }] } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "configFileAbsolutePath" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectRoot" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudNodesByIds" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "ids" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "runIds" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudRun" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "createdAt" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalDuration" } }, { "kind": "Field", "name": { "kind": "Name", "value": "url" } }, { "kind": "Field", "name": { "kind": "Name", "value": "tags" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPassed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFailed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPending" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalSkipped" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFlakyTests" } }, { "kind": "Field", "name": { "kind": "Name", "value": "commitInfo" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "authorName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "authorEmail" } }, { "kind": "Field", "name": { "kind": "Name", "value": "summary" } }, { "kind": "Field", "name": { "kind": "Name", "value": "branch" } }] } }] } }] } }] } }] };
const RunsDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "Runs" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProjectNotFound" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "message" } }] } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProjectUnauthorized" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "message" } }, { "kind": "Field", "name": { "kind": "Name", "value": "hasRequestedAccess" } }] } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "runs" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "10" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "createdAt" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalDuration" } }, { "kind": "Field", "name": { "kind": "Name", "value": "url" } }, { "kind": "Field", "name": { "kind": "Name", "value": "tags" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPassed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFailed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPending" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalSkipped" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFlakyTests" } }, { "kind": "Field", "name": { "kind": "Name", "value": "commitInfo" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "authorName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "authorEmail" } }, { "kind": "Field", "name": { "kind": "Name", "value": "summary" } }, { "kind": "Field", "name": { "kind": "Name", "value": "branch" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "pageInfo" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "startCursor" } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "configFileAbsolutePath" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectRoot" } }] } }] } }] };
const RunsContainer_FetchNewerRunsDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "RunsContainer_FetchNewerRuns" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "cloudProjectNodeId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "ID" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "beforeCursor" } }, "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "hasBeforeCursor" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "Boolean" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "refetchRemote" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudNode" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "id" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "cloudProjectNodeId" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "runs" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "10" } }], "directives": [{ "kind": "Directive", "name": { "kind": "Name", "value": "skip" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "if" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "hasBeforeCursor" } } }] }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "createdAt" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalDuration" } }, { "kind": "Field", "name": { "kind": "Name", "value": "url" } }, { "kind": "Field", "name": { "kind": "Name", "value": "tags" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPassed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFailed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPending" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalSkipped" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFlakyTests" } }, { "kind": "Field", "name": { "kind": "Name", "value": "commitInfo" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "authorName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "authorEmail" } }, { "kind": "Field", "name": { "kind": "Name", "value": "summary" } }, { "kind": "Field", "name": { "kind": "Name", "value": "branch" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "pageInfo" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "startCursor" } }] } }] } }, { "kind": "Field", "alias": { "kind": "Name", "value": "newerRuns" }, "name": { "kind": "Name", "value": "runs" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "last" }, "value": { "kind": "IntValue", "value": "10" } }, { "kind": "Argument", "name": { "kind": "Name", "value": "before" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "beforeCursor" } } }], "directives": [{ "kind": "Directive", "name": { "kind": "Name", "value": "include" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "if" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "hasBeforeCursor" } } }] }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "createdAt" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalDuration" } }, { "kind": "Field", "name": { "kind": "Name", "value": "url" } }, { "kind": "Field", "name": { "kind": "Name", "value": "tags" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPassed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFailed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPending" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalSkipped" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFlakyTests" } }, { "kind": "Field", "name": { "kind": "Name", "value": "commitInfo" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "authorName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "authorEmail" } }, { "kind": "Field", "name": { "kind": "Name", "value": "summary" } }, { "kind": "Field", "name": { "kind": "Name", "value": "branch" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "pageInfo" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "startCursor" } }] } }] } }] } }] } }] } }] } }] };
const ExternalEditorSettings_SetPreferredEditorBinaryDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "ExternalEditorSettings_SetPreferredEditorBinary" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setPreferences" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "value" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "type" }, "value": { "kind": "EnumValue", "value": "global" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "availableEditors" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "binary" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferredEditorBinary" } }] } }] } }] } }] } }] };
const SetNotificationSettingsDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "SetNotificationSettings" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setPreferences" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "value" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "type" }, "value": { "kind": "EnumValue", "value": "global" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "notifyWhenRunStarts" } }, { "kind": "Field", "name": { "kind": "Name", "value": "notifyWhenRunStartsFailing" } }, { "kind": "Field", "name": { "kind": "Name", "value": "notifyWhenRunCompletes" } }, { "kind": "Field", "name": { "kind": "Name", "value": "desktopNotificationsEnabled" } }] } }] } }] } }] } }] };
const NotificationSettings_ShowNotificationDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "NotificationSettings_ShowNotification" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "title" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "body" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "showSystemNotification" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "title" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "title" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "body" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "body" } } }] }] } }] };
const SetTestingPreferencesDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "SetTestingPreferences" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setPreferences" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "value" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "type" }, "value": { "kind": "EnumValue", "value": "global" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "autoScrollingEnabled" } }] } }] } }] } }] } }] };
const RequestAccessButton_RequestAccessDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "RequestAccessButton_RequestAccess" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "projectId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudProjectRequestAccess" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "projectSlug" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "projectId" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProjectUnauthorized" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "message" } }, { "kind": "Field", "name": { "kind": "Name", "value": "hasRequestedAccess" } }] } }] } }] } }] };
const SpecsList_GitInfoUpdatedDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "SpecsList_GitInfoUpdated" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "gitInfoChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "gitInfo" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "lastModifiedTimestamp" } }, { "kind": "Field", "name": { "kind": "Name", "value": "lastModifiedHumanReadable" } }, { "kind": "Field", "name": { "kind": "Name", "value": "author" } }, { "kind": "Field", "name": { "kind": "Name", "value": "statusType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "shortHash" } }, { "kind": "Field", "name": { "kind": "Name", "value": "subject" } }] } }] } }] } }] };
const SpecsListBanners_CheckCloudOrgMembershipDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "SpecsListBanners_CheckCloudOrgMembership" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewerChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProjectUnauthorized" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "message" } }, { "kind": "Field", "name": { "kind": "Name", "value": "hasRequestedAccess" } }] } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "savedState" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "config" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cachedUser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "machineId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "wizard" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "framework" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "icon" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "bundler" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }] } }] } }] } }] };
const SpecsListRunWatcherDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "SpecsListRunWatcher" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "ID" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "relevantRunSpecChange" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "runId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalInstanceCount" } }, { "kind": "Field", "name": { "kind": "Name", "value": "completedInstanceCount" } }] } }] } }] };
const TestingTypePromo_RecordEventDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "TestingTypePromo_RecordEvent" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "campaign" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "medium" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "messageId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "recordEvent" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "includeMachineId" }, "value": { "kind": "BooleanValue", "value": true } }, { "kind": "Argument", "name": { "kind": "Name", "value": "campaign" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "campaign" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "medium" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "medium" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "messageId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "messageId" } } }] }] } }] };
const SwitchToComponentTestingDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "SwitchToComponentTesting" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "switchTestingTypeAndRelaunch" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "testingType" }, "value": { "kind": "EnumValue", "value": "component" } }] }] } }] };
const ComponentTestingAvailable_RecordEventDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "ComponentTestingAvailable_RecordEvent" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "campaign" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "messageId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "payload" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "recordEvent" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "campaign" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "campaign" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "medium" }, "value": { "kind": "StringValue", "value": "CT Available Banner", "block": false } }, { "kind": "Argument", "name": { "kind": "Name", "value": "messageId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "messageId" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "includeMachineId" }, "value": { "kind": "BooleanValue", "value": true } }, { "kind": "Argument", "name": { "kind": "Name", "value": "payload" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "payload" } } }] }] } }] };
const CreateOrganizationBannerDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "CreateOrganizationBanner" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "createCloudOrganizationUrl" } }] } }] } }] };
const EnableNotificationsBanner_ShowNotificationDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "EnableNotificationsBanner_ShowNotification" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "title" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "body" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "showSystemNotification" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "title" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "title" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "body" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "body" } } }] }] } }] };
const EnableNotificationsBanner_SetPreferencesDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "EnableNotificationsBanner_SetPreferences" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setPreferences" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "value" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "type" }, "value": { "kind": "EnumValue", "value": "global" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "desktopNotificationsEnabled" } }, { "kind": "Field", "name": { "kind": "Name", "value": "dismissNotificationBannerUntil" } }] } }] } }] } }] } }] };
const TrackedBanner_ProjectStateDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "TrackedBanner_ProjectState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "savedState" } }] } }] } }] };
const TrackedBanner_SetProjectStateDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "TrackedBanner_SetProjectState" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setPreferences" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "type" }, "value": { "kind": "EnumValue", "value": "project" } }, { "kind": "Argument", "name": { "kind": "Name", "value": "value" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "autoScrollingEnabled" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isSideNavigationOpen" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isSpecsListOpen" } }, { "kind": "Field", "name": { "kind": "Name", "value": "reporterWidth" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specListWidth" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "savedState" } }] } }] } }] } }] };
const TrackedBanner_RecordBannerSeenDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "TrackedBanner_recordBannerSeen" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "campaign" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "messageId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "medium" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "cohort" } }, "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "recordEvent" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "campaign" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "campaign" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "messageId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "messageId" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "medium" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "medium" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "cohort" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "cohort" } } }] }] } }] };
const EmptyGenerator_MatchSpecFileDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "EmptyGenerator_MatchSpecFile" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "specFile" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "matchesSpecPattern" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "specFile" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "specFile" } } }] }] } }] };
const EmptyGenerator_GenerateSpecDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "EmptyGenerator_generateSpec" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "codeGenCandidate" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "type" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "CodeGenType" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "generateSpecFromSource" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "codeGenCandidate" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "codeGenCandidate" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "type" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "type" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specs" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "baseName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specFileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "generatedSpecResult" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "ScaffoldedFile" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "file" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "baseName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }, { "kind": "Field", "name": { "kind": "Name", "value": "contents" } }] } }] } }] } }] } }] } }] };
const ReactComponentGeneratorStepOneDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "ReactComponentGeneratorStepOne" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "glob" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeGenCandidates" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "glob" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "glob" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }, { "kind": "Field", "name": { "kind": "Name", "value": "baseName" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "specs" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "baseName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specFileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }] } }] } }] } }] };
const ReactComponentGeneratorStepOne_GenerateSpecDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "ReactComponentGeneratorStepOne_generateSpec" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "codeGenCandidate" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "type" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "CodeGenType" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "componentName" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "isDefault" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "Boolean" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "generateSpecFromSource" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "codeGenCandidate" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "codeGenCandidate" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "type" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "type" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "componentName" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "componentName" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "isDefault" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "isDefault" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specs" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "baseName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specFileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "config" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "configFile" } }, { "kind": "Field", "name": { "kind": "Name", "value": "configFileAbsolutePath" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "generatedSpecResult" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "ScaffoldedFile" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "file" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "baseName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }, { "kind": "Field", "name": { "kind": "Name", "value": "contents" } }] } }] } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "GeneratedSpecError" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "fileName" } }] } }] } }] } }] } }] };
const ComponentList_GetReactComponentsFromFileDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "ComponentList_getReactComponentsFromFile" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "filePath" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "getReactComponentsFromFile" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "filePath" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "filePath" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "components" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "exportName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDefault" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "errored" } }] } }] } }] };
const VueComponentGeneratorStepOneDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "VueComponentGeneratorStepOne" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "glob" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeGenCandidates" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "glob" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "glob" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }, { "kind": "Field", "name": { "kind": "Name", "value": "baseName" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "specs" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "baseName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specFileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }] } }] } }] } }] };
const VueComponentGeneratorStepOne_GenerateSpecDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "VueComponentGeneratorStepOne_generateSpec" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "codeGenCandidate" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "type" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "CodeGenType" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "generateSpecFromSource" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "codeGenCandidate" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "codeGenCandidate" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "type" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "type" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specs" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "baseName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specFileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "config" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "configFile" } }, { "kind": "Field", "name": { "kind": "Name", "value": "configFileAbsolutePath" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "generatedSpecResult" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "ScaffoldedFile" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "file" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "baseName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }, { "kind": "Field", "name": { "kind": "Name", "value": "contents" } }] } }] } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "GeneratedSpecError" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "fileName" } }] } }] } }] } }] } }] };
const ScaffoldGeneratorStepOne_E2eExamplesDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "ScaffoldGeneratorStepOne_e2eExamples" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "e2eExamples" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "file" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }, { "kind": "Field", "name": { "kind": "Name", "value": "baseName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileName" } }] } }] } }] } }] };
const RunAllSpecsDataDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "RunAllSpecsData" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "config" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }] } }] } }] };
const RunAllSpecsDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "RunAllSpecs" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "specPath" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "runAllSpecs" } }, "type": { "kind": "NonNullType", "type": { "kind": "ListType", "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setRunAllSpecs" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "runAllSpecs" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "runAllSpecs" } } }] }, { "kind": "Field", "name": { "kind": "Name", "value": "launchOpenProject" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "specPath" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "specPath" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "shouldLaunchNewTab" }, "value": { "kind": "BooleanValue", "value": true } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] };
const _hoisted_1$i = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$h = /* @__PURE__ */ createBaseVNode("path", {
  d: "M5 5V11M5 5H11M5 5V3C5 1.89543 4.10457 1 3 1V1C1.89543 1 1 1.89543 1 3V3C1 4.10457 1.89543 5 3 5H5ZM5 11H11M5 11V13C5 14.1046 4.10457 15 3 15V15C1.89543 15 1 14.1046 1 13V13C1 11.8954 1.89543 11 3 11H5ZM11 11V5M11 11H13C14.1046 11 15 11.8954 15 13V13C15 14.1046 14.1046 15 13 15V15C11.8954 15 11 14.1046 11 13V11ZM11 5V3C11 1.89543 11.8954 1 13 1V1C14.1046 1 15 1.89543 15 3V3C15 4.10457 14.1046 5 13 5H11Z",
  stroke: "#1B1E2E",
  class: "icon-dark",
  "stroke-width": "2",
  "stroke-linecap": "round"
}, null, -1);
const _hoisted_3$e = [
  _hoisted_2$h
];
function render$7(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$i, _hoisted_3$e);
}
const __unplugin_components_1 = { name: "cy-command-key_x16", render: render$7 };
const _hoisted_1$h = ["data-selected"];
const _hoisted_2$g = ["aria-label"];
const _sfc_main$g = /* @__PURE__ */ defineComponent({
  __name: "SidebarNavigationRow",
  props: {
    icon: null,
    name: null,
    active: { type: Boolean, default: false },
    isNavBarExpanded: { type: Boolean },
    badge: { default: void 0 }
  },
  setup(__props) {
    const props = __props;
    const badgeVariant = computed(() => {
      const classes = [];
      if (props.isNavBarExpanded) {
        classes.push("ml-[16px]", "h-[20px]", "text-sm", "leading-3", "p-[4px]");
      } else {
        classes.push("absolute", "outline-gray-1000", "outline-[2px]", "outline", "bottom-0", "text-xs", "h-[16px]", "leading-2", "px-[4px]");
        if (props.badge && (props.badge.status === "failed" || props.badge.status === "error") && props.badge.value.length >= 3) {
          classes.push("right-[4px]");
        } else {
          classes.push("left-[36px]");
        }
      }
      return classes;
    });
    const badgeColorStyles = {
      "success": "bg-jade-500",
      "failed": "bg-error-500",
      "error": "bg-warning-500"
    };
    const transitioning = ref(false);
    watch(() => props.isNavBarExpanded, async () => {
      if (props.badge) {
        transitioning.value = true;
        await promiseTimeout(125);
        transitioning.value = false;
      }
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(_sfc_main$t, {
        placement: "right",
        disabled: __props.isNavBarExpanded,
        distance: 8
      }, {
        popper: withCtx(() => [
          createTextVNode(toDisplayString$1(__props.name), 1)
        ]),
        default: withCtx(() => [
          createBaseVNode("div", {
            class: normalizeClass(["rounded-md flex h-[40px] my-[16px] w-full min-w-[40px] relative items-center group focus-visible:outline-none before:rounded-r-md before:h-[40px] before:mr-[4px] before:text-transparent before:transform before:origin-left before:w-[4px] before:shrink-0 before:duration-300 before:content-open-square hover:before:scale-x-100", __props.active ? "before:bg-indigo-300 before:scale-x-100 before:transition-colors cursor-default" : "before:scale-x-0 before:transition-transform before:bg-gray-300"]),
            "data-selected": __props.active
          }, [
            __props.active ? (openBlock(), createBlock(resolveDynamicComponent(__props.icon), {
              key: 0,
              size: "24",
              "stroke-color": "indigo-300",
              "fill-color": "indigo-700",
              class: "shrink-0 h-[24px] m-[12px] w-[24px] children:transition children:duration-300"
            })) : (openBlock(), createBlock(resolveDynamicComponent(__props.icon), {
              key: 1,
              size: "24",
              "stroke-color": "gray-500",
              "fill-color": "gray-900",
              "hover-stroke-color": "gray-300",
              "hover-fill-color": "gray-800",
              "focus-stroke-color": "gray-300",
              "focus-fill-color": "gray-800",
              "interactive-colors-on-group": "",
              class: "shrink-0 h-[24px] m-[12px] w-[24px] children:transition children:duration-300"
            })),
            createBaseVNode("span", {
              class: normalizeClass([[__props.active ? "text-indigo-300" : "text-gray-500 group-hocus:text-gray-300"], "ml-[8px] transition-colors duration-300 truncate"])
            }, toDisplayString$1(__props.name), 3),
            __props.badge ? (openBlock(), createElementBlock("span", {
              key: 2,
              "data-cy": "debug-badge",
              "aria-label": __props.badge.label,
              class: normalizeClass(["font-medium text-white transition-opacity rounded-md z-1", [unref(badgeVariant), badgeColorStyles[__props.badge.status], { "opacity-0": transitioning.value }]])
            }, toDisplayString$1(__props.badge.value), 11, _hoisted_2$g)) : createCommentVNode("", true)
          ], 10, _hoisted_1$h)
        ]),
        _: 1
      }, 8, ["disabled"]);
    };
  }
});
const _hoisted_1$g = { class: "m-[24px] w-[384px]" };
const _hoisted_2$f = { class: "grow text-gray-700 text-[16px] leading-[24px]" };
const _sfc_main$f = /* @__PURE__ */ defineComponent({
  __name: "KeyboardBindingsModal",
  props: {
    show: { type: Boolean }
  },
  emits: ["close"],
  setup(__props, { emit: emits }) {
    const { t: t2 } = useI18n();
    const keyBindings = [
      {
        key: ["r"],
        description: t2("sidebar.keyboardShortcuts.rerun")
      },
      {
        key: ["s"],
        description: t2("sidebar.keyboardShortcuts.stop")
      },
      {
        key: ["f"],
        description: t2("sidebar.keyboardShortcuts.toggle")
      }
    ];
    return (_ctx, _cache) => {
      return openBlock(), createBlock(_sfc_main$S, {
        class: "transition transition-all duration-200",
        variant: "bare",
        title: unref(t2)("sidebar.keyboardShortcuts.title"),
        "model-value": __props.show,
        "data-cy": "keyboard-modal",
        "no-help": true,
        "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emits("close"))
      }, {
        default: withCtx(() => [
          createBaseVNode("ul", _hoisted_1$g, [
            (openBlock(), createElementBlock(Fragment, null, renderList(keyBindings, (binding) => {
              return createBaseVNode("li", {
                key: binding.key.join("-"),
                class: "flex h-[24px] my-[16px] items-center"
              }, [
                createBaseVNode("p", _hoisted_2$f, toDisplayString$1(binding.description), 1),
                (openBlock(true), createElementBlock(Fragment, null, renderList(binding.key, (key) => {
                  return openBlock(), createElementBlock("span", {
                    key,
                    class: "border rounded-sm bg-gray-50 border-gray-100 h-[24px] text-center ml-[8px] text-indigo-500 text-[14px] leading-[20px] w-[24px] inline-block"
                  }, toDisplayString$1(key), 1);
                }), 128))
              ]);
            }), 64))
          ])
        ]),
        _: 1
      }, 8, ["title", "model-value"]);
    };
  }
});
const ICON_COLOR_PROP_NAMES = ["focus-within-fill-color", "focusWithinFillColor", "focus-within-stroke-color", "focusWithinStrokeColor", "focus-within-secondary-fill-color", "focusWithinSecondaryFillColor", "focus-within-secondary-stroke-color", "focusWithinSecondaryStrokeColor", "hover-fill-color", "hoverFillColor", "hover-stroke-color", "hoverStrokeColor", "hover-secondary-fill-color", "hoverSecondaryFillColor", "hover-secondary-stroke-color", "hoverSecondaryStrokeColor", "focus-fill-color", "focusFillColor", "focus-stroke-color", "focusStrokeColor", "focus-secondary-fill-color", "focusSecondaryFillColor", "focus-secondary-stroke-color", "focusSecondaryStrokeColor", "hocus-fill-color", "hocusFillColor", "hocus-stroke-color", "hocusStrokeColor", "hocus-secondary-fill-color", "hocusSecondaryFillColor", "hocus-secondary-stroke-color", "hocusSecondaryStrokeColor", "fill-color", "fillColor", "stroke-color", "strokeColor", "secondary-fill-color", "secondaryFillColor", "secondary-stroke-color", "secondaryStrokeColor"];
function __rest(s2, e) {
  var t2 = {};
  for (var p2 in s2)
    if (Object.prototype.hasOwnProperty.call(s2, p2) && e.indexOf(p2) < 0)
      t2[p2] = s2[p2];
  if (s2 != null && typeof Object.getOwnPropertySymbols === "function")
    for (var i = 0, p2 = Object.getOwnPropertySymbols(s2); i < p2.length; i++) {
      if (e.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p2[i]))
        t2[p2[i]] = s2[p2[i]];
    }
  return t2;
}
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
var freeGlobal = typeof commonjsGlobal == "object" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
var freeSelf = typeof self == "object" && self && self.Object === Object && self;
var root = freeGlobal || freeSelf || Function("return this")();
var Symbol$1 = root.Symbol;
var symbolProto = Symbol$1 ? Symbol$1.prototype : void 0;
symbolProto ? symbolProto.toString : void 0;
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
var __assign$4 = function() {
  __assign$4 = Object.assign || function __assign2(t2) {
    for (var s2, i = 1, n = arguments.length; i < n; i++) {
      s2 = arguments[i];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign$4.apply(this, arguments);
};
function __spreadArray$6(to2, from, pack) {
  if (pack || arguments.length === 2)
    for (var i = 0, l2 = from.length, ar; i < l2; i++) {
      if (ar || !(i in from)) {
        if (!ar)
          ar = Array.prototype.slice.call(from, 0, i);
        ar[i] = from[i];
      }
    }
  return to2.concat(ar || Array.prototype.slice.call(from));
}
var Console = (
  /** @class */
  function() {
    function Console2() {
    }
    Console2.log = function() {
      var message = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        message[_i] = arguments[_i];
      }
      console.log.apply(console, message);
    };
    Console2.error = function() {
      var message = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        message[_i] = arguments[_i];
      }
      console.error.apply(console, message);
    };
    Console2.time = function(label) {
      console.time(label);
    };
    Console2.timeEnd = function(label) {
      console.timeEnd(label);
    };
    return Console2;
  }()
);
var sky = {
  50: "#f0f9ff",
  100: "#e0f2fe",
  200: "#bae6fd",
  300: "#7dd3fc",
  400: "#38bdf8",
  500: "#0ea5e9",
  600: "#0284c7",
  700: "#0369a1",
  800: "#075985",
  900: "#0c4a6e"
};
var neutral = {
  50: "#fafafa",
  100: "#f5f5f5",
  200: "#e5e5e5",
  300: "#d4d4d4",
  400: "#a3a3a3",
  500: "#737373",
  600: "#525252",
  700: "#404040",
  800: "#262626",
  900: "#171717"
};
var stone = {
  50: "#fafaf9",
  100: "#f5f5f4",
  200: "#e7e5e4",
  300: "#d6d3d1",
  400: "#a8a29e",
  500: "#78716c",
  600: "#57534e",
  700: "#44403c",
  800: "#292524",
  900: "#1c1917"
};
var slate = {
  50: "#f8fafc",
  100: "#f1f5f9",
  200: "#e2e8f0",
  300: "#cbd5e1",
  400: "#94A3B8",
  500: "#64748B",
  600: "#475569",
  700: "#334155",
  800: "#1E293B",
  900: "#0F172A"
};
var zinc = {
  50: "#fafafa",
  100: "#f4f4f5",
  200: "#e4e4e7",
  300: "#d4d4d8",
  400: "#a1a1aa",
  500: "#71717A",
  600: "#52525B",
  700: "#3F3F46",
  800: "#27272A",
  900: "#18181B"
};
var gray = {
  50: "#f9fafb",
  100: "#f3f4f6",
  200: "#e5e7eb",
  300: "#d1d5db",
  400: "#9ca3af",
  500: "#6b7280",
  600: "#4b5563",
  700: "#374151",
  800: "#1f2937",
  900: "#111827"
};
var warned = false;
function color_warn(from, to2) {
  if (!warned) {
    Console.log("warn - '".concat(from, "' has been renamed to '").concat(to2, "'."));
    Console.log("warn - Please update your color palette to eliminate this warning.");
    warned = true;
  }
}
var colors$1 = {
  inherit: "inherit",
  current: "currentColor",
  transparent: "transparent",
  black: "#000",
  white: "#fff",
  rose: {
    50: "#fff1f2",
    100: "#ffe4e6",
    200: "#fecdd3",
    300: "#fda4af",
    400: "#fb7185",
    500: "#f43f5e",
    600: "#e11d48",
    700: "#be123c",
    800: "#9f1239",
    900: "#881337"
  },
  pink: {
    50: "#fdf2f8",
    100: "#fce7f3",
    200: "#fbcfe8",
    300: "#f9a8d4",
    400: "#f472b6",
    500: "#ec4899",
    600: "#db2777",
    700: "#be185d",
    800: "#9d174d",
    900: "#831843"
  },
  fuchsia: {
    50: "#fdf4ff",
    100: "#fae8ff",
    200: "#f5d0fe",
    300: "#f0abfc",
    400: "#e879f9",
    500: "#d946ef",
    600: "#c026d3",
    700: "#a21caf",
    800: "#86198f",
    900: "#701a75"
  },
  purple: {
    50: "#faf5ff",
    100: "#f3e8ff",
    200: "#e9d5ff",
    300: "#d8b4fe",
    400: "#c084fc",
    500: "#a855f7",
    600: "#9333ea",
    700: "#7e22ce",
    800: "#6b21a8",
    900: "#581c87"
  },
  violet: {
    50: "#f5f3ff",
    100: "#ede9fe",
    200: "#ddd6fe",
    300: "#c4b5fd",
    400: "#a78bfa",
    500: "#8b5cf6",
    600: "#7c3aed",
    700: "#6d28d9",
    800: "#5b21b6",
    900: "#4c1d95"
  },
  indigo: {
    50: "#eef2ff",
    100: "#e0e7ff",
    200: "#c7d2fe",
    300: "#a5b4fc",
    400: "#818cf8",
    500: "#6366f1",
    600: "#4f46e5",
    700: "#4338ca",
    800: "#3730a3",
    900: "#312e81"
  },
  blue: {
    50: "#eff6ff",
    100: "#dbeafe",
    200: "#bfdbfe",
    300: "#93c5fd",
    400: "#60a5fa",
    500: "#3b82f6",
    600: "#2563eb",
    700: "#1d4ed8",
    800: "#1e40af",
    900: "#1e3a8a"
  },
  sky,
  get lightBlue() {
    color_warn("lightBlue", "sky");
    return sky;
  },
  cyan: {
    50: "#ecfeff",
    100: "#cffafe",
    200: "#a5f3fc",
    300: "#67e8f9",
    400: "#22d3ee",
    500: "#06b6d4",
    600: "#0891b2",
    700: "#0e7490",
    800: "#155e75",
    900: "#164e63"
  },
  teal: {
    50: "#f0fdfa",
    100: "#ccfbf1",
    200: "#99f6e4",
    300: "#5eead4",
    400: "#2dd4bf",
    500: "#14b8a6",
    600: "#0d9488",
    700: "#0f766e",
    800: "#115e59",
    900: "#134e4a"
  },
  emerald: {
    50: "#ecfdf5",
    100: "#d1fae5",
    200: "#a7f3d0",
    300: "#6ee7b7",
    400: "#34d399",
    500: "#10b981",
    600: "#059669",
    700: "#047857",
    800: "#065f46",
    900: "#064e3b"
  },
  green: {
    50: "#f0fdf4",
    100: "#dcfce7",
    200: "#bbf7d0",
    300: "#86efac",
    400: "#4ade80",
    500: "#22c55e",
    600: "#16a34a",
    700: "#15803d",
    800: "#166534",
    900: "#14532d"
  },
  lime: {
    50: "#f7fee7",
    100: "#ecfccb",
    200: "#d9f99d",
    300: "#bef264",
    400: "#a3e635",
    500: "#84cc16",
    600: "#65a30d",
    700: "#4d7c0f",
    800: "#3f6212",
    900: "#365314"
  },
  yellow: {
    50: "#fefce8",
    100: "#fef9c3",
    200: "#fef08a",
    300: "#fde047",
    400: "#facc15",
    500: "#eab308",
    600: "#ca8a04",
    700: "#a16207",
    800: "#854d0e",
    900: "#713f12"
  },
  amber: {
    50: "#fffbeb",
    100: "#fef3c7",
    200: "#fde68a",
    300: "#fcd34d",
    400: "#fbbf24",
    500: "#f59e0b",
    600: "#d97706",
    700: "#b45309",
    800: "#92400e",
    900: "#78350f"
  },
  orange: {
    50: "#fff7ed",
    100: "#ffedd5",
    200: "#fed7aa",
    300: "#fdba74",
    400: "#fb923c",
    500: "#f97316",
    600: "#ea580c",
    700: "#c2410c",
    800: "#9a3412",
    900: "#7c2d12"
  },
  red: {
    50: "#fef2f2",
    100: "#fee2e2",
    200: "#fecaca",
    300: "#fca5a5",
    400: "#f87171",
    500: "#ef4444",
    600: "#dc2626",
    700: "#b91c1c",
    800: "#991b1b",
    900: "#7f1d1d"
  },
  get warmGray() {
    color_warn("warmGray", "stone");
    return stone;
  },
  get trueGray() {
    color_warn("trueGray", "neutral");
    return neutral;
  },
  gray,
  get coolGray() {
    color_warn("coolGray", "gray");
    return gray;
  },
  get blueGray() {
    color_warn("blueGray", "slate");
    return slate;
  },
  slate,
  zinc,
  get zink() {
    color_warn("zink", "zinc");
    return zinc;
  },
  neutral,
  stone,
  light: {
    50: "#fdfdfd",
    100: "#fcfcfc",
    200: "#fafafa",
    300: "#f8f9fa",
    400: "#f6f6f6",
    500: "#f2f2f2",
    600: "#f1f3f5",
    700: "#e9ecef",
    800: "#dee2e6",
    900: "#dde1e3"
  },
  dark: {
    50: "#4a4a4a",
    100: "#3c3c3c",
    200: "#323232",
    300: "#2d2d2d",
    400: "#222222",
    500: "#1f1f1f",
    600: "#1c1c1e",
    700: "#1b1b1b",
    800: "#181818",
    900: "#0f0f0f"
  }
};
var keyframes = {
  spin: {
    from: {
      transform: "rotate(0deg)"
    },
    to: {
      transform: "rotate(360deg)"
    }
  },
  ping: {
    "0%": {
      transform: "scale(1)",
      opacity: "1"
    },
    "75%, 100%": {
      transform: "scale(2)",
      opacity: "0"
    }
  },
  pulse: {
    "0%, 100%": {
      opacity: "1"
    },
    "50%": {
      opacity: ".5"
    }
  },
  bounce: {
    "0%, 100%": {
      transform: "translateY(-25%)",
      animationTimingFunction: "cubic-bezier(0.8,0,1,1)"
    },
    "50%": {
      transform: "translateY(0)",
      animationTimingFunction: "cubic-bezier(0,0,0.2,1)"
    }
  },
  shock: {
    "from, 20%, 53%, 80%, to": {
      animationTimingFunction: "cubic-bezier(0.215, 0.61, 0.355, 1)",
      transform: "translate3d(0, 0, 0)"
    },
    "40%, 43%": {
      animationTimingFunction: "cubic-bezier(0.755, 0.05, 0.855, 0.06)",
      transform: "translate3d(0, -30px, 0)"
    },
    "70%": {
      animationTimingFunction: "cubic-bezier(0.755, 0.05, 0.855, 0.06)",
      transform: "translate3d(0, -15px, 0)"
    },
    "90%": {
      transform: "translate3d(0, -4px, 0)"
    }
  },
  flash: {
    "from, 50%, to": {
      opacity: "1"
    },
    "25%, 75%": {
      opacity: "0"
    }
  },
  bubble: {
    "from": {
      transform: "scale3d(1, 1, 1)"
    },
    "50%": {
      transform: "scale3d(1.05, 1.05, 1.05)"
    },
    "to": {
      transform: "scale3d(1, 1, 1)"
    }
  },
  rubberBand: {
    "from": {
      transform: "scale3d(1, 1, 1)"
    },
    "30%": {
      transform: "scale3d(1.25, 0.75, 1)"
    },
    "40%": {
      transform: "scale3d(0.75, 1.25, 1)"
    },
    "50%": {
      transform: "scale3d(1.15, 0.85, 1)"
    },
    "65%": {
      transform: "scale3d(0.95, 1.05, 1)"
    },
    "75%": {
      transform: "scale3d(1.05, 0.95, 1)"
    },
    "to": {
      transform: "scale3d(1, 1, 1)"
    }
  },
  shakeX: {
    "from, to": {
      transform: "translate3d(0, 0, 0)"
    },
    "10%, 30%, 50%, 70%, 90%": {
      transform: "translate3d(-10px, 0, 0)"
    },
    "20%, 40%, 60%, 80%": {
      transform: "translate3d(10px, 0, 0)"
    }
  },
  shakeY: {
    "from, to": {
      transform: "translate3d(0, 0, 0)"
    },
    "10%, 30%, 50%, 70%, 90%": {
      transform: "translate3d(0, -10px, 0)"
    },
    "20%, 40%, 60%, 80%": {
      transform: "translate3d(0, 10px, 0)"
    }
  },
  headShake: {
    "0%": {
      transform: "translateX(0)"
    },
    "6.5%": {
      transform: "translateX(-6px) rotateY(-9deg)"
    },
    "18.5%": {
      transform: "translateX(5px) rotateY(7deg)"
    },
    "31.5%": {
      transform: "translateX(-3px) rotateY(-5deg)"
    },
    "43.5%": {
      transform: "translateX(2px) rotateY(3deg)"
    },
    "50%": {
      transform: "translateX(0)"
    }
  },
  swing: {
    "20%": {
      transform: "rotate3d(0, 0, 1, 15deg)"
    },
    "40%": {
      transform: "rotate3d(0, 0, 1, -10deg)"
    },
    "60%": {
      transform: "rotate3d(0, 0, 1, 5deg)"
    },
    "80%": {
      transform: "rotate3d(0, 0, 1, -5deg)"
    },
    "to": {
      transform: "rotate3d(0, 0, 1, 0deg)"
    }
  },
  tada: {
    "from": {
      transform: "scale3d(1, 1, 1)"
    },
    "10%, 20%": {
      transform: "scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg)"
    },
    "30%, 50%, 70%, 90%": {
      transform: "scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg)"
    },
    "40%, 60%, 80%": {
      transform: "scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg)"
    },
    "to": {
      transform: "scale3d(1, 1, 1)"
    }
  },
  wobble: {
    "from": {
      transform: "translate3d(0, 0, 0)"
    },
    "15%": {
      transform: "translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg)"
    },
    "30%": {
      transform: "translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg)"
    },
    "45%": {
      transform: "translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg)"
    },
    "60%": {
      transform: "translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg)"
    },
    "75%": {
      transform: "translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg)"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  jello: {
    "from, 11.1% to": {
      transform: "translate3d(0, 0, 0)"
    },
    "22.2%": {
      transform: "skewX(-12.5deg) skewY(-12.5deg)"
    },
    "33.3%": {
      transform: "skewX(6.25deg) skewY(6.25deg)"
    },
    "44.4%": {
      transform: "skewX(-3.125deg) skewY(-3.125deg)"
    },
    "55.5%": {
      transform: "skewX(1.5625deg) skewY(1.5625deg)"
    },
    "66.6%": {
      transform: "skewX(-0.78125deg) skewY(-0.78125deg)"
    },
    "77.7%": {
      transform: "skewX(0.390625deg) skewY(0.390625deg)"
    },
    "88.8%": {
      transform: "skewX(-0.1953125deg) skewY(-0.1953125deg)"
    }
  },
  heartBeat: {
    "0%": {
      transform: "scale(1)"
    },
    "14%": {
      transform: "scale(1.3)"
    },
    "28%": {
      transform: "scale(1)"
    },
    "42%": {
      transform: "scale(1.3)"
    },
    "70%": {
      transform: "scale(1)"
    }
  },
  hinge: {
    "0%": {
      transformOrigin: "top left",
      animationTimingFunction: "ease-in-out"
    },
    "20%, 60%": {
      transform: "rotate3d(0, 0, 1, 80deg)",
      transformOrigin: "top left",
      animationTimingFunction: "ease-in-out"
    },
    "40%, 80%": {
      transform: "rotate3d(0, 0, 1, 60deg)",
      transformOrigin: "top left",
      animationTimingFunction: "ease-in-out"
    },
    "to": {
      transform: "translate3d(0, 700px, 0)",
      opacity: "0"
    }
  },
  jackInTheBox: {
    "from": {
      opacity: "0",
      transformOrigin: "center bottom",
      transform: "scale(0.1) rotate(30deg)"
    },
    "50%": {
      transform: "rotate(-10deg)"
    },
    "70%": {
      transform: "rotate(3deg)"
    },
    "to": {
      transform: "scale(1)"
    }
  },
  // light speed
  lightSpeedInRight: {
    "from": {
      opacity: "0",
      transform: "translate3d(100%, 0, 0) skewX(-30deg)"
    },
    "60%": {
      opacity: "1",
      transform: "skewX(20deg)"
    },
    "80%": {
      transform: "skewX(-5deg)"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  lightSpeedInLeft: {
    "from": {
      opacity: "0",
      transform: "translate3d(100%, 0, 0) skewX(-30deg)"
    },
    "60%": {
      opacity: "1",
      transform: "skewX(20deg)"
    },
    "80%": {
      transform: "skewX(-5deg)"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  lightSpeedOutLeft: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(100%, 0, 0) skewX(30deg)"
    }
  },
  lightSpeedOutRight: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(100%, 0, 0) skewX(30deg)"
    }
  },
  // flip
  flip: {
    "from": {
      transform: "perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, -360deg)",
      animationTimingFunction: "ease-out"
    },
    "40%": {
      transform: "perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg)",
      animationTimingFunction: "ease-out"
    },
    "50%": {
      transform: "perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg)",
      animationTimingFunction: "ease-in"
    },
    "80%": {
      transform: "perspective(400px) scale3d(0.95, 0.95, 0.95) translate3d(0, 0, 0) rotate3d(0, 1, 0, 0deg)",
      animationTimingFunction: "ease-in"
    },
    "to": {
      transform: "perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, 0deg)",
      animationTimingFunction: "ease-in"
    }
  },
  flipInX: {
    "from": {
      transform: "perspective(400px) rotate3d(1, 0, 0, 90deg)",
      animationTimingFunction: "ease-in",
      opacity: "0"
    },
    "40%": {
      transform: "perspective(400px) rotate3d(1, 0, 0, -20deg)",
      animationTimingFunction: "ease-in"
    },
    "60%": {
      transform: "perspective(400px) rotate3d(1, 0, 0, 10deg)",
      opacity: "1"
    },
    "80%": {
      transform: "perspective(400px) rotate3d(1, 0, 0, -5deg)"
    },
    "to": {
      transform: "perspective(400px)"
    }
  },
  flipInY: {
    "from": {
      transform: "perspective(400px) rotate3d(0, 1, 0, 90deg)",
      animationTimingFunction: "ease-in",
      opacity: "0"
    },
    "40%": {
      transform: "perspective(400px) rotate3d(0, 1, 0, -20deg)",
      animationTimingFunction: "ease-in"
    },
    "60%": {
      transform: "perspective(400px) rotate3d(0, 1, 0, 10deg)",
      opacity: "1"
    },
    "80%": {
      transform: "perspective(400px) rotate3d(0, 1, 0, -5deg)"
    },
    "to": {
      transform: "perspective(400px)"
    }
  },
  flipOutX: {
    "from": {
      transform: "perspective(400px)"
    },
    "30%": {
      transform: "perspective(400px) rotate3d(1, 0, 0, -20deg)",
      opacity: "1"
    },
    "to": {
      transform: "perspective(400px) rotate3d(1, 0, 0, 90deg)",
      opacity: "0"
    }
  },
  flipOutY: {
    "from": {
      transform: "perspective(400px)"
    },
    "30%": {
      transform: "perspective(400px) rotate3d(0, 1, 0, -15deg)",
      opacity: "1"
    },
    "to": {
      transform: "perspective(400px) rotate3d(0, 1, 0, 90deg)",
      opacity: "0"
    }
  },
  // rotate in
  rotateIn: {
    "from": {
      transformOrigin: "center",
      transform: "rotate3d(0, 0, 1, -200deg)",
      opacity: "0"
    },
    "to": {
      transformOrigin: "center",
      transform: "translate3d(0, 0, 0)",
      opacity: "1"
    }
  },
  rotateInDownLeft: {
    "from": {
      transformOrigin: "left bottom",
      transform: "rotate3d(0, 0, 1, -45deg)",
      opacity: "0"
    },
    "to": {
      transformOrigin: "left bottom",
      transform: "translate3d(0, 0, 0)",
      opacity: "1"
    }
  },
  rotateInDownRight: {
    "from": {
      transformOrigin: "right bottom",
      transform: "rotate3d(0, 0, 1, 45deg)",
      opacity: "0"
    },
    "to": {
      transformOrigin: "right bottom",
      transform: "translate3d(0, 0, 0)",
      opacity: "1"
    }
  },
  rotateInUpLeft: {
    "from": {
      transformOrigin: "left top",
      transform: "rotate3d(0, 0, 1, 45deg)",
      opacity: "0"
    },
    "to": {
      transformOrigin: "left top",
      transform: "translate3d(0, 0, 0)",
      opacity: "1"
    }
  },
  rotateInUpRight: {
    "from": {
      transformOrigin: "right bottom",
      transform: "rotate3d(0, 0, 1, -90deg)",
      opacity: "0"
    },
    "to": {
      transformOrigin: "right bottom",
      transform: "translate3d(0, 0, 0)",
      opacity: "1"
    }
  },
  rotateOut: {
    "from": {
      transformOrigin: "center",
      opacity: "1"
    },
    "to": {
      transformOrigin: "center",
      transform: "rotate3d(0, 0, 1, 200deg)",
      opacity: "0"
    }
  },
  rotateOutDownLeft: {
    "from": {
      transformOrigin: "left bottom",
      opacity: "1"
    },
    "to": {
      transformOrigin: "left bottom",
      transform: "rotate3d(0, 0, 1, 45deg)",
      opacity: "0"
    }
  },
  rotateOutDownRight: {
    "from": {
      transformOrigin: "right bottom",
      opacity: "1"
    },
    "to": {
      transformOrigin: "right bottom",
      transform: "rotate3d(0, 0, 1, -45deg)",
      opacity: "0"
    }
  },
  rotateOutUpLeft: {
    "from": {
      transformOrigin: "left bottom",
      opacity: "1"
    },
    "to": {
      transformOrigin: "left bottom",
      transform: "rotate3d(0, 0, 1, -45deg)",
      opacity: "0"
    }
  },
  rotateOutUpRight: {
    "from": {
      transformOrigin: "right bottom",
      opacity: "1"
    },
    "to": {
      transformOrigin: "left bottom",
      transform: "rotate3d(0, 0, 1, 90deg)",
      opacity: "0"
    }
  },
  // roll
  rollIn: {
    "from": {
      opacity: "0",
      transform: "translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  rollOut: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg)"
    }
  },
  // zoom in
  zoomIn: {
    "from": {
      opacity: "0",
      transform: "scale3d(0.3, 0.3, 0.3)"
    },
    "50%": {
      opacity: "1"
    }
  },
  zoomInDown: {
    "from": {
      opacity: "0",
      transform: "scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0)",
      animationTimingFunction: "cubic-bezier(0.55, 0.055, 0.675, 0.19)"
    },
    "60%": {
      opacity: "1",
      transform: "scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0)",
      animationTimingFunction: "cubic-bezier(0.175, 0.885, 0.32, 1)"
    }
  },
  zoomInLeft: {
    "from": {
      opacity: "0",
      transform: "scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0)",
      animationTimingFunction: "cubic-bezier(0.55, 0.055, 0.675, 0.19)"
    },
    "60%": {
      opacity: "1",
      transform: "scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0)",
      animationTimingFunction: "cubic-bezier(0.175, 0.885, 0.32, 1)"
    }
  },
  zoomInRight: {
    "from": {
      opacity: "0",
      transform: "scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0)",
      animationTimingFunction: "cubic-bezier(0.55, 0.055, 0.675, 0.19)"
    },
    "60%": {
      opacity: "1",
      transform: "scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0)",
      animationTimingFunction: "cubic-bezier(0.175, 0.885, 0.32, 1)"
    }
  },
  zoomInUp: {
    "from": {
      opacity: "0",
      transform: "scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0)",
      animationTimingFunction: "cubic-bezier(0.55, 0.055, 0.675, 0.19)"
    },
    "60%": {
      opacity: "1",
      transform: "scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0)",
      animationTimingFunction: "cubic-bezier(0.175, 0.885, 0.32, 1)"
    }
  },
  // bounce in
  bounceIn: {
    "from, 20%, 40%, 60%, 80%, to": {
      animationTimingFunction: "ease-in-out"
    },
    "0%": {
      opacity: "0",
      transform: "scale3d(0.3, 0.3, 0.3)"
    },
    "20%": {
      transform: "scale3d(1.1, 1.1, 1.1)"
    },
    "40%": {
      transform: "scale3d(0.9, 0.9, 0.9)"
    },
    "60%": {
      transform: "scale3d(1.03, 1.03, 1.03)",
      opacity: "1"
    },
    "80%": {
      transform: "scale3d(0.97, 0.97, 0.97)"
    },
    "to": {
      opacity: "1",
      transform: "scale3d(1, 1, 1)"
    }
  },
  bounceInDown: {
    "from, 60%, 75%, 90%, to": {
      animationTimingFunction: "cubic-bezier(0.215, 0.61, 0.355, 1)"
    },
    "0%": {
      opacity: "0",
      transform: "translate3d(0, -3000px, 0)"
    },
    "60%": {
      opacity: "1",
      transform: "translate3d(0, 25px, 0)"
    },
    "75%": {
      transform: "translate3d(0, -10px, 0)"
    },
    "90%": {
      transform: "translate3d(0, 5px, 0)"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  bounceInLeft: {
    "from, 60%, 75%, 90%, to": {
      animationTimingFunction: "cubic-bezier(0.215, 0.61, 0.355, 1)"
    },
    "0%": {
      opacity: "0",
      transform: "translate3d(-3000px, 0, 0)"
    },
    "60%": {
      opacity: "1",
      transform: "translate3d(25px, 0, 0)"
    },
    "75%": {
      transform: "translate3d(-10px, 0, 0)"
    },
    "90%": {
      transform: "translate3d(5px, 0, 0)"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  bounceInRight: {
    "from, 60%, 75%, 90%, to": {
      animationTimingFunction: "cubic-bezier(0.215, 0.61, 0.355, 1)"
    },
    "0%": {
      opacity: "0",
      transform: "translate3d(3000px, 0, 0)"
    },
    "60%": {
      opacity: "1",
      transform: "translate3d(-25px, 0, 0)"
    },
    "75%": {
      transform: "translate3d(10px, 0, 0)"
    },
    "90%": {
      transform: "translate3d(-5px, 0, 0)"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  bounceInUp: {
    "from, 60%, 75%, 90%, to": {
      animationTimingFunction: "cubic-bezier(0.215, 0.61, 0.355, 1)"
    },
    "0%": {
      opacity: "0",
      transform: "translate3d(0, 3000px, 0)"
    },
    "60%": {
      opacity: "1",
      transform: "translate3d(0, -20px, 0)"
    },
    "75%": {
      transform: "translate3d(0, 10px, 0)"
    },
    "90%": {
      transform: "translate3d(0, -5px, 0)"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  // bounce out
  bounceOut: {
    "20%": {
      transform: "scale3d(0.9, 0.9, 0.9)"
    },
    "50%, 55%": {
      opacity: "1",
      transform: "scale3d(1.1, 1.1, 1.1)"
    },
    "to": {
      opacity: "0",
      transform: "scale3d(0.3, 0.3, 0.3)"
    }
  },
  bounceOutDown: {
    "20%": {
      transform: "translate3d(0, 10px, 0)"
    },
    "40%, 45%": {
      opacity: "1",
      transform: "translate3d(0, -20px, 0)"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(0, 2000px, 0)"
    }
  },
  bounceOutLeft: {
    "20%": {
      opacity: "1",
      transform: "translate3d(20px, 0, 0)"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(-2000px, 0, 0)"
    }
  },
  bounceOutRight: {
    "20%": {
      opacity: "1",
      transform: "translate3d(-20px, 0, 0)"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(2000px, 0, 0)"
    }
  },
  bounceOutUp: {
    "20%": {
      transform: "translate3d(0, -10px, 0)"
    },
    "40%, 45%": {
      opacity: "1",
      transform: "translate3d(0, 20px, 0)"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(0, -2000px, 0)"
    }
  },
  // zoom out
  zoomOut: {
    "from": {
      opacity: "1"
    },
    "50%": {
      opacity: "0",
      transform: "scale3d(0.3, 0.3, 0.3)"
    },
    "to": {
      opacity: "0"
    }
  },
  zoomOutDown: {
    "40%": {
      opacity: "1",
      transform: "scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0)",
      animationTimingFunction: "cubic-bezier(0.55, 0.055, 0.675, 0.19)"
    },
    "to": {
      opacity: "0",
      transform: "scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0)",
      transformOrigin: "center bottom",
      animationTimingFunction: "cubic-bezier(0.175, 0.885, 0.32, 1)"
    }
  },
  zoomOutLeft: {
    "40%": {
      opacity: "1",
      transform: "scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0)"
    },
    "to": {
      opacity: "0",
      transform: "scale(0.1) translate3d(-2000px, 0, 0)",
      transformOrigin: "left center"
    }
  },
  zoomOutRight: {
    "40%": {
      opacity: "1",
      transform: "scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0)"
    },
    "to": {
      opacity: "0",
      transform: "scale(0.1) translate3d(2000px, 0, 0)",
      transformOrigin: "right center"
    }
  },
  zoomOutUp: {
    "40%": {
      opacity: "1",
      transform: "scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0)",
      animationTimingFunction: "cubic-bezier(0.55, 0.055, 0.675, 0.19)"
    },
    "to": {
      opacity: "0",
      transform: "scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0)",
      transformOrigin: "center bottom",
      animationTimingFunction: "cubic-bezier(0.175, 0.885, 0.32, 1)"
    }
  },
  // slide in
  slideInDown: {
    "from": {
      transform: "translate3d(0, -100%, 0)",
      visibility: "visible"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  slideInLeft: {
    "from": {
      transform: "translate3d(-100%, 0, 0)",
      visibility: "visible"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  slideInRight: {
    "from": {
      transform: "translate3d(100%, 0, 0)",
      visibility: "visible"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  slideInUp: {
    "from": {
      transform: "translate3d(0, 100%, 0)",
      visibility: "visible"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  // slide out
  slideOutDown: {
    "from": {
      transform: "translate3d(0, 0, 0)"
    },
    "to": {
      visibility: "hidden",
      transform: "translate3d(0, 100%, 0)"
    }
  },
  slideOutLeft: {
    "from": {
      transform: "translate3d(0, 0, 0)"
    },
    "to": {
      visibility: "hidden",
      transform: "translate3d(-100%, 0, 0)"
    }
  },
  slideOutRight: {
    "from": {
      transform: "translate3d(0, 0, 0)"
    },
    "to": {
      visibility: "hidden",
      transform: "translate3d(100%, 0, 0)"
    }
  },
  slideOutUp: {
    "from": {
      transform: "translate3d(0, 0, 0)"
    },
    "to": {
      visibility: "hidden",
      transform: "translate3d(0, -100%, 0)"
    }
  },
  // fade in
  fadeIn: {
    "from": {
      opacity: "0"
    },
    "to": {
      opacity: "1"
    }
  },
  fadeInDown: {
    "from": {
      opacity: "0",
      transform: "translate3d(0, -100%, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInDownBig: {
    "from": {
      opacity: "0",
      transform: "translate3d(0, -2000px, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInLeft: {
    "from": {
      opacity: "0",
      transform: "translate3d(-100%, 0, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInLeftBig: {
    "from": {
      opacity: "0",
      transform: "translate3d(-2000px, 0, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInRight: {
    "from": {
      opacity: "0",
      transform: "translate3d(100%, 0, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInRightBig: {
    "from": {
      opacity: "0",
      transform: "translate3d(2000px, 0, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInUp: {
    "from": {
      opacity: "0",
      transform: "translate3d(0, 100%, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInUpBig: {
    "from": {
      opacity: "0",
      transform: "translate3d(0, 2000px, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInTopLeft: {
    "from": {
      opacity: "0",
      transform: "translate3d(-100%, -100%, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInTopRight: {
    "from": {
      opacity: "0",
      transform: "translate3d(100%, -100%, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInBottomLeft: {
    "from": {
      opacity: "0",
      transform: "translate3d(-100%, 100%, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInBottomRight: {
    "from": {
      opacity: "0",
      transform: "translate3d(100%, 100%, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  // fade out
  fadeOut: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0"
    }
  },
  fadeOutDown: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(0, 100%, 0)"
    }
  },
  fadeOutDownBig: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(0, 2000px, 0)"
    }
  },
  fadeOutLeft: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(-100%, 0, 0)"
    }
  },
  fadeOutLeftBig: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(-2000px, 0, 0)"
    }
  },
  fadeOutRight: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(100%, 0, 0)"
    }
  },
  fadeOutRightBig: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(2000px, 0, 0)"
    }
  },
  fadeOutUp: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(0, -100%, 0)"
    }
  },
  fadeOutUpBig: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(0, -2000px, 0)"
    }
  },
  fadeOutTopLeft: {
    "from": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(-100%, -100%, 0)"
    }
  },
  fadeOutTopRight: {
    "from": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(100%, -100%, 0)"
    }
  },
  fadeOutBottomLeft: {
    "from": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(-100%, 100%, 0)"
    }
  },
  fadeOutBottomRight: {
    "from": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(100%, 100%, 0)"
    }
  },
  // back in
  backInUp: {
    "0%": {
      opacity: "0.7",
      transform: "translateY(1200px) scale(0.7)"
    },
    "80%": {
      opacity: "0.7",
      transform: "translateY(0px) scale(0.7)"
    },
    "100%": {
      opacity: "1",
      transform: "scale(1)"
    }
  },
  backInDown: {
    "0%": {
      opacity: "0.7",
      transform: "translateY(-1200px) scale(0.7)"
    },
    "80%": {
      opacity: "0.7",
      transform: "translateY(0px) scale(0.7)"
    },
    "100%": {
      opacity: "1",
      transform: "scale(1)"
    }
  },
  backInLeft: {
    "0%": {
      opacity: "0.7",
      transform: "translateX(-2000px) scale(0.7)"
    },
    "80%": {
      opacity: "0.7",
      transform: "translateX(0px) scale(0.7)"
    },
    "100%": {
      opacity: "1",
      transform: "scale(1)"
    }
  },
  backInRight: {
    "0%": {
      opacity: "0.7",
      transform: "translateX(2000px) scale(0.7)"
    },
    "80%": {
      opacity: "0.7",
      transform: "translateY(0px) scale(0.7)"
    },
    "100%": {
      opacity: "1",
      transform: "scale(1)"
    }
  },
  // back out
  backOutUp: {
    "0%": {
      opacity: "1",
      transform: "scale(1)"
    },
    "80%": {
      opacity: "0.7",
      transform: "translateY(0px) scale(0.7)"
    },
    "100%": {
      opacity: "0.7",
      transform: "translateY(-700px) scale(0.7)"
    }
  },
  backOutDown: {
    "0%": {
      opacity: "1",
      transform: "scale(1)"
    },
    "80%": {
      opacity: "0.7",
      transform: "translateY(0px) scale(0.7)"
    },
    "100%": {
      opacity: "0.7",
      transform: "translateY(700px) scale(0.7)"
    }
  },
  backOutLeft: {
    "0%": {
      opacity: "1",
      transform: "scale(1)"
    },
    "80%": {
      opacity: "0.7",
      transform: "translateX(-2000px) scale(0.7)"
    },
    "100%": {
      opacity: "0.7",
      transform: "translateY(-700px) scale(0.7)"
    }
  },
  backOutRight: {
    "0%": {
      opacity: "1",
      transform: "scale(1)"
    },
    "80%": {
      opacity: "0.7",
      transform: "translateY(0px) scale(0.7)"
    },
    "100%": {
      opacity: "0.7",
      transform: "translateX(2000px) scale(0.7)"
    }
  }
};
var pseudoClassNames = [
  "hover",
  "focus",
  "active",
  "visited",
  "link",
  "target",
  "focus-visible",
  "focus-within",
  "checked",
  "default",
  "disabled",
  "enabled",
  "indeterminate",
  "invalid",
  "valid",
  "optional",
  "required",
  "placeholder-shown",
  "read-only",
  "read-write",
  "first-of-type",
  "last-of-type",
  "only-child",
  "only-of-type",
  "root",
  "empty"
];
var variantOrder = __spreadArray$6(__spreadArray$6(__spreadArray$6(__spreadArray$6(__spreadArray$6(__spreadArray$6([], pseudoClassNames, true), [
  "not-checked",
  "not-disabled",
  "not-first-of-type",
  "not-last-of-type",
  "first",
  "not-first",
  "last",
  "not-last",
  "not-only-child",
  "not-only-of-type",
  "even",
  "odd",
  "even-of-type",
  "odd-of-type",
  "before",
  "after",
  "first-letter",
  "first-line",
  "file-selector-button",
  "file",
  "selection",
  "marker",
  "svg",
  "all",
  "children",
  "siblings",
  "sibling",
  "ltr",
  "rtl"
], false), pseudoClassNames.map(function(pseudoClassName) {
  return "group-".concat(pseudoClassName);
}), true), [
  "motion-safe",
  "motion-reduce"
], false), pseudoClassNames.map(function(pseudoClassName) {
  return "peer-".concat(pseudoClassName);
}), true), pseudoClassNames.map(function(pseudoClassName) {
  return "peer-not-".concat(pseudoClassName);
}), true);
var layerOrder;
(function(layerOrder2) {
  layerOrder2[layerOrder2["base"] = 10] = "base";
  layerOrder2[layerOrder2["components"] = 150] = "components";
  layerOrder2[layerOrder2["shortcuts"] = 160] = "shortcuts";
  layerOrder2[layerOrder2["utilities"] = 2e4] = "utilities";
})(layerOrder || (layerOrder = {}));
var pluginOrder;
(function(pluginOrder2) {
  pluginOrder2[pluginOrder2["columns"] = 80] = "columns";
  pluginOrder2[pluginOrder2["container"] = 100] = "container";
  pluginOrder2[pluginOrder2["space"] = 200] = "space";
  pluginOrder2[pluginOrder2["divideWidth"] = 300] = "divideWidth";
  pluginOrder2[pluginOrder2["divideColor"] = 400] = "divideColor";
  pluginOrder2[pluginOrder2["divideStyle"] = 500] = "divideStyle";
  pluginOrder2[pluginOrder2["divideOpacity"] = 600] = "divideOpacity";
  pluginOrder2[pluginOrder2["accessibility"] = 700] = "accessibility";
  pluginOrder2[pluginOrder2["appearance"] = 800] = "appearance";
  pluginOrder2[pluginOrder2["backgroundAttachment"] = 900] = "backgroundAttachment";
  pluginOrder2[pluginOrder2["backgroundClip"] = 1e3] = "backgroundClip";
  pluginOrder2[pluginOrder2["backgroundColor"] = 1100] = "backgroundColor";
  pluginOrder2[pluginOrder2["backgroundImage"] = 1200] = "backgroundImage";
  pluginOrder2[pluginOrder2["gradientColorStops"] = 1300] = "gradientColorStops";
  pluginOrder2[pluginOrder2["backgroundOpacity"] = 1400] = "backgroundOpacity";
  pluginOrder2[pluginOrder2["backgroundPosition"] = 1500] = "backgroundPosition";
  pluginOrder2[pluginOrder2["backgroundRepeat"] = 1600] = "backgroundRepeat";
  pluginOrder2[pluginOrder2["backgroundSize"] = 1700] = "backgroundSize";
  pluginOrder2[pluginOrder2["backgroundOrigin"] = 1750] = "backgroundOrigin";
  pluginOrder2[pluginOrder2["borderCollapse"] = 1800] = "borderCollapse";
  pluginOrder2[pluginOrder2["borderColor"] = 1900] = "borderColor";
  pluginOrder2[pluginOrder2["borderOpacity"] = 2e3] = "borderOpacity";
  pluginOrder2[pluginOrder2["borderRadius"] = 2100] = "borderRadius";
  pluginOrder2[pluginOrder2["borderStyle"] = 2200] = "borderStyle";
  pluginOrder2[pluginOrder2["borderWidth"] = 2300] = "borderWidth";
  pluginOrder2[pluginOrder2["boxDecorationBreak"] = 2350] = "boxDecorationBreak";
  pluginOrder2[pluginOrder2["boxSizing"] = 2400] = "boxSizing";
  pluginOrder2[pluginOrder2["cursor"] = 2500] = "cursor";
  pluginOrder2[pluginOrder2["captionSide"] = 2550] = "captionSide";
  pluginOrder2[pluginOrder2["emptyCells"] = 2560] = "emptyCells";
  pluginOrder2[pluginOrder2["display"] = 2600] = "display";
  pluginOrder2[pluginOrder2["flexBasis"] = 2699] = "flexBasis";
  pluginOrder2[pluginOrder2["flexDirection"] = 2700] = "flexDirection";
  pluginOrder2[pluginOrder2["flexWrap"] = 2800] = "flexWrap";
  pluginOrder2[pluginOrder2["placeItems"] = 2900] = "placeItems";
  pluginOrder2[pluginOrder2["placeContent"] = 3e3] = "placeContent";
  pluginOrder2[pluginOrder2["placeSelf"] = 3100] = "placeSelf";
  pluginOrder2[pluginOrder2["alignItems"] = 3200] = "alignItems";
  pluginOrder2[pluginOrder2["alignContent"] = 3300] = "alignContent";
  pluginOrder2[pluginOrder2["alignSelf"] = 3400] = "alignSelf";
  pluginOrder2[pluginOrder2["justifyItems"] = 3500] = "justifyItems";
  pluginOrder2[pluginOrder2["justifyContent"] = 3600] = "justifyContent";
  pluginOrder2[pluginOrder2["justifySelf"] = 3700] = "justifySelf";
  pluginOrder2[pluginOrder2["flex"] = 3800] = "flex";
  pluginOrder2[pluginOrder2["flexGrow"] = 3900] = "flexGrow";
  pluginOrder2[pluginOrder2["flexShrink"] = 4e3] = "flexShrink";
  pluginOrder2[pluginOrder2["order"] = 4100] = "order";
  pluginOrder2[pluginOrder2["float"] = 4200] = "float";
  pluginOrder2[pluginOrder2["clear"] = 4300] = "clear";
  pluginOrder2[pluginOrder2["fontFamily"] = 4400] = "fontFamily";
  pluginOrder2[pluginOrder2["fontWeight"] = 4500] = "fontWeight";
  pluginOrder2[pluginOrder2["height"] = 4600] = "height";
  pluginOrder2[pluginOrder2["fontSize"] = 4700] = "fontSize";
  pluginOrder2[pluginOrder2["lineHeight"] = 4800] = "lineHeight";
  pluginOrder2[pluginOrder2["listStylePosition"] = 4900] = "listStylePosition";
  pluginOrder2[pluginOrder2["listStyleType"] = 5e3] = "listStyleType";
  pluginOrder2[pluginOrder2["margin"] = 5100] = "margin";
  pluginOrder2[pluginOrder2["maxHeight"] = 5200] = "maxHeight";
  pluginOrder2[pluginOrder2["maxWidth"] = 5300] = "maxWidth";
  pluginOrder2[pluginOrder2["minHeight"] = 5400] = "minHeight";
  pluginOrder2[pluginOrder2["minWidth"] = 5500] = "minWidth";
  pluginOrder2[pluginOrder2["objectFit"] = 5600] = "objectFit";
  pluginOrder2[pluginOrder2["objectPosition"] = 5700] = "objectPosition";
  pluginOrder2[pluginOrder2["opacity"] = 5800] = "opacity";
  pluginOrder2[pluginOrder2["outline"] = 5900] = "outline";
  pluginOrder2[pluginOrder2["overflow"] = 6e3] = "overflow";
  pluginOrder2[pluginOrder2["overscrollBehavior"] = 6100] = "overscrollBehavior";
  pluginOrder2[pluginOrder2["padding"] = 6200] = "padding";
  pluginOrder2[pluginOrder2["placeholderColor"] = 6300] = "placeholderColor";
  pluginOrder2[pluginOrder2["placeholderOpacity"] = 6400] = "placeholderOpacity";
  pluginOrder2[pluginOrder2["caretColor"] = 6450] = "caretColor";
  pluginOrder2[pluginOrder2["caretOpacity"] = 6460] = "caretOpacity";
  pluginOrder2[pluginOrder2["tabSize"] = 6470] = "tabSize";
  pluginOrder2[pluginOrder2["pointerEvents"] = 6500] = "pointerEvents";
  pluginOrder2[pluginOrder2["position"] = 6600] = "position";
  pluginOrder2[pluginOrder2["inset"] = 6700] = "inset";
  pluginOrder2[pluginOrder2["resize"] = 6800] = "resize";
  pluginOrder2[pluginOrder2["boxShadow"] = 6900] = "boxShadow";
  pluginOrder2[pluginOrder2["boxShadowColor"] = 6950] = "boxShadowColor";
  pluginOrder2[pluginOrder2["ringWidth"] = 7e3] = "ringWidth";
  pluginOrder2[pluginOrder2["ringOffsetColor"] = 7100] = "ringOffsetColor";
  pluginOrder2[pluginOrder2["ringOffsetWidth"] = 7200] = "ringOffsetWidth";
  pluginOrder2[pluginOrder2["ringColor"] = 7300] = "ringColor";
  pluginOrder2[pluginOrder2["ringOpacity"] = 7400] = "ringOpacity";
  pluginOrder2[pluginOrder2["fill"] = 7500] = "fill";
  pluginOrder2[pluginOrder2["stroke"] = 7600] = "stroke";
  pluginOrder2[pluginOrder2["strokeWidth"] = 7700] = "strokeWidth";
  pluginOrder2[pluginOrder2["strokeDashArray"] = 7750] = "strokeDashArray";
  pluginOrder2[pluginOrder2["strokeDashOffset"] = 7760] = "strokeDashOffset";
  pluginOrder2[pluginOrder2["tableLayout"] = 7800] = "tableLayout";
  pluginOrder2[pluginOrder2["textAlign"] = 7900] = "textAlign";
  pluginOrder2[pluginOrder2["textColor"] = 8e3] = "textColor";
  pluginOrder2[pluginOrder2["textOpacity"] = 8100] = "textOpacity";
  pluginOrder2[pluginOrder2["textOverflow"] = 8200] = "textOverflow";
  pluginOrder2[pluginOrder2["textShadow"] = 8250] = "textShadow";
  pluginOrder2[pluginOrder2["fontStyle"] = 8300] = "fontStyle";
  pluginOrder2[pluginOrder2["textTransform"] = 8400] = "textTransform";
  pluginOrder2[pluginOrder2["textDecorationStyle"] = 8450] = "textDecorationStyle";
  pluginOrder2[pluginOrder2["textDecorationLength"] = 8455] = "textDecorationLength";
  pluginOrder2[pluginOrder2["textDecorationColor"] = 8460] = "textDecorationColor";
  pluginOrder2[pluginOrder2["textDecorationOpacity"] = 8470] = "textDecorationOpacity";
  pluginOrder2[pluginOrder2["textDecorationOffset"] = 8480] = "textDecorationOffset";
  pluginOrder2[pluginOrder2["textDecorationThickness"] = 8490] = "textDecorationThickness";
  pluginOrder2[pluginOrder2["textDecoration"] = 8500] = "textDecoration";
  pluginOrder2[pluginOrder2["textIndent"] = 8550] = "textIndent";
  pluginOrder2[pluginOrder2["textStrokeColor"] = 8560] = "textStrokeColor";
  pluginOrder2[pluginOrder2["textStrokeWidth"] = 8570] = "textStrokeWidth";
  pluginOrder2[pluginOrder2["content"] = 8580] = "content";
  pluginOrder2[pluginOrder2["fontSmoothing"] = 8600] = "fontSmoothing";
  pluginOrder2[pluginOrder2["fontVariantNumeric"] = 8700] = "fontVariantNumeric";
  pluginOrder2[pluginOrder2["letterSpacing"] = 8800] = "letterSpacing";
  pluginOrder2[pluginOrder2["userSelect"] = 8900] = "userSelect";
  pluginOrder2[pluginOrder2["verticalAlign"] = 9e3] = "verticalAlign";
  pluginOrder2[pluginOrder2["visibility"] = 9100] = "visibility";
  pluginOrder2[pluginOrder2["backfaceVisibility"] = 9150] = "backfaceVisibility";
  pluginOrder2[pluginOrder2["whitespace"] = 9200] = "whitespace";
  pluginOrder2[pluginOrder2["wordBreak"] = 9300] = "wordBreak";
  pluginOrder2[pluginOrder2["writingMode"] = 9340] = "writingMode";
  pluginOrder2[pluginOrder2["hyphens"] = 9350] = "hyphens";
  pluginOrder2[pluginOrder2["width"] = 9400] = "width";
  pluginOrder2[pluginOrder2["zIndex"] = 9500] = "zIndex";
  pluginOrder2[pluginOrder2["isolation"] = 9550] = "isolation";
  pluginOrder2[pluginOrder2["gap"] = 9600] = "gap";
  pluginOrder2[pluginOrder2["gridAutoFlow"] = 9700] = "gridAutoFlow";
  pluginOrder2[pluginOrder2["gridTemplateColumns"] = 9800] = "gridTemplateColumns";
  pluginOrder2[pluginOrder2["gridAutoColumns"] = 9900] = "gridAutoColumns";
  pluginOrder2[pluginOrder2["gridColumn"] = 1e4] = "gridColumn";
  pluginOrder2[pluginOrder2["gridColumnStart"] = 10100] = "gridColumnStart";
  pluginOrder2[pluginOrder2["gridColumnEnd"] = 10200] = "gridColumnEnd";
  pluginOrder2[pluginOrder2["gridTemplateRows"] = 10300] = "gridTemplateRows";
  pluginOrder2[pluginOrder2["gridAutoRows"] = 10400] = "gridAutoRows";
  pluginOrder2[pluginOrder2["gridRow"] = 10500] = "gridRow";
  pluginOrder2[pluginOrder2["gridRowStart"] = 10600] = "gridRowStart";
  pluginOrder2[pluginOrder2["gridRowEnd"] = 10700] = "gridRowEnd";
  pluginOrder2[pluginOrder2["transform"] = 10800] = "transform";
  pluginOrder2[pluginOrder2["transformOrigin"] = 10900] = "transformOrigin";
  pluginOrder2[pluginOrder2["scale"] = 11e3] = "scale";
  pluginOrder2[pluginOrder2["rotate"] = 11100] = "rotate";
  pluginOrder2[pluginOrder2["translate"] = 11200] = "translate";
  pluginOrder2[pluginOrder2["skew"] = 11300] = "skew";
  pluginOrder2[pluginOrder2["perspective"] = 11350] = "perspective";
  pluginOrder2[pluginOrder2["perspectiveOrigin"] = 11360] = "perspectiveOrigin";
  pluginOrder2[pluginOrder2["transitionProperty"] = 11400] = "transitionProperty";
  pluginOrder2[pluginOrder2["transitionTimingFunction"] = 11500] = "transitionTimingFunction";
  pluginOrder2[pluginOrder2["transitionDuration"] = 11600] = "transitionDuration";
  pluginOrder2[pluginOrder2["transitionDelay"] = 11700] = "transitionDelay";
  pluginOrder2[pluginOrder2["keyframes"] = 11800] = "keyframes";
  pluginOrder2[pluginOrder2["animation"] = 11900] = "animation";
  pluginOrder2[pluginOrder2["imageRendering"] = 11950] = "imageRendering";
  pluginOrder2[pluginOrder2["mixBlendMode"] = 12e3] = "mixBlendMode";
  pluginOrder2[pluginOrder2["backgroundBlendMode"] = 12100] = "backgroundBlendMode";
  pluginOrder2[pluginOrder2["filter"] = 12200] = "filter";
  pluginOrder2[pluginOrder2["blur"] = 12300] = "blur";
  pluginOrder2[pluginOrder2["brightness"] = 12400] = "brightness";
  pluginOrder2[pluginOrder2["contrast"] = 12500] = "contrast";
  pluginOrder2[pluginOrder2["dropShadow"] = 12600] = "dropShadow";
  pluginOrder2[pluginOrder2["grayscale"] = 12700] = "grayscale";
  pluginOrder2[pluginOrder2["hueRotate"] = 12800] = "hueRotate";
  pluginOrder2[pluginOrder2["invert"] = 12900] = "invert";
  pluginOrder2[pluginOrder2["saturate"] = 13e3] = "saturate";
  pluginOrder2[pluginOrder2["sepia"] = 13100] = "sepia";
  pluginOrder2[pluginOrder2["backdropFilter"] = 13200] = "backdropFilter";
  pluginOrder2[pluginOrder2["backdropBlur"] = 13300] = "backdropBlur";
  pluginOrder2[pluginOrder2["backdropBrightness"] = 13400] = "backdropBrightness";
  pluginOrder2[pluginOrder2["backdropContrast"] = 13500] = "backdropContrast";
  pluginOrder2[pluginOrder2["backdropGrayscale"] = 13600] = "backdropGrayscale";
  pluginOrder2[pluginOrder2["backdropHueRotate"] = 13700] = "backdropHueRotate";
  pluginOrder2[pluginOrder2["backdropInvert"] = 13800] = "backdropInvert";
  pluginOrder2[pluginOrder2["backdropOpacity"] = 13900] = "backdropOpacity";
  pluginOrder2[pluginOrder2["backdropSaturate"] = 14e3] = "backdropSaturate";
  pluginOrder2[pluginOrder2["backdropSepia"] = 14100] = "backdropSepia";
  pluginOrder2[pluginOrder2["willChange"] = 14200] = "willChange";
  pluginOrder2[pluginOrder2["touchAction"] = 14300] = "touchAction";
  pluginOrder2[pluginOrder2["scrollBehavior"] = 14400] = "scrollBehavior";
  pluginOrder2[pluginOrder2["accentColor"] = 14500] = "accentColor";
})(pluginOrder || (pluginOrder = {}));
var createPlugin = function(plugin, config2) {
  return {
    handler: plugin,
    config: config2
  };
};
createPlugin.withOptions = function(pluginFunction, configFunction) {
  if (configFunction === void 0) {
    configFunction = function() {
      return {};
    };
  }
  var optionsFunction = function(options2) {
    if (options2 === void 0) {
      options2 = {};
    }
    return {
      __options: options2,
      handler: pluginFunction(options2),
      config: configFunction(options2)
    };
  };
  optionsFunction.__isOptionsFunction = true;
  optionsFunction.__pluginFunction = pluginFunction;
  optionsFunction.__configFunction = configFunction;
  return optionsFunction;
};
var defaultColors = {
  transparent: "transparent",
  current: "currentColor",
  inherit: "inherit",
  light: colors$1.light,
  dark: colors$1.dark,
  black: colors$1.black,
  white: colors$1.white,
  slate: colors$1.slate,
  gray: colors$1.gray,
  zinc: colors$1.zinc,
  neutral: colors$1.neutral,
  stone: colors$1.stone,
  red: colors$1.red,
  yellow: colors$1.amber,
  green: colors$1.emerald,
  blue: colors$1.blue,
  indigo: colors$1.indigo,
  purple: colors$1.violet,
  pink: colors$1.pink,
  rose: colors$1.rose,
  fuchsia: colors$1.fuchsia,
  violet: colors$1.violet,
  cyan: colors$1.cyan,
  teal: colors$1.teal,
  emerald: colors$1.emerald,
  lime: colors$1.lime,
  amber: colors$1.amber,
  orange: colors$1.orange,
  sky: colors$1.sky,
  "light-blue": colors$1.sky,
  "warm-gray": colors$1.stone,
  "true-gray": colors$1.neutral,
  "cool-gray": colors$1.gray,
  "blue-gray": colors$1.slate
};
var tShirtScale = {
  "xs": "20rem",
  "sm": "24rem",
  "md": "28rem",
  "lg": "32rem",
  "xl": "36rem",
  "2xl": "42rem",
  "3xl": "48rem",
  "4xl": "56rem",
  "5xl": "64rem",
  "6xl": "72rem",
  "7xl": "80rem"
};
({
  // purge: [],
  presets: [],
  prefixer: true,
  attributify: false,
  darkMode: "class",
  theme: {
    orientation: {
      portrait: "portrait",
      landscape: "landscape"
    },
    screens: {
      sm: "640px",
      md: "768px",
      lg: "1024px",
      xl: "1280px",
      "2xl": "1536px"
    },
    colors: defaultColors,
    spacing: {
      px: "1px",
      0: "0px",
      0.5: "0.125rem",
      1: "0.25rem",
      1.5: "0.375rem",
      2: "0.5rem",
      2.5: "0.625rem",
      3: "0.75rem",
      3.5: "0.875rem",
      4: "1rem",
      5: "1.25rem",
      6: "1.5rem",
      7: "1.75rem",
      8: "2rem",
      9: "2.25rem",
      10: "2.5rem",
      11: "2.75rem",
      12: "3rem",
      14: "3.5rem",
      16: "4rem",
      20: "5rem",
      24: "6rem",
      28: "7rem",
      32: "8rem",
      36: "9rem",
      40: "10rem",
      44: "11rem",
      48: "12rem",
      52: "13rem",
      56: "14rem",
      60: "15rem",
      64: "16rem",
      72: "18rem",
      80: "20rem",
      96: "24rem"
      // float -> float/4 rem
    },
    animation: {
      none: "none",
      spin: "spin 1s linear infinite",
      ping: "ping 1s cubic-bezier(0, 0, 0.2, 1) infinite",
      pulse: "pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite",
      bounce: "bounce 1s infinite",
      "shock": {
        animation: "shock",
        transformOrigin: "center bottom"
      },
      "flash": "flash",
      "bubble": "bubble",
      "rubber-band": "rubberBand",
      "shake-x": "shakeX",
      "shake-y": "shakeY",
      "head-shake": "headShake 1s ease-in-out",
      "swing": {
        animation: "swing",
        transformOrigin: "top center"
      },
      "tada": "tada",
      "wobble": "wobble",
      "jello": "jello",
      "heart-beat": "heartBeat 1s ease-in-out",
      "hinge": "hinge 2s",
      "jack-in": "jackInTheBox",
      "light-speed-in-left": "lightSpeedInLeft",
      "light-speed-in-right": "lightSpeedInRight",
      "light-speed-out-left": "lightSpeedOutLeft",
      "light-speed-out-right": "lightSpeedOutRight",
      "flip": {
        animation: "flip",
        backfaceVisibility: "visible"
      },
      "flip-in-x": {
        animation: "flipInX",
        backfaceVisibility: "visible"
      },
      "flip-in-y": {
        animation: "flipInY",
        backfaceVisibility: "visible"
      },
      "flip-out-x": {
        animation: "flipOutX",
        backfaceVisibility: "visible"
      },
      "flip-out-y": {
        animation: "flipOutY",
        backfaceVisibility: "visible"
      },
      "rotate-in": "rotateIn",
      "rotate-in-down-left": "rotateInDownLeft",
      "rotate-in-down-right": "rotateInDownRight",
      "rotate-in-up-left": "rotateInUpLeft",
      "rotate-in-up-right": "rotateInUpRight",
      "rotate-out": "rotateOut",
      "rotate-out-down-left": "rotateOutDownLeft",
      "rotate-out-down-right": "rotateOutDownRight",
      "rotate-out-up-left": "rotateOutUpLeft",
      "rotate-out-up-right": "rotateOutUpRight",
      "roll-in": "rollIn",
      "roll-out": "rollOut",
      "zoom-in": "zoomIn",
      "zoom-in-down": "zoomInDown",
      "zoom-in-left": "zoomInLeft",
      "zoom-in-right": "zoomInRight",
      "zoom-in-up": "zoomInUp",
      "bounce-in": "bounceIn 750ms",
      "bounce-in-down": "bounceInDown",
      "bounce-in-left": "bounceInLeft",
      "bounce-in-right": "bounceInRight",
      "bounce-in-up": "bounceInUp",
      "bounce-out": "bounceOut 750ms",
      "bounce-out-down": "bounceOutDown",
      "bounce-out-left": "bounceOutLeft",
      "bounce-out-right": "bounceOutRight",
      "bounce-out-up": "bounceOutUp",
      "zoom-out": "zoomOut",
      "zoom-out-down": "zoomOutDown",
      "zoom-out-left": "zoomOutLeft",
      "zoom-out-right": "zoomOutRight",
      "zoom-out-up": "zoomOutUp",
      "slide-in-down": "slideInDown",
      "slide-in-left": "slideInLeft",
      "slide-in-right": "slideInRight",
      "slide-in-up": "slideInUp",
      "slide-out-down": "slideOutDown",
      "slide-out-left": "slideOutLeft",
      "slide-out-right": "slideOutRight",
      "slide-out-up": "slideOutUp",
      "fade-in": "fadeIn",
      "fade-in-down": "fadeInDown",
      "fade-in-down-big": "fadeInDownBig",
      "fade-in-left": "fadeInLeft",
      "fade-in-left-big": "fadeInLeftBig",
      "fade-in-right": "fadeInRight",
      "fade-in-right-big": "fadeInRightBig",
      "fade-in-up": "fadeInUp",
      "fade-in-up-big": "fadeInUpBig",
      "fade-in-top-left": "fadeInTopLeft",
      "fade-in-top-right": "fadeInTopRight",
      "fade-in-bottom-left": "fadeInBottomLeft",
      "fade-in-bottom-right": "fadeInBottomRight",
      "fade-out": "fadeOut",
      "fade-out-down": "fadeOutDown",
      "fade-out-down-big": "fadeOutDownBig",
      "fade-out-left": "fadeOutLeft",
      "fade-out-left-big": "fadeOutLeftBig",
      "fade-out-right": "fadeOutRight",
      "fade-out-right-big": "fadeOutRightBig",
      "fade-out-up": "fadeOutUp",
      "fade-out-up-big": "fadeOutUpBig",
      "back-in-up": "backInUp",
      "back-in-down": "backInDown",
      "back-in-left": "backInLeft",
      "back-in-right": "backInRight",
      "back-out-up": "backOutUp",
      "back-out-down": "backOutDown",
      "back-out-left": "backOutLeft",
      "back-out-right": "backOutRight"
    },
    animationDuration: {
      DEFAULT: "1000ms",
      75: "75ms",
      100: "100ms",
      150: "150ms",
      200: "200ms",
      300: "300ms",
      500: "500ms",
      700: "700ms",
      1e3: "1000ms",
      1500: "1500ms",
      2e3: "2000ms",
      2500: "2500ms",
      3e3: "3000ms"
      // int >=0 -> int ms
    },
    animationDelay: {
      DEFAULT: "500ms",
      75: "75ms",
      100: "100ms",
      150: "150ms",
      200: "200ms",
      300: "300ms",
      500: "500ms",
      700: "700ms",
      1e3: "1000ms",
      1500: "1500ms",
      2e3: "2000ms",
      2500: "2500ms",
      3e3: "3000ms"
      // int >=0 -> int ms
    },
    animationIterationCount: {
      DEFAULT: "1",
      loop: "infinite",
      "repeat-1": "1",
      "repeat-2": "2",
      "repeat-3": "3",
      "repeat-4": "4",
      "repeat-5": "5",
      "repeat-6": "6",
      "repeat-7": "7",
      "repeat-8": "8",
      "repeat-9": "9",
      "repeat-10": "10",
      "repeat-11": "11",
      "repeat-12": "12"
    },
    animationTimingFunction: {
      DEFAULT: "ease",
      linear: "linear",
      in: "ease-in",
      out: "ease-out",
      "in-out": "ease-in-out"
    },
    backdropBlur: function(theme) {
      return theme("blur");
    },
    backdropBrightness: function(theme) {
      return theme("brightness");
    },
    backdropContrast: function(theme) {
      return theme("contrast");
    },
    backdropGrayscale: function(theme) {
      return theme("grayscale");
    },
    backdropHueRotate: function(theme) {
      return theme("hueRotate");
    },
    backdropInvert: function(theme) {
      return theme("invert");
    },
    backdropOpacity: function(theme) {
      return theme("opacity");
    },
    backdropSaturate: function(theme) {
      return theme("saturate");
    },
    backdropSepia: function(theme) {
      return theme("sepia");
    },
    backgroundColor: function(theme) {
      return theme("colors");
    },
    backgroundImage: {
      none: "none",
      "gradient-1": "linear-gradient(135deg, #FDEB71 10%, #F8D800 100%)",
      "gradient-2": "linear-gradient(135deg, #ABDCFF 10%, #0396FF 100%)",
      "gradient-3": "linear-gradient(135deg, #FEB692 10%, #EA5455 100%)",
      "gradient-4": "linear-gradient(135deg, #CE9FFC 10%, #7367F0 100%)",
      "gradient-5": "linear-gradient(135deg, #90F7EC 10%, #32CCBC 100%)",
      "gradient-6": "linear-gradient(135deg, #FFF6B7 10%, #F6416C 100%)",
      "gradient-7": "linear-gradient(135deg, #81FBB8 10%, #28C76F 100%)",
      "gradient-8": "linear-gradient(135deg, #E2B0FF 10%, #9F44D3 100%)",
      "gradient-9": "linear-gradient(135deg, #F97794 10%, #623AA2 100%)",
      "gradient-10": "linear-gradient(135deg, #FCCF31 10%, #F55555 100%)",
      "gradient-11": "linear-gradient(135deg, #F761A1 10%, #8C1BAB 100%)",
      "gradient-12": "linear-gradient(135deg, #43CBFF 10%, #9708CC 100%)",
      "gradient-13": "linear-gradient(135deg, #5EFCE8 10%, #736EFE 100%)",
      "gradient-14": "linear-gradient(135deg, #FAD7A1 10%, #E96D71 100%)",
      "gradient-15": "linear-gradient(135deg, #FFD26F 10%, #3677FF 100%)",
      "gradient-16": "linear-gradient(135deg, #A0FE65 10%, #FA016D 100%)",
      "gradient-17": "linear-gradient(135deg, #FFDB01 10%, #0E197D 100%)",
      "gradient-18": "linear-gradient(135deg, #FEC163 10%, #DE4313 100%)",
      "gradient-19": "linear-gradient(135deg, #92FFC0 10%, #002661 100%)",
      "gradient-20": "linear-gradient(135deg, #EEAD92 10%, #6018DC 100%)",
      "gradient-21": "linear-gradient(135deg, #F6CEEC 10%, #D939CD 100%)",
      "gradient-22": "linear-gradient(135deg, #52E5E7 10%, #130CB7 100%)",
      "gradient-23": "linear-gradient(135deg, #F1CA74 10%, #A64DB6 100%)",
      "gradient-24": "linear-gradient(135deg, #E8D07A 10%, #5312D6 100%)",
      "gradient-25": "linear-gradient(135deg, #EECE13 10%, #B210FF 100%)",
      "gradient-26": "linear-gradient(135deg, #79F1A4 10%, #0E5CAD 100%)",
      "gradient-27": "linear-gradient(135deg, #FDD819 10%, #E80505 100%)",
      "gradient-28": "linear-gradient(135deg, #FFF3B0 10%, #CA26FF 100%)",
      "gradient-29": "linear-gradient(135deg, #FFF5C3 10%, #9452A5 100%)",
      "gradient-30": "linear-gradient(135deg, #F05F57 10%, #360940 100%)",
      "gradient-31": "linear-gradient(135deg, #2AFADF 10%, #4C83FF 100%)",
      "gradient-32": "linear-gradient(135deg, #FFF886 10%, #F072B6 100%)",
      "gradient-33": "linear-gradient(135deg, #97ABFF 10%, #123597 100%)",
      "gradient-34": "linear-gradient(135deg, #F5CBFF 10%, #C346C2 100%)",
      "gradient-35": "linear-gradient(135deg, #FFF720 10%, #3CD500 100%)",
      "gradient-36": "linear-gradient(135deg, #FF6FD8 10%, #3813C2 100%)",
      "gradient-37": "linear-gradient(135deg, #EE9AE5 10%, #5961F9 100%)",
      "gradient-38": "linear-gradient(135deg, #FFD3A5 10%, #FD6585 100%)",
      "gradient-39": "linear-gradient(135deg, #C2FFD8 10%, #465EFB 100%)",
      "gradient-40": "linear-gradient(135deg, #FD6585 10%, #0D25B9 100%)",
      "gradient-41": "linear-gradient(135deg, #FD6E6A 10%, #FFC600 100%)",
      "gradient-42": "linear-gradient(135deg, #65FDF0 10%, #1D6FA3 100%)",
      "gradient-43": "linear-gradient(135deg, #6B73FF 10%, #000DFF 100%)",
      "gradient-44": "linear-gradient(135deg, #FF7AF5 10%, #513162 100%)",
      "gradient-45": "linear-gradient(135deg, #F0FF00 10%, #58CFFB 100%)",
      "gradient-46": "linear-gradient(135deg, #FFE985 10%, #FA742B 100%)",
      "gradient-47": "linear-gradient(135deg, #FFA6B7 10%, #1E2AD2 100%)",
      "gradient-48": "linear-gradient(135deg, #FFAA85 10%, #B3315F 100%)",
      "gradient-49": "linear-gradient(135deg, #72EDF2 10%, #5151E5 100%)",
      "gradient-50": "linear-gradient(135deg, #FF9D6C 10%, #BB4E75 100%)",
      "gradient-51": "linear-gradient(135deg, #F6D242 10%, #FF52E5 100%)",
      "gradient-52": "linear-gradient(135deg, #69FF97 10%, #00E4FF 100%)",
      "gradient-53": "linear-gradient(135deg, #3B2667 10%, #BC78EC 100%)",
      "gradient-54": "linear-gradient(135deg, #70F570 10%, #49C628 100%)",
      "gradient-55": "linear-gradient(135deg, #3C8CE7 10%, #00EAFF 100%)",
      "gradient-56": "linear-gradient(135deg, #FAB2FF 10%, #1904E5 100%)",
      "gradient-57": "linear-gradient(135deg, #81FFEF 10%, #F067B4 100%)",
      "gradient-58": "linear-gradient(135deg, #FFA8A8 10%, #FCFF00 100%)",
      "gradient-59": "linear-gradient(135deg, #FFCF71 10%, #2376DD 100%)",
      "gradient-60": "linear-gradient(135deg, #FF96F9 10%, #C32BAC 100%)",
      "gradient-to-t": "linear-gradient(to top, var(--tw-gradient-stops))",
      "gradient-to-tr": "linear-gradient(to top right, var(--tw-gradient-stops))",
      "gradient-to-r": "linear-gradient(to right, var(--tw-gradient-stops))",
      "gradient-to-br": "linear-gradient(to bottom right, var(--tw-gradient-stops))",
      "gradient-to-b": "linear-gradient(to bottom, var(--tw-gradient-stops))",
      "gradient-to-bl": "linear-gradient(to bottom left, var(--tw-gradient-stops))",
      "gradient-to-l": "linear-gradient(to left, var(--tw-gradient-stops))",
      "gradient-to-tl": "linear-gradient(to top left, var(--tw-gradient-stops))"
    },
    backgroundOpacity: function(theme) {
      return theme("opacity");
    },
    backgroundPosition: {
      bottom: "bottom",
      center: "center",
      left: "left",
      "left-bottom": "left bottom",
      "left-top": "left top",
      right: "right",
      "right-bottom": "right bottom",
      "right-top": "right top",
      top: "top"
    },
    backgroundSize: {
      auto: "auto",
      cover: "cover",
      contain: "contain"
    },
    blur: {
      DEFAULT: "8px",
      0: "0",
      sm: "4px",
      md: "12px",
      lg: "16px",
      xl: "24px",
      "2xl": "40px",
      "3xl": "64px"
    },
    borderColor: function(theme) {
      var _a3;
      return __assign$4({ DEFAULT: theme("colors.gray.200", "currentColor") }, (_a3 = theme("colors")) !== null && _a3 !== void 0 ? _a3 : {});
    },
    borderOpacity: function(theme) {
      return theme("opacity");
    },
    borderRadius: {
      DEFAULT: "0.25rem",
      none: "0px",
      sm: "0.125rem",
      md: "0.375rem",
      lg: "0.5rem",
      xl: "0.75rem",
      "2xl": "1rem",
      "3xl": "1.5rem",
      "1": "100%",
      full: "9999px"
    },
    borderWidth: {
      DEFAULT: "1px",
      0: "0px",
      2: "2px",
      4: "4px",
      8: "8px"
      // int >=0 -> int px
    },
    boxShadow: {
      DEFAULT: "0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1)",
      sm: "0 1px 2px 0 rgb(0 0 0/0.05)",
      md: "0 4px 6px -1px rgb(0 0 0/0.1),0 2px 4px -2px rgb(0 0 0/0.1)",
      lg: "0 10px 15px -3px rgb(0 0 0/0.1),0 4px 6px -4px rgb(0 0 0/0.1)",
      xl: "0 20px 25px -5px rgb(0 0 0/0.1),0 8px 10px -6px rgb(0 0 0/0.1)",
      "2xl": "0 25px 50px -12px rgb(0 0 0/0.25)",
      inner: "inset 0 2px 4px 0 rgb(0 0 0/0.05)",
      none: "0 0 #0000"
    },
    boxShadowColor: function(theme) {
      return theme("colors");
    },
    brightness: {
      0: "0",
      50: ".5",
      75: ".75",
      90: ".9",
      95: ".95",
      100: "1",
      105: "1.05",
      110: "1.1",
      125: "1.25",
      150: "1.5",
      200: "2"
    },
    caretColor: function(theme) {
      var _a3;
      return __assign$4({ auto: "auto" }, (_a3 = theme("colors")) !== null && _a3 !== void 0 ? _a3 : {});
    },
    caretOpacity: function(theme) {
      return theme("opacity");
    },
    columns: __assign$4(__assign$4({}, tShirtScale), { auto: "auto", 1: "1", 2: "2", 3: "3", 4: "4", 5: "5", 6: "6", 7: "7", 8: "8", 9: "9", 10: "10", 11: "11", 12: "12", "3xs": "16rem", "2xs": "18rem" }),
    container: {},
    content: {
      DEFAULT: '""',
      "open-quote": "open-quote",
      "close-quote": "close-quote",
      "open-square": '"["',
      "close-square": '"]"',
      "open-curly": '"{"',
      "close-curly": '"}"',
      "open-bracket": '"("',
      "close-bracket": '")"'
    },
    contrast: {
      0: "0",
      50: ".5",
      75: ".75",
      100: "1",
      125: "1.25",
      150: "1.5",
      200: "2"
    },
    cursor: {
      auto: "auto",
      default: "default",
      pointer: "pointer",
      wait: "wait",
      text: "text",
      move: "move",
      help: "help",
      "not-allowed": "not-allowed"
    },
    divideColor: function(theme) {
      return theme("borderColor");
    },
    divideOpacity: function(theme) {
      return theme("borderOpacity");
    },
    divideWidth: function(theme) {
      return theme("borderWidth");
    },
    dropShadow: {
      DEFAULT: ["0 1px 2px rgba(0, 0, 0, 0.1)", "0 1px 1px rgba(0, 0, 0, 0.06)"],
      sm: "0 1px 1px rgba(0,0,0,0.05)",
      md: ["0 4px 3px rgba(0, 0, 0, 0.07)", "0 2px 2px rgba(0, 0, 0, 0.06)"],
      lg: ["0 10px 8px rgba(0, 0, 0, 0.04)", "0 4px 3px rgba(0, 0, 0, 0.1)"],
      xl: ["0 20px 13px rgba(0, 0, 0, 0.03)", "0 8px 5px rgba(0, 0, 0, 0.08)"],
      "2xl": "0 25px 25px rgba(0, 0, 0, 0.15)",
      none: "0 0 #0000"
    },
    fill: function(theme) {
      var _a3;
      return __assign$4(__assign$4({}, (_a3 = theme("colors")) !== null && _a3 !== void 0 ? _a3 : {}), { none: "none" });
    },
    flex: {
      1: "1 1 0%",
      auto: "1 1 auto",
      initial: "0 1 auto",
      none: "none"
    },
    flexGrow: {
      DEFAULT: "1",
      0: "0"
    },
    flexShrink: {
      DEFAULT: "1",
      0: "0"
    },
    fontFamily: {
      sans: [
        "ui-sans-serif",
        "system-ui",
        "-apple-system",
        "BlinkMacSystemFont",
        '"Segoe UI"',
        "Roboto",
        '"Helvetica Neue"',
        "Arial",
        '"Noto Sans"',
        "sans-serif",
        '"Apple Color Emoji"',
        '"Segoe UI Emoji"',
        '"Segoe UI Symbol"',
        '"Noto Color Emoji"'
      ],
      serif: [
        "ui-serif",
        "Georgia",
        "Cambria",
        '"Times New Roman"',
        "Times",
        "serif"
      ],
      mono: [
        "ui-monospace",
        "SFMono-Regular",
        "Menlo",
        "Monaco",
        "Consolas",
        '"Liberation Mono"',
        '"Courier New"',
        "monospace"
      ]
    },
    fontSize: {
      xs: ["0.75rem", { lineHeight: "1rem" }],
      sm: ["0.875rem", { lineHeight: "1.25rem" }],
      base: ["1rem", { lineHeight: "1.5rem" }],
      lg: ["1.125rem", { lineHeight: "1.75rem" }],
      xl: ["1.25rem", { lineHeight: "1.75rem" }],
      "2xl": ["1.5rem", { lineHeight: "2rem" }],
      "3xl": ["1.875rem", { lineHeight: "2.25rem" }],
      "4xl": ["2.25rem", { lineHeight: "2.5rem" }],
      "5xl": ["3rem", { lineHeight: "1" }],
      "6xl": ["3.75rem", { lineHeight: "1" }],
      "7xl": ["4.5rem", { lineHeight: "1" }],
      "8xl": ["6rem", { lineHeight: "1" }],
      "9xl": ["8rem", { lineHeight: "1" }]
      // nxl -> [n rem, lineHeight: 1]
    },
    fontWeight: {
      thin: "100",
      extralight: "200",
      light: "300",
      normal: "400",
      medium: "500",
      semibold: "600",
      bold: "700",
      extrabold: "800",
      black: "900"
      // int[0, 900] -> int
    },
    gap: function(theme) {
      return theme("spacing");
    },
    gradientColorStops: function(theme) {
      return theme("colors");
    },
    grayscale: {
      DEFAULT: "100%",
      0: "0"
    },
    gridAutoColumns: {
      auto: "auto",
      min: "min-content",
      max: "max-content",
      fr: "minmax(0, 1fr)"
    },
    gridAutoRows: {
      auto: "auto",
      min: "min-content",
      max: "max-content",
      fr: "minmax(0, 1fr)"
    },
    gridColumn: {
      auto: "auto",
      "span-1": "span 1 / span 1",
      "span-2": "span 2 / span 2",
      "span-3": "span 3 / span 3",
      "span-4": "span 4 / span 4",
      "span-5": "span 5 / span 5",
      "span-6": "span 6 / span 6",
      "span-7": "span 7 / span 7",
      "span-8": "span 8 / span 8",
      "span-9": "span 9 / span 9",
      "span-10": "span 10 / span 10",
      "span-11": "span 11 / span 11",
      "span-12": "span 12 / span 12",
      // span-int(>=1) -> span int / span int
      "span-full": "1 / -1"
    },
    gridColumnEnd: {
      auto: "auto",
      1: "1",
      2: "2",
      3: "3",
      4: "4",
      5: "5",
      6: "6",
      7: "7",
      8: "8",
      9: "9",
      10: "10",
      11: "11",
      12: "12",
      13: "13"
      // int >=1 -> int
    },
    gridColumnStart: {
      auto: "auto",
      1: "1",
      2: "2",
      3: "3",
      4: "4",
      5: "5",
      6: "6",
      7: "7",
      8: "8",
      9: "9",
      10: "10",
      11: "11",
      12: "12",
      13: "13"
      // int >=1 -> int
    },
    gridRow: {
      auto: "auto",
      "span-1": "span 1 / span 1",
      "span-2": "span 2 / span 2",
      "span-3": "span 3 / span 3",
      "span-4": "span 4 / span 4",
      "span-5": "span 5 / span 5",
      "span-6": "span 6 / span 6",
      // span-int(>=1) -> span int / span int
      "span-full": "1 / -1"
    },
    gridRowStart: {
      auto: "auto",
      1: "1",
      2: "2",
      3: "3",
      4: "4",
      5: "5",
      6: "6",
      7: "7"
      // int >=1 -> int
    },
    gridRowEnd: {
      auto: "auto",
      1: "1",
      2: "2",
      3: "3",
      4: "4",
      5: "5",
      6: "6",
      7: "7"
      // int >=1 -> int
    },
    gridTemplateColumns: {
      none: "none",
      1: "repeat(1, minmax(0, 1fr))",
      2: "repeat(2, minmax(0, 1fr))",
      3: "repeat(3, minmax(0, 1fr))",
      4: "repeat(4, minmax(0, 1fr))",
      5: "repeat(5, minmax(0, 1fr))",
      6: "repeat(6, minmax(0, 1fr))",
      7: "repeat(7, minmax(0, 1fr))",
      8: "repeat(8, minmax(0, 1fr))",
      9: "repeat(9, minmax(0, 1fr))",
      10: "repeat(10, minmax(0, 1fr))",
      11: "repeat(11, minmax(0, 1fr))",
      12: "repeat(12, minmax(0, 1fr))"
      // int >=1 -> repeat(int, minmax(0, 1fr))
    },
    gridTemplateRows: {
      none: "none",
      1: "repeat(1, minmax(0, 1fr))",
      2: "repeat(2, minmax(0, 1fr))",
      3: "repeat(3, minmax(0, 1fr))",
      4: "repeat(4, minmax(0, 1fr))",
      5: "repeat(5, minmax(0, 1fr))",
      6: "repeat(6, minmax(0, 1fr))"
      // int >=1 -> repeat(int, minmax(0, 1fr))
    },
    height: function(theme, _a3) {
      var _b2, _c;
      var breakpoints = _a3.breakpoints;
      return __assign$4(__assign$4(__assign$4(__assign$4({}, (_b2 = theme("spacing")) !== null && _b2 !== void 0 ? _b2 : {}), tShirtScale), {
        "1/2": "50%",
        "1/3": "33.333333%",
        "2/3": "66.666667%",
        "1/4": "25%",
        "2/4": "50%",
        "3/4": "75%",
        "1/5": "20%",
        "2/5": "40%",
        "3/5": "60%",
        "4/5": "80%",
        "1/6": "16.666667%",
        "2/6": "33.333333%",
        "3/6": "50%",
        "4/6": "66.666667%",
        "5/6": "83.333333%",
        // fraction -> percent
        auto: "auto",
        full: "100%",
        min: "min-content",
        max: "max-content",
        prose: "65ch",
        screen: "100vh"
      }), breakpoints((_c = theme("screens")) !== null && _c !== void 0 ? _c : {}));
    },
    hueRotate: {
      "-180": "-180deg",
      "-90": "-90deg",
      "-60": "-60deg",
      "-30": "-30deg",
      "-15": "-15deg",
      0: "0deg",
      15: "15deg",
      30: "30deg",
      60: "60deg",
      90: "90deg",
      180: "180deg"
    },
    inset: function(theme, _a3) {
      var _b2;
      var negative = _a3.negative;
      return __assign$4(__assign$4(__assign$4({ auto: "auto" }, (_b2 = theme("spacing")) !== null && _b2 !== void 0 ? _b2 : {}), negative(theme("spacing"))), { "1/2": "50%", "1/3": "33.333333%", "2/3": "66.666667%", "1/4": "25%", "2/4": "50%", "3/4": "75%", full: "100%", "-1/2": "-50%", "-1/3": "-33.333333%", "-2/3": "-66.666667%", "-1/4": "-25%", "-2/4": "-50%", "-3/4": "-75%", "-full": "-100%" });
    },
    invert: {
      DEFAULT: "100%",
      0: "0"
    },
    keyframes,
    letterSpacing: {
      tighter: "-0.05em",
      tight: "-0.025em",
      normal: "0em",
      wide: "0.025em",
      wider: "0.05em",
      widest: "0.1em"
    },
    lineHeight: {
      none: "1",
      tight: "1.25",
      snug: "1.375",
      normal: "1.5",
      relaxed: "1.625",
      loose: "2",
      3: ".75rem",
      4: "1rem",
      5: "1.25rem",
      6: "1.5rem",
      7: "1.75rem",
      8: "2rem",
      9: "2.25rem",
      10: "2.5rem"
      // int>=0 -> int/4 rem
    },
    listStyleType: {
      none: "none",
      circle: "circle",
      square: "square",
      disc: "disc",
      decimal: "decimal",
      "zero-decimal": "decimal-leading-zero",
      greek: "lower-greek",
      roman: "lower-roman",
      alpha: "lower-alpha",
      "upper-roman": "upper-roman",
      "upper-alpha": "upper-alpha"
    },
    margin: function(theme, _a3) {
      var _b2;
      var negative = _a3.negative;
      return __assign$4(__assign$4({ auto: "auto" }, (_b2 = theme("spacing")) !== null && _b2 !== void 0 ? _b2 : {}), negative(theme("spacing")));
    },
    maxHeight: function(theme, _a3) {
      var _b2, _c;
      var breakpoints = _a3.breakpoints;
      return __assign$4(__assign$4(__assign$4(__assign$4({}, breakpoints((_b2 = theme("screens")) !== null && _b2 !== void 0 ? _b2 : {})), (_c = theme("spacing")) !== null && _c !== void 0 ? _c : {}), tShirtScale), { none: "none", full: "100%", min: "min-content", max: "max-content", prose: "65ch", screen: "100vh" });
    },
    maxWidth: function(theme, _a3) {
      var _b2, _c;
      var breakpoints = _a3.breakpoints;
      return __assign$4(__assign$4(__assign$4(__assign$4({}, breakpoints((_b2 = theme("screens")) !== null && _b2 !== void 0 ? _b2 : {})), (_c = theme("spacing")) !== null && _c !== void 0 ? _c : {}), tShirtScale), { none: "none", full: "100%", min: "min-content", max: "max-content", prose: "65ch", screen: "100vw" });
    },
    minHeight: function(theme) {
      return theme("maxHeight");
    },
    minWidth: function(theme) {
      return theme("maxWidth");
    },
    objectPosition: {
      bottom: "bottom",
      center: "center",
      left: "left",
      "left-bottom": "left bottom",
      "left-top": "left top",
      right: "right",
      "right-bottom": "right bottom",
      "right-top": "right top",
      top: "top"
    },
    opacity: {
      0: "0",
      5: "0.05",
      10: "0.1",
      20: "0.2",
      25: "0.25",
      30: "0.3",
      40: "0.4",
      50: "0.5",
      60: "0.6",
      70: "0.7",
      75: "0.75",
      80: "0.8",
      90: "0.9",
      95: "0.95",
      100: "1"
      // float -> float/100
    },
    order: {
      first: "-9999",
      last: "9999",
      none: "0",
      1: "1",
      2: "2",
      3: "3",
      4: "4",
      5: "5",
      6: "6",
      7: "7",
      8: "8",
      9: "9",
      10: "10",
      11: "11",
      12: "12"
      // int[1, 9999]
    },
    outlineColor: function(theme) {
      return theme("colors");
    },
    outlineWidth: {
      0: "0px",
      1: "1px",
      2: "2px",
      4: "4px",
      8: "8px"
    },
    outlineOffset: {
      0: "0px",
      1: "1px",
      2: "2px",
      4: "4px",
      8: "8px"
    },
    padding: function(theme) {
      return theme("spacing");
    },
    perspective: function(theme) {
      var _a3;
      return __assign$4(__assign$4(__assign$4({}, (_a3 = theme("spacing")) !== null && _a3 !== void 0 ? _a3 : {}), tShirtScale), { none: "none" });
    },
    perspectiveOrigin: {
      center: "center",
      top: "top",
      "top-right": "top right",
      right: "right",
      "bottom-right": "bottom right",
      bottom: "bottom",
      "bottom-left": "bottom left",
      left: "left",
      "top-left": "top left"
    },
    placeholderColor: function(theme) {
      return theme("colors");
    },
    placeholderOpacity: function(theme) {
      return theme("opacity");
    },
    ringColor: function(theme) {
      var _a3;
      return __assign$4({ DEFAULT: theme("colors.blue.500", "#3b82f6") }, (_a3 = theme("colors")) !== null && _a3 !== void 0 ? _a3 : {});
    },
    ringOffsetColor: function(theme) {
      return theme("colors");
    },
    ringOffsetWidth: {
      0: "0px",
      1: "1px",
      2: "2px",
      4: "4px",
      8: "8px"
      // float -> float px
    },
    ringOpacity: function(theme) {
      var _a3;
      return __assign$4({ DEFAULT: "0.5" }, (_a3 = theme("opacity")) !== null && _a3 !== void 0 ? _a3 : {});
    },
    ringWidth: {
      DEFAULT: "3px",
      0: "0px",
      1: "1px",
      2: "2px",
      4: "4px",
      8: "8px"
      // float -> float px
    },
    rotate: {
      "-180": "-180deg",
      "-90": "-90deg",
      "-45": "-45deg",
      "-12": "-12deg",
      "-6": "-6deg",
      "-3": "-3deg",
      "-2": "-2deg",
      "-1": "-1deg",
      0: "0deg",
      1: "1deg",
      2: "2deg",
      3: "3deg",
      6: "6deg",
      12: "12deg",
      45: "45deg",
      90: "90deg",
      180: "180deg"
      // float[0, 360] -> float[0deg, 360deg]
      // ...negative
    },
    saturate: {
      DEFAULT: "0",
      0: "0",
      50: ".5",
      100: "1",
      150: "1.5",
      200: "2"
    },
    scale: {
      0: "0",
      50: ".5",
      75: ".75",
      90: ".9",
      95: ".95",
      100: "1",
      105: "1.05",
      110: "1.1",
      125: "1.25",
      150: "1.5"
      // int >=0 -> int/100
    },
    sepia: {
      DEFAULT: "100%",
      0: "0"
    },
    skew: {
      "-12": "-12deg",
      "-6": "-6deg",
      "-3": "-3deg",
      "-2": "-2deg",
      "-1": "-1deg",
      0: "0deg",
      1: "1deg",
      2: "2deg",
      3: "3deg",
      6: "6deg",
      12: "12deg"
      // float[0, 360] -> float[0deg, 360deg]
      // ...negative
    },
    space: function(theme, _a3) {
      var negative = _a3.negative;
      return __assign$4(__assign$4({}, theme("spacing")), negative(theme("spacing")));
    },
    stroke: function(theme) {
      var _a3;
      return __assign$4(__assign$4({}, (_a3 = theme("colors")) !== null && _a3 !== void 0 ? _a3 : {}), { none: "none" });
    },
    strokeWidth: {
      0: "0",
      1: "1",
      2: "2"
    },
    strokeDashArray: {
      0: "0",
      1: "1",
      2: "2"
    },
    strokeDashOffset: {
      0: "0",
      1: "1",
      2: "2"
    },
    tabSize: {
      DEFAULT: "4",
      0: "0",
      2: "2",
      4: "4",
      8: "8"
      // int >=0 -> int px
    },
    textColor: function(theme) {
      return theme("colors");
    },
    textOpacity: function(theme) {
      return theme("opacity");
    },
    textShadow: {
      DEFAULT: "0px 0px 1px rgb(0 0 0 / 20%), 0px 0px 1px rgb(1 0 5 / 10%)",
      sm: "1px 1px 3px rgb(36 37 47 / 25%)",
      md: "0px 1px 2px rgb(30 29 39 / 19%), 1px 2px 4px rgb(54 64 147 / 18%)",
      lg: "3px 3px 6px rgb(0 0 0 / 26%), 0 0 5px rgb(15 3 86 / 22%)",
      xl: "1px 1px 3px rgb(0 0 0 / 29%), 2px 4px 7px rgb(73 64 125 / 35%)",
      none: "none"
    },
    textDecorationColor: function(theme) {
      return theme("colors");
    },
    textDecorationOpacity: function(theme) {
      return theme("opacity");
    },
    textDecorationLength: {
      "auto": "auto",
      0: "0px",
      2: "2px",
      4: "4px",
      8: "8px"
    },
    textDecorationOffset: {
      "auto": "auto",
      0: "0px",
      1: "1px",
      2: "2px",
      4: "4px",
      8: "8px"
    },
    textDecorationThickness: {
      "auto": "auto",
      "from-font": "from-font",
      0: "0px",
      1: "1px",
      2: "2px",
      4: "4px",
      8: "8px"
    },
    textIndent: {
      DEFAULT: "1.5rem",
      xs: "0.5rem",
      sm: "1rem",
      md: "1.5rem",
      lg: "2rem",
      xl: "2.5rem",
      "2xl": "3rem",
      "3xl": "4rem"
    },
    textStrokeColor: function(theme) {
      var _a3;
      return __assign$4({ DEFAULT: theme("colors.gray.200", "currentColor") }, (_a3 = theme("colors")) !== null && _a3 !== void 0 ? _a3 : {});
    },
    textStrokeWidth: {
      DEFAULT: "medium",
      "none": "0",
      "sm": "thin",
      "md": "medium",
      "lg": "thick"
    },
    transformOrigin: {
      center: "center",
      top: "top",
      "top-right": "top right",
      right: "right",
      "bottom-right": "bottom right",
      bottom: "bottom",
      "bottom-left": "bottom left",
      left: "left",
      "top-left": "top left"
    },
    transitionDuration: {
      DEFAULT: "150ms",
      75: "75ms",
      100: "100ms",
      150: "150ms",
      200: "200ms",
      300: "300ms",
      500: "500ms",
      700: "700ms",
      1e3: "1000ms"
      // int >=0 -> int ms
    },
    transitionDelay: {
      75: "75ms",
      100: "100ms",
      150: "150ms",
      200: "200ms",
      300: "300ms",
      500: "500ms",
      700: "700ms",
      1e3: "1000ms"
      // int >=0 -> int ms
    },
    transitionProperty: {
      DEFAULT: "background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter",
      none: "none",
      all: "all",
      colors: "background-color, border-color, color, fill, stroke",
      opacity: "opacity",
      shadow: "box-shadow",
      transform: "transform"
    },
    transitionTimingFunction: {
      DEFAULT: "cubic-bezier(0.4, 0, 0.2, 1)",
      linear: "linear",
      in: "cubic-bezier(0.4, 0, 1, 1)",
      out: "cubic-bezier(0, 0, 0.2, 1)",
      "in-out": "cubic-bezier(0.4, 0, 0.2, 1)"
    },
    translate: function(theme, _a3) {
      var _b2;
      var negative = _a3.negative;
      return __assign$4(__assign$4(__assign$4({}, (_b2 = theme("spacing")) !== null && _b2 !== void 0 ? _b2 : {}), negative(theme("spacing"))), { "1/2": "50%", "1/3": "33.333333%", "2/3": "66.666667%", "1/4": "25%", "2/4": "50%", "3/4": "75%", full: "100%", "-1/2": "-50%", "-1/3": "-33.333333%", "-2/3": "-66.666667%", "-1/4": "-25%", "-2/4": "-50%", "-3/4": "-75%", "-full": "-100%" });
    },
    width: function(theme, _a3) {
      var _b2, _c;
      var breakpoints = _a3.breakpoints;
      return __assign$4(__assign$4(__assign$4(__assign$4({}, (_b2 = theme("spacing")) !== null && _b2 !== void 0 ? _b2 : {}), tShirtScale), {
        // fraction -> percent
        "1/2": "50%",
        "1/3": "33.333333%",
        "2/3": "66.666667%",
        "1/4": "25%",
        "2/4": "50%",
        "3/4": "75%",
        "1/5": "20%",
        "2/5": "40%",
        "3/5": "60%",
        "4/5": "80%",
        "1/6": "16.666667%",
        "2/6": "33.333333%",
        "3/6": "50%",
        "4/6": "66.666667%",
        "5/6": "83.333333%",
        "1/12": "8.333333%",
        "2/12": "16.666667%",
        "3/12": "25%",
        "4/12": "33.333333%",
        "5/12": "41.666667%",
        "6/12": "50%",
        "7/12": "58.333333%",
        "8/12": "66.666667%",
        "9/12": "75%",
        "10/12": "83.333333%",
        "11/12": "91.666667%",
        auto: "auto",
        full: "100%",
        min: "min-content",
        max: "max-content",
        prose: "65ch",
        screen: "100vw"
      }), breakpoints((_c = theme("screens")) !== null && _c !== void 0 ? _c : {}));
    },
    zIndex: {
      auto: "auto",
      0: "0",
      10: "10",
      20: "20",
      30: "30",
      40: "40",
      50: "50"
      // int[0, 99999] ->  int[0, 99999]
      // ...negative
    }
  },
  variantOrder,
  plugins: [
    createPlugin(function(_a3) {
      var addUtilities = _a3.addUtilities;
      addUtilities({
        ".before\\:contents": {
          "&::before": {
            content: '""',
            display: "contents"
          }
        },
        ".after\\:contents": {
          "&::after": {
            content: '""',
            display: "contents"
          }
        }
      });
    })
  ],
  handlers: {
    static: true,
    time: true,
    color: true,
    opacity: true,
    number: true,
    string: true,
    bracket: true,
    hex: true,
    nxl: true,
    fraction: true,
    size: true,
    variable: true,
    negative: true
  }
});
const COLOR_PREFIXES = [
  "focus-within",
  "hover",
  "focus",
  "hocus",
  ""
];
const cyColors = {
  jade: {
    50: "#E4FBF2",
    100: "#C2F1DE",
    200: "#A3E7CB",
    300: "#69D3A7",
    400: "#1FA971",
    500: "#00814D",
    600: "#005F39",
    700: "#00442A",
    800: "#003220",
    900: "#00291B",
    1e3: "#00261A"
  },
  red: {
    50: "#FBEFF1",
    100: "#FAD9DF",
    200: "#F8C4CD",
    300: "#F59AA9",
    400: "#E45770",
    500: "#C62B49",
    600: "#9F1331",
    700: "#7A0723",
    800: "#5E021B",
    900: "#4F0018",
    1e3: "#490018"
  },
  orange: {
    50: "#F5F4D7",
    100: "#F3ECB3",
    200: "#F1E08F",
    300: "#EDBB4A",
    400: "#DB7903",
    500: "#BD5800",
    600: "#963F00",
    700: "#702C00",
    800: "#521F00",
    900: "#411800",
    1e3: "#391500"
  },
  indigo: {
    50: "#F0F1FF",
    100: "#DADDFE",
    200: "#C5C9FD",
    300: "#9AA2FC",
    400: "#6470F3",
    500: "#4956E3",
    600: "#3A46CC",
    700: "#2F3AB0",
    800: "#252E8F",
    900: "#1C236D",
    1e3: "#151A50"
  },
  gray: {
    50: "#F3F4FA",
    100: "#E1E3ED",
    200: "#D0D2E0",
    300: "#BFC2D4",
    400: "#AFB3C7",
    500: "#9095AD",
    600: "#747994",
    700: "#5A5F7A",
    800: "#434861",
    900: "#2E3247",
    1e3: "#1B1E2E"
  },
  teal: {
    50: "#E0F6FA",
    100: "#B7E7F0",
    200: "#90D9E6",
    300: "#4BBFD2",
    400: "#0097A8",
    500: "#007780",
    600: "#00595D",
    700: "#004143",
    800: "#003131",
    900: "#002828",
    1e3: "#002525"
  },
  purple: {
    50: "#F5F0FB",
    100: "#E9DDFA",
    200: "#DECBF8",
    300: "#C8A7F5",
    400: "#A06CE4",
    500: "#7F43C9",
    600: "#632AA6",
    700: "#4B1A83",
    800: "#3B1268",
    900: "#320E58",
    1e3: "#2F0C52"
  },
  green: {
    50: "#F5F5D0",
    100: "#E7E8AB",
    200: "#DADC89",
    300: "#BDC44D",
    400: "#849706",
    500: "#5B7100",
    600: "#405500",
    700: "#2E4000",
    800: "#233200",
    900: "#1C2A00",
    1e3: "#192500"
  },
  fuchsia: {
    50: "#FAEFFB",
    100: "#F7DAF9",
    200: "#F3C6F8",
    300: "#ED9FF4",
    400: "#D65FE3",
    500: "#B735C7",
    600: "#901CA2",
    700: "#6C0F7E",
    800: "#510862",
    900: "#400651",
    1e3: "#39054A"
  },
  magenta: {
    50: "#FCEEF5",
    100: "#FADAEA",
    200: "#F9C5DF",
    300: "#F69ECA",
    400: "#E45DA3",
    500: "#C53282",
    600: "#9C1964",
    700: "#750C4D",
    800: "#59063D",
    900: "#490435",
    1e3: "#420333"
  }
};
const semanticColors = {
  // TODO: are these actual concepts from the design system?
  primary: Object.assign(Object.assign({}, cyColors.indigo), { DEFAULT: cyColors.indigo[500] }),
  secondary: Object.assign(Object.assign({}, cyColors.indigo), { DEFAULT: cyColors.indigo[50] }),
  error: Object.assign(Object.assign({}, cyColors.red), { DEFAULT: cyColors.red[400] }),
  caution: Object.assign(Object.assign({}, cyColors.red), { DEFAULT: cyColors.red[500] }),
  info: Object.assign(Object.assign({}, cyColors.indigo), { DEFAULT: cyColors.indigo[500] }),
  warning: Object.assign(Object.assign({}, cyColors.orange), { DEFAULT: cyColors.orange[500] }),
  "warning-light": Object.assign(Object.assign({}, cyColors.orange), { DEFAULT: cyColors.orange[400] }),
  success: Object.assign(Object.assign({}, cyColors.jade), { DEFAULT: cyColors.jade[400] }),
  "success-light": Object.assign(Object.assign({}, cyColors.jade), { DEFAULT: cyColors.jade[300] }),
  confirm: Object.assign(Object.assign({}, cyColors.jade), { DEFAULT: cyColors.jade[500] }),
  "body-gray": Object.assign(Object.assign({}, cyColors.gray), { DEFAULT: cyColors.gray[600] })
};
const FilteredColors = Object.keys(colors$1).reduce((acc, key) => {
  if (![
    "blueGray",
    "coolGray",
    "lightBlue",
    "warmGray",
    "trueGray",
    "zink"
  ].includes(key)) {
    acc[key] = colors$1[key];
  }
  return acc;
}, {});
Object.assign(Object.assign(Object.assign({}, FilteredColors), semanticColors), cyColors);
const cyStatusCancelledSimpleX4 = {
  name: "statusCancelledSimpleX4",
  data: `<circle cx="2" cy="2" r="1.5" stroke="currentColor" class="icon-dark"/>`
};
const cyStatusCancelledSimpleX8 = {
  name: "statusCancelledSimpleX8",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M1 4h6" class="icon-dark"/>`
};
const cyStatusCancelledSolidX12 = {
  name: "statusCancelledSolidX12",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M2 6h8" class="icon-dark"/>`
};
const cyStatusCancelledSolidX16 = {
  name: "statusCancelledSolidX16",
  data: `<path fill="#AFB3C7" fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8Zm4-1a1 1 0 0 0 0 2h6a1 1 0 1 0 0-2H5Z" clip-rule="evenodd"/>`
};
const cyStatusCancelledSolidX24 = {
  name: "statusCancelledSolidX24",
  data: `<path fill="#AFB3C7" fill-rule="evenodd" d="M2 12c0 5.523 4.477 10 10 10s10-4.477 10-10S17.523 2 12 2 2 6.477 2 12Zm6-1a1 1 0 1 0 0 2h8a1 1 0 1 0 0-2H8Z" clip-rule="evenodd"/>`
};
const cyStatusErroredSimpleX4 = {
  name: "statusErroredSimpleX4",
  data: `<circle cx="2" cy="2" r="2" fill="currentColor" class="icon-dark"/>`
};
const cyStatusErroredSimpleX8 = {
  name: "statusErroredSimpleX8",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M4 0a1 1 0 0 1 1 1v3a1 1 0 0 1-2 0V1a1 1 0 0 1 1-1Z" class="icon-dark" clip-rule="evenodd"/><path fill="currentColor" d="M5 7a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark"/>`
};
const cyStatusErroredSolidX12 = {
  name: "statusErroredSolidX12",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M6 1a1 1 0 0 1 1 1v5a1 1 0 0 1-2 0V2a1 1 0 0 1 1-1Z" class="icon-dark" clip-rule="evenodd"/><path fill="currentColor" d="M7 10a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark"/>`
};
const cyStatusErroredSolidX16 = {
  name: "statusErroredSolidX16",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14ZM9 5a1 1 0 0 0-2 0v3a1 1 0 0 0 2 0V5Zm-1 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyStatusErroredSolidX24 = {
  name: "statusErroredSolidX24",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10Zm1-14a1 1 0 1 0-2 0v5a1 1 0 1 0 2 0V8Zm-1 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyStatusFailedSimpleX12 = {
  name: "statusFailedSimpleX12",
  data: `<path fill="currentColor" d="M3.707 2.293a1 1 0 0 0-1.414 1.414l1.414-1.414Zm4.586 7.414a1 1 0 0 0 1.414-1.414L8.293 9.707Zm1.414-6a1 1 0 0 0-1.414-1.414l1.414 1.414ZM2.293 8.293a1 1 0 0 0 1.414 1.414L2.293 8.293Zm0-4.586 6 6 1.414-1.414-6-6-1.414 1.414Zm6-1.414-6 6 1.414 1.414 6-6-1.414-1.414Z" class="icon-dark"/>`
};
const cyStatusFailedSimpleX4 = {
  name: "statusFailedSimpleX4",
  data: `<circle cx="2" cy="2" r="2" fill="currentColor" class="icon-dark"/>`
};
const cyStatusFailedSimpleX8 = {
  name: "statusFailedSimpleX8",
  data: `<path fill="currentColor" d="M2.707 1.293a1 1 0 0 0-1.414 1.414l1.414-1.414Zm2.586 5.414a1 1 0 0 0 1.414-1.414L5.293 6.707Zm1.414-4a1 1 0 0 0-1.414-1.414l1.414 1.414ZM1.293 5.293a1 1 0 0 0 1.414 1.414L1.293 5.293Zm0-2.586 4 4 1.414-1.414-4-4-1.414 1.414Zm4-1.414-4 4 1.414 1.414 4-4-1.414-1.414Z" class="icon-dark"/>`
};
const cyStatusFailedSolidX16 = {
  name: "statusFailedSolidX16",
  data: `<circle cx="8" cy="8" r="7" fill="currentColor" class="icon-dark"/><path fill="#fff" d="M6.707 5.293a1 1 0 0 0-1.414 1.414l1.414-1.414Zm2.586 5.414a1 1 0 0 0 1.414-1.414l-1.414 1.414Zm1.414-4a1 1 0 0 0-1.414-1.414l1.414 1.414ZM5.293 9.293a1 1 0 0 0 1.414 1.414L5.293 9.293Zm0-2.586 4 4 1.414-1.414-4-4-1.414 1.414Zm4-1.414-4 4 1.414 1.414 4-4-1.414-1.414Z"/>`
};
const cyStatusFailedSolidX24 = {
  name: "statusFailedSolidX24",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10ZM9.707 8.293a1 1 0 0 0-1.414 1.414L10.586 12l-2.293 2.293a1 1 0 1 0 1.414 1.414L12 13.414l2.293 2.293a1 1 0 0 0 1.414-1.414L13.414 12l2.293-2.293a1 1 0 0 0-1.414-1.414L12 10.586 9.707 8.293Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyStatusPassedSimpleX12 = {
  name: "statusPassedSimpleX12",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 3 5 9 3 6.5" class="icon-dark"/>`
};
const cyStatusPassedSimpleX4 = {
  name: "statusPassedSimpleX4",
  data: `<circle cx="2" cy="2" r="2" fill="currentColor" class="icon-dark"/>`
};
const cyStatusPassedSimpleX8 = {
  name: "statusPassedSimpleX8",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 2 3.5 6 2 4.5" class="icon-dark"/>`
};
const cyStatusPassedSolidX16 = {
  name: "statusPassedSolidX16",
  data: `<circle cx="8" cy="8" r="7" fill="currentColor" class="icon-dark"/><path stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m10 6-2.5 4L6 8.5"/>`
};
const cyStatusPassedSolidX24 = {
  name: "statusPassedSolidX24",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10Zm3.864-12.496a1 1 0 0 0-1.728-1.008l-2.846 4.88-1.583-1.583a1 1 0 0 0-1.414 1.414l2.5 2.5a1 1 0 0 0 1.57-.203l3.5-6Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyStatusPendingOutlineX12 = {
  name: "statusPendingOutlineX12",
  data: `<path stroke="currentColor" stroke-width="2" d="M4.47 2.305a4 4 0 1 0 3.061 0" class="icon-dark"/>`
};
const cyStatusPendingOutlineX16 = {
  name: "statusPendingOutlineX16",
  data: `<path stroke="currentColor" stroke-width="2" d="M5.706 2.46a5.998 5.998 0 1 0 4.59 0" class="icon-dark"/>`
};
const cyStatusPendingOutlineX24 = {
  name: "statusPendingOutlineX24",
  data: `<path stroke="currentColor" stroke-width="2" d="M8.555 3.685a8.999 8.999 0 1 0 6.887 0" class="icon-dark"/>`
};
const cyStatusPendingSimpleX4 = {
  name: "statusPendingSimpleX4",
  data: `<circle cx="2" cy="2" r="1.5" stroke="currentColor" class="icon-dark"/>`
};
const cyStatusPendingSimpleX8 = {
  name: "statusPendingSimpleX8",
  data: `<path stroke="currentColor" stroke-width="2" d="M2.852 1.228a3 3 0 1 0 2.296 0" class="icon-dark"/>`
};
const cyStatusPlaceholderSimpleX4 = {
  name: "statusPlaceholderSimpleX4",
  data: `<circle cx="2" cy="2" r="2" fill="currentColor" class="icon-dark"/>`
};
const cyStatusPlaceholderSimpleX8 = {
  name: "statusPlaceholderSimpleX8",
  data: `<circle cx="4" cy="4" r="3" fill="currentColor" class="icon-dark"/>`
};
const cyStatusPlaceholderSolidX12 = {
  name: "statusPlaceholderSolidX12",
  data: `<circle cx="6" cy="6" r="5" fill="currentColor" class="icon-dark"/>`
};
const cyStatusPlaceholderSolidX16 = {
  name: "statusPlaceholderSolidX16",
  data: `<circle cx="8" cy="8" r="7" fill="currentColor" class="icon-dark"/>`
};
const cyStatusPlaceholderSolidX24 = {
  name: "statusPlaceholderSolidX24",
  data: `<circle cx="12" cy="12" r="10" fill="currentColor" class="icon-dark"/>`
};
const cyStatusQueuedOutlineX12 = {
  name: "statusQueuedOutlineX12",
  data: `<circle cx="6" cy="6" r="4" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-dark"/>`
};
const cyStatusQueuedOutlineX16 = {
  name: "statusQueuedOutlineX16",
  data: `<circle cx="8" cy="8" r="6" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-dark"/>`
};
const cyStatusQueuedOutlineX24 = {
  name: "statusQueuedOutlineX24",
  data: `<circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="2" class="icon-dark"/>`
};
const cyStatusQueuedSimpleX4 = {
  name: "statusQueuedSimpleX4",
  data: `<circle cx="2" cy="2" r="1.5" stroke="currentColor" class="icon-dark"/>`
};
const cyStatusQueuedSimpleX8 = {
  name: "statusQueuedSimpleX8",
  data: `<circle cx="4" cy="4" r="3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-dark"/>`
};
const cyStatusRunningOutlineX12 = {
  name: "statusRunningOutlineX12",
  data: `<circle cx="6" cy="6" r="4" stroke="#E1E3ED" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-light"/><circle cx="6" cy="6" r="4" stroke="currentColor" stroke-dasharray="5 20" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-dark"><animate attributeName="stroke-dashoffset" dur="1s" repeatCount="indefinite" values="25;0"/></circle>`
};
const cyStatusRunningOutlineX16 = {
  name: "statusRunningOutlineX16",
  data: `<circle cx="8" cy="8" r="6" stroke="#E1E3ED" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-light"/><circle cx="8" cy="8" r="6" stroke="currentColor" stroke-dasharray="10 28" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-dark"><animate attributeName="stroke-dashoffset" dur="1s" repeatCount="indefinite" values="36.6;0"/></circle>`
};
const cyStatusRunningOutlineX24 = {
  name: "statusRunningOutlineX24",
  data: `<circle cx="12" cy="12" r="9" stroke="#E1E3ED" stroke-width="2" class="icon-light"/><circle cx="12" cy="12" r="9" stroke="currentColor" stroke-dasharray="15 42" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-dark"><animate attributeName="stroke-dashoffset" dur="1s" repeatCount="indefinite" values="57;0"/></circle>`
};
const cyStatusRunningSimpleX4 = {
  name: "statusRunningSimpleX4",
  data: `<circle cx="2" cy="2" r="1.5" fill="#C5C9FD" stroke="currentColor" class="icon-dark-stroke icon-light-fill"><animate attributeName="stroke-width" dur="1.5s" repeatCount="indefinite" values="2;1;2"/><animate attributeName="r" dur="1.5s" repeatCount="indefinite" values="1;1.5;1"/></circle>`
};
const cyStatusRunningSimpleX8 = {
  name: "statusRunningSimpleX8",
  data: `<circle cx="4" cy="4" r="3" stroke="#E1E3ED" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-light"/><circle cx="4" cy="4" r="3" stroke="currentColor" stroke-dasharray="5 14" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-dark"><animate attributeName="stroke-dashoffset" dur="1s" repeatCount="indefinite" values="18.3;0"/></circle>`
};
const cyStatusSkippedOutlineX12 = {
  name: "statusSkippedOutlineX12",
  data: `<path stroke="currentColor" stroke-width="2" d="M3.172 8.828a4 4 0 0 0 5.656-5.656M3.172 8.828a4 4 0 0 1 5.656-5.656M3.172 8.828l5.656-5.656" class="icon-dark"/>`
};
const cyStatusSkippedOutlineX16 = {
  name: "statusSkippedOutlineX16",
  data: `<path stroke="currentColor" stroke-width="2" d="M3.757 12.243a6 6 0 1 0 8.486-8.486m-8.486 8.486a6 6 0 1 1 8.486-8.486m-8.486 8.486 8.486-8.486" class="icon-dark"/>`
};
const cyStatusSkippedOutlineX24 = {
  name: "statusSkippedOutlineX24",
  data: `<path stroke="currentColor" stroke-width="2" d="M5.636 18.364A9 9 0 0 0 18.364 5.636M5.636 18.364A9 9 0 0 1 18.364 5.636M5.636 18.364 18.364 5.636" class="icon-dark"/>`
};
const cyStatusSkippedSimpleX4 = {
  name: "statusSkippedSimpleX4",
  data: `<circle cx="2" cy="2" r="1.5" stroke="currentColor" class="icon-dark"/>`
};
const cyStatusSkippedSimpleX8 = {
  name: "statusSkippedSimpleX8",
  data: `<path stroke="currentColor" stroke-width="2" d="M1.879 6.121A3 3 0 0 0 6.12 1.88M1.88 6.12A3 3 0 1 1 6.12 1.88M1.88 6.12 6.12 1.88" class="icon-dark"/>`
};
const getComponentAttributes = (props) => {
  const { size: size2, availableSizes, interactiveColorsOnGroup } = props, otherProps = __rest(props, ["size", "availableSizes", "interactiveColorsOnGroup"]);
  const sizeWithDefault = size2 !== null && size2 !== void 0 ? size2 : availableSizes.length >= 1 ? availableSizes.indexOf("16") > -1 ? "16" : availableSizes[0] : "";
  const protectedInteractiveColorsOnGroup = interactiveColorsOnGroup === void 0 ? otherProps["interactive-colors-on-group"] : interactiveColorsOnGroup;
  delete otherProps["interactive-colors-on-group"];
  const compiledClasses = Object.keys(otherProps).filter((attrName) => ICON_COLOR_PROP_NAMES.includes(attrName)).map((colorAttrName) => {
    const color = otherProps[colorAttrName];
    const lowerCaseColor = colorAttrName.toLowerCase().replace(/-/g, "");
    const colorClass = lowerCaseColor.includes("strokecolor") ? "dark" : "light";
    const secondaryClass = lowerCaseColor.includes("secondary") ? "-secondary" : "";
    const pseudoClass = COLOR_PREFIXES.reduce((state, sta) => {
      if (state.length)
        return state;
      return lowerCaseColor.includes(sta.replace(/-/g, "")) ? sta : "";
    }, "");
    const prefix = pseudoClass.length ? protectedInteractiveColorsOnGroup !== void 0 && protectedInteractiveColorsOnGroup !== false ? `group-${pseudoClass}:` : `icon-${pseudoClass}:` : "";
    const finalClass = `${prefix}icon-${colorClass}${secondaryClass}-${color}`;
    return finalClass;
  });
  return { compiledClasses, sizeWithDefault };
};
const c = ({
  body: a2,
  compiledClasses: t2,
  size: n,
  ...e
}) => {
  const o2 = Object.keys(e).reduce(
    (r2, s2) => (!ICON_COLOR_PROP_NAMES.includes(
      s2
    ) && s2 !== "name" && (r2[s2] = e[s2]), r2),
    {}
  ), i = {
    width: n,
    height: n,
    viewBox: `0 0 ${n} ${n}`,
    fill: "none",
    innerHTML: a2,
    class: void 0,
    ...o2
    // add all standard attributes back to the svg tag
  };
  return t2.length && (i.class = t2.join(" ")), i;
}, f$1 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 3v10m5-5H3" class="icon-dark"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "action-add-medium" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, z = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m4 12 8-8M4 4l8 8" class="icon-dark"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "action-delete-medium" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, B = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path fill="#D0D2E0" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m11.322 8.424-6.557 4.098A.5.5 0 0 1 4 12.098V3.902a.5.5 0 0 1 .765-.424l6.557 4.098a.5.5 0 0 1 0 .848Z" class="icon-dark-stroke icon-light-fill"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "action-play-small" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, G = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path fill="#E1E3ED" stroke="currentColor" stroke-width="2" d="M12.95 12.95a7 7 0 1 1-9.9-9.9 7 7 0 0 1 9.9 9.9Z" class="icon-dark-stroke icon-light-fill"/><path fill="currentColor" fill-rule="evenodd" d="m6.845 5.535-.001.001A1 1 0 0 1 5.146 4.48L6 5c-.854-.52-.854-.52-.853-.521v-.001l.001-.002.003-.004.005-.009.015-.023.042-.061a3.315 3.315 0 0 1 .657-.672A3.452 3.452 0 0 1 8 3c1.099 0 1.911.432 2.414 1.113.465.63.586 1.365.586 1.887 0 .63-.173 1.147-.463 1.574-.272.402-.62.68-.871.873-.608.465-.655.516-.673.67a1 1 0 1 1-1.986-.234c.125-1.061.915-1.638 1.327-1.938l.117-.087c.229-.175.352-.29.43-.405C8.944 6.363 9 6.237 9 6c0-.259-.067-.525-.195-.7C8.714 5.179 8.526 5 8 5c-.437 0-.729.152-.913.294a1.316 1.316 0 0 0-.242.241ZM8 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" class="icon-dark" clip-rule="evenodd"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "action-question-mark-outline" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, L = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path fill="currentColor" d="m13 2.071-.707-.707A1 1 0 0 1 14 2.071h-1Zm0 2.572h1a1 1 0 0 1-1 1v-1Zm-2.571 0v1a1 1 0 0 1-.708-1.707l.708.707Zm1.17 4.321a1 1 0 0 1 1.84.786l-1.84-.786ZM14 2.071v2.572h-2V2.07h2ZM7 2a5 5 0 0 0-5 5H0a7 7 0 0 1 7-7v2Zm4.6 3.036A5.002 5.002 0 0 0 7 2V0a7.001 7.001 0 0 1 6.439 4.25l-1.84.786Zm1.4.607h-.48v-2H13v2Zm-.48 0h-2.091v-2h2.09v2ZM2 7c0 1.381.559 2.63 1.464 3.536L2.05 11.95A6.981 6.981 0 0 1 0 7h2Zm1.464 3.536A4.98 4.98 0 0 0 7 12v2a6.981 6.981 0 0 1-4.95-2.05l1.414-1.414ZM7 12a5.002 5.002 0 0 0 4.6-3.036l1.839.786A7.002 7.002 0 0 1 7 14v-2Zm2.721-8.064 2.572-2.572 1.414 1.415-2.571 2.571L9.72 3.936Z" class="icon-dark"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "action-refresh" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, P = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 8a5 5 0 1 1-5-5h3m0 0L9 5m2-2L9 1" class="icon-dark"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "action-restart" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, K = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<mask id="browser-chrome-beta_x16_svg__a" width="16" height="16" x="0" y="0" maskUnits="userSpaceOnUse" style="mask-type:luminance"><path fill="#fff" d="M8.009 15.42a7.412 7.412 0 1 0 0-14.824 7.412 7.412 0 0 0 0 14.825Z"/></mask><g mask="url(#browser-chrome-beta_x16_svg__a)"><path fill="#DB4437" d="M1.774.596v9.098H5.09L8.01 4.64h7.412V.596H1.774Z"/><path fill="url(#browser-chrome-beta_x16_svg__b)" d="M1.774.596v9.098H5.09L8.01 4.64h7.412V.596H1.774Z"/><path fill="#3E2723" fill-opacity=".1" d="M5.171 9.663 1.816 3.911l-.049.083 3.331 5.712.073-.043Z"/><path fill="#0F9D58" d="M.596 15.42h7.056l3.275-3.274V9.694H5.091L.596 1.985v13.436Z"/><path fill="url(#browser-chrome-beta_x16_svg__c)" d="M.596 15.42h7.056l3.275-3.274V9.694H5.091L.596 1.985v13.436Z"/><path fill="#263238" fill-opacity=".1" d="m10.86 9.804-.07-.039-3.235 5.656h.097l3.209-5.613-.002-.004Z"/><mask id="browser-chrome-beta_x16_svg__d" width="11" height="15" x="0" y="1" maskUnits="userSpaceOnUse" style="mask-type:luminance"><path fill="#fff" d="M.596 15.42h7.056l3.275-3.274V9.694H5.091L.596 1.985v13.436Z"/></mask><g mask="url(#browser-chrome-beta_x16_svg__d)"><path fill="#FFCD40" d="m8.009 4.64 2.918 5.054-3.275 5.727h7.769V4.64H8.009Z"/><path fill="url(#browser-chrome-beta_x16_svg__e)" d="m8.009 4.64 2.918 5.054-3.275 5.727h7.769V4.64H8.009Z"/></g><path fill="#FFCD40" d="m8.009 4.64 2.918 5.054-3.275 5.727h7.769V4.64H8.009Z"/><path fill="url(#browser-chrome-beta_x16_svg__f)" d="m8.009 4.64 2.918 5.054-3.275 5.727h7.769V4.64H8.009Z"/><mask id="browser-chrome-beta_x16_svg__g" width="9" height="12" x="7" y="4" maskUnits="userSpaceOnUse" style="mask-type:luminance"><path fill="#fff" d="m8.009 4.64 2.918 5.054-3.275 5.727h7.769V4.64H8.009Z"/></mask><g mask="url(#browser-chrome-beta_x16_svg__g)"><path fill="#DB4437" d="M1.774.596v9.098H5.09L8.01 4.64h7.412V.596H1.774Z"/><path fill="url(#browser-chrome-beta_x16_svg__h)" d="M1.774.596v9.098H5.09L8.01 4.64h7.412V.596H1.774Z"/></g><path fill="url(#browser-chrome-beta_x16_svg__i)" d="M8.009 4.64v1.763L14.61 4.64H8.01Z"/><mask id="browser-chrome-beta_x16_svg__j" width="15" height="10" x="1" y="0" maskUnits="userSpaceOnUse" style="mask-type:luminance"><path fill="#fff" d="M1.774.596v3.398l3.317 5.7L8.01 4.64h7.412V.596H1.774Z"/></mask><g mask="url(#browser-chrome-beta_x16_svg__j)"><path fill="#0F9D58" d="M.596 15.42h7.056l3.275-3.274V9.694H5.091L.596 1.985v13.436Z"/><path fill="url(#browser-chrome-beta_x16_svg__k)" d="M.596 15.42h7.056l3.275-3.274V9.694H5.091L.596 1.985v13.436Z"/></g><path fill="url(#browser-chrome-beta_x16_svg__l)" d="m1.774 4.004 4.82 4.82-1.503.87-3.317-5.69Z"/><path fill="url(#browser-chrome-beta_x16_svg__m)" d="m7.657 15.412 1.766-6.587 1.504.869-3.27 5.718Z"/><path fill="#F1F1F1" d="M8.009 11.377a3.369 3.369 0 1 0 0-6.737 3.369 3.369 0 0 0 0 6.737Z"/><path fill="#4285F4" d="M8.008 10.704a2.696 2.696 0 1 0 0-5.391 2.696 2.696 0 0 0 0 5.391Z"/><path fill="#3E2723" fill-opacity=".2" d="M8.009 4.555a3.369 3.369 0 0 0-3.37 3.37v.084a3.369 3.369 0 0 1 3.37-3.37h7.412v-.083l-7.412-.001Z"/><path fill="#fff" fill-opacity=".1" d="M10.922 9.694a3.365 3.365 0 0 1-5.829 0L.596 1.985v.084l4.495 7.708a3.364 3.364 0 0 0 5.83 0v-.083h.001Z"/><path fill="#3E2723" d="M8.092 4.64h-.043a3.367 3.367 0 1 1 0 6.734h.043a3.37 3.37 0 1 0 0-6.74v.006Z" opacity=".1"/><path fill="#fff" fill-opacity=".2" d="M10.956 9.804a3.358 3.358 0 0 0 .29-2.699 3.332 3.332 0 0 1-.325 2.585l-3.269 5.73h.098l3.208-5.612-.002-.004ZM8.01.682a7.412 7.412 0 0 1 7.412 7.37v-.043a7.412 7.412 0 0 0-14.825 0v.042A7.412 7.412 0 0 1 8.01.681Z"/><path fill="#3E2723" fill-opacity=".1" d="M8.009 15.335a7.412 7.412 0 0 0 7.412-7.37v.044a7.412 7.412 0 0 1-14.825 0v-.043a7.412 7.412 0 0 0 7.413 7.37Z"/></g><mask id="browser-chrome-beta_x16_svg__n" width="16" height="16" x="0" y="0" maskUnits="userSpaceOnUse" style="mask-type:luminance"><path fill="#fff" d="M8.009 15.42a7.412 7.412 0 1 0 0-14.824 7.412 7.412 0 0 0 0 14.825Z"/></mask><g mask="url(#browser-chrome-beta_x16_svg__n)"><path fill="#424242" d="M.348 9.239h15.536v6.504H.348V9.239Z"/></g><path fill="#fff" d="M5.37 12.78v-2.045h.739a.6.6 0 0 1 .414.158.51.51 0 0 1 .17.397.447.447 0 0 1-.075.258.479.479 0 0 1-.201.17v.012c.098.03.185.09.249.17a.462.462 0 0 1 .097.292.537.537 0 0 1-.179.417.63.63 0 0 1-.434.17h-.78Zm.263-1.166h.476a.309.309 0 0 0 .238-.099.305.305 0 0 0 0-.43.294.294 0 0 0-.23-.096h-.484v.625Zm0 .915h.527a.314.314 0 0 0 .245-.106.34.34 0 0 0 .094-.23.34.34 0 0 0-.351-.34h-.511l-.004.676Zm2.018.29a.68.68 0 0 1-.511-.212.748.748 0 0 1-.198-.533.769.769 0 0 1 .192-.525.623.623 0 0 1 .491-.22.646.646 0 0 1 .498.203c.13.15.196.344.185.542v.05H7.201a.475.475 0 0 0 .141.34c.081.08.19.124.304.123a.377.377 0 0 0 .381-.24l.234.097a.629.629 0 0 1-.225.272.654.654 0 0 1-.385.103Zm.376-.912a.373.373 0 0 0-.247-.315.391.391 0 0 0-.162-.022.374.374 0 0 0-.252.092.466.466 0 0 0-.146.245h.807Zm1.08.888a.406.406 0 0 1-.45-.448v-.733h-.245v-.239h.244v-.427h.262v.428h.341v.24h-.34v.712c0 .152.062.228.187.228a.277.277 0 0 0 .12-.022l.091.225a.53.53 0 0 1-.21.036Zm.818.024a.552.552 0 0 1-.371-.128.424.424 0 0 1-.15-.34.42.42 0 0 1 .17-.359.716.716 0 0 1 .437-.13.751.751 0 0 1 .38.086v-.04a.31.31 0 0 0-.106-.246.378.378 0 0 0-.259-.092.4.4 0 0 0-.206.054.28.28 0 0 0-.128.149l-.24-.103a.543.543 0 0 1 .19-.231.612.612 0 0 1 .377-.108.645.645 0 0 1 .445.157.56.56 0 0 1 .17.441v.852h-.24v-.203h-.012a.512.512 0 0 1-.457.24Zm.043-.24c.11-.001.216-.045.295-.122a.372.372 0 0 0 .131-.286.512.512 0 0 0-.34-.092.433.433 0 0 0-.289.084.25.25 0 0 0-.097.194.187.187 0 0 0 .089.17.353.353 0 0 0 .211.052Z"/><defs><linearGradient id="browser-chrome-beta_x16_svg__b" x1="2.386" x2="6.816" y1="6.262" y2="3.663" gradientUnits="userSpaceOnUse"><stop stop-color="#A52714" stop-opacity=".6"/><stop offset=".7" stop-color="#A52714" stop-opacity="0"/></linearGradient><linearGradient id="browser-chrome-beta_x16_svg__c" x1="9.244" x2="4.345" y1="13.759" y2="10.905" gradientUnits="userSpaceOnUse"><stop stop-color="#055524" stop-opacity=".4"/><stop offset=".3" stop-color="#055524" stop-opacity="0"/></linearGradient><linearGradient id="browser-chrome-beta_x16_svg__e" x1="10.181" x2="11.416" y1="4.132" y2="9.542" gradientUnits="userSpaceOnUse"><stop stop-color="#EA6100" stop-opacity=".3"/><stop offset=".7" stop-color="#EA6100" stop-opacity="0"/></linearGradient><linearGradient id="browser-chrome-beta_x16_svg__f" x1="10.181" x2="11.416" y1="4.132" y2="9.542" gradientUnits="userSpaceOnUse"><stop stop-color="#EA6100" stop-opacity=".3"/><stop offset=".7" stop-color="#EA6100" stop-opacity="0"/></linearGradient><linearGradient id="browser-chrome-beta_x16_svg__h" x1="2.386" x2="6.816" y1="6.262" y2="3.663" gradientUnits="userSpaceOnUse"><stop stop-color="#A52714" stop-opacity=".6"/><stop offset=".7" stop-color="#A52714" stop-opacity="0"/></linearGradient><linearGradient id="browser-chrome-beta_x16_svg__k" x1="9.244" x2="4.345" y1="13.759" y2="10.905" gradientUnits="userSpaceOnUse"><stop stop-color="#055524" stop-opacity=".4"/><stop offset=".3" stop-color="#055524" stop-opacity="0"/></linearGradient><radialGradient id="browser-chrome-beta_x16_svg__i" cx="0" cy="0" r="1" gradientTransform="translate(7.668 4.643) scale(7.07135)" gradientUnits="userSpaceOnUse"><stop stop-color="#3E2723" stop-opacity=".2"/><stop offset="1" stop-color="#3E2723" stop-opacity="0"/></radialGradient><radialGradient id="browser-chrome-beta_x16_svg__l" cx="0" cy="0" r="1" gradientTransform="translate(1.747 4.004) scale(6.56017)" gradientUnits="userSpaceOnUse"><stop stop-color="#3E2723" stop-opacity=".2"/><stop offset="1" stop-color="#3E2723" stop-opacity="0"/></radialGradient><radialGradient id="browser-chrome-beta_x16_svg__m" cx="0" cy="0" r="1" gradientTransform="translate(8.009 8.009) scale(7.41214)" gradientUnits="userSpaceOnUse"><stop stop-color="#263238" stop-opacity=".2"/><stop offset="1" stop-color="#263238" stop-opacity="0"/></radialGradient></defs>'
  }[o2];
  if (!s2)
    throw Error(`Icon "browser-chrome-beta" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, Y = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<g clip-path="url(#browser-chrome-canary_x16_svg__a)"><path fill="#F4B70A" d="M0 8a8 8 0 0 0 8 8l3.465-6A3.999 3.999 0 0 1 8 12a3.999 3.999 0 0 1-3.468-2.005L1.07 4l-.104.187A7.964 7.964 0 0 0 0 8Z"/><path fill="#F7CC50" d="M8 16a8 8 0 0 0 6.93-12H8a4 4 0 0 1 3.468 5.995l-.003.005L8 16Z"/><path fill="#F19A11" fill-rule="evenodd" d="M1.07 4A7.997 7.997 0 0 1 8 0a7.997 7.997 0 0 1 6.93 4H8a4 4 0 0 0-3.468 5.995L1.07 4Z" clip-rule="evenodd"/><circle cx="8" cy="8" r="4" fill="#fff"/><circle cx="8" cy="8" r="3.2" fill="#F6C231"/></g><defs><clipPath id="browser-chrome-canary_x16_svg__a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs>'
  }[o2];
  if (!s2)
    throw Error(`Icon "browser-chrome-canary" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, J = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<g clip-path="url(#browser-chrome_x16_svg__a)"><path fill="#0F9D58" d="M0 8a8 8 0 0 0 8 8l3.465-6A3.998 3.998 0 0 1 8 12a3.999 3.999 0 0 1-3.468-2.005L1.07 4A7.97 7.97 0 0 0 0 8Z"/><path fill="#FFCD40" d="M8 16a8 8 0 0 0 6.93-12H8a4 4 0 0 1 3.468 5.995l-.003.005L8 16Z"/><path fill="#DB4437" fill-rule="evenodd" d="M1.07 4A7.997 7.997 0 0 1 8 0a7.997 7.997 0 0 1 6.93 4H8a4 4 0 0 0-3.468 5.995L1.07 4Z" clip-rule="evenodd"/><circle cx="8" cy="8" r="4" fill="#fff"/><circle cx="8" cy="8" r="3.2" fill="#4285F4"/></g><defs><clipPath id="browser-chrome_x16_svg__a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs>'
  }[o2];
  if (!s2)
    throw Error(`Icon "browser-chrome" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, o1 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<g clip-path="url(#browser-edge_x16_svg__a)"><path fill="url(#browser-edge_x16_svg__b)" d="M14.44 11.909a5.87 5.87 0 0 1-.658.294 6.37 6.37 0 0 1-2.244.404c-2.957 0-5.534-2.034-5.534-4.645a1.967 1.967 0 0 1 1.027-1.707c-2.675.113-3.362 2.9-3.362 4.533 0 4.618 4.255 5.086 5.172 5.086.495 0 1.24-.144 1.688-.285l.082-.028a8.02 8.02 0 0 0 4.162-3.3.25.25 0 0 0-.332-.352Z"/><path fill="url(#browser-edge_x16_svg__c)" d="M14.44 11.909a5.87 5.87 0 0 1-.658.294 6.37 6.37 0 0 1-2.244.404c-2.957 0-5.534-2.034-5.534-4.645a1.967 1.967 0 0 1 1.027-1.707c-2.675.113-3.362 2.9-3.362 4.533 0 4.618 4.255 5.086 5.172 5.086.495 0 1.24-.144 1.688-.285l.082-.028a8.02 8.02 0 0 0 4.162-3.3.25.25 0 0 0-.332-.352Z" opacity=".35"/><path fill="url(#browser-edge_x16_svg__d)" d="M6.607 15.089a4.95 4.95 0 0 1-1.421-1.334 5.045 5.045 0 0 1 1.845-7.5c.195-.092.528-.258.971-.25a2.022 2.022 0 0 1 1.606.813c.253.337.392.745.398 1.166 0-.013 1.528-4.975-5-4.975-2.744 0-5 2.604-5 4.888a8.134 8.134 0 0 0 .756 3.5 8 8 0 0 0 9.774 4.194 4.723 4.723 0 0 1-3.923-.5l-.006-.002Z"/><path fill="url(#browser-edge_x16_svg__e)" d="M6.607 15.089a4.95 4.95 0 0 1-1.421-1.334 5.045 5.045 0 0 1 1.845-7.5c.195-.092.528-.258.971-.25a2.022 2.022 0 0 1 1.606.813c.253.337.392.745.398 1.166 0-.013 1.528-4.975-5-4.975-2.744 0-5 2.604-5 4.888a8.134 8.134 0 0 0 .756 3.5 8 8 0 0 0 9.774 4.194 4.723 4.723 0 0 1-3.923-.5l-.006-.002Z" opacity=".41"/><path fill="url(#browser-edge_x16_svg__f)" d="M9.52 9.304c-.051.065-.207.156-.207.354 0 .163.106.32.295.451.899.625 2.593.543 2.598.543a3.722 3.722 0 0 0 1.892-.522 3.837 3.837 0 0 0 1.901-3.305c.017-1.4-.5-2.332-.708-2.744C13.966 1.49 11.107 0 7.999 0a8 8 0 0 0-8 7.888c.03-2.284 2.3-4.129 5-4.129.219 0 1.466.022 2.625.63 1.021.536 1.556 1.183 1.928 1.825.386.667.455 1.51.455 1.845 0 .336-.171.834-.488 1.245Z"/><path fill="url(#browser-edge_x16_svg__g)" d="M9.52 9.304c-.051.065-.207.156-.207.354 0 .163.106.32.295.451.899.625 2.593.543 2.598.543a3.722 3.722 0 0 0 1.892-.522 3.837 3.837 0 0 0 1.901-3.305c.017-1.4-.5-2.332-.708-2.744C13.966 1.49 11.107 0 7.999 0a8 8 0 0 0-8 7.888c.03-2.284 2.3-4.129 5-4.129.219 0 1.466.022 2.625.63 1.021.536 1.556 1.183 1.928 1.825.386.667.455 1.51.455 1.845 0 .336-.171.834-.488 1.245Z"/></g><defs><radialGradient id="browser-edge_x16_svg__c" cx="0" cy="0" r="1" gradientTransform="matrix(5.96125 0 0 5.66319 9.825 11.154)" gradientUnits="userSpaceOnUse"><stop offset=".72" stop-opacity="0"/><stop offset=".95" stop-opacity=".53"/><stop offset="1"/></radialGradient><radialGradient id="browser-edge_x16_svg__e" cx="0" cy="0" r="1" gradientTransform="rotate(-81.384 9.438 3.654) scale(8.96413 7.24212)" gradientUnits="userSpaceOnUse"><stop offset=".76" stop-opacity="0"/><stop offset=".95" stop-opacity=".5"/><stop offset="1"/></radialGradient><radialGradient id="browser-edge_x16_svg__f" cx="0" cy="0" r="1" gradientTransform="matrix(-.50607 12.65188 -26.94585 -1.07783 1.615 2.961)" gradientUnits="userSpaceOnUse"><stop stop-color="#35C1F1"/><stop offset=".11" stop-color="#34C1ED"/><stop offset=".23" stop-color="#2FC2DF"/><stop offset=".31" stop-color="#2BC3D2"/><stop offset=".67" stop-color="#36C752"/></radialGradient><radialGradient id="browser-edge_x16_svg__g" cx="0" cy="0" r="1" gradientTransform="matrix(1.70345 5.8404 -4.74942 1.38525 15.003 4.838)" gradientUnits="userSpaceOnUse"><stop stop-color="#66EB6E"/><stop offset="1" stop-color="#66EB6E" stop-opacity="0"/></radialGradient><linearGradient id="browser-edge_x16_svg__b" x1="3.669" x2="14.815" y1="11.066" y2="11.066" gradientUnits="userSpaceOnUse"><stop stop-color="#0C59A4"/><stop offset="1" stop-color="#114A8B"/></linearGradient><linearGradient id="browser-edge_x16_svg__d" x1="9.545" x2="2.583" y1="6.231" y2="13.814" gradientUnits="userSpaceOnUse"><stop stop-color="#1B9DE2"/><stop offset=".16" stop-color="#1595DF"/><stop offset=".67" stop-color="#0680D7"/><stop offset="1" stop-color="#0078D4"/></linearGradient><clipPath id="browser-edge_x16_svg__a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs>'
  }[o2];
  if (!s2)
    throw Error(`Icon "browser-edge" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, s1 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path fill="#fff" d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16Z"/><path fill="#47848F" fill-rule="evenodd" d="M6.187 4.2c-1.742-.318-3.12.014-3.669.965-.41.71-.292 1.65.284 2.656a.18.18 0 0 0 .31-.178c-.52-.906-.62-1.718-.284-2.3.458-.79 1.685-1.086 3.296-.793a.18.18 0 0 0 .178-.277.179.179 0 0 0-.115-.074ZM3.708 9.041c.705.774 1.62 1.5 2.664 2.103 2.53 1.46 5.22 1.85 6.545.947a.179.179 0 0 0-.202-.296c-1.187.81-3.743.44-6.166-.959-1.013-.585-1.9-1.288-2.579-2.034a.18.18 0 0 0-.264.24l.002-.001Zm8.787-.216c1.141-1.348 1.54-2.703.992-3.652-.403-.698-1.256-1.067-2.389-1.081a.18.18 0 0 0-.18.176.179.179 0 0 0 .176.18c1.02.014 1.753.332 2.083.904.455.788.1 1.997-.955 3.243a.18.18 0 0 0 .151.293.179.179 0 0 0 .122-.062ZM9.563 4.258c-1.03.221-2.13.653-3.184 1.262-2.609 1.506-4.31 3.73-4.075 5.338a.18.18 0 0 0 .32.08.179.179 0 0 0 .034-.132c-.21-1.43 1.403-3.535 3.9-4.979 1.02-.59 2.086-1.009 3.08-1.222a.18.18 0 0 0 .06-.324.18.18 0 0 0-.135-.025v.002Z" clip-rule="evenodd"/><path fill="#47848F" fill-rule="evenodd" d="M5.336 11.975c.597 1.666 1.573 2.692 2.67 2.692.8 0 1.541-.546 2.118-1.507a.179.179 0 0 0-.306-.184c-.52.863-1.156 1.333-1.812 1.333-.911 0-1.782-.917-2.333-2.454a.18.18 0 0 0-.33-.016.18.18 0 0 0-.007.136Zm5.449-.325c.309-.987.475-2.126.475-3.312 0-2.96-1.037-5.512-2.512-6.167a.18.18 0 0 0-.24.228.18.18 0 0 0 .095.099c1.316.584 2.3 3.006 2.3 5.84 0 1.151-.161 2.254-.46 3.205a.18.18 0 0 0 .254.212.18.18 0 0 0 .088-.105Zm3.365-.175a.855.855 0 1 0-1.706 0 .855.855 0 0 0 1.704 0h.002Zm-.357 0a.498.498 0 1 1-.997-.001.498.498 0 0 1 .997 0Z" clip-rule="evenodd"/><path fill="#47848F" fill-rule="evenodd" d="M2.705 12.33a.855.855 0 1 0 0-1.71.855.855 0 0 0 0 1.71Zm0-.358a.498.498 0 1 1 0-.995.498.498 0 0 1 0 .995Zm5.301-8.93a.855.855 0 1 0 0-1.71.855.855 0 0 0 0 1.71Zm0-.358a.498.498 0 1 1 0-.996.498.498 0 0 1 0 .996Zm.13 6.259a.619.619 0 1 1-.26-1.21.619.619 0 1 1 .26 1.21Z" clip-rule="evenodd"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "browser-electron-light" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, t1 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<g clip-path="url(#browser-mozilla-firefox_x16_svg__a)"><path fill="url(#browser-mozilla-firefox_x16_svg__b)" d="M14.93 5.368c-.337-.81-1.02-1.686-1.556-1.963.382.74.647 1.533.785 2.353l.002.013c-.877-2.185-2.363-3.067-3.578-4.986a9.425 9.425 0 0 1-.182-.297 2.45 2.45 0 0 1-.086-.16 1.41 1.41 0 0 1-.12-.32.02.02 0 0 0-.013-.007.028.028 0 0 0-.015 0l-.003.002-.006.003.003-.005C8.213 1.141 7.552 3.252 7.492 4.31a3.88 3.88 0 0 0-2.135.822 2.317 2.317 0 0 0-.2-.151 3.595 3.595 0 0 1-.022-1.896A5.742 5.742 0 0 0 3.27 4.527h-.004c-.307-.39-.285-1.674-.268-1.942-.09.036-.178.082-.259.137-.271.194-.525.41-.758.65a6.77 6.77 0 0 0-.725.869v.001-.001A6.549 6.549 0 0 0 .215 6.59l-.01.05c-.015.07-.068.41-.077.485l-.001.017A7.39 7.39 0 0 0 0 8.212v.04a7.755 7.755 0 0 0 15.396 1.31c.013-.1.023-.199.035-.3a7.975 7.975 0 0 0-.503-3.895v.001Zm-8.938 6.07c.036.018.07.037.108.053l.005.004a3.958 3.958 0 0 1-.113-.057Zm8.169-5.665v-.007l.001.008h-.001Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__c)" d="M14.93 5.368c-.337-.81-1.02-1.686-1.556-1.963.382.74.647 1.533.785 2.353v.008l.002.008a7.023 7.023 0 0 1-.242 5.234c-.888 1.907-3.039 3.861-6.406 3.765C3.876 14.67.67 11.97.073 8.435c-.11-.558 0-.84.054-1.294-.075.352-.116.71-.125 1.07v.04a7.755 7.755 0 0 0 15.396 1.312c.013-.1.024-.2.035-.3a7.974 7.974 0 0 0-.503-3.896v.001Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__d)" d="M14.93 5.368c-.337-.81-1.02-1.686-1.556-1.963.382.74.647 1.533.785 2.353v.008l.002.008a7.023 7.023 0 0 1-.242 5.234c-.888 1.907-3.039 3.861-6.406 3.765C3.876 14.67.67 11.97.073 8.435c-.11-.558 0-.84.054-1.294-.075.352-.116.71-.125 1.07v.04a7.755 7.755 0 0 0 15.396 1.312c.013-.1.024-.2.035-.3a7.974 7.974 0 0 0-.503-3.896v.001Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__e)" d="m11.16 6.278.048.036a4.22 4.22 0 0 0-.72-.94c-2.41-2.41-.631-5.226-.332-5.37L10.16 0C8.212 1.14 7.55 3.251 7.49 4.308c.09-.007.18-.014.273-.014a3.914 3.914 0 0 1 3.397 1.984Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__f)" d="M7.767 6.76c-.013.193-.694.859-.933.859-2.204 0-2.563 1.334-2.563 1.334.098 1.123.88 2.048 1.827 2.537.043.022.087.042.13.062.077.034.153.065.228.093.325.115.665.18 1.01.195 3.865.181 4.613-4.622 1.824-6.016a2.677 2.677 0 0 1 1.87.454 3.914 3.914 0 0 0-3.398-1.985c-.092 0-.182.008-.272.014a3.88 3.88 0 0 0-2.135.823c.118.1.252.233.533.51.526.519 1.876 1.056 1.879 1.119v.002Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__g)" d="M7.767 6.76c-.013.193-.694.859-.933.859-2.204 0-2.563 1.334-2.563 1.334.098 1.123.88 2.048 1.827 2.537.043.022.087.042.13.062.077.034.153.065.228.093.325.115.665.18 1.01.195 3.865.181 4.613-4.622 1.824-6.016a2.677 2.677 0 0 1 1.87.454 3.914 3.914 0 0 0-3.398-1.985c-.092 0-.182.008-.272.014a3.88 3.88 0 0 0-2.135.823c.118.1.252.233.533.51.526.519 1.876 1.056 1.879 1.119v.002Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__h)" d="M4.994 4.874c.063.04.115.075.16.106a3.595 3.595 0 0 1-.022-1.895 5.742 5.742 0 0 0-1.866 1.442c.037 0 1.162-.021 1.728.347Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__i)" d="M.07 8.435c.6 3.536 3.804 6.237 7.442 6.339 3.367.095 5.518-1.86 6.406-3.766a7.022 7.022 0 0 0 .241-5.234V5.76l.002.013c.275 1.797-.639 3.536-2.067 4.714l-.004.01c-2.783 2.267-5.446 1.367-5.985 1a4.227 4.227 0 0 1-.113-.056C4.37 10.665 3.7 9.188 3.844 7.92a1.991 1.991 0 0 1-1.837-1.156 2.925 2.925 0 0 1 2.85-.115 3.861 3.861 0 0 0 2.912.115c-.003-.063-1.353-.6-1.879-1.119-.28-.277-.414-.41-.533-.51a2.32 2.32 0 0 0-.2-.152 10.938 10.938 0 0 0-.16-.106c-.565-.368-1.69-.348-1.727-.347h-.004c-.307-.39-.286-1.674-.268-1.942-.091.036-.178.082-.259.137-.271.194-.525.411-.758.65-.266.268-.51.558-.728.867v.001-.001A6.549 6.549 0 0 0 .213 6.59c-.004.016-.28 1.22-.144 1.845h.002Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__j)" d="M10.488 5.374c.283.278.526.595.72.94.043.032.083.065.117.096 1.758 1.62.836 3.911.768 4.073 1.428-1.177 2.34-2.917 2.066-4.714-.877-2.187-2.364-3.069-3.577-4.988A9.425 9.425 0 0 1 10.4.485a2.45 2.45 0 0 1-.085-.16 1.41 1.41 0 0 1-.12-.321.02.02 0 0 0-.013-.007.028.028 0 0 0-.015 0L10.162 0l-.005.003c-.3.142-2.079 2.959.332 5.368l-.001.003Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__k)" d="M11.324 6.41a1.622 1.622 0 0 0-.116-.095l-.048-.035a2.677 2.677 0 0 0-1.87-.454c2.79 1.394 2.04 6.196-1.824 6.016a3.448 3.448 0 0 1-1.01-.195 4.114 4.114 0 0 1-.227-.093c-.044-.02-.088-.04-.13-.062l.005.003c.539.368 3.2 1.267 5.984-1l.004-.01c.07-.162.99-2.453-.768-4.074Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__l)" d="M4.272 8.951s.358-1.333 2.563-1.333c.238 0 .92-.666.932-.859a3.861 3.861 0 0 1-2.911-.114 2.925 2.925 0 0 0-2.851.114 1.991 1.991 0 0 0 1.837 1.156c-.144 1.268.526 2.745 2.149 3.521.036.018.07.036.107.053-.947-.49-1.729-1.414-1.826-2.537Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__m)" d="M14.93 5.368c-.337-.81-1.02-1.686-1.556-1.963.382.74.647 1.533.785 2.353l.002.013c-.877-2.185-2.363-3.067-3.578-4.986a9.425 9.425 0 0 1-.182-.297 2.45 2.45 0 0 1-.086-.16 1.405 1.405 0 0 1-.12-.32.02.02 0 0 0-.013-.007.028.028 0 0 0-.015 0l-.003.002-.006.003.003-.005C8.213 1.141 7.552 3.252 7.492 4.31c.09-.006.18-.014.273-.014a3.913 3.913 0 0 1 3.397 1.984 2.677 2.677 0 0 0-1.87-.454c2.79 1.395 2.04 6.196-1.824 6.016a3.451 3.451 0 0 1-1.01-.194 4.114 4.114 0 0 1-.358-.156l.006.004a3.945 3.945 0 0 1-.113-.057c.036.018.07.037.107.053-.947-.49-1.729-1.414-1.826-2.537 0 0 .358-1.334 2.563-1.334.238 0 .92-.665.932-.858-.003-.063-1.352-.6-1.879-1.118-.28-.277-.414-.41-.532-.511a2.317 2.317 0 0 0-.2-.152 3.595 3.595 0 0 1-.022-1.895 5.742 5.742 0 0 0-1.867 1.443h-.003c-.308-.39-.286-1.675-.268-1.943-.091.037-.178.083-.26.138-.27.193-.524.41-.757.649a6.77 6.77 0 0 0-.725.87A6.549 6.549 0 0 0 .216 6.59l-.01.052c-.016.068-.08.414-.09.489-.06.357-.098.718-.115 1.08v.04a7.755 7.755 0 0 0 15.396 1.312c.013-.1.024-.2.035-.3a7.975 7.975 0 0 0-.503-3.896Zm-.77.398.002.009-.002-.009Z"/></g><defs><radialGradient id="browser-mozilla-firefox_x16_svg__c" cx="0" cy="0" r="1" gradientTransform="translate(13.405 1.8) scale(16.1661)" gradientUnits="userSpaceOnUse"><stop offset=".129" stop-color="#FFBD4F"/><stop offset=".186" stop-color="#FFAC31"/><stop offset=".247" stop-color="#FF9D17"/><stop offset=".283" stop-color="#FF980E"/><stop offset=".403" stop-color="#FF563B"/><stop offset=".467" stop-color="#FF3750"/><stop offset=".71" stop-color="#F5156C"/><stop offset=".782" stop-color="#EB0878"/><stop offset=".86" stop-color="#E50080"/></radialGradient><radialGradient id="browser-mozilla-firefox_x16_svg__d" cx="0" cy="0" r="1" gradientTransform="translate(7.403 8.403) scale(16.1661)" gradientUnits="userSpaceOnUse"><stop offset=".3" stop-color="#960E18"/><stop offset=".351" stop-color="#B11927" stop-opacity=".74"/><stop offset=".435" stop-color="#DB293D" stop-opacity=".343"/><stop offset=".497" stop-color="#F5334B" stop-opacity=".094"/><stop offset=".53" stop-color="#FF3750" stop-opacity="0"/></radialGradient><radialGradient id="browser-mozilla-firefox_x16_svg__e" cx="0" cy="0" r="1" gradientTransform="translate(9.404 -1.8) scale(11.7104)" gradientUnits="userSpaceOnUse"><stop offset=".132" stop-color="#FFF44F"/><stop offset=".252" stop-color="#FFDC3E"/><stop offset=".506" stop-color="#FF9D12"/><stop offset=".526" stop-color="#FF980E"/></radialGradient><radialGradient id="browser-mozilla-firefox_x16_svg__f" cx="0" cy="0" r="1" gradientTransform="translate(5.602 12.605) scale(7.69689)" gradientUnits="userSpaceOnUse"><stop offset=".353" stop-color="#3A8EE6"/><stop offset=".472" stop-color="#5C79F0"/><stop offset=".669" stop-color="#9059FF"/><stop offset="1" stop-color="#C139E6"/></radialGradient><radialGradient id="browser-mozilla-firefox_x16_svg__g" cx="0" cy="0" r="1" gradientTransform="matrix(3.96725 -.95916 1.12294 4.64466 8.185 7.015)" gradientUnits="userSpaceOnUse"><stop offset=".206" stop-color="#9059FF" stop-opacity="0"/><stop offset=".278" stop-color="#8C4FF3" stop-opacity=".064"/><stop offset=".747" stop-color="#7716A8" stop-opacity=".45"/><stop offset=".975" stop-color="#6E008B" stop-opacity=".6"/></radialGradient><radialGradient id="browser-mozilla-firefox_x16_svg__h" cx="0" cy="0" r="1" gradientTransform="translate(7.203 1.2) scale(5.53808)" gradientUnits="userSpaceOnUse"><stop stop-color="#FFE226"/><stop offset=".121" stop-color="#FFDB27"/><stop offset=".295" stop-color="#FFC82A"/><stop offset=".502" stop-color="#FFA930"/><stop offset=".732" stop-color="#FF7E37"/><stop offset=".792" stop-color="#FF7139"/></radialGradient><radialGradient id="browser-mozilla-firefox_x16_svg__i" cx="0" cy="0" r="1" gradientTransform="translate(11.604 -2.4) scale(23.6289)" gradientUnits="userSpaceOnUse"><stop offset=".113" stop-color="#FFF44F"/><stop offset=".456" stop-color="#FF980E"/><stop offset=".622" stop-color="#FF5634"/><stop offset=".716" stop-color="#FF3647"/><stop offset=".904" stop-color="#E31587"/></radialGradient><radialGradient id="browser-mozilla-firefox_x16_svg__j" cx="0" cy="0" r="1" gradientTransform="rotate(83.976 5.426 4.81) scale(17.3156 11.3641)" gradientUnits="userSpaceOnUse"><stop stop-color="#FFF44F"/><stop offset=".06" stop-color="#FFE847"/><stop offset=".168" stop-color="#FFC830"/><stop offset=".304" stop-color="#FF980E"/><stop offset=".356" stop-color="#FF8B16"/><stop offset=".455" stop-color="#FF672A"/><stop offset=".57" stop-color="#FF3647"/><stop offset=".737" stop-color="#E31587"/></radialGradient><radialGradient id="browser-mozilla-firefox_x16_svg__k" cx="0" cy="0" r="1" gradientTransform="translate(7.203 3.201) scale(14.7495)" gradientUnits="userSpaceOnUse"><stop offset=".137" stop-color="#FFF44F"/><stop offset=".48" stop-color="#FF980E"/><stop offset=".592" stop-color="#FF5634"/><stop offset=".655" stop-color="#FF3647"/><stop offset=".904" stop-color="#E31587"/></radialGradient><radialGradient id="browser-mozilla-firefox_x16_svg__l" cx="0" cy="0" r="1" gradientTransform="matrix(16.144 0 0 16.1441 11.004 4.002)" gradientUnits="userSpaceOnUse"><stop offset=".094" stop-color="#FFF44F"/><stop offset=".231" stop-color="#FFE141"/><stop offset=".509" stop-color="#FFAF1E"/><stop offset=".626" stop-color="#FF980E"/></radialGradient><linearGradient id="browser-mozilla-firefox_x16_svg__b" x1="13.903" x2="1.03" y1="2.478" y2="14.899" gradientUnits="userSpaceOnUse"><stop offset=".048" stop-color="#FFF44F"/><stop offset=".111" stop-color="#FFE847"/><stop offset=".225" stop-color="#FFC830"/><stop offset=".368" stop-color="#FF980E"/><stop offset=".401" stop-color="#FF8B16"/><stop offset=".462" stop-color="#FF672A"/><stop offset=".534" stop-color="#FF3647"/><stop offset=".705" stop-color="#E31587"/></linearGradient><linearGradient id="browser-mozilla-firefox_x16_svg__m" x1="13.747" x2="2.795" y1="2.412" y2="13.366" gradientUnits="userSpaceOnUse"><stop offset=".167" stop-color="#FFF44F" stop-opacity=".8"/><stop offset=".266" stop-color="#FFF44F" stop-opacity=".634"/><stop offset=".489" stop-color="#FFF44F" stop-opacity=".217"/><stop offset=".6" stop-color="#FFF44F" stop-opacity="0"/></linearGradient><clipPath id="browser-mozilla-firefox_x16_svg__a"><path fill="#fff" d="M0 0h15.49v16H0z"/></clipPath></defs>'
  }[o2];
  if (!s2)
    throw Error(`Icon "browser-mozilla-firefox" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, a1 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path fill="url(#browser-safari_x16_svg__a)" d="M16 8A8 8 0 1 1-.001 8 8 8 0 0 1 16 8Z"/><path fill="#F4F2F3" d="M8 .417a.116.116 0 0 0-.117.117v1.345a.116.116 0 1 0 .234 0V.534A.116.116 0 0 0 8 .417Zm-.763.048h-.024a.116.116 0 0 0-.104.129l.06.563a.116.116 0 1 0 .231-.025L7.341.57a.116.116 0 0 0-.104-.104Zm1.531.001a.116.116 0 0 0-.104.104l-.06.563a.116.116 0 1 0 .233.024l.059-.563a.116.116 0 0 0-.128-.128ZM6.453.579a.116.116 0 0 0-.114.14l.28 1.317a.116.116 0 1 0 .227-.048L6.568.672a.116.116 0 0 0-.115-.093Zm3.1.001a.116.116 0 0 0-.116.093l-.28 1.316a.116.116 0 1 0 .229.048l.28-1.316a.116.116 0 0 0-.114-.14ZM5.704.79a.116.116 0 0 0-.121.152l.175.539a.116.116 0 1 0 .222-.073L5.806.87a.116.116 0 0 0-.1-.08Zm4.59 0a.116.116 0 0 0-.1.08l-.175.539a.116.116 0 1 0 .222.072l.175-.538a.116.116 0 0 0-.121-.153Zm-5.33.27a.116.116 0 0 0-.104.164l.546 1.23a.116.116 0 1 0 .213-.095L5.074 1.13a.116.116 0 0 0-.109-.07Zm6.079.005a.117.117 0 0 0-.109.07l-.548 1.228a.116.116 0 0 0 .06.154c.058.026.127 0 .153-.06l.548-1.228a.116.116 0 0 0-.104-.164Zm-6.765.36a.116.116 0 0 0-.11.175l.284.489a.116.116 0 1 0 .202-.117l-.283-.49a.116.116 0 0 0-.093-.058Zm7.442-.001a.116.116 0 0 0-.093.058l-.283.49a.116.116 0 0 0 .043.16.116.116 0 0 0 .16-.043l.282-.49a.116.116 0 0 0-.109-.175Zm-8.109.416a.117.117 0 0 0-.09.185l.79 1.089a.116.116 0 1 0 .188-.137l-.79-1.089a.116.116 0 0 0-.098-.048Zm8.784.006a.116.116 0 0 0-.098.048l-.791 1.088a.116.116 0 1 0 .189.137l.79-1.088a.116.116 0 0 0-.09-.185Zm-9.38.494a.116.116 0 0 0-.093.195l.379.42a.116.116 0 1 0 .173-.156l-.378-.42a.116.116 0 0 0-.081-.04Zm9.969 0a.117.117 0 0 0-.08.04l-.38.42a.116.116 0 1 0 .173.156l.38-.42a.116.116 0 0 0-.093-.195Zm-10.54.548a.117.117 0 0 0-.072.204l1 .9a.116.116 0 1 0 .156-.174l-1-.9a.116.116 0 0 0-.084-.03Zm11.114.004a.116.116 0 0 0-.084.03l-1 .9a.116.116 0 1 0 .155.173l1-.9a.116.116 0 0 0-.071-.203ZM1.969 3.5a.116.116 0 0 0-.073.211l.459.333a.116.116 0 1 0 .137-.189l-.458-.333A.116.116 0 0 0 1.97 3.5Zm12.064.004a.117.117 0 0 0-.064.023l-.458.332a.116.116 0 1 0 .137.189l.458-.333a.116.116 0 0 0-.073-.21Zm-12.507.648a.116.116 0 0 0-.05.217l1.165.673a.116.116 0 1 0 .117-.202l-1.166-.673a.117.117 0 0 0-.066-.015Zm12.948 0a.115.115 0 0 0-.066.015l-1.166.673a.116.116 0 0 0-.042.16.116.116 0 0 0 .16.042l1.164-.673a.116.116 0 0 0-.05-.217ZM1.19 4.845a.116.116 0 0 0-.05.223l.517.23a.116.116 0 1 0 .095-.212l-.516-.23a.117.117 0 0 0-.046-.01Zm13.622.005a.117.117 0 0 0-.045.01l-.517.23a.116.116 0 1 0 .095.213l.516-.23a.116.116 0 0 0-.05-.223Zm-13.92.72a.116.116 0 0 0-.026.227l1.278.418a.116.116 0 1 0 .072-.222L.937 5.576a.117.117 0 0 0-.046-.005Zm14.219.006a.113.113 0 0 0-.047.005l-1.28.416a.116.116 0 1 0 .073.222l1.28-.416a.116.116 0 0 0-.027-.227ZM.704 6.333a.116.116 0 0 0-.025.23l.553.118a.116.116 0 1 0 .049-.228l-.554-.118a.115.115 0 0 0-.023-.002Zm14.59 0a.144.144 0 0 0-.023.003l-.554.118a.116.116 0 1 0 .049.228l.553-.117a.116.116 0 0 0-.025-.231ZM.564 7.1a.116.116 0 0 0 0 .232l1.337.142a.116.116 0 1 0 .024-.232L.587 7.099a.12.12 0 0 0-.023 0Zm14.873.01h-.023l-1.338.14a.116.116 0 1 0 .024.232l1.338-.14a.116.116 0 0 0 0-.232ZM.541 7.884a.116.116 0 1 0 0 .233h.566a.116.116 0 1 0 0-.233H.541Zm14.352 0a.116.116 0 1 0 0 .233h.566a.116.116 0 1 0 0-.233h-.566Zm-12.97.635H1.9l-1.338.14a.116.116 0 1 0 .024.232l1.338-.14a.116.116 0 0 0 0-.232Zm12.152.009a.116.116 0 0 0 0 .232l1.338.141a.116.116 0 1 0 .024-.232l-1.338-.141h-.024Zm-12.818.788a.12.12 0 0 0-.024.002l-.553.118a.116.116 0 1 0 .048.228l.554-.118a.116.116 0 0 0-.025-.23Zm13.486 0a.116.116 0 0 0-.025.232l.554.117a.116.116 0 0 0 .138-.09.116.116 0 0 0-.09-.138l-.553-.118a.115.115 0 0 0-.024-.002Zm-12.554.46a.113.113 0 0 0-.046.006l-1.28.415a.116.116 0 1 0 .073.222l1.279-.416a.116.116 0 0 0-.026-.227Zm11.62.004a.116.116 0 0 0-.026.227l1.28.417a.116.116 0 1 0 .072-.221l-1.28-.417a.116.116 0 0 0-.045-.006Zm-12.108.907a.116.116 0 0 0-.046.01l-.517.23a.116.116 0 1 0 .095.213l.517-.23a.116.116 0 0 0-.05-.223Zm12.596.005a.116.116 0 0 0-.108.069.116.116 0 0 0 .059.154l.516.23c.06.027.128 0 .154-.059a.116.116 0 0 0-.059-.154l-.516-.23a.116.116 0 0 0-.046-.01Zm-11.59.252a.115.115 0 0 0-.066.016l-1.165.672a.116.116 0 1 0 .116.202l1.166-.672a.116.116 0 0 0-.05-.218Zm10.586 0a.116.116 0 0 0-.05.217l1.165.673a.116.116 0 1 0 .116-.202l-1.165-.672a.116.116 0 0 0-.066-.016Zm-10.876.987a.118.118 0 0 0-.065.023l-.458.332a.116.116 0 1 0 .137.189l.458-.332a.116.116 0 0 0-.072-.212Zm11.163.004a.116.116 0 0 0-.073.211l.459.333a.116.116 0 1 0 .137-.189l-.458-.332a.117.117 0 0 0-.065-.023Zm-10.126.04a.116.116 0 0 0-.084.03l-1 .9a.116.116 0 1 0 .155.173l1-.9a.116.116 0 0 0-.07-.202Zm9.089.004a.116.116 0 0 0-.072.203l1 .9a.116.116 0 1 0 .156-.173l-1-.9a.116.116 0 0 0-.084-.03Zm-8.14.854a.116.116 0 0 0-.098.048l-.792 1.088a.116.116 0 1 0 .19.138l.79-1.088a.116.116 0 0 0-.09-.186Zm7.187.005a.117.117 0 0 0-.09.185l.79 1.09a.116.116 0 1 0 .188-.138l-.79-1.089a.116.116 0 0 0-.098-.048Zm-8.208.168a.117.117 0 0 0-.08.039l-.38.42a.116.116 0 1 0 .174.156l.378-.42a.116.116 0 0 0-.092-.195Zm9.236 0a.116.116 0 0 0-.093.195l.378.421a.116.116 0 1 0 .174-.156l-.379-.42a.116.116 0 0 0-.08-.04Zm-7.11.467a.116.116 0 0 0-.108.07l-.548 1.228a.116.116 0 1 0 .213.095l.548-1.229a.116.116 0 0 0-.104-.164Zm4.976.004a.117.117 0 0 0-.104.164l.546 1.23a.116.116 0 1 0 .213-.096l-.546-1.229a.116.116 0 0 0-.109-.07Zm-5.939.376a.116.116 0 0 0-.092.058l-.283.49a.116.116 0 0 0 .042.16.116.116 0 0 0 .16-.043l.283-.49a.116.116 0 0 0-.11-.175Zm6.91 0a.116.116 0 0 0-.11.175l.283.49a.116.116 0 0 0 .16.043.116.116 0 0 0 .042-.16l-.283-.49a.116.116 0 0 0-.092-.058Zm-4.726.018a.116.116 0 0 0-.115.092l-.28 1.316a.116.116 0 0 0 .09.139.116.116 0 0 0 .139-.09l.28-1.316a.116.116 0 0 0-.114-.141Zm2.538 0a.116.116 0 0 0-.113.14l.278 1.317a.116.116 0 1 0 .228-.048l-.278-1.316a.116.116 0 0 0-.115-.093ZM8 14.005a.116.116 0 0 0-.117.117v1.345a.116.116 0 1 0 .234 0v-1.345A.116.116 0 0 0 8 14.004Zm-2.141.435a.117.117 0 0 0-.101.08l-.175.538a.116.116 0 1 0 .222.073l.175-.539a.116.116 0 0 0-.121-.152Zm4.281 0a.116.116 0 0 0-.121.152l.175.539a.116.116 0 1 0 .222-.072l-.175-.538a.117.117 0 0 0-.1-.08Zm-2.872.3a.116.116 0 0 0-.105.104l-.059.563a.116.116 0 1 0 .232.024l.06-.563a.116.116 0 0 0-.128-.128Zm1.46 0a.117.117 0 0 0-.128.128l.059.564a.116.116 0 1 0 .232-.024l-.06-.563a.116.116 0 0 0-.104-.104Z"/><g filter="url(#browser-safari_x16_svg__b)" opacity=".409"><path fill="#000" d="M13.467 3.334 7.085 7.042l-4.034 6.352 5.902-4.372 4.514-5.688Z"/></g><path fill="#FF5150" d="m8.915 8.958-1.83-1.916 6.489-4.365-4.66 6.28Z"/><path fill="#F1F1F1" d="m8.915 8.958-1.83-1.916-4.659 6.28 6.489-4.364Z"/><path fill="#000" d="m2.426 13.323 6.489-4.365 4.659-6.28L2.426 13.322Z" opacity=".243"/><defs><radialGradient id="browser-safari_x16_svg__a" cx="0" cy="0" r="1" gradientTransform="translate(8.036 6.834) scale(8.68021)" gradientUnits="userSpaceOnUse"><stop stop-color="#06C2E7"/><stop offset=".25" stop-color="#0DB8EC"/><stop offset=".5" stop-color="#12AEF1"/><stop offset=".75" stop-color="#1F86F9"/><stop offset="1" stop-color="#107DDD"/></radialGradient><filter id="browser-safari_x16_svg__b" width="11.763" height="11.406" x="2.377" y="2.661" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_4665_8423" stdDeviation=".337"/></filter></defs>'
  }[o2];
  if (!s2)
    throw Error(`Icon "browser-safari" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, i1 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path fill="#fff" d="m6.34 12.735-4.352-3.42a1.646 1.646 0 0 1-.682-1.294c0-.484.243-.948.682-1.292L6.34 3.302A2.702 2.702 0 0 1 8 2.766c.628 0 1.212.194 1.66.539l4.352 3.42a1.647 1.647 0 0 1 .682 1.294c0 .49-.243.95-.682 1.293l-4.353 3.42A2.683 2.683 0 0 1 8 13.274c-.628 0-1.212-.189-1.66-.539Z"/><path fill="#fff" d="M6.34 10.58 1.989 7.16a1.646 1.646 0 0 1-.682-1.293c0-.485.243-.948.682-1.293L6.34 1.147A2.702 2.702 0 0 1 8 .611c.628 0 1.212.194 1.66.54l4.352 3.42a1.647 1.647 0 0 1 .682 1.293c0 .49-.243.95-.682 1.293l-4.353 3.42c-.477.361-1.061.552-1.659.542-.628 0-1.212-.188-1.66-.538Z"/><path fill="#FF9D00" d="M14.007 8.835a1.59 1.59 0 0 1 0 2.62L9.67 14.86a2.856 2.856 0 0 1-3.34 0l-4.337-3.399a1.59 1.59 0 0 1 .003-2.623l4.337-3.405c.92-.717 2.419-.717 3.34 0l4.334 3.402Z"/><path fill="#FC0" d="m6.34 12.735-4.352-3.42a1.646 1.646 0 0 1-.682-1.294c0-.484.243-.948.682-1.292L6.34 3.302A2.702 2.702 0 0 1 8 2.766c.628 0 1.212.194 1.66.539l4.352 3.42a1.647 1.647 0 0 1 .682 1.294c0 .49-.243.95-.682 1.293l-4.353 3.42A2.683 2.683 0 0 1 8 13.274c-.628 0-1.212-.189-1.66-.539Z"/><path fill="url(#browser-webkit_x16_svg__a)" d="M6.34 10.58 1.989 7.16a1.646 1.646 0 0 1-.682-1.293c0-.485.243-.948.682-1.293L6.34 1.147A2.702 2.702 0 0 1 8 .611c.628 0 1.212.194 1.66.54l4.352 3.42a1.647 1.647 0 0 1 .682 1.293c0 .49-.243.95-.682 1.293l-4.353 3.42c-.477.361-1.061.552-1.659.542-.628 0-1.212-.188-1.66-.538Z"/><path fill="#fff" d="M8.016 9.145c2.222 0 4.024-1.474 4.024-3.292 0-1.813-1.804-3.294-4.024-3.294-2.225 0-4.03 1.481-4.03 3.294 0 1.818 1.805 3.292 4.027 3.292h.003Zm0 .34c-2.451 0-4.444-1.625-4.444-3.632 0-2.004 1.993-3.628 4.444-3.628 2.451 0 4.44 1.627 4.44 3.628 0 2.007-1.989 3.631-4.44 3.631Z"/><path fill="#8CC8F6" d="M8.312 7.251c.221-.027.44-.092.639-.188l1.266.522-.663-.997a1.158 1.158 0 0 0 0-1.47l.663-.997-1.193.493-.035.525a.889.889 0 0 1-.033 1.45 1.385 1.385 0 0 1-.43.228l-.216.431.002.003Zm-.592-2.79a2.23 2.23 0 0 0-.647.188l-1.266-.523.663.997a1.161 1.161 0 0 0 0 1.468l-.663.997 1.223-.504.027-.493a.889.889 0 0 1 .008-1.47 1.58 1.58 0 0 1 .431-.23l.216-.43h.008Z"/><path fill="#fff" fill-rule="evenodd" d="m7.407 5.745-.17 2.99 1.366-2.774.194-2.982-1.39 2.766ZM7.39 8.162l1.093-2.22-.959-.175-.134 2.397v-.002Z" clip-rule="evenodd"/><defs><linearGradient id="browser-webkit_x16_svg__a" x1="8" x2="8" y1=".611" y2="11.12" gradientUnits="userSpaceOnUse"><stop stop-color="#34AADC"/><stop offset="1" stop-color="#007AFF"/></linearGradient></defs>'
  }[o2];
  if (!s2)
    throw Error(`Icon "browser-webkit" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, C1 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["8", "16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    8: '<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m2.5 1 3 3-3 3" class="icon-dark"/>',
    16: '<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m6 12 4-4-4-4" class="icon-dark"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "chevron-right-small" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, O1 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16", "24"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path fill="#D0D2E0" d="M4 15a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h6.172a2 2 0 0 1 1.414.586l1.828 1.828A2 2 0 0 1 14 4.828V13a2 2 0 0 1-2 2H4Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 8h4m4-3.172V13a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h6.172a2 2 0 0 1 1.414.586l1.828 1.828A2 2 0 0 1 14 4.828Z" class="icon-dark"/>',
    24: '<path fill="#D0D2E0" d="M4 20V4a2 2 0 0 1 2-2h6.757a3 3 0 0 1 2.122.879L19.12 7.12A3 3 0 0 1 20 9.243V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12H9m11-2.757V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h6.757a3 3 0 0 1 2.122.879L19.12 7.12A3 3 0 0 1 20 9.243Z" class="icon-dark"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "document-minus" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, U1 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path fill="#D0D2E0" d="M2 14V2a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 8h3M5 5h6m-6 6h5m3-10H3a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1Z" class="icon-dark"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "document-text" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, p0 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<circle cx="8" cy="8" r="6" stroke="#D0D2E0" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 8a6 6 0 0 0-6-6" class="icon-dark"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "loading" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, E0 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["24"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    24: '<path fill="#D0D2E0" d="M15 10V7a3 3 0 1 0-6 0v3h6ZM15 10H9a3.162 3.162 0 0 0-2 2v4a4.564 4.564 0 0 0 4.014 3.89l.685.076c.2.023.402.023.602 0l.685-.076A4.564 4.564 0 0 0 17 16v-4a3.162 3.162 0 0 0-2-2Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M17 12v2m0-2 .265-.088A4 4 0 0 0 20 8.117V7m-3 5v0a3.162 3.162 0 0 0-2-2v0m0 0V7a3 3 0 0 0-3-3v0a3 3 0 0 0-3 3v3m6 0H9m0 0v0a3.162 3.162 0 0 0-2 2v0m0 0v2m0-2-.265-.088A4 4 0 0 1 4 8.117V7m13 7h3m-3 0v2M7 14H4m3 0v2m10 0v0a4.564 4.564 0 0 1-4.014 3.89l-.685.076c-.2.023-.402.023-.602 0l-.685-.076A4.564 4.564 0 0 1 7 16v0m10 0 .265.088A4 4 0 0 1 20 19.883V21M7 16l-.265.088A4 4 0 0 0 4 19.883V21" class="icon-dark"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "object-bug" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, O0 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16", "24"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path fill="#D0D2E0" fill-rule="evenodd" d="M6.5 1h3a.5.5 0 0 1 .5.5v1.375a5.495 5.495 0 0 1 1.437.831l1.192-.688a.5.5 0 0 1 .683.183l1.5 2.598a.5.5 0 0 1-.183.683l-1.191.688a5.541 5.541 0 0 1 0 1.66l1.191.688a.5.5 0 0 1 .183.683l-1.5 2.598a.5.5 0 0 1-.683.183l-1.192-.688c-.43.345-.914.627-1.437.831V14.5a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1.375a5.498 5.498 0 0 1-1.437-.831l-1.192.688a.5.5 0 0 1-.683-.183l-1.5-2.598a.5.5 0 0 1 .183-.683l1.191-.688a5.544 5.544 0 0 1 0-1.66l-1.191-.688a.5.5 0 0 1-.183-.683l1.5-2.598a.5.5 0 0 1 .683-.183l1.192.688c.43-.345.914-.627 1.437-.831V1.5a.5.5 0 0 1 .5-.5ZM8 10a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z" class="icon-light" clip-rule="evenodd"/><path fill="currentColor" d="m13.312 3.201-.866.5.866-.5Zm1.5 2.598.866-.5-.866.5Zm-12.124 7-.866.5.866-.5Zm-1.5-2.598.866-.5-.866.5Zm0-4.402.866.5-.866-.5Zm1.5-2.598.866.5-.866-.5Zm12.124 7 .866.5-.866-.5Zm-1.5 2.598-.866-.5.866.5ZM6 2.875l.364.931A1 1 0 0 0 7 2.875H6Zm-1.437.831-.5.866a1 1 0 0 0 1.125-.086l-.625-.78ZM3.37 3.018l-.5.866.5-.866ZM2.562 7.17l.989.15a1 1 0 0 0-.489-1.016l-.5.866Zm-1.191-.688.5-.866-.5.866ZM2.562 8.83l.5.866a1 1 0 0 0 .489-1.016l-.989.15Zm-1.191.688.5.866-.5-.866Zm3.192 2.776.625-.78a1 1 0 0 0-1.125-.086l.5.866Zm-1.192.688.5.866-.5-.866ZM6 13.125h1a1 1 0 0 0-.636-.931L6 13.125Zm4 0-.364-.931a1 1 0 0 0-.636.931h1Zm1.437-.831.5-.866a1 1 0 0 0-1.125.086l.625.78Zm1.192.688-.5.866.5-.866Zm.809-4.152-.989-.15a1 1 0 0 0 .489 1.016l.5-.866Zm1.191.688.5-.866-.5.866Zm0-3.036-.5-.866.5.866Zm-1.191.688-.5-.866a1 1 0 0 0-.489 1.016l.989-.15Zm-2-3.464-.626.78a1 1 0 0 0 1.125.086l-.5-.866Zm1.191-.688-.5-.866.5.866ZM10 2.875H9a1 1 0 0 0 .636.931L10 2.875ZM6.5 2h3V0h-3v2Zm3 12h-3v2h3v-2Zm2.946-10.299 1.5 2.598 1.732-1-1.5-2.598-1.732 1Zm-8.892 8.598-1.5-2.598-1.732 1 1.5 2.598 1.732-1Zm-1.5-6 1.5-2.598-1.732-1-1.5 2.598 1.732 1Zm11.892 3.402-1.5 2.598 1.732 1 1.5-2.598-1.732-1ZM7 2.875V1.5H5v1.375h2ZM5.188 4.486a4.494 4.494 0 0 1 1.176-.68l-.728-1.863a6.494 6.494 0 0 0-1.699.983l1.251 1.56Zm-2.317-.602 1.192.688 1-1.732-1.192-.688-1 1.732ZM3.5 8c0-.232.017-.46.051-.68l-1.978-.3c-.048.32-.073.648-.073.98h2Zm-.438-1.696-1.191-.688-1 1.732 1.191.688 1-1.732Zm.489 2.376A4.543 4.543 0 0 1 3.5 8h-2c0 .332.025.66.073.98l1.978-.3Zm-1.68 1.704 1.191-.688-1-1.732-1.191.688 1 1.732Zm2.192 1.044-1.192.688 1 1.732 1.192-.688-1-1.732Zm2.3.766a4.497 4.497 0 0 1-1.175-.68l-1.25 1.56c.508.408 1.08.741 1.698.982l.728-1.862ZM7 14.5v-1.375H5V14.5h2Zm2-1.375V14.5h2v-1.375H9Zm1.812-1.611a4.495 4.495 0 0 1-1.176.68l.728 1.862a6.495 6.495 0 0 0 1.699-.982l-1.251-1.56Zm2.317.602-1.192-.688-1 1.732 1.192.688 1-1.732ZM12.5 8c0 .232-.017.46-.051.68l1.978.3c.048-.32.073-.648.073-.98h-2Zm.438 1.696 1.191.688 1-1.732-1.191-.688-1 1.732Zm1.191-4.08-1.191.688 1 1.732 1.191-.688-1-1.732ZM12.45 7.32c.034.22.051.448.051.68h2c0-.332-.025-.66-.073-.98l-1.978.3Zm-.512-2.748 1.192-.688-1-1.732-1.192.688 1 1.732Zm-2.3-.766c.426.167.822.398 1.175.68l1.25-1.56a6.496 6.496 0 0 0-1.698-.983l-.728 1.863ZM9 1.5v1.375h2V1.5H9Zm3.446 10.799a.5.5 0 0 1 .683-.183l-1 1.732a1.5 1.5 0 0 0 2.05-.549l-1.733-1Zm3.232-1.598a1.5 1.5 0 0 0-.549-2.05l-1 1.733a.5.5 0 0 1-.183-.683l1.732 1Zm-12.124-7a.5.5 0 0 1-.683.183l1-1.732a1.5 1.5 0 0 0-2.05.549l1.733 1ZM.322 5.299a1.5 1.5 0 0 0 .549 2.05l1-1.733a.5.5 0 0 1 .183.683l-1.732-1Zm1.732 4.402a.5.5 0 0 1-.183.683l-1-1.732A1.5 1.5 0 0 0 .32 10.7l1.733-1Zm-.232 3.598a1.5 1.5 0 0 0 2.049.55l-1-1.733a.5.5 0 0 1 .683.183l-1.732 1Zm12.124-7a.5.5 0 0 1 .183-.683l1 1.732a1.5 1.5 0 0 0 .55-2.049l-1.733 1Zm.232-3.598a1.5 1.5 0 0 0-2.049-.55l1 1.733a.5.5 0 0 1-.683-.183l1.732-1ZM6.5 14a.5.5 0 0 1 .5.5H5A1.5 1.5 0 0 0 6.5 16v-2Zm3 2a1.5 1.5 0 0 0 1.5-1.5H9a.5.5 0 0 1 .5-.5v2Zm0-14a.5.5 0 0 1-.5-.5h2A1.5 1.5 0 0 0 9.5 0v2Zm-3-2A1.5 1.5 0 0 0 5 1.5h2a.5.5 0 0 1-.5.5V0ZM9 8a1 1 0 0 1-1 1v2a3 3 0 0 0 3-3H9ZM8 9a1 1 0 0 1-1-1H5a3 3 0 0 0 3 3V9ZM7 8a1 1 0 0 1 1-1V5a3 3 0 0 0-3 3h2Zm1-1a1 1 0 0 1 1 1h2a3 3 0 0 0-3-3v2Z" class="icon-dark"/>',
    24: '<path fill="#D0D2E0" fill-rule="evenodd" stroke="currentColor" stroke-width="2" d="M9.794 3.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v1.417c0 .221.146.414.355.489.804.287 1.54.717 2.177 1.259a.524.524 0 0 0 .6.062l1.23-.71a.5.5 0 0 1 .683.184l1.5 2.598a.5.5 0 0 1-.184.683l-1.227.709a.524.524 0 0 0-.247.55 7.043 7.043 0 0 1 0 2.518c-.04.217.055.44.247.55l1.227.709a.5.5 0 0 1 .183.683l-1.5 2.598a.5.5 0 0 1-.683.183l-1.229-.71a.524.524 0 0 0-.6.063 6.993 6.993 0 0 1-2.177 1.26.525.525 0 0 0-.355.488V20.5a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1.417a.525.525 0 0 0-.354-.489 6.993 6.993 0 0 1-2.178-1.259.524.524 0 0 0-.6-.063l-1.229.71a.5.5 0 0 1-.683-.183l-1.5-2.598a.5.5 0 0 1 .183-.683l1.228-.709a.524.524 0 0 0 .246-.55 7.042 7.042 0 0 1 0-2.518.524.524 0 0 0-.246-.55l-1.228-.709a.5.5 0 0 1-.183-.683l1.5-2.598a.5.5 0 0 1 .683-.183l1.229.71c.191.11.432.08.6-.063a6.992 6.992 0 0 1 2.178-1.26.525.525 0 0 0 .354-.488V3.5Zm2 11.5a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z" class="icon-dark-stroke icon-light-fill" clip-rule="evenodd"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "object-gear" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, q0 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path fill="#D0D2E0" d="m8 3 7 3-2 .857V8.97a3 3 0 0 1-1.886 2.785l-2.371.949a2 2 0 0 1-1.486 0l-2.371-.949A3 3 0 0 1 3 8.97V6.857L1 6l7-3Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 6.857 15 6 8 3 1 6l2 .857m10 0V8.97a3 3 0 0 1-1.886 2.785l-2.371.949a2 2 0 0 1-1.486 0l-2.371-.949A3 3 0 0 1 3 8.97V6.857m10 0L8 9 3 6.857" class="icon-dark"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M15.5 6v3" class="icon-dark-secondary"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "object-tassel" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, N0 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<g clip-path="url(#os-apple_x16_svg__a)"><path fill="currentColor" d="M13.61 5.454c-.093.072-1.732.996-1.732 3.048 0 2.375 2.085 3.215 2.148 3.236-.01.05-.332 1.15-1.1 2.27-.684.986-1.4 1.97-2.488 1.97s-1.368-.632-2.624-.632c-1.224 0-1.659.652-2.654.652-.995 0-1.69-.912-2.488-2.032C1.747 12.651 1 10.608 1 8.67c0-3.11 2.022-4.76 4.013-4.76 1.057 0 1.939.694 2.603.694.632 0 1.618-.736 2.82-.736.457 0 2.095.042 3.174 1.587ZM9.866 2.55c.497-.59.85-1.41.85-2.228 0-.114-.01-.23-.031-.322-.81.03-1.773.54-2.354 1.213-.456.518-.881 1.337-.881 2.168 0 .125.02.25.03.29.051.009.134.02.218.02.726 0 1.64-.486 2.168-1.14Z"/></g><defs><clipPath id="os-apple_x16_svg__a"><path fill="currentColor" d="M0 0h16v16H0z"/></clipPath></defs>'
  }[o2];
  if (!s2)
    throw Error(`Icon "os-apple" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, X0 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<g clip-path="url(#os-generic_x16_svg__a)"><path fill="currentColor" fill-rule="evenodd" d="M2 8a6 6 0 1 1 12 0A6 6 0 0 1 2 8Zm6-8a8 8 0 1 0 0 16A8 8 0 0 0 8 0Zm-.026 8.004c0 1.618-.967 2.527-2.554 2.527-1.59 0-2.548-.914-2.548-2.527v-.008c0-1.582.993-2.527 2.548-2.527 1.56 0 2.554.931 2.554 2.527v.008Zm-3.274 0c0 .77.268 1.191.725 1.191.448 0 .72-.426.72-1.19v-.01c0-.75-.285-1.19-.725-1.19-.443 0-.72.44-.72 1.19v.01Zm8.428.831c0 1.046-.94 1.696-2.346 1.696-1.53 0-2.33-.655-2.44-1.621l-.004-.04h1.74l.01.035c.07.282.29.449.694.449.347 0 .562-.12.562-.313v-.004c0-.176-.145-.277-.545-.351l-.879-.163c-.962-.176-1.472-.69-1.472-1.441v-.005c0-1.006.857-1.608 2.268-1.608 1.503 0 2.267.747 2.267 1.63v.03H11.35l-.005-.039c-.026-.228-.242-.444-.628-.444-.33 0-.545.124-.545.33v.004c0 .172.123.269.562.352l.88.163c1.045.193 1.515.602 1.515 1.336v.004Z" class="icon-light" clip-rule="evenodd"/></g><defs><clipPath id="os-generic_x16_svg__a"><path fill="currentColor" d="M0 0h16v16H0z" class="icon-light"/></clipPath></defs>'
  }[o2];
  if (!s2)
    throw Error(`Icon "os-generic" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, Q0 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<g clip-path="url(#os-linux_x16_svg__a)"><path fill="currentColor" d="M7.758 4.389c0 .053-.053.053-.053.053h-.053c-.053 0-.053-.053-.106-.106 0 0-.053-.053-.053-.106s0-.053.053-.053l.106.053c.053.053.106.106.106.159Zm-.954-.53c0-.265-.106-.424-.265-.424 0 0 0 .053-.053.053v.106h.16c0 .106.052.16.052.265h.106Zm1.854-.265c.106 0 .16.106.212.265h.106c-.053-.053-.053-.106-.053-.159 0-.053 0-.106-.053-.159-.053-.053-.106-.106-.159-.106 0 0-.053.053-.106.053 0 .053.053.053.053.106Zm-1.589.848c-.053 0-.053 0-.053-.053s0-.106.053-.16c.106 0 .16-.052.16-.052.052 0 .052.053.052.053 0 .053-.053.106-.159.212H7.07Zm-.583-.053c-.211-.106-.264-.265-.264-.53 0-.159 0-.265.106-.37a.291.291 0 0 1 .264-.16c.106 0 .16.053.265.16.053.158.106.317.106.476v.106h.053v-.053c.053 0 .053-.106.053-.318 0-.159 0-.318-.106-.477-.106-.159-.212-.265-.424-.265a.398.398 0 0 0-.37.265c-.106.212-.127.371-.127.636 0 .212.074.424.286.636.053-.053.106-.053.158-.106Zm6.622 7.47c.053 0 .053-.022.053-.07 0-.116-.053-.254-.212-.407-.159-.16-.423-.26-.741-.303-.053-.005-.106-.005-.106-.005-.053-.01-.053-.01-.106-.01a2.891 2.891 0 0 1-.212-.027c.159-.493.212-.927.212-1.308 0-.53-.106-.9-.318-1.219-.212-.318-.424-.477-.689-.53-.053.053-.053.053-.053.106.265.106.53.318.69.636.158.371.211.689.211 1.06 0 .296-.053.736-.265 1.297-.212.085-.424.281-.583.588 0 .048 0 .075.053.075 0 0 .053-.048.106-.138.106-.09.16-.18.265-.27.16-.09.265-.138.424-.138.265 0 .53.037.689.111.212.07.318.143.37.228.053.08.106.154.16.223 0 .069.052.1.052.1ZM8.235 4.176c-.053-.053-.053-.159-.053-.265 0-.212 0-.318.106-.477.106-.106.212-.159.317-.159.16 0 .265.106.371.212.053.16.106.265.106.424 0 .265-.106.424-.318.477 0 0 .053.053.106.053.106 0 .16.053.265.106.053-.318.106-.53.106-.795 0-.318-.053-.53-.159-.689a.68.68 0 0 0-.53-.211.854.854 0 0 0-.476.158c-.106.16-.16.265-.16.424 0 .265.054.477.16.689.053 0 .106.053.159.053Zm.635.847c-.688.477-1.218.69-1.642.69-.37 0-.742-.16-1.06-.425.054.106.107.212.16.265l.317.318c.212.212.477.318.742.318.37 0 .795-.212 1.324-.583l.477-.318c.106-.106.212-.212.212-.37 0-.053 0-.106-.053-.106-.053-.106-.318-.265-.847-.424-.477-.212-.848-.318-1.06-.318-.159 0-.424.106-.795.318-.317.212-.53.424-.53.635 0 0 .054.053.107.16.317.264.635.423.953.423.424 0 .954-.212 1.642-.741v.106c.053 0 .053.052.053.052Zm1.219 10.701c.212.399.582.599 1.006.599.106 0 .212-.016.318-.048a.691.691 0 0 0 .265-.1c.053-.037.106-.074.159-.117.106-.037.106-.063.159-.09l.9-.779c.212-.169.424-.316.69-.445.211-.127.423-.211.529-.26a.946.946 0 0 0 .37-.19.547.547 0 0 0 .107-.307c0-.154-.106-.27-.212-.355a1.077 1.077 0 0 0-.318-.18c-.106-.037-.212-.122-.37-.265a1.428 1.428 0 0 1-.266-.578l-.053-.307c-.053-.143-.053-.249-.106-.307 0-.016 0-.021-.053-.021a.29.29 0 0 0-.212.138c-.106.09-.212.19-.317.296-.053.106-.212.201-.318.291a.952.952 0 0 1-.424.138c-.424 0-.636-.116-.795-.344-.106-.17-.159-.366-.212-.588-.106-.09-.159-.138-.264-.138-.265 0-.371.276-.371.832v1.648c0 .047-.053.153-.053.317-.053.165-.053.351-.053.562l-.106.588V15.725Zm-7.682-.281c.493.072 1.06.226 1.7.461.642.233 1.034.355 1.177.355.37 0 .678-.164.932-.482.053-.102.053-.223.053-.362 0-.5-.302-1.134-.906-1.902l-.36-.482a5.015 5.015 0 0 1-.28-.46 4.537 4.537 0 0 0-.292-.477 1.43 1.43 0 0 0-.323-.366 1.088 1.088 0 0 0-.472-.244c-.222.043-.376.117-.45.218a.648.648 0 0 0-.127.328c-.016.111-.048.185-.1.222a.966.966 0 0 1-.266.085c-.026 0-.074 0-.143.006h-.143c-.28 0-.471.031-.572.084a.777.777 0 0 0-.201.514c0 .085.021.228.064.43.042.195.063.354.063.465 0 .218-.063.435-.196.652-.132.228-.201.397-.201.518.053.206.402.35 1.043.435v.002Zm1.764-4.817c0-.366.096-.769.292-1.245.19-.477.381-.795.567-1.007-.01-.053-.037-.053-.08-.053l-.053-.053c-.153.16-.339.53-.561 1.06-.223.476-.34.916-.34 1.24 0 .238.059.444.165.624.116.175.397.43.842.753l.562.365c.598.52.916.88.916 1.091 0 .112-.053.223-.212.345a.502.502 0 0 1-.37.19c-.011 0-.016.011-.016.038 0 .005.053.11.164.317.222.302.7.45 1.335.45 1.165 0 2.066-.476 2.755-1.43 0-.264 0-.429-.053-.498v-.196c0-.344.053-.604.158-.773.106-.17.212-.249.371-.249.106 0 .212.037.318.117.053-.408.053-.763.053-1.081 0-.482 0-.88-.106-1.25a2.791 2.791 0 0 0-.265-.795l-.318-.477c-.106-.159-.159-.318-.264-.476-.053-.212-.106-.371-.106-.636-.16-.265-.265-.53-.424-.795-.106-.265-.212-.53-.318-.741l-.477.37c-.53.371-.953.53-1.324.53-.318 0-.583-.053-.742-.265l-.318-.265c0 .16-.053.371-.159.583l-.333.636c-.149.37-.228.582-.244.741-.021.106-.037.212-.048.212l-.397.795c-.43.795-.646 1.53-.646 2.14 0 .122.01.25.031.376a.785.785 0 0 1-.355-.688Zm3.793 5.011c-.688 0-1.218.093-1.589.278V15.9c-.265.318-.561.482-.974.482-.26 0-.668-.1-1.219-.302a14.385 14.385 0 0 0-1.478-.433 3.174 3.174 0 0 0-.291-.055 11.134 11.134 0 0 1-.408-.072 3.091 3.091 0 0 1-.376-.109.93.93 0 0 1-.318-.162.3.3 0 0 1-.11-.227c0-.084.019-.175.055-.271.034-.059.07-.117.108-.17.037-.058.069-.111.09-.164a.773.773 0 0 0 .074-.148.818.818 0 0 0 .074-.313 5.61 5.61 0 0 0-.063-.493 4.775 4.775 0 0 1-.064-.524c0-.233.053-.419.17-.551.116-.132.227-.201.344-.201h.61c.047 0 .121-.027.232-.09.037-.085.07-.154.09-.218.027-.063.037-.11.048-.132.01-.032.021-.064.032-.09a.735.735 0 0 1 .085-.122.32.32 0 0 1-.064-.207c0-.058 0-.11.01-.143 0-.19.09-.46.281-.815l.186-.334c.153-.286.27-.498.355-.71.09-.212.185-.53.291-.954.085-.37.286-.741.604-1.112l.397-.477c.276-.318.456-.582.556-.794.101-.212.154-.477.154-.689 0-.106-.026-.424-.085-.954-.053-.53-.08-1.06-.08-1.536 0-.37.033-.636.102-.9.068-.265.19-.53.37-.742.16-.212.371-.424.689-.53A3.522 3.522 0 0 1 7.964.48c.16 0 .318 0 .477.053.16 0 .371.053.636.16.212.105.424.211.583.37.212.159.37.424.53.689.105.317.211.635.264 1.06.053.264.053.529.106.9 0 .318.053.53.053.688.053.16.053.371.106.636.053.212.106.424.212.583.106.212.212.424.37.636.16.264.372.53.584.847.476.53.847 1.113 1.06 1.695.264.53.423 1.219.423 1.955a3.6 3.6 0 0 1-.159 1.065c.106 0 .159.042.212.116.053.075.106.233.159.482l.053.393a.623.623 0 0 0 .265.323c.106.095.212.175.37.238.106.053.265.127.371.223a.471.471 0 0 1 .16.333c0 .18-.054.313-.16.408a.83.83 0 0 1-.37.228c-.106.053-.318.159-.636.308a5.77 5.77 0 0 0-.795.572l-.53.451a2.934 2.934 0 0 1-.582.445c-.16.096-.371.143-.583.143l-.37-.042c-.425-.111-.69-.323-.848-.646-.848-.103-1.537-.154-1.96-.154"/></g><defs><clipPath id="os-linux_x16_svg__a"><path fill="currentColor" d="M0 0h16v16H0z"/></clipPath></defs>'
  }[o2];
  if (!s2)
    throw Error(`Icon "os-linux" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, K0 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path fill="#00A4EF" d="M7.6 0H0v7.6h7.6V0ZM16 0H8.4v7.6H16V0ZM7.6 8.4H0V16h7.6V8.4ZM16 8.4H8.4V16H16V8.4Z"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "os-windows" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, J0 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path fill="#D0D2E0" fill-rule="evenodd" d="M2 13a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v5Z" class="icon-light" clip-rule="evenodd"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 6H4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-1M5 6V4a3 3 0 0 1 3-3v0a3 3 0 0 1 3 3v2M5 6h6m-3 4v1" class="icon-dark"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "security-lock-locked" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, W2 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16", "24"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path fill="#D0D2E0" d="M15 3a2 2 0 0 0-2-2H3a2 2 0 0 0-2 2v1h14V3Z" class="icon-light"/><path fill="#D0D2E0" fill-rule="evenodd" d="M15 3a2 2 0 0 0-2-2H3a2 2 0 0 0-2 2v1h14V3Z" class="icon-light" clip-rule="evenodd"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M1 4v9a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4M1 4V3a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v1M1 4h14m-5 4 1.5 1.5L10 11M6 8 4.5 9.5 6 11" class="icon-dark"/>',
    24: '<path fill="#D0D2E0" d="M21 6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2h18V6Z" class="icon-light"/><path fill="#D0D2E0" fill-rule="evenodd" d="M21 6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2h18V6Z" class="icon-light" clip-rule="evenodd"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8v10a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8M3 8V6a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v2M3 8h18m-7 4 2 2-2 2m-4-4-2 1.929 2 1.928" class="icon-dark"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "technology-code-editor" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, F2 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["48"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    48: '<rect fill="currentColor"/><path fill="#E1E3ED" d="M43 37V16H5v21a3 3 0 0 0 3 3h32a3 3 0 0 0 3-3Z" class="icon-light"/><path fill="#747994" d="M13 28a1 1 0 1 0 0 2v-2Zm-2 3a1 1 0 1 0 0 2v-2Zm2-6a1 1 0 1 0 0 2v-2Zm-2-3a1 1 0 1 0 0 2v-2Zm13 2a1 1 0 1 0 0-2v2Zm-5-3a1 1 0 1 0 0-2v2ZM9 19a1 1 0 1 0 0 2v-2Zm14.01 14a1 1 0 1 0 0-2v2ZM29 27a1 1 0 1 0 0-2v2ZM9 34a1 1 0 1 0 0 2v-2Zm17-4a1 1 0 1 0 0-2v2Zm-8 6a1 1 0 1 0 0-2v2ZM8 9h32V7H8v2Zm34 2v26h2V11h-2ZM6 37V11H4v26h2Zm2 2a2 2 0 0 1-2-2H4a4 4 0 0 0 4 4v-2Zm34-2a2 2 0 0 1-2 2v2a4 4 0 0 0 4-4h-2ZM40 9a2 2 0 0 1 2 2h2a4 4 0 0 0-4-4v2ZM8 7a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2V7Zm-4 4v5h2v-5H4Zm40 5v-5h-2v5h2Zm0 21V16h-2v21h2ZM4 16v21h2V16H4Zm1 1h38v-2H5v2Zm35 22H8v2h32v-2Zm-27-9h4v-2h-4v2Zm3 1h-5v2h5v-2Zm0-4h8v-2h-8v2Zm-3 0h2v-2h-2v2Zm-2-3h5v-2h-5v2Zm13-2h-6.99v2H24v-2Zm-5-3h-6v2h6v-2ZM9 21h3v-2H9v2Zm8 12h6.01v-2H17v2Zm8-6h4v-2h-4v2Zm-7 3h5v-2h-5v2Zm-4 4H9v2h5v-2Zm10-4h2v-2h-2v2Zm-9 6h3v-2h-3v2ZM10 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM13 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM16 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark"/><path fill="#F8C4CD" d="M34 36.998a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-light-secondary"/><path fill="#F8C4CD" fill-rule="evenodd" d="M31 31.498a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v1.17a.5.5 0 0 0 .75.432l1.013-.584a.5.5 0 0 1 .683.183l1.5 2.598a.5.5 0 0 1-.183.683l-1.013.585a.5.5 0 0 0 0 .866l1.013.585a.5.5 0 0 1 .183.683l-1.5 2.598a.5.5 0 0 1-.683.183l-1.013-.585a.5.5 0 0 0-.75.433v1.17a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1.17a.5.5 0 0 0-.75-.432l-1.013.584a.5.5 0 0 1-.683-.183l-1.5-2.598a.5.5 0 0 1 .183-.683l1.013-.585a.5.5 0 0 0 0-.866l-1.013-.585a.5.5 0 0 1-.183-.683l1.5-2.598a.5.5 0 0 1 .683-.183l1.013.584a.5.5 0 0 0 .75-.433v-1.169Zm2 6.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" class="icon-light-secondary" clip-rule="evenodd"/><path stroke="#C62B49" stroke-linejoin="round" stroke-width="2" d="M34 36.998a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark-secondary"/><path stroke="#C62B49" stroke-linejoin="round" stroke-width="2" d="M31 31.498a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v1.17a.5.5 0 0 0 .75.432l1.013-.584a.5.5 0 0 1 .683.183l1.5 2.598a.5.5 0 0 1-.183.683l-1.013.585a.5.5 0 0 0 0 .866l1.013.585a.5.5 0 0 1 .183.683l-1.5 2.598a.5.5 0 0 1-.683.183l-1.013-.585a.5.5 0 0 0-.75.433v1.17a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1.17a.5.5 0 0 0-.75-.432l-1.013.584a.5.5 0 0 1-.683-.183l-1.5-2.598a.5.5 0 0 1 .183-.683l1.013-.585a.5.5 0 0 0 0-.866l-1.013-.585a.5.5 0 0 1-.183-.683l1.5-2.598a.5.5 0 0 1 .683-.183l1.013.584a.5.5 0 0 0 .75-.433v-1.169Zm2 6.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" class="icon-dark-secondary" clip-rule="evenodd"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "technology-command-line-error" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, q2 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["48"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    48: '<path fill="#E1E3ED" d="M40 8H8a3 3 0 0 0-3 3v5h38v-5a3 3 0 0 0-3-3Z" class="icon-light"/><path fill="#E1E3ED" fill-rule="evenodd" d="M8 8a3 3 0 0 0-3 3v5h38v-5a3 3 0 0 0-3-3H8Z" class="icon-light" clip-rule="evenodd"/><path fill="#E1E3ED" d="m19 30-5-2-5 3v5h29a1 1 0 0 0 1-1V23l-5 1-5 3-5-2-5 5Z" class="icon-light"/><path stroke="#9095AD" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 12h20m4-1v26a3 3 0 0 1-3 3H8a3 3 0 0 1-3-3V11m38 0a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3m38 0v5H5v-5m34 12v12a1 1 0 0 1-1 1H9m30-13v-2a1 1 0 0 0-1-1H10a1 1 0 0 0-1 1v15m30-13-5 1-5 3-5-2-5 5-5-2-5 3v5" class="icon-dark"/><path fill="#9095AD" d="M10 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM13 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM16 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark"/><path fill="#fff" d="M39 37a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z"/><path fill="currentColor" d="M37 37a6 6 0 1 1-12 0 6 6 0 0 1 12 0Z" class="icon-light"/><path fill="#C5C9FD" fill-rule="evenodd" d="M31 32a5 5 0 1 0 0 10 5 5 0 0 0 0-10Zm-7 5a7 7 0 1 1 14 0 7 7 0 0 1-14 0Z" class="icon-light-secondary" clip-rule="evenodd"/><path fill="#4956E3" fill-rule="evenodd" d="M30 31a1 1 0 0 1 1-1 7 7 0 0 1 7 7 1 1 0 1 1-2 0 5 5 0 0 0-5-5 1 1 0 0 1-1-1Z" class="icon-dark-secondary" clip-rule="evenodd"/><path fill="#fff" d="M36 37a5 5 0 1 1-10 0 5 5 0 0 1 10 0Z"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "technology-dashboard-running" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, Y2 = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16", "24"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path fill="#D0D2E0" d="M1 14a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2l-2.5-2.5L10 12 5.5 7.5 1 12v2ZM12 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-light"/><path fill="currentColor" d="m5.5 7.5.707-.707a1 1 0 0 0-1.414 0L5.5 7.5ZM10 12l-.707.707a1 1 0 0 0 1.414 0L10 12Zm2.5-2.5.707-.707a1 1 0 0 0-1.414 0l.707.707ZM14 0H2v2h12V0ZM2 14v-2H0v2h2Zm0-2V2H0v10h2Zm-.293.707 4.5-4.5-1.414-1.414-4.5 4.5 1.414 1.414Zm3.086-4.5 4.5 4.5 1.414-1.414-4.5-4.5-1.414 1.414Zm5.914 4.5 2.5-2.5-1.414-1.414-2.5 2.5 1.414 1.414ZM16 14v-2h-2v2h2Zm0-2V2h-2v10h2Zm-4.207-1.793 2.5 2.5 1.414-1.414-2.5-2.5-1.414 1.414ZM2 16h12v-2H2v2Zm9-11v2a2 2 0 0 0 2-2h-2Zm0 0H9a2 2 0 0 0 2 2V5Zm0 0V3a2 2 0 0 0-2 2h2Zm0 0h2a2 2 0 0 0-2-2v2Zm3-3h2a2 2 0 0 0-2-2v2Zm0 12v2a2 2 0 0 0 2-2h-2ZM2 0a2 2 0 0 0-2 2h2V0ZM0 14a2 2 0 0 0 2 2v-2H0Z" class="icon-dark"/>',
    24: '<path fill="#C5C9FD" d="M3 19a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-2l-3-3-3 3-6-6-6 6v2ZM18 9a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z" class="icon-light"/><path fill="currentColor" d="m9 11 .707-.707a1 1 0 0 0-1.414 0L9 11Zm6 6-.707.707a1 1 0 0 0 1.414 0L15 17Zm3-3 .707-.707a1 1 0 0 0-1.414 0L18 14Zm2-11H4v2h16V3ZM4 19v-2H2v2h2Zm0-2V5H2v12h2Zm-.293.707 6-6-1.414-1.414-6 6 1.414 1.414Zm4.586-6 6 6 1.414-1.414-6-6-1.414 1.414Zm7.414 6 3-3-1.414-1.414-3 3 1.414 1.414ZM22 19v-2h-2v2h2Zm0-2V5h-2v12h2Zm-4.707-2.293 3 3 1.414-1.414-3-3-1.414 1.414ZM4 21h16v-2H4v2ZM17 9a1 1 0 0 1-1 1v2a3 3 0 0 0 3-3h-2Zm-1 1a1 1 0 0 1-1-1h-2a3 3 0 0 0 3 3v-2Zm-1-1a1 1 0 0 1 1-1V6a3 3 0 0 0-3 3h2Zm1-1a1 1 0 0 1 1 1h2a3 3 0 0 0-3-3v2Zm4-3h2a2 2 0 0 0-2-2v2Zm0 14v2a2 2 0 0 0 2-2h-2ZM4 3a2 2 0 0 0-2 2h2V3ZM2 19a2 2 0 0 0 2 2v-2H2Z" class="icon-dark"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "technology-image-screenshot" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, to = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<rect width="14" height="6" x="1" y="2" fill="#D0D2E0" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-dark-stroke icon-light-fill" rx="2"/><rect width="14" height="6" x="1" y="8" fill="#D0D2E0" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-dark-stroke icon-light-fill" rx="2"/><path fill="currentColor" d="M13 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM10 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM13 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "technology-server" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, ao = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path fill="#D0D2E0" d="M15 3a2 2 0 0 0-2-2H3a2 2 0 0 0-2 2v1h14V3Z" class="icon-light"/><path fill="#D0D2E0" fill-rule="evenodd" d="M15 3a2 2 0 0 0-2-2H3a2 2 0 0 0-2 2v1h14V3Z" class="icon-light" clip-rule="evenodd"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M1 4v9a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4M1 4V3a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v1M1 4h14" class="icon-dark"/><path fill="currentColor" d="M4.5 7a.5.5 0 0 0 0 1V7Zm1 1H6V7h-.5v1Zm-1 1a.5.5 0 0 0 0 1V9ZM6 10h.5V9H6v1Zm-1.5 1a.5.5 0 0 0 0 1v-1Zm3 1H8v-1h-.5v1Zm0-3H7v1h.5V9ZM9 10a.5.5 0 0 0 0-1v1Zm0 1h-.5v1H9v-1Zm2 1a.5.5 0 0 0 0-1v1ZM7 7h-.5v1H7V7Zm1 1h.5V7H8v1Zm1.5-1H9v1h.5V7Zm2 1a.5.5 0 0 0 0-1v1Zm-7 0h1V7h-1v1Zm0 2H6V9H4.5v1Zm0 2h3v-1h-3v1Zm3-2H9V9H7.5v1ZM9 12h2v-1H9v1ZM7 8h1V7H7v1Zm2.5 0h2V7h-2v1Z" class="icon-dark"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "technology-terminal-log" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, no = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16", "24"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path fill="currentColor" d="M1 10h3v3H1v-3Z" class="icon-dark"/><path fill="currentColor" d="M15 5.5a1 1 0 1 0 0-2v2Zm-8-2a1 1 0 0 0 0 2v-2Zm8 9a1 1 0 1 0 0-2v2Zm-8-2a1 1 0 1 0 0 2v-2ZM.293 5.293a1 1 0 0 0 1.414 1.414L.293 5.293Zm4.414-1.586a1 1 0 0 0-1.414-1.414l1.414 1.414Zm-3-1.414A1 1 0 0 0 .293 3.707l1.414-1.414Zm1.586 4.414a1 1 0 0 0 1.414-1.414L3.293 6.707ZM1 10V9a1 1 0 0 0-1 1h1Zm3 0h1a1 1 0 0 0-1-1v1Zm0 3v1a1 1 0 0 0 1-1H4Zm-3 0H0a1 1 0 0 0 1 1v-1Zm14-9.5H7v2h8v-2Zm0 7H7v2h8v-2ZM1.707 6.707l1.5-1.5-1.414-1.414-1.5 1.5 1.414 1.414Zm1.5-1.5 1.5-1.5-1.414-1.414-1.5 1.5 1.414 1.414Zm-2.914-1.5 1.5 1.5 1.414-1.414-1.5-1.5L.293 3.707Zm1.5 1.5 1.5 1.5 1.414-1.414-1.5-1.5-1.414 1.414ZM1 11h3V9H1v2Zm2-1v3h2v-3H3Zm1 2H1v2h3v-2Zm-2 1v-3H0v3h2Z" class="icon-dark"/>',
    24: '<path fill="#D0D2E0" d="M3 15h4v4H3v-4Z" class="icon-light"/><path fill="currentColor" d="M21 8a1 1 0 1 0 0-2v2ZM11 6a1 1 0 1 0 0 2V6Zm10 12a1 1 0 1 0 0-2v2Zm-10-2a1 1 0 1 0 0 2v-2ZM2.293 8.293a1 1 0 0 0 1.414 1.414L2.293 8.293Zm5.414-2.586a1 1 0 0 0-1.414-1.414l1.414 1.414Zm-4-1.414a1 1 0 0 0-1.414 1.414l1.414-1.414Zm2.586 5.414a1 1 0 0 0 1.414-1.414L6.293 9.707ZM3 15v-1a1 1 0 0 0-1 1h1Zm4 0h1a1 1 0 0 0-1-1v1Zm0 4v1a1 1 0 0 0 1-1H7Zm-4 0H2a1 1 0 0 0 1 1v-1ZM21 6H11v2h10V6Zm0 10H11v2h10v-2ZM3.707 9.707l2-2-1.414-1.414-2 2 1.414 1.414Zm2-2 2-2-1.414-1.414-2 2 1.414 1.414Zm-3.414-2 2 2 1.414-1.414-2-2-1.414 1.414Zm2 2 2 2 1.414-1.414-2-2-1.414 1.414ZM3 16h4v-2H3v2Zm3-1v4h2v-4H6Zm1 3H3v2h4v-2Zm-3 1v-4H2v4h2Z" class="icon-dark"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "technology-test-results" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, lo = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16", "24", "64"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path fill="currentColor" fill-opacity=".5" d="M2 10h4v4H2v-4ZM10 2h4v4h-4V2Z" class="icon-dark"/><path fill="currentColor" d="M2 6V5a1 1 0 0 0-1 1h1Zm4 0h1V5H6v1Zm-4 8H1a1 1 0 0 0 1 1v-1Zm8-12V1H9v1h1Zm4 0h1a1 1 0 0 0-1-1v1Zm0 4v1h1V6h-1Zm-4 0H9v1h1V6Zm0 4h1V9h-1v1Zm0 4v1a1 1 0 0 0 1-1h-1ZM2 7h4V5H2v2Zm3-1v4h2V6H5Zm1 3H2v2h4V9Zm-3 1V6H1v4h2Zm2 0v4h2v-4H5Zm1 3H2v2h4v-2Zm-3 1v-4H1v4h2Zm7-11h4V1h-4v2Zm3-1v4h2V2h-2Zm1 3h-4v2h4V5Zm-3 1V2H9v4h2Zm-5 5h4V9H6v2Zm3-1v4h2v-4H9Zm1 3H6v2h4v-2Z" class="icon-dark"/>',
    24: '<path fill="#D0D2E0" d="M3 14h7v7H4a1 1 0 0 1-1-1v-6ZM14 3h6a1 1 0 0 1 1 1v6h-7V3Z" class="icon-light"/><path fill="currentColor" d="M10 7h1V6h-1v1Zm4-4V2h-1v1h1Zm7 7v1h1v-1h-1Zm-7 0h-1v1h1v-1Zm3 4h1v-1h-1v1ZM4 8h6V6H4v2Zm5-1v7h2V7H9Zm1 6H3v2h7v-2Zm-6 1V8H2v6h2Zm5 0v7h2v-7H9Zm1 6H4v2h6v-2Zm-6 0v-6H2v6h2ZM14 4h6V2h-6v2Zm6 0v6h2V4h-2Zm1 5h-7v2h7V9Zm-6 1V3h-2v7h2Zm-5 5h7v-2h-7v2Zm6-1v6h2v-6h-2Zm0 6h-6v2h6v-2Zm0 0v2a2 2 0 0 0 2-2h-2Zm4-16h2a2 2 0 0 0-2-2v2ZM4 20H2a2 2 0 0 0 2 2v-2ZM4 6a2 2 0 0 0-2 2h2V6Z" class="icon-dark"/>',
    64: '<path fill="#D0D2E0" d="M36 5h21.5A1.5 1.5 0 0 1 59 6.5V28H36V5ZM32 32H9v21.5a1.5 1.5 0 0 0 1.5 1.5H32V32Z" class="icon-light"/><path fill="currentColor" d="M32 9h1V8h-1v1Zm4-4V4h-1v1h1Zm23 23v1h1v-1h-1Zm-23 0h-1v1h1v-1Zm19 4h1v-1h-1v1ZM10.5 10H32V8H10.5v2ZM31 9v23h2V9h-2Zm1 22H9v2h23v-2Zm-22 1V10.5H8V32h2Zm21 0v23h2V32h-2Zm1 22H10.5v2H32v-2Zm-22-.5V32H8v21.5h2ZM36 6h21.5V4H36v2Zm22 .5V28h2V6.5h-2ZM59 27H36v2h23v-2Zm-22 1V5h-2v23h2Zm-5 5h23v-2H32v2Zm22-1v21.5h2V32h-2Zm-.5 22H32v2h21.5v-2Zm.5-.5a.5.5 0 0 1-.5.5v2a2.5 2.5 0 0 0 2.5-2.5h-2ZM57.5 6a.5.5 0 0 1 .5.5h2A2.5 2.5 0 0 0 57.5 4v2Zm-47 48a.5.5 0 0 1-.5-.5H8a2.5 2.5 0 0 0 2.5 2.5v-2Zm0-46A2.5 2.5 0 0 0 8 10.5h2a.5.5 0 0 1 .5-.5V8Z" class="icon-dark"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "testing-type-component" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, ho = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16", "24", "64"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path fill="#D0D2E0" d="M15 14V5h-3v6H4v3h11Z" class="icon-light"/><path fill="currentColor" d="M15 5h1a1 1 0 0 0-1-1v1ZM4 14H3a1 1 0 0 0 1 1v-1Zm11 0v1a1 1 0 0 0 1-1h-1ZM1 2V1a1 1 0 0 0-1 1h1Zm11 0h1a1 1 0 0 0-1-1v1ZM1 11H0a1 1 0 0 0 1 1v-1Zm11 0v1a1 1 0 0 0 1-1h-1Zm2-6v9h2V5h-2Zm1 8H4v2h11v-2ZM1 3h11V1H1v2Zm11 7H4v2h8v-2Zm-8 0H1v2h3v-2Zm1 4v-3H3v3h2Zm7-8h3V4h-3v2Zm-1-4v3h2V2h-2Zm0 3v6h2V5h-2Zm-9 6V2H0v9h2ZM4 4.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0ZM6 4.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0ZM8 4.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0Z" class="icon-dark"/>',
    24: '<path fill="#D0D2E0" d="M20 20a1 1 0 0 0 1-1V9a1 1 0 0 0-1-1h-3v7a1 1 0 0 1-1 1H7v3a1 1 0 0 0 1 1h12Z" class="icon-light"/><path fill="currentColor" d="M6 6a1 1 0 0 0 0 2V6Zm.01 2a1 1 0 0 0 0-2v2ZM9 6a1 1 0 0 0 0 2V6Zm.01 2a1 1 0 0 0 0-2v2ZM12 6a1 1 0 1 0 0 2V6Zm.01 2a1 1 0 1 0 0-2v2ZM20 9v10h2V9h-2Zm0 10H8v2h12v-2ZM4 5h12V3H4v2Zm12 10H7v2h9v-2Zm-9 0H4v2h3v-2Zm1 4v-3H6v3h2Zm9-10h3V7h-3v2Zm-1-4v3h2V5h-2Zm0 3v7h2V8h-2ZM4 15V5H2v10h2Zm2-7h.01V6H6v2Zm3 0h.01V6H9v2Zm3 0h.01V6H12v2Zm4 9a2 2 0 0 0 2-2h-2v2ZM4 15H2a2 2 0 0 0 2 2v-2ZM16 5h2a2 2 0 0 0-2-2v2ZM4 3a2 2 0 0 0-2 2h2V3Zm16 16v2a2 2 0 0 0 2-2h-2ZM8 19H6a2 2 0 0 0 2 2v-2ZM22 9a2 2 0 0 0-2-2v2h2Z" class="icon-dark"/>',
    64: '<path fill="#D0D2E0" d="M55.5 55a1.5 1.5 0 0 0 1.5-1.5v-34a1.5 1.5 0 0 0-1.5-1.5H48v26.5a1.5 1.5 0 0 1-1.5 1.5H16v7.5a1.5 1.5 0 0 0 1.5 1.5h38ZM48 10.5A1.5 1.5 0 0 0 46.5 9h-38A1.5 1.5 0 0 0 7 10.5V18h41v-7.5Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 18v26.5A1.5 1.5 0 0 0 8.5 46H16M7 18v-7.5A1.5 1.5 0 0 1 8.5 9h38a1.5 1.5 0 0 1 1.5 1.5V18M7 18h41M16 46h30.5a1.5 1.5 0 0 0 1.5-1.5V18M16 46v7.5a1.5 1.5 0 0 0 1.5 1.5h38a1.5 1.5 0 0 0 1.5-1.5v-34a1.5 1.5 0 0 0-1.5-1.5H48m-5-4.5H25m-13.001 0h.014m3.987 0h.013m3.987 0h.013" class="icon-dark"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "testing-type-e2e" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, mo = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path fill="#D0D2E0" fill-rule="evenodd" d="M13.5 9.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0ZM8 9.993a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1Z" class="icon-light" clip-rule="evenodd"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 4V1m0 3c1.519 0 2.894.616 3.89 1.61M8 4a5.483 5.483 0 0 0-3.89 1.61M8 1h2M8 1H6m5.89 4.61a5.5 5.5 0 1 1-7.778 0m7.777 0L13 4.5M4.11 5.61 3 4.5m5 5 .357-.357M10 7.5 8.357 9.143m0 0a.498.498 0 0 1-.357.85.5.5 0 1 1 .357-.85Z" class="icon-dark"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "time-stopwatch" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
}, Co = (a2) => {
  const { interactiveColorsOnGroup: t2, name: n, ...e } = a2, { sizeWithDefault: o2, compiledClasses: i } = getComponentAttributes({
    ...e,
    availableSizes: ["16"],
    interactiveColorsOnGroup: t2
  }), s2 = {
    16: '<path fill="currentColor" fill-rule="evenodd" d="M2 8a6 6 0 1 1 12 0A6 6 0 0 1 2 8Zm6-8a8 8 0 1 0 0 16A8 8 0 0 0 8 0Zm1 5a1 1 0 0 0-2 0v3a1 1 0 0 0 2 0V5Zm-1 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" class="icon-dark" clip-rule="evenodd"/>'
  }[o2];
  if (!s2)
    throw Error(`Icon "warning-circle" is not available in size ${o2}`);
  return h$1("svg", c({
    ...e,
    size: o2,
    body: s2,
    compiledClasses: i
  }));
};
const useScreenshotStore = defineStore({
  id: "screenshot",
  state: () => {
    return {
      isScreenshotting: false
    };
  },
  actions: {
    setScreenshotting(isScreenshotting) {
      updateScreenshotStyles(isScreenshotting);
      this.isScreenshotting = isScreenshotting;
    }
  }
});
function updateScreenshotStyles(isScreenshotting) {
  if (isScreenshotting) {
    document.body.classList.add("is-screenshotting");
  } else {
    document.body.classList.remove("is-screenshotting");
  }
}
const __default__ = defineComponent({
  inheritAttrs: true
});
const _sfc_main$e = /* @__PURE__ */ defineComponent({
  ...__default__,
  __name: "HideDuringScreenshot",
  setup(__props) {
    const screenshotStore = useScreenshotStore();
    const classes = computed(() => {
      return {
        "hidden": screenshotStore.isScreenshotting
      };
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass([unref(classes), "p-0 m-0"])
      }, [
        renderSlot(_ctx.$slots, "default")
      ], 2);
    };
  }
});
const CypressLogo = "" + new URL("cypress_s-29af549a.png", import.meta.url).href;
const _hoisted_1$f = {
  key: 0,
  class: "absolute top-0 right-0 text-teal-600 ribbon",
  "aria-hidden": "true"
};
const _hoisted_2$e = ["disabled"];
const _hoisted_3$d = { class: "tracking-tight text-gray-600 text-[14px] leading-[20px]" };
const _sfc_main$d = /* @__PURE__ */ defineComponent({
  __name: "Card",
  props: {
    title: null,
    description: null,
    icon: null,
    hoverIcon: { default: void 0 },
    variant: null,
    iconSize: null,
    disabled: { type: Boolean, default: false },
    badgeText: { default: "" }
  },
  emits: ["click"],
  setup(__props, { emit: emits }) {
    const props = __props;
    const classMap = {
      indigo: "icon-dark-indigo-400 icon-light-indigo-100 icon-light-secondary-jade-200 icon-dark-secondary-jade-400",
      jade: "icon-dark-jade-400 icon-light-jade-100"
    };
    const iconDimensions = computed(() => {
      return props.iconSize === 48 ? `w-[48px] h-[48px]` : `w-[64px] h-[64px]`;
    });
    const classes = computed(() => {
      const iconMargin = props.iconSize === 64 ? "mb-[32px]" : "mb-[8px]";
      return [iconDimensions.value, iconMargin];
    });
    const iconClass = computed(() => {
      const colorClass = props.disabled ? "icon-dark-gray-600 icon-light-gray-100 icon-dark-secondary-gray-600 icon-light-secondary-gray-300" : classMap[props.variant];
      return [iconDimensions.value, colorClass].join(" ");
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["relative block h-auto text-center border border-gray-100 rounded outline-none group children:hyphens-manual", {
          "bg-gray-50 cursor-default": __props.disabled,
          "cursor-pointer focus-within-default hocus-default": !__props.disabled
        }]),
        "data-cy": "card",
        onClick: _cache[0] || (_cache[0] = ($event) => !__props.disabled && emits("click"))
      }, [
        __props.badgeText ? (openBlock(), createElementBlock("div", _hoisted_1$f, toDisplayString$1(__props.badgeText), 1)) : createCommentVNode("", true),
        createBaseVNode("div", {
          class: normalizeClass(["mx-auto children:transition-all children:duration-300", unref(classes)])
        }, [
          __props.hoverIcon ? (openBlock(), createBlock(resolveDynamicComponent(__props.hoverIcon), {
            key: 0,
            class: normalizeClass(["absolute opacity-0", [unref(iconClass), { "group-hover:opacity-100 group-focus:opacity-100": !__props.disabled }]]),
            "data-cy": "card-icon"
          }, null, 8, ["class"])) : createCommentVNode("", true),
          (openBlock(), createBlock(resolveDynamicComponent(__props.icon), {
            class: normalizeClass([
              "opacity-100",
              [
                __props.hoverIcon && !__props.disabled ? "group-hover:opacity-0" : void 0,
                unref(iconClass)
              ]
            ]),
            "data-cy": "card-icon"
          }, null, 8, ["class"]))
        ], 2),
        createBaseVNode("button", {
          class: normalizeClass(["font-medium mx-[8px] mb-[8px] text-[18px] leading-[24px] focus:outline-transparent", {
            "text-gray-700 cursor-default": __props.disabled,
            "text-indigo-500": !__props.disabled
          }]),
          disabled: __props.disabled
        }, toDisplayString$1(__props.title), 11, _hoisted_2$e),
        createBaseVNode("p", _hoisted_3$d, [
          renderSlot(_ctx.$slots, "default", {}, () => [
            createTextVNode(toDisplayString$1(__props.description), 1)
          ], true)
        ]),
        renderSlot(_ctx.$slots, "footer", {}, void 0, true)
      ], 2);
    };
  }
});
const Card_vue_vue_type_style_index_0_scoped_b9303bc9_lang = "";
const Card = /* @__PURE__ */ _export_sfc$1(_sfc_main$d, [["__scopeId", "data-v-b9303bc9"]]);
const _hoisted_1$e = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$d = /* @__PURE__ */ createBaseVNode("circle", {
  cx: "8",
  cy: "8",
  r: "3",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  fill: "#F3F4FA",
  stroke: "#D0D2E0",
  class: "icon-dark-stroke icon-light-fill"
}, null, -1);
const _hoisted_3$c = [
  _hoisted_2$d
];
function render$6(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$e, _hoisted_3$c);
}
const __unplugin_components_0 = { name: "cy-grommet_x16", render: render$6 };
const _sfc_main$c = /* @__PURE__ */ defineComponent({
  __name: "StatusBadge",
  props: {
    status: { type: Boolean },
    title: null
  },
  setup(__props) {
    const props = __props;
    return (_ctx, _cache) => {
      const _component_i_cy_grommet_x16 = __unplugin_components_0;
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["border rounded-full font-medium p-[5px] pr-[16px] text-[14px] leading-[20px] inline-flex items-center relative", { "text-jade-500": props.status, "text-gray-600": !props.status }])
      }, [
        createVNode(_component_i_cy_grommet_x16, {
          class: normalizeClass(["h-[16px] mr-[4px] ml-[4px] w-[16px]", { "icon-light-jade-400 icon-dark-jade-400": props.status, "icon-dark-gray-200 icon-dark-gray-50": !props.status }])
        }, null, 8, ["class"]),
        createTextVNode(" " + toDisplayString$1(props.title), 1)
      ], 2);
    };
  }
});
const _hoisted_1$d = {
  height: "1em",
  width: "1em",
  style: { "min-width": "64px", "min-height": "64px" },
  viewBox: "0 0 64 64",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$c = /* @__PURE__ */ createBaseVNode("path", {
  d: "M55.5 55C56.3284 55 57 54.3284 57 53.5V19.5C57 18.6716 56.3284 18 55.5 18H48V44.5C48 45.3285 47.3284 46 46.5 46H16V53.5C16 54.3284 16.6716 55 17.5 55H55.5Z",
  fill: "#69D3A7",
  class: "icon-light"
}, null, -1);
const _hoisted_3$b = /* @__PURE__ */ createBaseVNode("path", {
  d: "M48 10.5C48 9.67157 47.3284 9 46.5 9H8.5C7.67157 9 7 9.67157 7 10.5V18H48V10.5Z",
  fill: "#69D3A7",
  class: "icon-light"
}, null, -1);
const _hoisted_4$a = /* @__PURE__ */ createBaseVNode("path", {
  d: "M7 18V44.5C7 45.3285 7.67157 46 8.5 46H16M7 18V10.5C7 9.67157 7.67157 9 8.5 9H46.5C47.3284 9 48 9.67157 48 10.5V18M7 18H48M16 46H46.5C47.3284 46 48 45.3285 48 44.5V18M16 46V53.5C16 54.3284 16.6716 55 17.5 55H55.5C56.3284 55 57 54.3284 57 53.5V19.5C57 18.6716 56.3284 18 55.5 18H48M43 13.5H25M11.9987 13.5H12.0133M16 13.5H16.0133M20 13.5H20.0133",
  stroke: "#007780",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-dark"
}, null, -1);
const _hoisted_5$8 = [
  _hoisted_2$c,
  _hoisted_3$b,
  _hoisted_4$a
];
function render$5(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$d, _hoisted_5$8);
}
const IconE2E$1 = { name: "cy-testing-type-e2e_x64", render: render$5 };
const _hoisted_1$c = {
  height: "1em",
  width: "1em",
  style: { "min-width": "64px", "min-height": "64px" },
  viewBox: "0 0 64 64",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$b = /* @__PURE__ */ createBaseVNode("path", {
  d: "M9 8C7.34315 8 6 9.34315 6 11V44C6 45.6569 7.34314 47 9 47H46C47.6569 47 49 45.6569 49 44V11C49 9.34315 47.6569 8 46 8H9Z",
  fill: "#69D3A7",
  class: "icon-light"
}, null, -1);
const _hoisted_3$a = /* @__PURE__ */ createBaseVNode("path", {
  d: "M55 56C56.6569 56 58 54.6569 58 53V20C58 18.3431 56.6569 17 55 17H49V44C49 45.6569 47.6569 47 46 47H15V53C15 54.6569 16.3431 56 18 56H55Z",
  fill: "#00595D",
  class: "icon-dark"
}, null, -1);
const _hoisted_4$9 = /* @__PURE__ */ createBaseVNode("path", {
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M49 11C49 9.34315 47.6569 8 46 8H9C7.34315 8 6 9.34315 6 11V17H49V11ZM44 11.5C44.5523 11.5 45 11.9477 45 12.5C45 13.0523 44.5523 13.5 44 13.5H25C24.4477 13.5 24 13.0523 24 12.5C24 11.9477 24.4477 11.5 25 11.5H44ZM11 13.5C10.4477 13.5 10 13.0523 10 12.5C10 11.9477 10.4477 11.5 11 11.5C11.5523 11.5 12 11.9477 12 12.5C12 13.0523 11.5523 13.5 11 13.5ZM15 11.5C14.4477 11.5 14 11.9477 14 12.5C14 13.0523 14.4477 13.5 15 13.5C15.5523 13.5 16 13.0523 16 12.5C16 11.9477 15.5523 11.5 15 11.5ZM19 13.5C18.4477 13.5 18 13.0523 18 12.5C18 11.9477 18.4477 11.5 19 11.5C19.5523 11.5 20 11.9477 20 12.5C20 13.0523 19.5523 13.5 19 13.5Z",
  fill: "#00595D",
  class: "icon-dark"
}, null, -1);
const _hoisted_5$7 = [
  _hoisted_2$b,
  _hoisted_3$a,
  _hoisted_4$9
];
function render$4(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$c, _hoisted_5$7);
}
const IconE2ESolid = { name: "cy-testing-type-e2e-solid_x64", render: render$4 };
const _hoisted_1$b = {
  height: "1em",
  width: "1em",
  style: { "min-width": "64px", "min-height": "64px" },
  viewBox: "0 0 64 64",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$a = /* @__PURE__ */ createBaseVNode("path", {
  d: "M36 5H57.5C58.3284 5 59 5.67157 59 6.5V28H36V5Z",
  fill: "#69D3A7",
  class: "icon-light"
}, null, -1);
const _hoisted_3$9 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M32 32H9V53.5C9 54.3284 9.67157 55 10.5 55H32V32Z",
  fill: "#69D3A7",
  class: "icon-light"
}, null, -1);
const _hoisted_4$8 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M32 9H33V8H32V9ZM36 5V4H35V5H36ZM59 28V29H60V28H59ZM36 28H35V29H36V28ZM55 32H56V31H55V32ZM10.5 10H32V8H10.5V10ZM31 9V32H33V9H31ZM32 31H9V33H32V31ZM10 32V10.5H8V32H10ZM31 32V55H33V32H31ZM32 54H10.5V56H32V54ZM10 53.5V32H8V53.5H10ZM36 6H57.5V4H36V6ZM58 6.5V28H60V6.5H58ZM59 27H36V29H59V27ZM37 28V5H35V28H37ZM32 33H55V31H32V33ZM54 32V53.5H56V32H54ZM53.5 54H32V56H53.5V54ZM54 53.5C54 53.7761 53.7761 54 53.5 54V56C54.8807 56 56 54.8807 56 53.5H54ZM57.5 6C57.7762 6 58 6.22386 58 6.5H60C60 5.11929 58.8807 4 57.5 4V6ZM10.5 54C10.2239 54 10 53.7761 10 53.5H8C8 54.8807 9.11929 56 10.5 56V54ZM10.5 8C9.11929 8 8 9.11929 8 10.5H10C10 10.2239 10.2239 10 10.5 10V8Z",
  fill: "#007780",
  class: "icon-dark"
}, null, -1);
const _hoisted_5$6 = [
  _hoisted_2$a,
  _hoisted_3$9,
  _hoisted_4$8
];
function render$3(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$b, _hoisted_5$6);
}
const IconComponent$1 = { name: "cy-testing-type-component_x64", render: render$3 };
const _hoisted_1$a = {
  height: "1em",
  width: "1em",
  style: { "min-width": "64px", "min-height": "64px" },
  "data-cy": "testing-type-component",
  viewBox: "0 0 64 64",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$9 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M36 4H57C58.6569 4 60 5.34315 60 7V28H36V4Z",
  fill: "#00595D",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$8 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M32 56H11C9.34315 56 8 54.6568 8 53V32H32V56Z",
  fill: "#00595D",
  class: "icon-dark"
}, null, -1);
const _hoisted_4$7 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M36 28H34C34 29.1046 34.8954 30 36 30V28ZM8 32V30C6.89543 30 6 30.8954 6 32H8ZM32 56V58C33.1046 58 34 57.1045 34 56H32ZM36 4V2H34V4H36ZM60 28V30H62V28H60ZM32 32H34C34 30.8954 33.1046 30 32 30V32ZM32 54H11V58H32V54ZM10 53V32H6V53H10ZM36 6H57V2H36V6ZM58 7V28H62V7H58ZM60 26H36V30H60V26ZM38 28V4H34V28H38ZM30 32V56H34V32H30ZM32 30H8V34H32V30ZM57 6C57.5523 6 58 6.44772 58 7H62C62 4.23858 59.7614 2 57 2V6ZM11 54C10.4477 54 10 53.5522 10 53H6C6 55.7614 8.23858 58 11 58V54Z",
  class: "icon-light"
}, null, -1);
const _hoisted_5$5 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M11 8H32V32H56V53C56 54.6569 54.6568 56 53 56H32L32 32H8V11C8 9.34315 9.34315 8 11 8Z",
  fill: "#69D3A7",
  class: "icon-light"
}, null, -1);
const _hoisted_6$3 = [
  _hoisted_2$9,
  _hoisted_3$8,
  _hoisted_4$7,
  _hoisted_5$5
];
function render$2(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$a, _hoisted_6$3);
}
const IconComponentSolid = { name: "cy-testing-type-component-solid_x64", render: render$2 };
const _hoisted_1$9 = {
  key: 0,
  class: "flex m-[24px] justify-center"
};
const _sfc_main$b = /* @__PURE__ */ defineComponent({
  __name: "TestingTypePicker",
  props: {
    gql: null
  },
  emits: ["pick"],
  setup(__props, { emit: emits }) {
    const props = __props;
    const { t: t2 } = useI18n();
    gql`
fragment TestingTypePicker on Query {
  currentProject {
    id
    isCTConfigured
    isE2EConfigured
    currentTestingType
  }
  invokedFromCli
}
`;
    const e2eStatus = computed(() => {
      var _a3;
      if (!((_a3 = props.gql.currentProject) == null ? void 0 : _a3.isE2EConfigured))
        return "notConfigured";
      return props.gql.currentProject.currentTestingType === "e2e" ? "running" : "configured";
    });
    const componentStatus = computed(() => {
      var _a3;
      if (!props.gql.invokedFromCli)
        return "disabled";
      if (!((_a3 = props.gql.currentProject) == null ? void 0 : _a3.isCTConfigured))
        return "notConfigured";
      return props.gql.currentProject.currentTestingType === "component" ? "running" : "configured";
    });
    const testingTypes = computed(() => {
      return [
        {
          key: "e2e",
          name: t2("testingType.e2e.name"),
          description: t2("testingType.e2e.description"),
          icon: IconE2E$1,
          iconSolid: IconE2ESolid,
          status: e2eStatus.value,
          badgeText: ""
        },
        {
          key: "component",
          name: t2("testingType.component.name"),
          description: t2("testingType.component.description"),
          icon: IconComponent$1,
          iconSolid: IconComponentSolid,
          status: componentStatus.value,
          badgeText: ""
        }
      ];
    });
    const currentTestingType = computed(() => {
      var _a3;
      return (_a3 = props.gql.currentProject) == null ? void 0 : _a3.currentTestingType;
    });
    return (_ctx, _cache) => {
      const _component_i18n_t = resolveComponent("i18n-t");
      return props.gql.currentProject ? (openBlock(), createElementBlock("div", _hoisted_1$9, [
        (openBlock(true), createElementBlock(Fragment, null, renderList(unref(testingTypes), (tt) => {
          return openBlock(), createBlock(Card, {
            key: tt.key,
            "data-cy-testingType": tt.key,
            title: tt.name,
            description: tt.description,
            class: "m-[24px] px-[24px] pt-[36px] pb-[36px] w-[336px]",
            icon: tt.icon,
            "hover-icon": tt.iconSolid,
            "icon-size": 64,
            disabled: tt.status === "disabled",
            variant: "jade",
            "badge-text": tt.badgeText,
            onClick: ($event) => emits("pick", tt.key, unref(currentTestingType)),
            onKeyup: [
              withKeys(($event) => emits("pick", tt.key, unref(currentTestingType)), ["enter"]),
              withKeys(($event) => emits("pick", tt.key, unref(currentTestingType)), ["space"])
            ]
          }, createSlots({
            footer: withCtx(() => [
              createVNode(_sfc_main$c, {
                class: "mt-[16px]",
                title: unref(t2)(`setupPage.testingCard.${tt.status}`),
                status: tt.status === "configured" || tt.status === "running",
                onChooseABrowser: ($event) => emits("pick", tt.key, unref(currentTestingType))
              }, null, 8, ["title", "status", "onChooseABrowser"])
            ]),
            _: 2
          }, [
            tt.key === "component" && tt.status === "disabled" ? {
              name: "default",
              fn: withCtx(() => [
                createVNode(_component_i18n_t, {
                  scope: "global",
                  keypath: "testingType.componentDisabled.description"
                }, {
                  default: withCtx(() => [
                    createVNode(_sfc_main$11, { href: "https://on.cypress.io/installing-cypress" }, {
                      default: withCtx(() => [
                        createTextVNode(toDisplayString$1(unref(t2)("testingType.componentDisabled.link")), 1)
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                })
              ]),
              key: "0"
            } : void 0
          ]), 1032, ["data-cy-testingType", "title", "description", "icon", "hover-icon", "disabled", "badge-text", "onClick", "onKeyup"]);
        }), 128))
      ])) : createCommentVNode("", true);
    };
  }
});
const _sfc_main$a = /* @__PURE__ */ defineComponent({
  __name: "SwitchTestingTypeModal",
  props: {
    gql: null,
    show: { type: Boolean }
  },
  emits: ["close"],
  setup(__props, { emit: emits }) {
    const props = __props;
    const { t: t2 } = useI18n();
    gql`
fragment SwitchTestingTypeModal on Query {
  ...TestingTypePicker
}
`;
    gql`
mutation SwitchTestingTypeAndRelaunch($testingType: TestingTypeEnum!) {
  switchTestingTypeAndRelaunch(testingType: $testingType)
}
`;
    const switchAndRelaunch = useMutation(SwitchTestingTypeAndRelaunchDocument);
    function handleTestingType(testingType, currentTestingType) {
      if (testingType === currentTestingType) {
        emits("close");
        return;
      }
      switchAndRelaunch.executeMutation({ testingType });
    }
    return (_ctx, _cache) => {
      return openBlock(), createBlock(_sfc_main$S, {
        class: "transition-all duration-200",
        variant: "bare",
        title: unref(t2)("testingType.modalTitle"),
        "help-link": "https://on.cypress.io/choosing-testing-type",
        "model-value": __props.show,
        "data-cy": "switch-modal",
        "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emits("close"))
      }, {
        default: withCtx(() => [
          createVNode(_sfc_main$b, {
            gql: props.gql,
            onPick: handleTestingType
          }, null, 8, ["gql"])
        ]),
        _: 1
      }, 8, ["title", "model-value"]);
    };
  }
});
const _hoisted_1$8 = {
  height: "1em",
  width: "1em",
  "data-cy": "testing-type-e2e",
  viewBox: "0 0 24 24",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$8 = /* @__PURE__ */ createStaticVNode('<path d="M4 3C2.89543 3 2 3.89543 2 5V15C2 16.1046 2.89543 17 4 17H16C17.1046 17 18 16.1046 18 15V5C18 3.89543 17.1046 3 16 3H4Z" fill="#69D3A7"></path><path d="M20 21C21.1046 21 22 20.1046 22 19V9C22 7.89543 21.1046 7 20 7H18V15C18 16.1046 17.1046 17 16 17H6V19C6 20.1046 6.89543 21 8 21H20Z" fill="#00595D"></path><path d="M6 6C6 6.55228 5.55228 7 5 7C4.44772 7 4 6.55228 4 6C4 5.44772 4.44772 5 5 5C5.55228 5 6 5.44772 6 6Z" fill="#00595D"></path><path d="M9 6C9 6.55228 8.55228 7 8 7C7.44772 7 7 6.55228 7 6C7 5.44772 7.44772 5 8 5C8.55228 5 9 5.44772 9 6Z" fill="#00595D"></path><path d="M12 6C12 6.55228 11.5523 7 11 7C10.4477 7 10 6.55228 10 6C10 5.44772 10.4477 5 11 5C11.5523 5 12 5.44772 12 6Z" fill="#00595D"></path>', 5);
const _hoisted_7$1 = [
  _hoisted_2$8
];
function render$112(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$8, _hoisted_7$1);
}
const IconE2E = { name: "cy-testing-type-e2e-solid-simple", render: render$112 };
const _hoisted_1$7 = {
  height: "1em",
  width: "1em",
  style: { "min-width": "24px", "min-height": "24px" },
  "data-cy": "testing-type-component",
  viewBox: "0 0 64 64",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$7 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M36 4H57C58.6569 4 60 5.34315 60 7V28H36V4Z",
  fill: "#00595D",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$7 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M32 56H11C9.34315 56 8 54.6568 8 53V32H32V56Z",
  fill: "#00595D",
  class: "icon-dark"
}, null, -1);
const _hoisted_4$6 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M36 28H34C34 29.1046 34.8954 30 36 30V28ZM8 32V30C6.89543 30 6 30.8954 6 32H8ZM32 56V58C33.1046 58 34 57.1045 34 56H32ZM36 4V2H34V4H36ZM60 28V30H62V28H60ZM32 32H34C34 30.8954 33.1046 30 32 30V32ZM32 54H11V58H32V54ZM10 53V32H6V53H10ZM36 6H57V2H36V6ZM58 7V28H62V7H58ZM60 26H36V30H60V26ZM38 28V4H34V28H38ZM30 32V56H34V32H30ZM32 30H8V34H32V30ZM57 6C57.5523 6 58 6.44772 58 7H62C62 4.23858 59.7614 2 57 2V6ZM11 54C10.4477 54 10 53.5522 10 53H6C6 55.7614 8.23858 58 11 58V54Z",
  class: "icon-light"
}, null, -1);
const _hoisted_5$4 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M11 8H32V32H56V53C56 54.6569 54.6568 56 53 56H32L32 32H8V11C8 9.34315 9.34315 8 11 8Z",
  fill: "#69D3A7",
  class: "icon-light"
}, null, -1);
const _hoisted_6$2 = [
  _hoisted_2$7,
  _hoisted_3$7,
  _hoisted_4$6,
  _hoisted_5$4
];
function render(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$7, _hoisted_6$2);
}
const IconComponent = { name: "cy-testing-type-component-solid_x24", render };
const SidebarNavigationHeaderBranchChangeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "SidebarNavigationHeaderBranchChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "branchChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "branch" } }] } }] } }] };
const _hoisted_1$6 = ["aria-label"];
const _hoisted_2$6 = { class: "text-gray-50 text-[16px] leading-[24px] truncate" };
const _hoisted_3$6 = { class: "text-gray-600 text-[14px] leading-[20px] truncate" };
const _hoisted_4$5 = { class: "text-left text-gray-50 text-[16px] leading-[16px] truncate" };
const _hoisted_5$3 = { class: "text-gray-600 text-[14px] leading-[20px] truncate" };
const _hoisted_6$1 = {
  key: 1,
  class: "border-b flex shrink-0 border-gray-900 h-[64px] pl-[20px] items-center"
};
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
  __name: "SidebarNavigationHeader",
  props: {
    gql: null,
    isNavBarExpanded: { type: Boolean }
  },
  setup(__props) {
    const props = __props;
    const { t: t2 } = useI18n();
    gql`
fragment SidebarNavigationHeader on Query {
  ...SwitchTestingTypeModal
  currentProject {
    id
    currentTestingType
    title
    branch
  }
}
`;
    gql`
subscription SidebarNavigationHeaderBranchChange {
  branchChange {
    id
    branch
  }
}
`;
    useSubscription({ query: SidebarNavigationHeaderBranchChangeDocument });
    const showModal = ref(false);
    const TESTING_TYPE_MAP = {
      e2e: {
        name: t2(`testingType.e2e.name`),
        icon: IconE2E
      },
      component: {
        name: t2(`testingType.component.name`),
        icon: IconComponent
      }
    };
    const testingType = computed(() => {
      var _a3, _b2, _c;
      return ((_b2 = (_a3 = props.gql) == null ? void 0 : _a3.currentProject) == null ? void 0 : _b2.currentTestingType) ? TESTING_TYPE_MAP[(_c = props.gql) == null ? void 0 : _c.currentProject.currentTestingType] : null;
    });
    return (_ctx, _cache) => {
      return unref(testingType) && props.gql ? (openBlock(), createBlock(_sfc_main$t, {
        key: 0,
        placement: "right",
        disabled: __props.isNavBarExpanded,
        distance: 8
      }, {
        popper: withCtx(() => {
          var _a3, _b2;
          return [
            createBaseVNode("div", _hoisted_4$5, [
              createTextVNode(toDisplayString$1(((_a3 = props.gql.currentProject) == null ? void 0 : _a3.title) ?? "Cypress") + " ", 1),
              createBaseVNode("p", _hoisted_5$3, toDisplayString$1((_b2 = props.gql.currentProject) == null ? void 0 : _b2.branch), 1)
            ])
          ];
        }),
        default: withCtx(() => {
          var _a3, _b2, _c;
          return [
            createBaseVNode("div", {
              role: "button",
              "aria-label": `${((_a3 = props.gql.currentProject) == null ? void 0 : _a3.title) ?? "Cypress"} - ${unref(t2)("testingType.modalTitle")}`,
              class: "border-b cursor-pointer flex border-gray-900 shrink-0 h-[64px] pl-[20px] transition-all duration-300 items-center hover:bg-gray-900",
              "popper-top-offset": 4,
              "popper-class": "h-[56px]",
              "data-cy": "sidebar-header",
              tabindex: "0",
              onClick: _cache[1] || (_cache[1] = ($event) => showModal.value = true),
              onKeydown: _cache[2] || (_cache[2] = withKeys(($event) => showModal.value = true, ["enter"]))
            }, [
              createVNode(_sfc_main$a, {
                show: showModal.value,
                gql: props.gql,
                onClose: _cache[0] || (_cache[0] = ($event) => showModal.value = false)
              }, null, 8, ["show", "gql"]),
              (openBlock(), createBlock(resolveDynamicComponent(unref(testingType).icon), { class: "shrink-0 h-[24px] mr-[20px] w-[24px] icon-dark-jade-600 icon-light-jade-300 children:transition children:duration-300" })),
              createBaseVNode("div", _hoisted_2$6, [
                createTextVNode(toDisplayString$1(((_b2 = props.gql.currentProject) == null ? void 0 : _b2.title) ?? "Cypress") + " ", 1),
                createBaseVNode("p", _hoisted_3$6, toDisplayString$1((_c = props.gql.currentProject) == null ? void 0 : _c.branch), 1)
              ])
            ], 40, _hoisted_1$6)
          ];
        }),
        _: 1
      }, 8, ["disabled"])) : (openBlock(), createElementBlock("div", _hoisted_6$1, [
        createVNode(unref(p0), {
          name: "loading",
          "stroke-color": "indigo-700",
          "fill-color": "indigo-300",
          class: "shrink-0 h-[24px] mr-[20px] w-[24px] animate-spin"
        })
      ]));
    };
  }
});
const _hoisted_1$5 = ["aria-label", "aria-expanded"];
const _hoisted_2$5 = {
  "data-cy": "sidebar-nav-indicator",
  class: "flex h-full transform origin-left transition-transform w-[16px] scale-x-0 duration-300 items-center group-hocus:scale-x-100"
};
const _hoisted_3$5 = /* @__PURE__ */ createBaseVNode("div", { class: "h-full bg-indigo-400 w-[3px]" }, null, -1);
const _hoisted_4$4 = { class: "flex flex-col flex-1" };
const _hoisted_5$2 = ["aria-label"];
const _hoisted_6 = ["aria-label"];
const _hoisted_7 = ["src"];
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
  __name: "SidebarNavigation",
  props: {
    gql: null,
    isLoading: { type: Boolean },
    online: { type: Boolean }
  },
  setup(__props) {
    const props = __props;
    const { t: t2 } = useI18n();
    gql`
fragment SidebarNavigation_Settings on Query {
  localSettings {
    preferences {
      isSideNavigationOpen
      isSpecsListOpen
      autoScrollingEnabled
      reporterWidth
      specListWidth
    }
  }
}
`;
    gql`
fragment SidebarNavigation on Query {
  ...SidebarNavigation_Settings
  currentProject {
    id
    cloudProject {
      __typename
      ... on CloudProject {
        id
        runByNumber(runNumber: $runNumber) @include(if: $hasCurrentRun){
          id
          runNumber
          status
          totalFailed
        }
      }
    }
  }
  ...SidebarNavigationHeader
}
`;
    gql`
mutation SideBarNavigation_SetPreferences ($value: String!) {
  setPreferences (value: $value, type: global) {
    ...SidebarNavigation_Settings
  }
}`;
    const NAV_EXPAND_MIN_SCREEN_WIDTH = 1100;
    const userProjectStatusStore = useUserProjectStatusStore();
    const debugBadge = ref();
    const setDebugBadge = useDebounceFn((badge) => {
      debugBadge.value = badge;
    }, 500);
    const currentRun = computed(() => {
      var _a3, _b2, _c;
      if (((_c = (_b2 = (_a3 = props.gql) == null ? void 0 : _a3.currentProject) == null ? void 0 : _b2.cloudProject) == null ? void 0 : _c.__typename) === "CloudProject") {
        return props.gql.currentProject.cloudProject.runByNumber;
      }
      return void 0;
    });
    watchEffect(() => {
      if (props.isLoading && userProjectStatusStore.project.isProjectConnected) {
        setDebugBadge(void 0);
        return;
      }
      if (currentRun.value && props.online) {
        const { status, totalFailed } = currentRun.value;
        if (status === "NOTESTS") {
          return;
        }
        if (status === "PASSED") {
          setDebugBadge({ value: "0", status: "success", label: t2("sidebar.debug.passed") });
          return;
        }
        let countToDisplay = "0";
        if (totalFailed) {
          countToDisplay = totalFailed < 99 ? String(totalFailed) : "99+";
        }
        if (status === "FAILED") {
          setDebugBadge({
            value: countToDisplay,
            status: "failed",
            label: t2("sidebar.debug.failed", totalFailed || 0)
          });
          return;
        }
        if (status === "RUNNING") {
          let label;
          let status2;
          if (totalFailed === 0) {
            status2 = "success";
            label = t2("sidebar.debug.passing");
          } else {
            status2 = "failed";
            label = t2("sidebar.debug.failing", totalFailed || 0);
          }
          setDebugBadge({
            value: countToDisplay,
            status: status2,
            label
          });
          return;
        }
        const errorLabel = totalFailed && totalFailed > 0 ? t2("sidebar.debug.erroredWithFailures", totalFailed) : t2("sidebar.debug.errored");
        setDebugBadge({ value: countToDisplay, status: "error", label: errorLabel });
        return;
      }
    });
    const navigation = computed(() => {
      var _a3;
      return [
        { name: "Specs", icon: W2, pageComponent: "Specs" },
        { name: "Runs", icon: no, pageComponent: "Runs" },
        { name: "Debug", icon: E0, pageComponent: "Debug", badge: debugBadge.value, params: { from: "sidebar", runNumber: (_a3 = currentRun.value) == null ? void 0 : _a3.runNumber } },
        { name: "Settings", icon: O0, pageComponent: "Settings" }
      ];
    });
    const setPreferences = useMutation(SideBarNavigation_SetPreferencesDocument);
    const bindingsOpen = ref(false);
    const route = useRoute();
    const navIsAlwaysCollapsed = computed(() => {
      var _a3;
      return width.value >= NAV_EXPAND_MIN_SCREEN_WIDTH && ((_a3 = route.meta) == null ? void 0 : _a3.navBarExpandedAllowed) !== false;
    });
    const isNavBarExpanded = ref(true);
    const { width } = useWindowSize();
    watchEffect(() => {
      var _a3, _b2;
      if (width.value < NAV_EXPAND_MIN_SCREEN_WIDTH || ((_a3 = route.meta) == null ? void 0 : _a3.navBarExpandedAllowed) === false) {
        isNavBarExpanded.value = false;
      } else {
        isNavBarExpanded.value = ((_b2 = props.gql) == null ? void 0 : _b2.localSettings.preferences.isSideNavigationOpen) ?? true;
      }
    });
    const toggleNavbarIfAllowed = () => {
      var _a3;
      if (width.value < NAV_EXPAND_MIN_SCREEN_WIDTH || ((_a3 = route.meta) == null ? void 0 : _a3.navBarExpandedAllowed) === false) {
        return;
      }
      setPreferences.executeMutation({ value: JSON.stringify({ isSideNavigationOpen: !isNavBarExpanded.value }) });
    };
    return (_ctx, _cache) => {
      const _component_i_cy_chevron_right_x16 = __unplugin_components_1$4;
      const _component_i_cy_command_key_x16 = __unplugin_components_1;
      return openBlock(), createBlock(_sfc_main$e, {
        id: "sidebar",
        "data-cy": "sidebar",
        class: normalizeClass(["flex flex-col bg-gray-1000 border-gray-900 border-r transition-all duration-300 relative", isNavBarExpanded.value ? "w-[248px]" : "w-[64px]"])
      }, {
        default: withCtx(() => [
          unref(navIsAlwaysCollapsed) ? (openBlock(), createElementBlock("button", {
            key: 0,
            class: "cursor-pointer left-full top-0 bottom-0 w-[16px] z-1 absolute group hocus:outline-transparent",
            type: "button",
            "aria-label": isNavBarExpanded.value ? unref(t2)("sidebar.toggleLabel.expanded") : unref(t2)("sidebar.toggleLabel.collapsed"),
            "data-cy": "toggle-sidebar",
            "aria-expanded": isNavBarExpanded.value,
            "aria-controls": "sidebar",
            onClick: toggleNavbarIfAllowed
          }, [
            createBaseVNode("div", _hoisted_2$5, [
              _hoisted_3$5,
              createVNode(_component_i_cy_chevron_right_x16, {
                class: normalizeClass(["h-[16px] w-[16px] icon-dark-indigo-400", isNavBarExpanded.value ? "transform rotate-180" : ""])
              }, null, 8, ["class"])
            ])
          ], 8, _hoisted_1$5)) : createCommentVNode("", true),
          createBaseVNode("div", _hoisted_4$4, [
            createVNode(_sfc_main$9, {
              gql: props.gql,
              "is-nav-bar-expanded": isNavBarExpanded.value
            }, null, 8, ["gql", "is-nav-bar-expanded"]),
            createBaseVNode("nav", {
              class: "space-y-1 bg-gray-1000 flex-1",
              "aria-label": unref(t2)("sidebar.nav.ariaLabel")
            }, [
              (openBlock(true), createElementBlock(Fragment, null, renderList(unref(navigation), (item) => {
                return openBlock(), createBlock(unref(RouterLink), {
                  key: item.name,
                  to: { name: item.pageComponent, params: item.params },
                  "data-cy": `sidebar-link-${item.name.toLowerCase()}-page`,
                  onClick: ($event) => {
                    var _a3;
                    return (_a3 = item.onClick) == null ? void 0 : _a3.call(item);
                  }
                }, {
                  default: withCtx(({ isExactActive }) => [
                    createVNode(_sfc_main$g, {
                      active: isExactActive,
                      icon: item.icon,
                      name: item.name,
                      "is-nav-bar-expanded": isNavBarExpanded.value,
                      badge: item.badge
                    }, null, 8, ["active", "icon", "name", "is-nav-bar-expanded", "badge"])
                  ]),
                  _: 2
                }, 1032, ["to", "data-cy", "onClick"]);
              }), 128))
            ], 8, _hoisted_5$2),
            createVNode(_sfc_main$t, {
              placement: "right",
              disabled: isNavBarExpanded.value,
              distance: 8,
              skidding: -16
            }, {
              popper: withCtx(() => [
                createTextVNode(toDisplayString$1(unref(t2)("sidebar.keyboardShortcuts.title")), 1)
              ]),
              default: withCtx(() => [
                createBaseVNode("button", {
                  "data-cy": "keyboard-modal-trigger",
                  type: "button",
                  class: normalizeClass(["border border-transparent rounded cursor-pointer h-[32px] m-[16px] p-[7px] transform transition-all right-0 bottom-0 w-[32px] duration-300 inline-block absolute hover:border-gray-500", { "translate-y-[-48px]": !isNavBarExpanded.value }]),
                  "aria-label": unref(t2)("sidebar.keyboardShortcuts.title"),
                  onClick: _cache[0] || (_cache[0] = ($event) => bindingsOpen.value = true)
                }, [
                  createVNode(_component_i_cy_command_key_x16, { class: "h-[16px] w-[16px] icon-dark-gray-500" })
                ], 10, _hoisted_6)
              ]),
              _: 1
            }, 8, ["disabled"]),
            createVNode(_sfc_main$f, {
              show: bindingsOpen.value,
              onClose: _cache[1] || (_cache[1] = ($event) => bindingsOpen.value = false)
            }, null, 8, ["show"]),
            createBaseVNode("img", {
              src: unref(CypressLogo),
              class: "h-[32px] m-[16px] w-[32px]",
              alt: "Cypress"
            }, null, 8, _hoisted_7)
          ])
        ]),
        _: 1
      }, 8, ["class"]);
    };
  }
});
gql`
  fragment UseRelevantRun on RelevantRun {
    all {
      runId
      runNumber
      sha
      status
    }
    latest {
      runId
      runNumber
      sha
      status
    }
    commitsAhead
    selectedRunNumber
    currentCommitInfo {
      sha
      message
    }
  }

  subscription Debug_RelevantRuns_Subscription($location: RelevantRunLocationEnum!) {
    relevantRuns(location: $location) {
      ...UseRelevantRun
    }
  }

  subscription Sidebar_RelevantRuns_Subscription($location: RelevantRunLocationEnum!) {
    relevantRuns(location: $location) {
      ...UseRelevantRun
    }
  }

`;
function useRelevantRun(location2) {
  const userProjectStatusStore = useUserProjectStatusStore();
  const shouldPause = computed(() => {
    return !userProjectStatusStore.project.isProjectConnected;
  });
  let query2 = Debug_RelevantRuns_SubscriptionDocument;
  if (location2 === "SIDEBAR") {
    query2 = Sidebar_RelevantRuns_SubscriptionDocument;
  }
  const subscriptionResponse = useSubscription({ query: query2, variables: { location: location2 }, pause: shouldPause });
  return computed(() => {
    var _a3, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
    const allRuns = (_b2 = (_a3 = subscriptionResponse.data.value) == null ? void 0 : _a3.relevantRuns) == null ? void 0 : _b2.all;
    const selectedRunNumber = (_d = (_c = subscriptionResponse.data.value) == null ? void 0 : _c.relevantRuns) == null ? void 0 : _d.selectedRunNumber;
    const selectedRun = allRuns == null ? void 0 : allRuns.find((run2) => run2.runNumber === selectedRunNumber);
    const commitShas = lodashExports.uniq(allRuns == null ? void 0 : allRuns.map((run2) => run2.sha));
    return {
      all: (_f = (_e = subscriptionResponse.data.value) == null ? void 0 : _e.relevantRuns) == null ? void 0 : _f.all,
      latest: (_h = (_g = subscriptionResponse.data.value) == null ? void 0 : _g.relevantRuns) == null ? void 0 : _h.latest,
      commitsAhead: (_j = (_i = subscriptionResponse.data.value) == null ? void 0 : _i.relevantRuns) == null ? void 0 : _j.commitsAhead,
      selectedRun,
      commitShas,
      currentCommitInfo: (_l = (_k = subscriptionResponse.data.value) == null ? void 0 : _k.relevantRuns) == null ? void 0 : _l.currentCommitInfo
    };
  });
}
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
  __name: "SidebarNavigationContainer",
  setup(__props) {
    gql`
query SideBarNavigationContainer($runNumber: Int!, $hasCurrentRun: Boolean!) {
  ...SidebarNavigation
}
`;
    const online = useOnline();
    const relevantRuns = useRelevantRun("SIDEBAR");
    const variables = computed(() => {
      var _a3, _b2, _c, _d;
      return {
        runNumber: ((_b2 = (_a3 = relevantRuns.value) == null ? void 0 : _a3.selectedRun) == null ? void 0 : _b2.runNumber) || -1,
        hasCurrentRun: !!((_d = (_c = relevantRuns.value) == null ? void 0 : _c.selectedRun) == null ? void 0 : _d.runNumber)
      };
    });
    const query2 = useQuery({ query: SideBarNavigationContainerDocument, variables });
    const isLoading = ref(true);
    const setIsLoading = useDebounceFn((value) => {
      isLoading.value = value;
    });
    watchEffect(() => {
      setIsLoading(!relevantRuns.value || query2.fetching.value);
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(_sfc_main$8, {
        gql: unref(query2).data.value,
        "is-loading": isLoading.value,
        online: unref(online)
      }, null, 8, ["gql", "is-loading", "online"]);
    };
  }
});
function decodeBase64Unicode(str) {
  return decodeURIComponent(atob(str).split("").map((char) => {
    return `%${`00${char.charCodeAt(0).toString(16)}`.slice(-2)}`;
  }).join(""));
}
const isWindows = (((_a2 = window.Cypress) == null ? void 0 : _a2.platform) || JSON.parse(decodeBase64Unicode(window.__CYPRESS_CONFIG__.base64Config)).platform) === "win32";
const f = {
  link: "text-indigo-600 border-transparent ring-transparent hover:underline disabled:text-gray-500 disabled:hocus:shadow-none disabled:no-underline hocus:shadow-transparent focus-visible:ring-gray-100 focus-visible:underline",
  white: "text-indigo-500 bg-white border-gray-100 hover:border-gray-200 disabled:hocus:shadow-none hocus:shadow-gray-50 disabled:text-gray-500 focus:ring-gray-200",
  disabled: "text-white bg-gray-500 border-gray-500",
  // outline variants
  "outline-indigo": "border-indigo-500 text-indigo-500 disabled:hocus:shadow-none hocus:shadow-indigo-300/[.35] disabled:text-gray-500 focus:ring-indigo-600",
  "outline-purple": "text-purple-500 border-purple-500 disabled:hocus:shadow-none hocus:shadow-purple-100 disabled:text-gray-500 focus:ring-purple-600",
  "outline-gray": "text-gray-1000 border-gray-1000 disabled:hocus:shadow-none hocus:shadow-gray-100 disabled:text-gray-500 focus:ring-gray-1000",
  "outline-light": "text-indigo-500 border-gray-100 hocus:border-gray-200 disabled:border-gray-100 disabled:hocus:shadow-none hocus:shadow-gray-50 disabled:text-gray-500 focus:ring-gray-200",
  "outline-dark": "text-white border-white/20 hocus:border-white/60 disabled:hocus:shadow-none hocus:shadow-white/20 disabled:border-white/20 disabled:hover:border-white/20 disabled:text-white/50 focus:ring-gray-200",
  // light variants
  "indigo-light": "text-indigo-500 bg-indigo-50 border-indigo-50 hocus:border-indigo-200 disabled:hocus:shadow-none hocus:shadow-indigo-50 focus:ring-transparent",
  "jade-light": "text-teal-600 bg-jade-200 border-transparent hocus:border-jade-300 disabled:hocus:shadow-none hocus:shadow-jade-50 focus:ring-transparent",
  // dark variants
  "jade-dark": "text-white bg-jade-500 border-jade-500 disabled:hocus:shadow-none hocus:shadow-jade-100 focus:ring-transparent focus:border-jade-600 focus:bg-jade-600",
  "indigo-dark": "text-white bg-indigo-500 border-indigo-500 disabled:hocus:shadow-none hocus:shadow-indigo-100 focus:bg-indigo-600 focus:border-indigo-600 focus:ring-transparent",
  "teal-dark": "text-white bg-teal-500 border-teal-500 disabled:hocus:shadow-none hocus:shadow-teal-100 focus:bg-teal-600 focus:bg-teal-600 focus:border-teal-600 focus:ring-transparent",
  "purple-dark": "text-white bg-purple-500 border-purple-500 disabled:hocus:shadow-none hocus:shadow-purple-100 focus:bg-purple-600 focus:border-purple-600 focus:ring-transparent",
  "red-dark": "text-white bg-red-500 border-red-500 disabled:hocus:shadow-none hocus:shadow-red-100 focus:bg-red-600 focus:border-red-600 focus:ring-transparent",
  "gray-dark": "text-white bg-gray-800 border-gray-800 disabled:hocus:shadow-none hocus:shadow-gray-100 focus:bg-gray-900 focus:border-gray-900 focus:ring-transparent",
  "gray-darkest": "text-white bg-gray-1000 border-gray-1000 disabled:hocus:shadow-none hocus:shadow-gray-100 focus:bg-gray-900 focus:border-gray-900 focus:ring-transparent"
}, w = "indigo-dark", y = {
  20: "px-[4px] py-0 text-[14px] leading-[20px]",
  24: "px-[8px] py-[2px] text-[14px] leading-[20px]",
  32: "px-[12px] py-[6px] text-[14px] leading-[20px]",
  40: "px-[16px] py-[8px] text-[16px] leading-[24px]",
  48: "px-[20px] py-[12px] text-[16px] leading-[24px]"
}, x = "40", k = "border border-solid rounded rounded-[4px] flex font-medium items-center transition duration-150 hover:shadow-ring-hover focus:shadow-ring-focus active:shadow-ring-focus disabled:cursor-not-allowed focus-visible:ring-1 focus-visible:ring-offset-0 focus-visible:outline-none", v = defineComponent({
  emits: {
    click(e) {
      return !!e;
    }
  },
  props: {
    variant: {
      type: String,
      default: w
    },
    size: {
      type: String,
      default: x
    },
    disabled: {
      type: Boolean,
      default: false
    },
    href: {
      type: String
    },
    type: {
      type: String,
      default: "button"
    }
  },
  setup(e) {
    const { variant: o2, size: a2, disabled: s2, href: r2, type: b2, ...d2 } = e, h2 = computed(
      () => e.disabled && !["outline-dark", "outline-light", "link"].includes(e.variant) ? "disabled" : e.variant
    ), i = computed(
      () => e.disabled || e.variant === "disabled"
    );
    return {
      componentTag: computed(() => r2 ? "a" : "button"),
      href: r2,
      finalDisabled: i,
      buttonProps: reactive({
        ...d2,
        class: [
          k,
          f[h2.value],
          y[e.size]
        ],
        disabled: i
      })
    };
  }
}), m = (e, o2) => {
  const a2 = e.__vccOpts || e;
  for (const [s2, r2] of o2)
    a2[s2] = r2;
  return a2;
}, j = ["href"];
function S(e, o2, a2, s2, r2, b2) {
  return e.href ? (openBlock(), createElementBlock("a", mergeProps({
    key: 0,
    href: e.href
  }, e.buttonProps, {
    onClick: o2[0] || (o2[0] = (d2) => e.$emit("click", d2))
  }), [
    renderSlot(e.$slots, "default")
  ], 16, j)) : (openBlock(), createElementBlock("button", mergeProps({ key: 1 }, e.buttonProps, {
    onClick: o2[1] || (o2[1] = (d2) => e.$emit("click", d2))
  }), [
    renderSlot(e.$slots, "default")
  ], 16));
}
const C = /* @__PURE__ */ m(v, [["render", S]]);
var dayjs_minExports = {};
var dayjs_min = {
  get exports() {
    return dayjs_minExports;
  },
  set exports(v2) {
    dayjs_minExports = v2;
  }
};
(function(module, exports) {
  !function(t2, e) {
    module.exports = e();
  }(commonjsGlobal$1, function() {
    var t2 = "millisecond", e = "second", n = "minute", r2 = "hour", i = "day", s2 = "week", u2 = "month", a2 = "quarter", o2 = "year", f2 = "date", h2 = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, c2 = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, d2 = { name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_") }, $2 = function(t3, e2, n2) {
      var r3 = String(t3);
      return !r3 || r3.length >= e2 ? t3 : "" + Array(e2 + 1 - r3.length).join(n2) + t3;
    }, l2 = { s: $2, z: function(t3) {
      var e2 = -t3.utcOffset(), n2 = Math.abs(e2), r3 = Math.floor(n2 / 60), i2 = n2 % 60;
      return (e2 <= 0 ? "+" : "-") + $2(r3, 2, "0") + ":" + $2(i2, 2, "0");
    }, m: function t3(e2, n2) {
      if (e2.date() < n2.date())
        return -t3(n2, e2);
      var r3 = 12 * (n2.year() - e2.year()) + (n2.month() - e2.month()), i2 = e2.clone().add(r3, u2), s3 = n2 - i2 < 0, a3 = e2.clone().add(r3 + (s3 ? -1 : 1), u2);
      return +(-(r3 + (n2 - i2) / (s3 ? i2 - a3 : a3 - i2)) || 0);
    }, a: function(t3) {
      return t3 < 0 ? Math.ceil(t3) || 0 : Math.floor(t3);
    }, p: function(h3) {
      return { M: u2, y: o2, w: s2, d: i, D: f2, h: r2, m: n, s: e, ms: t2, Q: a2 }[h3] || String(h3 || "").toLowerCase().replace(/s$/, "");
    }, u: function(t3) {
      return void 0 === t3;
    } }, y2 = "en", M2 = {};
    M2[y2] = d2;
    var m2 = function(t3) {
      return t3 instanceof S2;
    }, D2 = function(t3, e2, n2) {
      var r3;
      if (!t3)
        return y2;
      if ("string" == typeof t3)
        M2[t3] && (r3 = t3), e2 && (M2[t3] = e2, r3 = t3);
      else {
        var i2 = t3.name;
        M2[i2] = t3, r3 = i2;
      }
      return !n2 && r3 && (y2 = r3), r3 || !n2 && y2;
    }, v2 = function(t3, e2) {
      if (m2(t3))
        return t3.clone();
      var n2 = "object" == typeof e2 ? e2 : {};
      return n2.date = t3, n2.args = arguments, new S2(n2);
    }, g = l2;
    g.l = D2, g.i = m2, g.w = function(t3, e2) {
      return v2(t3, { locale: e2.$L, utc: e2.$u, x: e2.$x, $offset: e2.$offset });
    };
    var S2 = function() {
      function d3(t3) {
        this.$L = D2(t3.locale, null, true), this.parse(t3);
      }
      var $3 = d3.prototype;
      return $3.parse = function(t3) {
        this.$d = function(t4) {
          var e2 = t4.date, n2 = t4.utc;
          if (null === e2)
            return /* @__PURE__ */ new Date(NaN);
          if (g.u(e2))
            return /* @__PURE__ */ new Date();
          if (e2 instanceof Date)
            return new Date(e2);
          if ("string" == typeof e2 && !/Z$/i.test(e2)) {
            var r3 = e2.match(h2);
            if (r3) {
              var i2 = r3[2] - 1 || 0, s3 = (r3[7] || "0").substring(0, 3);
              return n2 ? new Date(Date.UTC(r3[1], i2, r3[3] || 1, r3[4] || 0, r3[5] || 0, r3[6] || 0, s3)) : new Date(r3[1], i2, r3[3] || 1, r3[4] || 0, r3[5] || 0, r3[6] || 0, s3);
            }
          }
          return new Date(e2);
        }(t3), this.$x = t3.x || {}, this.init();
      }, $3.init = function() {
        var t3 = this.$d;
        this.$y = t3.getFullYear(), this.$M = t3.getMonth(), this.$D = t3.getDate(), this.$W = t3.getDay(), this.$H = t3.getHours(), this.$m = t3.getMinutes(), this.$s = t3.getSeconds(), this.$ms = t3.getMilliseconds();
      }, $3.$utils = function() {
        return g;
      }, $3.isValid = function() {
        return !("Invalid Date" === this.$d.toString());
      }, $3.isSame = function(t3, e2) {
        var n2 = v2(t3);
        return this.startOf(e2) <= n2 && n2 <= this.endOf(e2);
      }, $3.isAfter = function(t3, e2) {
        return v2(t3) < this.startOf(e2);
      }, $3.isBefore = function(t3, e2) {
        return this.endOf(e2) < v2(t3);
      }, $3.$g = function(t3, e2, n2) {
        return g.u(t3) ? this[e2] : this.set(n2, t3);
      }, $3.unix = function() {
        return Math.floor(this.valueOf() / 1e3);
      }, $3.valueOf = function() {
        return this.$d.getTime();
      }, $3.startOf = function(t3, a3) {
        var h3 = this, c3 = !!g.u(a3) || a3, d4 = g.p(t3), $4 = function(t4, e2) {
          var n2 = g.w(h3.$u ? Date.UTC(h3.$y, e2, t4) : new Date(h3.$y, e2, t4), h3);
          return c3 ? n2 : n2.endOf(i);
        }, l3 = function(t4, e2) {
          return g.w(h3.toDate()[t4].apply(h3.toDate("s"), (c3 ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e2)), h3);
        }, y3 = this.$W, M3 = this.$M, m3 = this.$D, D3 = "set" + (this.$u ? "UTC" : "");
        switch (d4) {
          case o2:
            return c3 ? $4(1, 0) : $4(31, 11);
          case u2:
            return c3 ? $4(1, M3) : $4(0, M3 + 1);
          case s2:
            var v3 = this.$locale().weekStart || 0, S3 = (y3 < v3 ? y3 + 7 : y3) - v3;
            return $4(c3 ? m3 - S3 : m3 + (6 - S3), M3);
          case i:
          case f2:
            return l3(D3 + "Hours", 0);
          case r2:
            return l3(D3 + "Minutes", 1);
          case n:
            return l3(D3 + "Seconds", 2);
          case e:
            return l3(D3 + "Milliseconds", 3);
          default:
            return this.clone();
        }
      }, $3.endOf = function(t3) {
        return this.startOf(t3, false);
      }, $3.$set = function(s3, a3) {
        var h3, c3 = g.p(s3), d4 = "set" + (this.$u ? "UTC" : ""), $4 = (h3 = {}, h3[i] = d4 + "Date", h3[f2] = d4 + "Date", h3[u2] = d4 + "Month", h3[o2] = d4 + "FullYear", h3[r2] = d4 + "Hours", h3[n] = d4 + "Minutes", h3[e] = d4 + "Seconds", h3[t2] = d4 + "Milliseconds", h3)[c3], l3 = c3 === i ? this.$D + (a3 - this.$W) : a3;
        if (c3 === u2 || c3 === o2) {
          var y3 = this.clone().set(f2, 1);
          y3.$d[$4](l3), y3.init(), this.$d = y3.set(f2, Math.min(this.$D, y3.daysInMonth())).$d;
        } else
          $4 && this.$d[$4](l3);
        return this.init(), this;
      }, $3.set = function(t3, e2) {
        return this.clone().$set(t3, e2);
      }, $3.get = function(t3) {
        return this[g.p(t3)]();
      }, $3.add = function(t3, a3) {
        var f3, h3 = this;
        t3 = Number(t3);
        var c3 = g.p(a3), d4 = function(e2) {
          var n2 = v2(h3);
          return g.w(n2.date(n2.date() + Math.round(e2 * t3)), h3);
        };
        if (c3 === u2)
          return this.set(u2, this.$M + t3);
        if (c3 === o2)
          return this.set(o2, this.$y + t3);
        if (c3 === i)
          return d4(1);
        if (c3 === s2)
          return d4(7);
        var $4 = (f3 = {}, f3[n] = 6e4, f3[r2] = 36e5, f3[e] = 1e3, f3)[c3] || 1, l3 = this.$d.getTime() + t3 * $4;
        return g.w(l3, this);
      }, $3.subtract = function(t3, e2) {
        return this.add(-1 * t3, e2);
      }, $3.format = function(t3) {
        var e2 = this;
        if (!this.isValid())
          return "Invalid Date";
        var n2 = t3 || "YYYY-MM-DDTHH:mm:ssZ", r3 = g.z(this), i2 = this.$locale(), s3 = this.$H, u3 = this.$m, a3 = this.$M, o3 = i2.weekdays, f3 = i2.months, h3 = function(t4, r4, i3, s4) {
          return t4 && (t4[r4] || t4(e2, n2)) || i3[r4].substr(0, s4);
        }, d4 = function(t4) {
          return g.s(s3 % 12 || 12, t4, "0");
        }, $4 = i2.meridiem || function(t4, e3, n3) {
          var r4 = t4 < 12 ? "AM" : "PM";
          return n3 ? r4.toLowerCase() : r4;
        }, l3 = { YY: String(this.$y).slice(-2), YYYY: this.$y, M: a3 + 1, MM: g.s(a3 + 1, 2, "0"), MMM: h3(i2.monthsShort, a3, f3, 3), MMMM: h3(f3, a3), D: this.$D, DD: g.s(this.$D, 2, "0"), d: String(this.$W), dd: h3(i2.weekdaysMin, this.$W, o3, 2), ddd: h3(i2.weekdaysShort, this.$W, o3, 3), dddd: o3[this.$W], H: String(s3), HH: g.s(s3, 2, "0"), h: d4(1), hh: d4(2), a: $4(s3, u3, true), A: $4(s3, u3, false), m: String(u3), mm: g.s(u3, 2, "0"), s: String(this.$s), ss: g.s(this.$s, 2, "0"), SSS: g.s(this.$ms, 3, "0"), Z: r3 };
        return n2.replace(c2, function(t4, e3) {
          return e3 || l3[t4] || r3.replace(":", "");
        });
      }, $3.utcOffset = function() {
        return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);
      }, $3.diff = function(t3, f3, h3) {
        var c3, d4 = g.p(f3), $4 = v2(t3), l3 = 6e4 * ($4.utcOffset() - this.utcOffset()), y3 = this - $4, M3 = g.m(this, $4);
        return M3 = (c3 = {}, c3[o2] = M3 / 12, c3[u2] = M3, c3[a2] = M3 / 3, c3[s2] = (y3 - l3) / 6048e5, c3[i] = (y3 - l3) / 864e5, c3[r2] = y3 / 36e5, c3[n] = y3 / 6e4, c3[e] = y3 / 1e3, c3)[d4] || y3, h3 ? M3 : g.a(M3);
      }, $3.daysInMonth = function() {
        return this.endOf(u2).$D;
      }, $3.$locale = function() {
        return M2[this.$L];
      }, $3.locale = function(t3, e2) {
        if (!t3)
          return this.$L;
        var n2 = this.clone(), r3 = D2(t3, e2, true);
        return r3 && (n2.$L = r3), n2;
      }, $3.clone = function() {
        return g.w(this.$d, this);
      }, $3.toDate = function() {
        return new Date(this.valueOf());
      }, $3.toJSON = function() {
        return this.isValid() ? this.toISOString() : null;
      }, $3.toISOString = function() {
        return this.$d.toISOString();
      }, $3.toString = function() {
        return this.$d.toUTCString();
      }, d3;
    }(), p2 = S2.prototype;
    return v2.prototype = p2, [["$ms", t2], ["$s", e], ["$m", n], ["$H", r2], ["$W", i], ["$M", u2], ["$y", o2], ["$D", f2]].forEach(function(t3) {
      p2[t3[1]] = function(e2) {
        return this.$g(e2, t3[0], t3[1]);
      };
    }), v2.extend = function(t3, e2) {
      return t3.$i || (t3(e2, S2, v2), t3.$i = true), v2;
    }, v2.locale = D2, v2.isDayjs = m2, v2.unix = function(t3) {
      return v2(1e3 * t3);
    }, v2.en = M2[y2], v2.Ls = M2, v2.p = {}, v2;
  });
})(dayjs_min);
const dayjs = dayjs_minExports;
var relativeTimeExports = {};
var relativeTime$1 = {
  get exports() {
    return relativeTimeExports;
  },
  set exports(v2) {
    relativeTimeExports = v2;
  }
};
(function(module, exports) {
  !function(r2, t2) {
    module.exports = t2();
  }(commonjsGlobal$1, function() {
    return function(r2, t2, e) {
      r2 = r2 || {};
      var n = t2.prototype, o2 = { future: "in %s", past: "%s ago", s: "a few seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", M: "a month", MM: "%d months", y: "a year", yy: "%d years" };
      function i(r3, t3, e2, o3) {
        return n.fromToBase(r3, t3, e2, o3);
      }
      e.en.relativeTime = o2, n.fromToBase = function(t3, n2, i2, d3, u2) {
        for (var a2, f2, s2, l2 = i2.$locale().relativeTime || o2, h2 = r2.thresholds || [{ l: "s", r: 44, d: "second" }, { l: "m", r: 89 }, { l: "mm", r: 44, d: "minute" }, { l: "h", r: 89 }, { l: "hh", r: 21, d: "hour" }, { l: "d", r: 35 }, { l: "dd", r: 25, d: "day" }, { l: "M", r: 45 }, { l: "MM", r: 10, d: "month" }, { l: "y", r: 17 }, { l: "yy", d: "year" }], m2 = h2.length, c2 = 0; c2 < m2; c2 += 1) {
          var y2 = h2[c2];
          y2.d && (a2 = d3 ? e(t3).diff(i2, y2.d, true) : i2.diff(t3, y2.d, true));
          var p2 = (r2.rounding || Math.round)(Math.abs(a2));
          if (s2 = a2 > 0, p2 <= y2.r || !y2.r) {
            p2 <= 1 && c2 > 0 && (y2 = h2[c2 - 1]);
            var v2 = l2[y2.l];
            u2 && (p2 = u2("" + p2)), f2 = "string" == typeof v2 ? v2.replace("%d", p2) : v2(p2, n2, y2.l, s2);
            break;
          }
        }
        if (n2)
          return f2;
        var M2 = s2 ? l2.future : l2.past;
        return "function" == typeof M2 ? M2(f2) : M2.replace("%s", f2);
      }, n.to = function(r3, t3) {
        return i(r3, t3, this, true);
      }, n.from = function(r3, t3) {
        return i(r3, t3, this);
      };
      var d2 = function(r3) {
        return r3.$u ? e.utc() : e();
      };
      n.toNow = function(r3) {
        return this.to(d2(this), r3);
      }, n.fromNow = function(r3) {
        return this.from(d2(this), r3);
      };
    };
  });
})(relativeTime$1);
const relativeTime = relativeTimeExports;
var durationExports = {};
var duration$1 = {
  get exports() {
    return durationExports;
  },
  set exports(v2) {
    durationExports = v2;
  }
};
(function(module, exports) {
  !function(t2, s2) {
    module.exports = s2();
  }(commonjsGlobal$1, function() {
    var t2, s2, n = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, i = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/, e = { years: 31536e6, months: 2592e6, days: 864e5, hours: 36e5, minutes: 6e4, seconds: 1e3, milliseconds: 1, weeks: 6048e5 }, r2 = function(t3) {
      return t3 instanceof c2;
    }, o2 = function(t3, s3, n2) {
      return new c2(t3, n2, s3.$l);
    }, u2 = function(t3) {
      return s2.p(t3) + "s";
    }, h2 = function(t3) {
      return t3 < 0;
    }, a2 = function(t3) {
      return h2(t3) ? Math.ceil(t3) : Math.floor(t3);
    }, d2 = function(t3, s3) {
      return t3 ? h2(t3) ? { negative: true, format: "" + function(t4) {
        return Math.abs(t4);
      }(t3) + s3 } : { negative: false, format: "" + t3 + s3 } : { negative: false, format: "" };
    }, c2 = function() {
      function h3(t3, s3, n2) {
        var r3 = this;
        if (this.$d = {}, this.$l = n2, s3)
          return o2(t3 * e[u2(s3)], this);
        if ("number" == typeof t3)
          return this.$ms = t3, this.parseFromMilliseconds(), this;
        if ("object" == typeof t3)
          return Object.keys(t3).forEach(function(s4) {
            r3.$d[u2(s4)] = t3[s4];
          }), this.calMilliseconds(), this;
        if ("string" == typeof t3) {
          var h4 = t3.match(i);
          if (h4)
            return this.$d.years = h4[2], this.$d.months = h4[3], this.$d.weeks = h4[4], this.$d.days = h4[5], this.$d.hours = h4[6], this.$d.minutes = h4[7], this.$d.seconds = h4[8], this.calMilliseconds(), this;
        }
        return this;
      }
      var c3 = h3.prototype;
      return c3.calMilliseconds = function() {
        var t3 = this;
        this.$ms = Object.keys(this.$d).reduce(function(s3, n2) {
          return s3 + (t3.$d[n2] || 0) * e[n2];
        }, 0);
      }, c3.parseFromMilliseconds = function() {
        var t3 = this.$ms;
        this.$d.years = a2(t3 / 31536e6), t3 %= 31536e6, this.$d.months = a2(t3 / 2592e6), t3 %= 2592e6, this.$d.days = a2(t3 / 864e5), t3 %= 864e5, this.$d.hours = a2(t3 / 36e5), t3 %= 36e5, this.$d.minutes = a2(t3 / 6e4), t3 %= 6e4, this.$d.seconds = a2(t3 / 1e3), t3 %= 1e3, this.$d.milliseconds = t3;
      }, c3.toISOString = function() {
        var t3 = d2(this.$d.years, "Y"), s3 = d2(this.$d.months, "M"), n2 = +this.$d.days || 0;
        this.$d.weeks && (n2 += 7 * this.$d.weeks);
        var i2 = d2(n2, "D"), e2 = d2(this.$d.hours, "H"), r3 = d2(this.$d.minutes, "M"), o3 = this.$d.seconds || 0;
        this.$d.milliseconds && (o3 += this.$d.milliseconds / 1e3);
        var u3 = d2(o3, "S"), h4 = t3.negative || s3.negative || i2.negative || e2.negative || r3.negative || u3.negative, a3 = e2.format || r3.format || u3.format ? "T" : "", c4 = (h4 ? "-" : "") + "P" + t3.format + s3.format + i2.format + a3 + e2.format + r3.format + u3.format;
        return "P" === c4 || "-P" === c4 ? "P0D" : c4;
      }, c3.toJSON = function() {
        return this.toISOString();
      }, c3.format = function(t3) {
        var i2 = t3 || "YYYY-MM-DDTHH:mm:ss", e2 = { Y: this.$d.years, YY: s2.s(this.$d.years, 2, "0"), YYYY: s2.s(this.$d.years, 4, "0"), M: this.$d.months, MM: s2.s(this.$d.months, 2, "0"), D: this.$d.days, DD: s2.s(this.$d.days, 2, "0"), H: this.$d.hours, HH: s2.s(this.$d.hours, 2, "0"), m: this.$d.minutes, mm: s2.s(this.$d.minutes, 2, "0"), s: this.$d.seconds, ss: s2.s(this.$d.seconds, 2, "0"), SSS: s2.s(this.$d.milliseconds, 3, "0") };
        return i2.replace(n, function(t4, s3) {
          return s3 || String(e2[t4]);
        });
      }, c3.as = function(t3) {
        return this.$ms / e[u2(t3)];
      }, c3.get = function(t3) {
        var s3 = this.$ms, n2 = u2(t3);
        return "milliseconds" === n2 ? s3 %= 1e3 : s3 = "weeks" === n2 ? a2(s3 / e[n2]) : this.$d[n2], 0 === s3 ? 0 : s3;
      }, c3.add = function(t3, s3, n2) {
        var i2;
        return i2 = s3 ? t3 * e[u2(s3)] : r2(t3) ? t3.$ms : o2(t3, this).$ms, o2(this.$ms + i2 * (n2 ? -1 : 1), this);
      }, c3.subtract = function(t3, s3) {
        return this.add(t3, s3, true);
      }, c3.locale = function(t3) {
        var s3 = this.clone();
        return s3.$l = t3, s3;
      }, c3.clone = function() {
        return o2(this.$ms, this);
      }, c3.humanize = function(s3) {
        return t2().add(this.$ms, "ms").locale(this.$l).fromNow(!s3);
      }, c3.milliseconds = function() {
        return this.get("milliseconds");
      }, c3.asMilliseconds = function() {
        return this.as("milliseconds");
      }, c3.seconds = function() {
        return this.get("seconds");
      }, c3.asSeconds = function() {
        return this.as("seconds");
      }, c3.minutes = function() {
        return this.get("minutes");
      }, c3.asMinutes = function() {
        return this.as("minutes");
      }, c3.hours = function() {
        return this.get("hours");
      }, c3.asHours = function() {
        return this.as("hours");
      }, c3.days = function() {
        return this.get("days");
      }, c3.asDays = function() {
        return this.as("days");
      }, c3.weeks = function() {
        return this.get("weeks");
      }, c3.asWeeks = function() {
        return this.as("weeks");
      }, c3.months = function() {
        return this.get("months");
      }, c3.asMonths = function() {
        return this.as("months");
      }, c3.years = function() {
        return this.get("years");
      }, c3.asYears = function() {
        return this.as("years");
      }, h3;
    }();
    return function(n2, i2, e2) {
      t2 = e2, s2 = e2().$utils(), e2.duration = function(t3, s3) {
        var n3 = e2.locale();
        return o2(t3, { $l: n3 }, s3);
      }, e2.isDuration = r2;
      var u3 = i2.prototype.add, h3 = i2.prototype.subtract;
      i2.prototype.add = function(t3, s3) {
        return r2(t3) && (t3 = t3.asMilliseconds()), u3.bind(this)(t3, s3);
      }, i2.prototype.subtract = function(t3, s3) {
        return r2(t3) && (t3 = t3.asMilliseconds()), h3.bind(this)(t3, s3);
      };
    };
  });
})(duration$1);
const duration = durationExports;
var customParseFormatExports = {};
var customParseFormat$1 = {
  get exports() {
    return customParseFormatExports;
  },
  set exports(v2) {
    customParseFormatExports = v2;
  }
};
(function(module, exports) {
  !function(t2, e) {
    module.exports = e();
  }(commonjsGlobal$1, function() {
    var t2 = { LTS: "h:mm:ss A", LT: "h:mm A", L: "MM/DD/YYYY", LL: "MMMM D, YYYY", LLL: "MMMM D, YYYY h:mm A", LLLL: "dddd, MMMM D, YYYY h:mm A" }, e = function(e2, n2) {
      return e2.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g, function(e3, r3, i2) {
        var o3 = i2 && i2.toUpperCase();
        return r3 || n2[i2] || t2[i2] || n2[o3].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, function(t3, e4, n3) {
          return e4 || n3.slice(1);
        });
      });
    }, n = /(\[[^[]*\])|([-:/.()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g, r2 = /\d\d/, i = /\d\d?/, o2 = /\d*[^\s\d-_:/()]+/, s2 = {};
    var a2 = function(t3) {
      return function(e2) {
        this[t3] = +e2;
      };
    }, f2 = [/[+-]\d\d:?(\d\d)?/, function(t3) {
      (this.zone || (this.zone = {})).offset = function(t4) {
        if (!t4)
          return 0;
        var e2 = t4.match(/([+-]|\d\d)/g), n2 = 60 * e2[1] + (+e2[2] || 0);
        return 0 === n2 ? 0 : "+" === e2[0] ? -n2 : n2;
      }(t3);
    }], u2 = function(t3) {
      var e2 = s2[t3];
      return e2 && (e2.indexOf ? e2 : e2.s.concat(e2.f));
    }, h2 = function(t3, e2) {
      var n2, r3 = s2.meridiem;
      if (r3) {
        for (var i2 = 1; i2 <= 24; i2 += 1)
          if (t3.indexOf(r3(i2, 0, e2)) > -1) {
            n2 = i2 > 12;
            break;
          }
      } else
        n2 = t3 === (e2 ? "pm" : "PM");
      return n2;
    }, d2 = { A: [o2, function(t3) {
      this.afternoon = h2(t3, false);
    }], a: [o2, function(t3) {
      this.afternoon = h2(t3, true);
    }], S: [/\d/, function(t3) {
      this.milliseconds = 100 * +t3;
    }], SS: [r2, function(t3) {
      this.milliseconds = 10 * +t3;
    }], SSS: [/\d{3}/, function(t3) {
      this.milliseconds = +t3;
    }], s: [i, a2("seconds")], ss: [i, a2("seconds")], m: [i, a2("minutes")], mm: [i, a2("minutes")], H: [i, a2("hours")], h: [i, a2("hours")], HH: [i, a2("hours")], hh: [i, a2("hours")], D: [i, a2("day")], DD: [r2, a2("day")], Do: [o2, function(t3) {
      var e2 = s2.ordinal, n2 = t3.match(/\d+/);
      if (this.day = n2[0], e2)
        for (var r3 = 1; r3 <= 31; r3 += 1)
          e2(r3).replace(/\[|\]/g, "") === t3 && (this.day = r3);
    }], M: [i, a2("month")], MM: [r2, a2("month")], MMM: [o2, function(t3) {
      var e2 = u2("months"), n2 = (u2("monthsShort") || e2.map(function(t4) {
        return t4.substr(0, 3);
      })).indexOf(t3) + 1;
      if (n2 < 1)
        throw new Error();
      this.month = n2 % 12 || n2;
    }], MMMM: [o2, function(t3) {
      var e2 = u2("months").indexOf(t3) + 1;
      if (e2 < 1)
        throw new Error();
      this.month = e2 % 12 || e2;
    }], Y: [/[+-]?\d+/, a2("year")], YY: [r2, function(t3) {
      t3 = +t3, this.year = t3 + (t3 > 68 ? 1900 : 2e3);
    }], YYYY: [/\d{4}/, a2("year")], Z: f2, ZZ: f2 };
    var c2 = function(t3, r3, i2) {
      try {
        var o3 = function(t4) {
          for (var r4 = (t4 = e(t4, s2 && s2.formats)).match(n), i3 = r4.length, o4 = 0; o4 < i3; o4 += 1) {
            var a4 = r4[o4], f4 = d2[a4], u4 = f4 && f4[0], h4 = f4 && f4[1];
            r4[o4] = h4 ? { regex: u4, parser: h4 } : a4.replace(/^\[|\]$/g, "");
          }
          return function(t5) {
            for (var e2 = {}, n2 = 0, o5 = 0; n2 < i3; n2 += 1) {
              var s3 = r4[n2];
              if ("string" == typeof s3)
                o5 += s3.length;
              else {
                var a5 = s3.regex, f5 = s3.parser, u5 = t5.substr(o5), h5 = a5.exec(u5)[0];
                f5.call(e2, h5), t5 = t5.replace(h5, "");
              }
            }
            return function(t6) {
              var e3 = t6.afternoon;
              if (void 0 !== e3) {
                var n3 = t6.hours;
                e3 ? n3 < 12 && (t6.hours += 12) : 12 === n3 && (t6.hours = 0), delete t6.afternoon;
              }
            }(e2), e2;
          };
        }(r3)(t3), a3 = o3.year, f3 = o3.month, u3 = o3.day, h3 = o3.hours, c3 = o3.minutes, m2 = o3.seconds, l2 = o3.milliseconds, M2 = o3.zone, Y3 = /* @__PURE__ */ new Date(), v2 = u3 || (a3 || f3 ? 1 : Y3.getDate()), p2 = a3 || Y3.getFullYear(), D2 = 0;
        a3 && !f3 || (D2 = f3 > 0 ? f3 - 1 : Y3.getMonth());
        var y2 = h3 || 0, L2 = c3 || 0, g = m2 || 0, $2 = l2 || 0;
        return M2 ? new Date(Date.UTC(p2, D2, v2, y2, L2, g, $2 + 60 * M2.offset * 1e3)) : i2 ? new Date(Date.UTC(p2, D2, v2, y2, L2, g, $2)) : new Date(p2, D2, v2, y2, L2, g, $2);
      } catch (t4) {
        return /* @__PURE__ */ new Date("");
      }
    };
    return function(t3, e2, n2) {
      n2.p.customParseFormat = true;
      var r3 = e2.prototype, i2 = r3.parse;
      r3.parse = function(t4) {
        var e3 = t4.date, r4 = t4.utc, o3 = t4.args;
        this.$u = r4;
        var a3 = o3[1];
        if ("string" == typeof a3) {
          var f3 = true === o3[2], u3 = true === o3[3], h3 = f3 || u3, d3 = o3[2];
          u3 && (d3 = o3[2]), s2 = this.$locale(), !f3 && d3 && (s2 = n2.Ls[d3]), this.$d = c2(e3, a3, r4), this.init(), d3 && true !== d3 && (this.$L = this.locale(d3).$L), h3 && e3 !== this.format(a3) && (this.$d = /* @__PURE__ */ new Date("")), s2 = {};
        } else if (a3 instanceof Array)
          for (var m2 = a3.length, l2 = 1; l2 <= m2; l2 += 1) {
            o3[1] = a3[l2 - 1];
            var M2 = n2.apply(this, o3);
            if (M2.isValid()) {
              this.$d = M2.$d, this.$L = M2.$L, this.init();
              break;
            }
            l2 === m2 && (this.$d = /* @__PURE__ */ new Date(""));
          }
        else
          i2.call(this, t4);
      };
    };
  });
})(customParseFormat$1);
const customParseFormat = customParseFormatExports;
var utcExports = {};
var utc$1 = {
  get exports() {
    return utcExports;
  },
  set exports(v2) {
    utcExports = v2;
  }
};
(function(module, exports) {
  !function(t2, i) {
    module.exports = i();
  }(commonjsGlobal$1, function() {
    return function(t2, i, e) {
      var s2 = i.prototype;
      e.utc = function(t3) {
        return new i({ date: t3, utc: true, args: arguments });
      }, s2.utc = function(t3) {
        var i2 = e(this.toDate(), { locale: this.$L, utc: true });
        return t3 ? i2.add(this.utcOffset(), "minute") : i2;
      }, s2.local = function() {
        return e(this.toDate(), { locale: this.$L, utc: false });
      };
      var f2 = s2.parse;
      s2.parse = function(t3) {
        t3.utc && (this.$u = true), this.$utils().u(t3.$offset) || (this.$offset = t3.$offset), f2.call(this, t3);
      };
      var n = s2.init;
      s2.init = function() {
        if (this.$u) {
          var t3 = this.$d;
          this.$y = t3.getUTCFullYear(), this.$M = t3.getUTCMonth(), this.$D = t3.getUTCDate(), this.$W = t3.getUTCDay(), this.$H = t3.getUTCHours(), this.$m = t3.getUTCMinutes(), this.$s = t3.getUTCSeconds(), this.$ms = t3.getUTCMilliseconds();
        } else
          n.call(this);
      };
      var u2 = s2.utcOffset;
      s2.utcOffset = function(t3, i2) {
        var e2 = this.$utils().u;
        if (e2(t3))
          return this.$u ? 0 : e2(this.$offset) ? u2.call(this) : this.$offset;
        var s3 = Math.abs(t3) <= 16 ? 60 * t3 : t3, f3 = this;
        if (i2)
          return f3.$offset = s3, f3.$u = 0 === t3, f3;
        if (0 !== t3) {
          var n2 = this.$u ? this.toDate().getTimezoneOffset() : -1 * this.utcOffset();
          (f3 = this.local().add(s3 + n2, "minute")).$offset = s3, f3.$x.$localOffset = n2;
        } else
          f3 = this.utc();
        return f3;
      };
      var o2 = s2.format;
      s2.format = function(t3) {
        var i2 = t3 || (this.$u ? "YYYY-MM-DDTHH:mm:ss[Z]" : "");
        return o2.call(this, i2);
      }, s2.valueOf = function() {
        var t3 = this.$utils().u(this.$offset) ? 0 : this.$offset + (this.$x.$localOffset || (/* @__PURE__ */ new Date()).getTimezoneOffset());
        return this.$d.valueOf() - 6e4 * t3;
      }, s2.isUTC = function() {
        return !!this.$u;
      }, s2.toISOString = function() {
        return this.toDate().toISOString();
      }, s2.toString = function() {
        return this.toDate().toUTCString();
      };
      var r2 = s2.toDate;
      s2.toDate = function(t3) {
        return "s" === t3 && this.$offset ? e(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate() : r2.call(this);
      };
      var a2 = s2.diff;
      s2.diff = function(t3, i2, s3) {
        if (t3 && this.$u === t3.$u)
          return a2.call(this, t3, i2, s3);
        var f3 = this.local(), n2 = e(t3).local();
        return a2.call(f3, n2, i2, s3);
      };
    };
  });
})(utc$1);
const utc = utcExports;
dayjs.extend(relativeTime);
dayjs.extend(duration);
dayjs.extend(customParseFormat);
dayjs.extend(utc);
const _hoisted_1$4 = {
  "data-cy": "enable-notifications-banner",
  class: "flex items-start flex-wrap gap-[8px] justify-between w-full px-[24px] py-[16px] bg-indigo-50 border-b border-b-indigo-100"
};
const _hoisted_2$4 = { class: "text-gray-900 font-medium text-base" };
const _hoisted_3$4 = { class: "text-gray-700 text-sm mt-[3px]" };
const _hoisted_4$3 = { class: "flex gap-[8px]" };
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
  __name: "EnableNotificationsBanner",
  setup(__props) {
    const { t: t2 } = useI18n();
    gql`
mutation EnableNotificationsBanner_ShowNotification($title: String!, $body: String!) {
  showSystemNotification(title: $title, body: $body)
}`;
    gql`
mutation EnableNotificationsBanner_SetPreferences ($value: String!) {
  setPreferences (value: $value, type: global) {
    localSettings {
        preferences {
          desktopNotificationsEnabled
          dismissNotificationBannerUntil
      }
    }
  }
}`;
    const showNotification = useMutation(EnableNotificationsBanner_ShowNotificationDocument);
    const setPreferences = useMutation(EnableNotificationsBanner_SetPreferencesDocument);
    const router = useRouter();
    const enableNotifications = async () => {
      await showNotification.executeMutation({ title: t2("specPage.banners.enableNotifications.notificationsEnabledTitle"), body: t2("specPage.banners.enableNotifications.notificationsEnabledBody") });
      await setPreferences.executeMutation({ value: JSON.stringify({ desktopNotificationsEnabled: true }) });
      router.push({
        path: "/settings",
        query: {
          section: "device",
          anchor: "notifications"
        }
      });
    };
    const remindLater = async () => {
      const in3Days = dayjs().add(dayjs.duration({ days: 3 }));
      await setPreferences.executeMutation({ value: JSON.stringify({ dismissNotificationBannerUntil: in3Days }) });
    };
    const dismissBanner = async () => {
      await setPreferences.executeMutation({ value: JSON.stringify({ desktopNotificationsEnabled: false }) });
    };
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1$4, [
        createBaseVNode("div", null, [
          createBaseVNode("div", _hoisted_2$4, toDisplayString$1(unref(t2)("specPage.banners.enableNotifications.title")), 1),
          createBaseVNode("div", _hoisted_3$4, toDisplayString$1(unref(t2)("specPage.banners.enableNotifications.subtitle")), 1)
        ]),
        createBaseVNode("div", _hoisted_4$3, [
          createVNode(unref(C), {
            size: "40",
            onClick: enableNotifications
          }, {
            default: withCtx(() => [
              createTextVNode(toDisplayString$1(unref(t2)("specPage.banners.enableNotifications.enableDesktopNotifications")), 1)
            ]),
            _: 1
          }),
          createVNode(unref(C), {
            variant: "outline-light",
            onClick: remindLater
          }, {
            default: withCtx(() => [
              createTextVNode(toDisplayString$1(unref(t2)("specPage.banners.enableNotifications.remindMeLater")), 1)
            ]),
            _: 1
          }),
          createVNode(unref(C), {
            "aria-label": unref(t2)("specPage.banners.enableNotifications.dismissBanner"),
            class: "flex items-center text-gray-200",
            variant: "outline-light",
            onClick: dismissBanner
          }, {
            default: withCtx(() => [
              createVNode(unref(z))
            ]),
            _: 1
          }, 8, ["aria-label"])
        ])
      ]);
    };
  }
});
const _hoisted_1$3 = {
  key: 2,
  class: "bg-white h-full w-full pt-[100px] top-0 right-0 left-0 z-10 absolute overflow-scroll"
};
const _hoisted_2$3 = { key: 1 };
const _hoisted_3$3 = {
  "aria-labelledby": "primary-heading",
  class: "overflow-auto"
};
const _hoisted_4$2 = {
  id: "primary-heading",
  class: "sr-only"
};
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
  __name: "default",
  setup(__props) {
    const userProjectStatusStore = useUserProjectStatusStore();
    gql`
fragment LocalSettingsNotifications on LocalSettings {
    preferences {
      desktopNotificationsEnabled
      dismissNotificationBannerUntil
    }
}
`;
    gql`
fragment MainAppQueryData on Query {
    baseError {
      id
      ...BaseError
    }
    currentProject {
      id
      isLoadingConfigFile
      isLoadingNodeEvents
    }
    localSettings {
      ...LocalSettingsNotifications
  }
}
`;
    gql`
query MainAppQuery {
  ...MainAppQueryData
}
`;
    gql`
mutation MainApp_ResetErrorsAndLoadConfig($id: ID!) {
  resetErrorAndLoadConfig(id: $id) {
    ...MainAppQueryData
  }
}
`;
    const currentRoute = useRoute();
    const showHeader = computed(() => {
      return currentRoute.meta.header !== false;
    });
    const showEnableNotificationsBanner = computed(() => {
      var _a3, _b2, _c;
      return !isWindows && userProjectStatusStore.cloudStatus === "allTasksCompleted" && ((_a3 = query2.data.value) == null ? void 0 : _a3.localSettings.preferences.desktopNotificationsEnabled) === null && (((_b2 = query2.data.value) == null ? void 0 : _b2.localSettings.preferences.dismissNotificationBannerUntil) ? Date.now() > new Date((_c = query2.data.value) == null ? void 0 : _c.localSettings.preferences.dismissNotificationBannerUntil).getTime() : true);
    });
    const query2 = useQuery({
      query: MainAppQueryDocument,
      pause: isRunMode
    });
    const mutation = useMutation(MainApp_ResetErrorsAndLoadConfigDocument);
    const resetErrorAndLoadConfig = (id2) => {
      if (!mutation.fetching.value) {
        mutation.executeMutation({ id: id2 });
      }
    };
    const renderSidebar = computed(() => {
      var _a3, _b2;
      if (currentRoute.name === "Specs" && query2.data.value) {
        return !isRunMode && ((_b2 = (_a3 = query2.data.value) == null ? void 0 : _a3.currentProject) == null ? void 0 : _b2.isLoadingConfigFile) === false;
      }
      return !isRunMode;
    });
    return (_ctx, _cache) => {
      var _a3, _b2, _c, _d, _e, _f, _g;
      const _component_router_view = resolveComponent("router-view");
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["h-screen min-w-[728px] grid grid-cols-[auto,1fr]", {
          "grid-rows-[auto,1fr]": unref(showHeader)
        }])
      }, [
        unref(renderSidebar) ? (openBlock(), createBlock(_sfc_main$7, {
          key: 0,
          class: "row-span-full"
        })) : createCommentVNode("", true),
        unref(showHeader) ? (openBlock(), createBlock(_sfc_main$o, {
          key: 1,
          "show-browsers": true,
          "page-name": (_a3 = unref(currentRoute).name) == null ? void 0 : _a3.toString(),
          "data-cy": "app-header-bar",
          "allow-automatic-prompt-open": true
        }, {
          banner: withCtx(() => [
            unref(showEnableNotificationsBanner) ? (openBlock(), createBlock(_sfc_main$6, { key: 0 })) : createCommentVNode("", true)
          ]),
          _: 1
        }, 8, ["page-name"])) : createCommentVNode("", true),
        ((_b2 = unref(query2).data.value) == null ? void 0 : _b2.baseError) || ((_d = (_c = unref(query2).data.value) == null ? void 0 : _c.currentProject) == null ? void 0 : _d.isLoadingConfigFile) || ((_f = (_e = unref(query2).data.value) == null ? void 0 : _e.currentProject) == null ? void 0 : _f.isLoadingNodeEvents) ? (openBlock(), createElementBlock("div", _hoisted_1$3, [
          ((_g = unref(query2).data.value) == null ? void 0 : _g.baseError) ? (openBlock(), createBlock(_sfc_main$i, {
            key: 0,
            gql: unref(query2).data.value.baseError,
            onRetry: resetErrorAndLoadConfig
          }, null, 8, ["gql"])) : (openBlock(), createElementBlock("div", _hoisted_2$3, [
            createVNode(Spinner)
          ]))
        ])) : createCommentVNode("", true),
        createBaseVNode("main", _hoisted_3$3, [
          createVNode(_component_router_view, null, {
            default: withCtx(({ Component, route }) => [
              createBaseVNode("h1", _hoisted_4$2, toDisplayString$1(route.name), 1),
              createVNode(Transition, {
                name: "fade",
                mode: "out-in"
              }, {
                default: withCtx(() => [
                  (openBlock(), createBlock(resolveDynamicComponent(Component)))
                ]),
                _: 2
              }, 1024)
            ]),
            _: 1
          })
        ])
      ], 2);
    };
  }
});
const layouts = {
  "default": _sfc_main$5
};
function setupLayouts(routes2) {
  return routes2.map((route) => {
    var _a3;
    return {
      path: route.path,
      meta: route.meta,
      component: layouts[((_a3 = route.meta) == null ? void 0 : _a3.layout) || "default"],
      children: route.path === "/" ? [route] : [{ ...route, path: "" }]
    };
  });
}
const createRouter = () => {
  const routes$1 = setupLayouts(routes);
  const defaultRoute = routes.find((route) => {
    var _a3;
    return (_a3 = route.meta) == null ? void 0 : _a3.default;
  });
  if (defaultRoute) {
    routes$1.push({
      path: "/",
      redirect: defaultRoute.path
    });
  }
  routes$1.push({
    path: "/redirect",
    redirect: (from) => {
      if (from.query.name) {
        if (typeof from.query.name !== "string") {
          throw new Error(`name should be a single string but got: ${from.query.name}`);
        }
        let params2 = {};
        if (from.query.params) {
          if (typeof from.query.params !== "string") {
            throw new Error(`params should be a string but got: ${from.query.params}`);
          }
          try {
            params2 = JSON.parse(from.query.params);
          } catch {
            throw new Error(`params was not valid JSON: ${from.query.params}`);
          }
        }
        return {
          name: from.query.name,
          params: params2,
          query: {}
          //reset query params so they do not get passed on
        };
      }
      return { path: "/" };
    }
  });
  return createRouter$1({
    history: createWebHashHistory(),
    routes: routes$1
  });
};
const pDefer = () => {
  const deferred = {};
  deferred.promise = new Promise((resolve3, reject) => {
    deferred.resolve = resolve3;
    deferred.reject = reject;
  });
  return deferred;
};
var pDefer_1 = pDefer;
const dfd = pDefer_1();
function injectBundle(namespace) {
  const script2 = document.createElement("script");
  script2.src = `/${namespace}/runner/cypress_runner.js`;
  script2.type = "text/javascript";
  const link4 = document.createElement("link");
  link4.rel = "stylesheet";
  link4.href = `/${namespace}/runner/cypress_runner.css`;
  script2.onload = () => {
    dfd.resolve();
  };
  document.head.appendChild(script2);
  document.head.appendChild(link4);
}
const useSpecStore = defineStore({
  id: "spec",
  state() {
    return {
      activeSpec: void 0,
      specFilter: void 0,
      testFilter: void 0
    };
  },
  actions: {
    setActiveSpec(activeSpec) {
      this.activeSpec = activeSpec;
    },
    setSpecFilter(filter) {
      this.specFilter = filter;
    },
    setTestFilter(filter) {
      this.testFilter = filter;
    }
  }
});
const useAutStore = defineStore({
  id: "aut-store",
  state: () => {
    const defaultViewportHeight = window.__CYPRESS_TESTING_TYPE__ === "e2e" ? 660 : 500;
    const defaultViewportWidth = window.__CYPRESS_TESTING_TYPE__ === "e2e" ? 1e3 : 500;
    return {
      isLoadingUrl: false,
      highlightUrl: false,
      url: void 0,
      viewportHeight: defaultViewportHeight,
      viewportWidth: defaultViewportWidth,
      defaultViewportHeight,
      defaultViewportWidth,
      isLoading: false,
      isRunning: false,
      viewportUpdateCallback: null,
      scriptError: null,
      scale: 1,
      specRunnerHeaderHeight: 64
    };
  },
  actions: {
    setHighlightUrl(highlightUrl) {
      this.highlightUrl = highlightUrl;
    },
    updateUrl(url2) {
      this.url = url2;
    },
    updateDimensions(viewportWidth, viewportHeight) {
      this.viewportHeight = viewportHeight;
      this.viewportWidth = viewportWidth;
    },
    setViewportUpdatedCallback(cb) {
      this.viewportUpdateCallback = cb;
    },
    setIsLoadingUrl(isLoadingUrl) {
      this.isLoadingUrl = isLoadingUrl;
    },
    setIsRunning(isRunning) {
      this.isRunning = isRunning;
    },
    setIsLoading(isLoading) {
      this.isLoading = isLoading;
    },
    resetUrl() {
      this.url = void 0;
      this.highlightUrl = false;
      this.isLoadingUrl = false;
    },
    setScriptError(err) {
      this.scriptError = err;
    },
    setScale(scale) {
      this.scale = scale;
    },
    setSpecRunnerHeaderHeight(height) {
      this.specRunnerHeaderHeight = height;
    }
  },
  getters: {
    viewportDimensions(state) {
      return {
        height: state.viewportHeight,
        width: state.viewportWidth
      };
    }
  }
});
const runnerConstants = {
  defaultSpecListWidth: 280,
  defaultReporterWidth: 450,
  preferredMinimumPanelWidth: 200,
  absoluteAutMinimum: 100,
  absoluteSpecListMinimum: 50,
  absoluteReporterMinimum: 50,
  collapsedNavBarWidth: 64
};
const automation = {
  CONNECTING: "CONNECTING",
  MISSING: "MISSING",
  CONNECTED: "CONNECTED",
  DISCONNECTED: "DISCONNECTED"
};
const useRunnerUiStore = defineStore({
  id: "runner-ui",
  state() {
    return {
      showChooseExternalEditorModal: false,
      autoScrollingEnabled: true,
      isSpecsListOpen: false,
      specListWidth: runnerConstants.defaultSpecListWidth,
      reporterWidth: runnerConstants.defaultReporterWidth,
      automationStatus: automation.CONNECTING,
      randomString: `${Math.random()}`,
      hideCommandLog: window.__CYPRESS_CONFIG__.hideCommandLog
    };
  },
  actions: {
    setAutomationStatus(status) {
      this.automationStatus = status;
    },
    setShowChooseExternalEditorModal(value) {
      this.showChooseExternalEditorModal = value;
    },
    setPreference(preference, value) {
      this.$state[preference] = value;
    }
  }
});
let nanoid = (size2 = 21) => crypto.getRandomValues(new Uint8Array(size2)).reduce((id2, byte) => {
  byte &= 63;
  if (byte < 36) {
    id2 += byte.toString(36);
  } else if (byte < 62) {
    id2 += (byte - 26).toString(36).toUpperCase();
  } else if (byte > 62) {
    id2 += "-";
  } else {
    id2 += "_";
  }
  return id2;
}, "");
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0

THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.

See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
var extendStatics = function(d2, b2) {
  extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
    d3.__proto__ = b3;
  } || function(d3, b3) {
    for (var p2 in b3)
      if (b3.hasOwnProperty(p2))
        d3[p2] = b3[p2];
  };
  return extendStatics(d2, b2);
};
function __extends$6(d2, b2) {
  extendStatics(d2, b2);
  function __() {
    this.constructor = d2;
  }
  d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
}
var __assign$3 = function() {
  __assign$3 = Object.assign || function __assign2(t2) {
    for (var s2, i = 1, n = arguments.length; i < n; i++) {
      s2 = arguments[i];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign$3.apply(this, arguments);
};
function __values$6(o2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator], i = 0;
  if (m2)
    return m2.call(o2);
  return {
    next: function() {
      if (o2 && i >= o2.length)
        o2 = void 0;
      return { value: o2 && o2[i++], done: !o2 };
    }
  };
}
function __read$f(o2, n) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i = m2.call(o2), r2, ar = [], e;
  try {
    while ((n === void 0 || n-- > 0) && !(r2 = i.next()).done)
      ar.push(r2.value);
  } catch (error2) {
    e = { error: error2 };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i["return"]))
        m2.call(i);
    } finally {
      if (e)
        throw e.error;
    }
  }
  return ar;
}
function __spread() {
  for (var ar = [], i = 0; i < arguments.length; i++)
    ar = ar.concat(__read$f(arguments[i]));
  return ar;
}
var OBFUSCATED_ERROR = "An invariant failed, however the error is obfuscated because this is a production build.";
var EMPTY_ARRAY = [];
Object.freeze(EMPTY_ARRAY);
var EMPTY_OBJECT = {};
Object.freeze(EMPTY_OBJECT);
function getNextId() {
  return ++globalState.mobxGuid;
}
function fail(message) {
  invariant(false, message);
  throw "X";
}
function invariant(check2, message) {
  if (!check2)
    throw new Error("[mobx] " + (message || OBFUSCATED_ERROR));
}
function once$1(func) {
  var invoked = false;
  return function() {
    if (invoked)
      return;
    invoked = true;
    return func.apply(this, arguments);
  };
}
var noop$1 = function() {
};
function unique(list3) {
  var res = [];
  list3.forEach(function(item) {
    if (res.indexOf(item) === -1)
      res.push(item);
  });
  return res;
}
function isObject$1(value) {
  return value !== null && typeof value === "object";
}
function isPlainObject$1(value) {
  if (value === null || typeof value !== "object")
    return false;
  var proto2 = Object.getPrototypeOf(value);
  return proto2 === Object.prototype || proto2 === null;
}
function addHiddenProp(object, propName, value) {
  Object.defineProperty(object, propName, {
    enumerable: false,
    writable: true,
    configurable: true,
    value
  });
}
function addHiddenFinalProp(object, propName, value) {
  Object.defineProperty(object, propName, {
    enumerable: false,
    writable: false,
    configurable: true,
    value
  });
}
function isPropertyConfigurable(object, prop2) {
  var descriptor = Object.getOwnPropertyDescriptor(object, prop2);
  return !descriptor || descriptor.configurable !== false && descriptor.writable !== false;
}
function createInstanceofPredicate(name2, clazz) {
  var propName = "isMobX" + name2;
  clazz.prototype[propName] = true;
  return function(x2) {
    return isObject$1(x2) && x2[propName] === true;
  };
}
function isES6Map(thing) {
  return thing instanceof Map;
}
function isES6Set(thing) {
  return thing instanceof Set;
}
function getPlainObjectKeys(object) {
  var enumerables = /* @__PURE__ */ new Set();
  for (var key in object)
    enumerables.add(key);
  Object.getOwnPropertySymbols(object).forEach(function(k2) {
    if (Object.getOwnPropertyDescriptor(object, k2).enumerable)
      enumerables.add(k2);
  });
  return Array.from(enumerables);
}
function stringifyKey(key) {
  if (key && key.toString)
    return key.toString();
  else
    return new String(key).toString();
}
function getMapLikeKeys(map2) {
  if (isPlainObject$1(map2))
    return Object.keys(map2);
  if (Array.isArray(map2))
    return map2.map(function(_a3) {
      var _b2 = __read$f(_a3, 1), key = _b2[0];
      return key;
    });
  if (isES6Map(map2) || isObservableMap(map2))
    return Array.from(map2.keys());
  return fail("Cannot get keys from '" + map2 + "'");
}
function toPrimitive(value) {
  return value === null ? null : typeof value === "object" ? "" + value : value;
}
var $mobx = Symbol("mobx administration");
var Atom = (
  /** @class */
  function() {
    function Atom2(name2) {
      if (name2 === void 0) {
        name2 = "Atom@" + getNextId();
      }
      this.name = name2;
      this.isPendingUnobservation = false;
      this.isBeingObserved = false;
      this.observers = /* @__PURE__ */ new Set();
      this.diffValue = 0;
      this.lastAccessedBy = 0;
      this.lowestObserverState = IDerivationState.NOT_TRACKING;
    }
    Atom2.prototype.onBecomeObserved = function() {
      if (this.onBecomeObservedListeners) {
        this.onBecomeObservedListeners.forEach(function(listener) {
          return listener();
        });
      }
    };
    Atom2.prototype.onBecomeUnobserved = function() {
      if (this.onBecomeUnobservedListeners) {
        this.onBecomeUnobservedListeners.forEach(function(listener) {
          return listener();
        });
      }
    };
    Atom2.prototype.reportObserved = function() {
      return reportObserved(this);
    };
    Atom2.prototype.reportChanged = function() {
      startBatch();
      propagateChanged(this);
      endBatch();
    };
    Atom2.prototype.toString = function() {
      return this.name;
    };
    return Atom2;
  }()
);
var isAtom = createInstanceofPredicate("Atom", Atom);
function createAtom(name2, onBecomeObservedHandler, onBecomeUnobservedHandler) {
  if (onBecomeObservedHandler === void 0) {
    onBecomeObservedHandler = noop$1;
  }
  if (onBecomeUnobservedHandler === void 0) {
    onBecomeUnobservedHandler = noop$1;
  }
  var atom = new Atom(name2);
  if (onBecomeObservedHandler !== noop$1) {
    onBecomeObserved(atom, onBecomeObservedHandler);
  }
  if (onBecomeUnobservedHandler !== noop$1) {
    onBecomeUnobserved(atom, onBecomeUnobservedHandler);
  }
  return atom;
}
function identityComparer(a2, b2) {
  return a2 === b2;
}
function structuralComparer(a2, b2) {
  return deepEqual(a2, b2);
}
function shallowComparer(a2, b2) {
  return deepEqual(a2, b2, 1);
}
function defaultComparer(a2, b2) {
  return Object.is(a2, b2);
}
var comparer = {
  identity: identityComparer,
  structural: structuralComparer,
  default: defaultComparer,
  shallow: shallowComparer
};
var mobxDidRunLazyInitializersSymbol = Symbol("mobx did run lazy initializers");
var mobxPendingDecorators = Symbol("mobx pending decorators");
var enumerableDescriptorCache = {};
var nonEnumerableDescriptorCache = {};
function createPropertyInitializerDescriptor(prop2, enumerable) {
  var cache2 = enumerable ? enumerableDescriptorCache : nonEnumerableDescriptorCache;
  return cache2[prop2] || (cache2[prop2] = {
    configurable: true,
    enumerable,
    get: function() {
      initializeInstance(this);
      return this[prop2];
    },
    set: function(value) {
      initializeInstance(this);
      this[prop2] = value;
    }
  });
}
function initializeInstance(target2) {
  var e_1, _a3;
  if (target2[mobxDidRunLazyInitializersSymbol] === true)
    return;
  var decorators = target2[mobxPendingDecorators];
  if (decorators) {
    addHiddenProp(target2, mobxDidRunLazyInitializersSymbol, true);
    var keys = __spread(Object.getOwnPropertySymbols(decorators), Object.keys(decorators));
    try {
      for (var keys_1 = __values$6(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {
        var key = keys_1_1.value;
        var d2 = decorators[key];
        d2.propertyCreator(target2, d2.prop, d2.descriptor, d2.decoratorTarget, d2.decoratorArguments);
      }
    } catch (e_1_1) {
      e_1 = { error: e_1_1 };
    } finally {
      try {
        if (keys_1_1 && !keys_1_1.done && (_a3 = keys_1.return))
          _a3.call(keys_1);
      } finally {
        if (e_1)
          throw e_1.error;
      }
    }
  }
}
function createPropDecorator(propertyInitiallyEnumerable, propertyCreator) {
  return function decoratorFactory() {
    var decoratorArguments;
    var decorator = function decorate(target2, prop2, descriptor, applyImmediately) {
      if (applyImmediately === true) {
        propertyCreator(target2, prop2, descriptor, target2, decoratorArguments);
        return null;
      }
      if (!Object.prototype.hasOwnProperty.call(target2, mobxPendingDecorators)) {
        var inheritedDecorators = target2[mobxPendingDecorators];
        addHiddenProp(target2, mobxPendingDecorators, __assign$3({}, inheritedDecorators));
      }
      target2[mobxPendingDecorators][prop2] = {
        prop: prop2,
        propertyCreator,
        descriptor,
        decoratorTarget: target2,
        decoratorArguments
      };
      return createPropertyInitializerDescriptor(prop2, propertyInitiallyEnumerable);
    };
    if (quacksLikeADecorator(arguments)) {
      decoratorArguments = EMPTY_ARRAY;
      return decorator.apply(null, arguments);
    } else {
      decoratorArguments = Array.prototype.slice.call(arguments);
      return decorator;
    }
  };
}
function quacksLikeADecorator(args) {
  return (args.length === 2 || args.length === 3) && (typeof args[1] === "string" || typeof args[1] === "symbol") || args.length === 4 && args[3] === true;
}
function deepEnhancer(v2, _2, name2) {
  if (isObservable(v2))
    return v2;
  if (Array.isArray(v2))
    return observable.array(v2, { name: name2 });
  if (isPlainObject$1(v2))
    return observable.object(v2, void 0, { name: name2 });
  if (isES6Map(v2))
    return observable.map(v2, { name: name2 });
  if (isES6Set(v2))
    return observable.set(v2, { name: name2 });
  return v2;
}
function shallowEnhancer(v2, _2, name2) {
  if (v2 === void 0 || v2 === null)
    return v2;
  if (isObservableObject(v2) || isObservableArray(v2) || isObservableMap(v2) || isObservableSet(v2))
    return v2;
  if (Array.isArray(v2))
    return observable.array(v2, { name: name2, deep: false });
  if (isPlainObject$1(v2))
    return observable.object(v2, void 0, { name: name2, deep: false });
  if (isES6Map(v2))
    return observable.map(v2, { name: name2, deep: false });
  if (isES6Set(v2))
    return observable.set(v2, { name: name2, deep: false });
  return fail(false);
}
function referenceEnhancer(newValue) {
  return newValue;
}
function refStructEnhancer(v2, oldValue, name2) {
  if (deepEqual(v2, oldValue))
    return oldValue;
  return v2;
}
function createDecoratorForEnhancer(enhancer) {
  invariant(enhancer);
  var decorator = createPropDecorator(true, function(target2, propertyName, descriptor, _decoratorTarget, decoratorArgs) {
    var initialValue = descriptor ? descriptor.initializer ? descriptor.initializer.call(target2) : descriptor.value : void 0;
    asObservableObject(target2).addObservableProp(propertyName, initialValue, enhancer);
  });
  var res = (
    // Extra process checks, as this happens during module initialization
    typeof process !== "undefined" && { "CYPRESS_INTERNAL_ENV": "development", "NODE_ENV": "production" } && false ? function observableDecorator() {
      if (arguments.length < 2)
        return fail("Incorrect decorator invocation. @observable decorator doesn't expect any arguments");
      return decorator.apply(null, arguments);
    } : decorator
  );
  res.enhancer = enhancer;
  return res;
}
var defaultCreateObservableOptions = {
  deep: true,
  name: void 0,
  defaultDecorator: void 0,
  proxy: true
};
Object.freeze(defaultCreateObservableOptions);
function asCreateObservableOptions(thing) {
  if (thing === null || thing === void 0)
    return defaultCreateObservableOptions;
  if (typeof thing === "string")
    return { name: thing, deep: true, proxy: true };
  return thing;
}
var deepDecorator = createDecoratorForEnhancer(deepEnhancer);
var shallowDecorator = createDecoratorForEnhancer(shallowEnhancer);
var refDecorator = createDecoratorForEnhancer(referenceEnhancer);
var refStructDecorator = createDecoratorForEnhancer(refStructEnhancer);
function getEnhancerFromOptions(options2) {
  return options2.defaultDecorator ? options2.defaultDecorator.enhancer : options2.deep === false ? referenceEnhancer : deepEnhancer;
}
function createObservable(v2, arg2, arg3) {
  if (typeof arguments[1] === "string" || typeof arguments[1] === "symbol") {
    return deepDecorator.apply(null, arguments);
  }
  if (isObservable(v2))
    return v2;
  var res = isPlainObject$1(v2) ? observable.object(v2, arg2, arg3) : Array.isArray(v2) ? observable.array(v2, arg2) : isES6Map(v2) ? observable.map(v2, arg2) : isES6Set(v2) ? observable.set(v2, arg2) : v2;
  if (res !== v2)
    return res;
  fail(false);
}
var observableFactories = {
  box: function(value, options2) {
    if (arguments.length > 2)
      incorrectlyUsedAsDecorator("box");
    var o2 = asCreateObservableOptions(options2);
    return new ObservableValue(value, getEnhancerFromOptions(o2), o2.name, true, o2.equals);
  },
  array: function(initialValues, options2) {
    if (arguments.length > 2)
      incorrectlyUsedAsDecorator("array");
    var o2 = asCreateObservableOptions(options2);
    return createObservableArray(initialValues, getEnhancerFromOptions(o2), o2.name);
  },
  map: function(initialValues, options2) {
    if (arguments.length > 2)
      incorrectlyUsedAsDecorator("map");
    var o2 = asCreateObservableOptions(options2);
    return new ObservableMap(initialValues, getEnhancerFromOptions(o2), o2.name);
  },
  set: function(initialValues, options2) {
    if (arguments.length > 2)
      incorrectlyUsedAsDecorator("set");
    var o2 = asCreateObservableOptions(options2);
    return new ObservableSet(initialValues, getEnhancerFromOptions(o2), o2.name);
  },
  object: function(props, decorators, options2) {
    if (typeof arguments[1] === "string")
      incorrectlyUsedAsDecorator("object");
    var o2 = asCreateObservableOptions(options2);
    if (o2.proxy === false) {
      return extendObservable({}, props, decorators, o2);
    } else {
      var defaultDecorator = getDefaultDecoratorFromObjectOptions(o2);
      var base2 = extendObservable({}, void 0, void 0, o2);
      var proxy = createDynamicObservableObject(base2);
      extendObservableObjectWithProperties(proxy, props, decorators, defaultDecorator);
      return proxy;
    }
  },
  ref: refDecorator,
  shallow: shallowDecorator,
  deep: deepDecorator,
  struct: refStructDecorator
};
var observable = createObservable;
Object.keys(observableFactories).forEach(function(name2) {
  return observable[name2] = observableFactories[name2];
});
function incorrectlyUsedAsDecorator(methodName) {
  fail(
    // "production" !== "production" &&
    "Expected one or two arguments to observable." + methodName + ". Did you accidentally try to use observable." + methodName + " as decorator?"
  );
}
var computedDecorator = createPropDecorator(false, function(instance, propertyName, descriptor, decoratorTarget, decoratorArgs) {
  var get2 = descriptor.get, set3 = descriptor.set;
  var options2 = decoratorArgs[0] || {};
  asObservableObject(instance).addComputedProp(instance, propertyName, __assign$3({
    get: get2,
    set: set3,
    context: instance
  }, options2));
});
computedDecorator({ equals: comparer.structural });
var IDerivationState;
(function(IDerivationState2) {
  IDerivationState2[IDerivationState2["NOT_TRACKING"] = -1] = "NOT_TRACKING";
  IDerivationState2[IDerivationState2["UP_TO_DATE"] = 0] = "UP_TO_DATE";
  IDerivationState2[IDerivationState2["POSSIBLY_STALE"] = 1] = "POSSIBLY_STALE";
  IDerivationState2[IDerivationState2["STALE"] = 2] = "STALE";
})(IDerivationState || (IDerivationState = {}));
var TraceMode;
(function(TraceMode2) {
  TraceMode2[TraceMode2["NONE"] = 0] = "NONE";
  TraceMode2[TraceMode2["LOG"] = 1] = "LOG";
  TraceMode2[TraceMode2["BREAK"] = 2] = "BREAK";
})(TraceMode || (TraceMode = {}));
var CaughtException = (
  /** @class */
  function() {
    function CaughtException2(cause) {
      this.cause = cause;
    }
    return CaughtException2;
  }()
);
function isCaughtException(e) {
  return e instanceof CaughtException;
}
function shouldCompute(derivation) {
  switch (derivation.dependenciesState) {
    case IDerivationState.UP_TO_DATE:
      return false;
    case IDerivationState.NOT_TRACKING:
    case IDerivationState.STALE:
      return true;
    case IDerivationState.POSSIBLY_STALE: {
      var prevAllowStateReads = allowStateReadsStart(true);
      var prevUntracked = untrackedStart();
      var obs = derivation.observing, l2 = obs.length;
      for (var i = 0; i < l2; i++) {
        var obj = obs[i];
        if (isComputedValue(obj)) {
          if (globalState.disableErrorBoundaries) {
            obj.get();
          } else {
            try {
              obj.get();
            } catch (e) {
              untrackedEnd(prevUntracked);
              allowStateReadsEnd(prevAllowStateReads);
              return true;
            }
          }
          if (derivation.dependenciesState === IDerivationState.STALE) {
            untrackedEnd(prevUntracked);
            allowStateReadsEnd(prevAllowStateReads);
            return true;
          }
        }
      }
      changeDependenciesStateTo0(derivation);
      untrackedEnd(prevUntracked);
      allowStateReadsEnd(prevAllowStateReads);
      return false;
    }
  }
}
function checkIfStateModificationsAreAllowed(atom) {
  var hasObservers = atom.observers.size > 0;
  if (globalState.computationDepth > 0 && hasObservers)
    fail(false);
  if (!globalState.allowStateChanges && (hasObservers || globalState.enforceActions === "strict"))
    fail(false);
}
function trackDerivedFunction(derivation, f2, context2) {
  var prevAllowStateReads = allowStateReadsStart(true);
  changeDependenciesStateTo0(derivation);
  derivation.newObserving = new Array(derivation.observing.length + 100);
  derivation.unboundDepsCount = 0;
  derivation.runId = ++globalState.runId;
  var prevTracking = globalState.trackingDerivation;
  globalState.trackingDerivation = derivation;
  var result;
  if (globalState.disableErrorBoundaries === true) {
    result = f2.call(context2);
  } else {
    try {
      result = f2.call(context2);
    } catch (e) {
      result = new CaughtException(e);
    }
  }
  globalState.trackingDerivation = prevTracking;
  bindDependencies(derivation);
  allowStateReadsEnd(prevAllowStateReads);
  return result;
}
function bindDependencies(derivation) {
  var prevObserving = derivation.observing;
  var observing = derivation.observing = derivation.newObserving;
  var lowestNewObservingDerivationState = IDerivationState.UP_TO_DATE;
  var i0 = 0, l2 = derivation.unboundDepsCount;
  for (var i = 0; i < l2; i++) {
    var dep = observing[i];
    if (dep.diffValue === 0) {
      dep.diffValue = 1;
      if (i0 !== i)
        observing[i0] = dep;
      i0++;
    }
    if (dep.dependenciesState > lowestNewObservingDerivationState) {
      lowestNewObservingDerivationState = dep.dependenciesState;
    }
  }
  observing.length = i0;
  derivation.newObserving = null;
  l2 = prevObserving.length;
  while (l2--) {
    var dep = prevObserving[l2];
    if (dep.diffValue === 0) {
      removeObserver(dep, derivation);
    }
    dep.diffValue = 0;
  }
  while (i0--) {
    var dep = observing[i0];
    if (dep.diffValue === 1) {
      dep.diffValue = 0;
      addObserver(dep, derivation);
    }
  }
  if (lowestNewObservingDerivationState !== IDerivationState.UP_TO_DATE) {
    derivation.dependenciesState = lowestNewObservingDerivationState;
    derivation.onBecomeStale();
  }
}
function clearObserving(derivation) {
  var obs = derivation.observing;
  derivation.observing = [];
  var i = obs.length;
  while (i--)
    removeObserver(obs[i], derivation);
  derivation.dependenciesState = IDerivationState.NOT_TRACKING;
}
function untracked(action3) {
  var prev2 = untrackedStart();
  try {
    return action3();
  } finally {
    untrackedEnd(prev2);
  }
}
function untrackedStart() {
  var prev2 = globalState.trackingDerivation;
  globalState.trackingDerivation = null;
  return prev2;
}
function untrackedEnd(prev2) {
  globalState.trackingDerivation = prev2;
}
function allowStateReadsStart(allowStateReads) {
  var prev2 = globalState.allowStateReads;
  globalState.allowStateReads = allowStateReads;
  return prev2;
}
function allowStateReadsEnd(prev2) {
  globalState.allowStateReads = prev2;
}
function changeDependenciesStateTo0(derivation) {
  if (derivation.dependenciesState === IDerivationState.UP_TO_DATE)
    return;
  derivation.dependenciesState = IDerivationState.UP_TO_DATE;
  var obs = derivation.observing;
  var i = obs.length;
  while (i--)
    obs[i].lowestObserverState = IDerivationState.UP_TO_DATE;
}
var currentActionId = 0;
var nextActionId = 1;
var functionNameDescriptor = Object.getOwnPropertyDescriptor(function() {
}, "name");
functionNameDescriptor && functionNameDescriptor.configurable;
function createAction(actionName, fn2, ref2) {
  var res = function() {
    return executeAction(actionName, fn2, ref2 || this, arguments);
  };
  res.isMobxAction = true;
  return res;
}
function executeAction(actionName, fn2, scope, args) {
  var runInfo = _startAction();
  try {
    return fn2.apply(scope, args);
  } catch (err) {
    runInfo.error = err;
    throw err;
  } finally {
    _endAction(runInfo);
  }
}
function _startAction(actionName, scope, args) {
  var notifySpy = isSpyEnabled();
  var startTime = 0;
  var prevDerivation = untrackedStart();
  startBatch();
  var prevAllowStateChanges = allowStateChangesStart(true);
  var prevAllowStateReads = allowStateReadsStart(true);
  var runInfo = {
    prevDerivation,
    prevAllowStateChanges,
    prevAllowStateReads,
    notifySpy,
    startTime,
    actionId: nextActionId++,
    parentActionId: currentActionId
  };
  currentActionId = runInfo.actionId;
  return runInfo;
}
function _endAction(runInfo) {
  if (currentActionId !== runInfo.actionId) {
    fail("invalid action stack. did you forget to finish an action?");
  }
  currentActionId = runInfo.parentActionId;
  if (runInfo.error !== void 0) {
    globalState.suppressReactionErrors = true;
  }
  allowStateChangesEnd(runInfo.prevAllowStateChanges);
  allowStateReadsEnd(runInfo.prevAllowStateReads);
  endBatch();
  untrackedEnd(runInfo.prevDerivation);
  if (runInfo.notifySpy && false) {
    spyReportEnd({ time: Date.now() - runInfo.startTime });
  }
  globalState.suppressReactionErrors = false;
}
function allowStateChangesStart(allowStateChanges) {
  var prev2 = globalState.allowStateChanges;
  globalState.allowStateChanges = allowStateChanges;
  return prev2;
}
function allowStateChangesEnd(prev2) {
  globalState.allowStateChanges = prev2;
}
var ObservableValue = (
  /** @class */
  function(_super) {
    __extends$6(ObservableValue2, _super);
    function ObservableValue2(value, enhancer, name2, notifySpy, equals2) {
      if (name2 === void 0) {
        name2 = "ObservableValue@" + getNextId();
      }
      if (notifySpy === void 0) {
        notifySpy = true;
      }
      if (equals2 === void 0) {
        equals2 = comparer.default;
      }
      var _this = _super.call(this, name2) || this;
      _this.enhancer = enhancer;
      _this.name = name2;
      _this.equals = equals2;
      _this.hasUnreportedChange = false;
      _this.value = enhancer(value, void 0, name2);
      if (notifySpy && isSpyEnabled() && false) {
        spyReport({ type: "create", name: _this.name, newValue: "" + _this.value });
      }
      return _this;
    }
    ObservableValue2.prototype.dehanceValue = function(value) {
      if (this.dehancer !== void 0)
        return this.dehancer(value);
      return value;
    };
    ObservableValue2.prototype.set = function(newValue) {
      var oldValue = this.value;
      newValue = this.prepareNewValue(newValue);
      if (newValue !== globalState.UNCHANGED) {
        var notifySpy = isSpyEnabled();
        if (notifySpy && false) {
          spyReportStart({
            type: "update",
            name: this.name,
            newValue,
            oldValue
          });
        }
        this.setNewValue(newValue);
      }
    };
    ObservableValue2.prototype.prepareNewValue = function(newValue) {
      checkIfStateModificationsAreAllowed(this);
      if (hasInterceptors(this)) {
        var change = interceptChange(this, {
          object: this,
          type: "update",
          newValue
        });
        if (!change)
          return globalState.UNCHANGED;
        newValue = change.newValue;
      }
      newValue = this.enhancer(newValue, this.value, this.name);
      return this.equals(this.value, newValue) ? globalState.UNCHANGED : newValue;
    };
    ObservableValue2.prototype.setNewValue = function(newValue) {
      var oldValue = this.value;
      this.value = newValue;
      this.reportChanged();
      if (hasListeners(this)) {
        notifyListeners(this, {
          type: "update",
          object: this,
          newValue,
          oldValue
        });
      }
    };
    ObservableValue2.prototype.get = function() {
      this.reportObserved();
      return this.dehanceValue(this.value);
    };
    ObservableValue2.prototype.intercept = function(handler) {
      return registerInterceptor(this, handler);
    };
    ObservableValue2.prototype.observe = function(listener, fireImmediately) {
      if (fireImmediately)
        listener({
          object: this,
          type: "update",
          newValue: this.value,
          oldValue: void 0
        });
      return registerListener(this, listener);
    };
    ObservableValue2.prototype.toJSON = function() {
      return this.get();
    };
    ObservableValue2.prototype.toString = function() {
      return this.name + "[" + this.value + "]";
    };
    ObservableValue2.prototype.valueOf = function() {
      return toPrimitive(this.get());
    };
    ObservableValue2.prototype[Symbol.toPrimitive] = function() {
      return this.valueOf();
    };
    return ObservableValue2;
  }(Atom)
);
createInstanceofPredicate("ObservableValue", ObservableValue);
var ComputedValue = (
  /** @class */
  function() {
    function ComputedValue2(options2) {
      this.dependenciesState = IDerivationState.NOT_TRACKING;
      this.observing = [];
      this.newObserving = null;
      this.isBeingObserved = false;
      this.isPendingUnobservation = false;
      this.observers = /* @__PURE__ */ new Set();
      this.diffValue = 0;
      this.runId = 0;
      this.lastAccessedBy = 0;
      this.lowestObserverState = IDerivationState.UP_TO_DATE;
      this.unboundDepsCount = 0;
      this.__mapid = "#" + getNextId();
      this.value = new CaughtException(null);
      this.isComputing = false;
      this.isRunningSetter = false;
      this.isTracing = TraceMode.NONE;
      invariant(options2.get, "missing option for computed: get");
      this.derivation = options2.get;
      this.name = options2.name || "ComputedValue@" + getNextId();
      if (options2.set)
        this.setter = createAction(this.name + "-setter", options2.set);
      this.equals = options2.equals || (options2.compareStructural || options2.struct ? comparer.structural : comparer.default);
      this.scope = options2.context;
      this.requiresReaction = !!options2.requiresReaction;
      this.keepAlive = !!options2.keepAlive;
    }
    ComputedValue2.prototype.onBecomeStale = function() {
      propagateMaybeChanged(this);
    };
    ComputedValue2.prototype.onBecomeObserved = function() {
      if (this.onBecomeObservedListeners) {
        this.onBecomeObservedListeners.forEach(function(listener) {
          return listener();
        });
      }
    };
    ComputedValue2.prototype.onBecomeUnobserved = function() {
      if (this.onBecomeUnobservedListeners) {
        this.onBecomeUnobservedListeners.forEach(function(listener) {
          return listener();
        });
      }
    };
    ComputedValue2.prototype.get = function() {
      if (this.isComputing)
        fail("Cycle detected in computation " + this.name + ": " + this.derivation);
      if (globalState.inBatch === 0 && this.observers.size === 0 && !this.keepAlive) {
        if (shouldCompute(this)) {
          this.warnAboutUntrackedRead();
          startBatch();
          this.value = this.computeValue(false);
          endBatch();
        }
      } else {
        reportObserved(this);
        if (shouldCompute(this)) {
          if (this.trackAndCompute())
            propagateChangeConfirmed(this);
        }
      }
      var result = this.value;
      if (isCaughtException(result))
        throw result.cause;
      return result;
    };
    ComputedValue2.prototype.peek = function() {
      var res = this.computeValue(false);
      if (isCaughtException(res))
        throw res.cause;
      return res;
    };
    ComputedValue2.prototype.set = function(value) {
      if (this.setter) {
        invariant(!this.isRunningSetter, "The setter of computed value '" + this.name + "' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?");
        this.isRunningSetter = true;
        try {
          this.setter.call(this.scope, value);
        } finally {
          this.isRunningSetter = false;
        }
      } else
        invariant(false, false);
    };
    ComputedValue2.prototype.trackAndCompute = function() {
      var oldValue = this.value;
      var wasSuspended = (
        /* see #1208 */
        this.dependenciesState === IDerivationState.NOT_TRACKING
      );
      var newValue = this.computeValue(true);
      var changed = wasSuspended || isCaughtException(oldValue) || isCaughtException(newValue) || !this.equals(oldValue, newValue);
      if (changed) {
        this.value = newValue;
      }
      return changed;
    };
    ComputedValue2.prototype.computeValue = function(track2) {
      this.isComputing = true;
      globalState.computationDepth++;
      var res;
      if (track2) {
        res = trackDerivedFunction(this, this.derivation, this.scope);
      } else {
        if (globalState.disableErrorBoundaries === true) {
          res = this.derivation.call(this.scope);
        } else {
          try {
            res = this.derivation.call(this.scope);
          } catch (e) {
            res = new CaughtException(e);
          }
        }
      }
      globalState.computationDepth--;
      this.isComputing = false;
      return res;
    };
    ComputedValue2.prototype.suspend = function() {
      if (!this.keepAlive) {
        clearObserving(this);
        this.value = void 0;
      }
    };
    ComputedValue2.prototype.observe = function(listener, fireImmediately) {
      var _this = this;
      var firstTime = true;
      var prevValue = void 0;
      return autorun(function() {
        var newValue = _this.get();
        if (!firstTime || fireImmediately) {
          var prevU = untrackedStart();
          listener({
            type: "update",
            object: _this,
            newValue,
            oldValue: prevValue
          });
          untrackedEnd(prevU);
        }
        firstTime = false;
        prevValue = newValue;
      });
    };
    ComputedValue2.prototype.warnAboutUntrackedRead = function() {
      return;
    };
    ComputedValue2.prototype.toJSON = function() {
      return this.get();
    };
    ComputedValue2.prototype.toString = function() {
      return this.name + "[" + this.derivation.toString() + "]";
    };
    ComputedValue2.prototype.valueOf = function() {
      return toPrimitive(this.get());
    };
    ComputedValue2.prototype[Symbol.toPrimitive] = function() {
      return this.valueOf();
    };
    return ComputedValue2;
  }()
);
var isComputedValue = createInstanceofPredicate("ComputedValue", ComputedValue);
var MobXGlobals = (
  /** @class */
  function() {
    function MobXGlobals2() {
      this.version = 5;
      this.UNCHANGED = {};
      this.trackingDerivation = null;
      this.computationDepth = 0;
      this.runId = 0;
      this.mobxGuid = 0;
      this.inBatch = 0;
      this.pendingUnobservations = [];
      this.pendingReactions = [];
      this.isRunningReactions = false;
      this.allowStateChanges = true;
      this.allowStateReads = true;
      this.enforceActions = false;
      this.spyListeners = [];
      this.globalReactionErrorHandlers = [];
      this.computedRequiresReaction = false;
      this.reactionRequiresObservable = false;
      this.observableRequiresReaction = false;
      this.computedConfigurable = false;
      this.disableErrorBoundaries = false;
      this.suppressReactionErrors = false;
    }
    return MobXGlobals2;
  }()
);
var mockGlobal = {};
function getGlobal$1() {
  if (typeof window !== "undefined") {
    return window;
  }
  if (typeof global !== "undefined") {
    return global;
  }
  if (typeof self !== "undefined") {
    return self;
  }
  return mockGlobal;
}
var canMergeGlobalState = true;
var globalState = function() {
  var global2 = getGlobal$1();
  if (global2.__mobxInstanceCount > 0 && !global2.__mobxGlobals)
    canMergeGlobalState = false;
  if (global2.__mobxGlobals && global2.__mobxGlobals.version !== new MobXGlobals().version)
    canMergeGlobalState = false;
  if (!canMergeGlobalState) {
    setTimeout(function() {
      {
        fail("There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`");
      }
    }, 1);
    return new MobXGlobals();
  } else if (global2.__mobxGlobals) {
    global2.__mobxInstanceCount += 1;
    if (!global2.__mobxGlobals.UNCHANGED)
      global2.__mobxGlobals.UNCHANGED = {};
    return global2.__mobxGlobals;
  } else {
    global2.__mobxInstanceCount = 1;
    return global2.__mobxGlobals = new MobXGlobals();
  }
}();
function addObserver(observable2, node) {
  observable2.observers.add(node);
  if (observable2.lowestObserverState > node.dependenciesState)
    observable2.lowestObserverState = node.dependenciesState;
}
function removeObserver(observable2, node) {
  observable2.observers.delete(node);
  if (observable2.observers.size === 0) {
    queueForUnobservation(observable2);
  }
}
function queueForUnobservation(observable2) {
  if (observable2.isPendingUnobservation === false) {
    observable2.isPendingUnobservation = true;
    globalState.pendingUnobservations.push(observable2);
  }
}
function startBatch() {
  globalState.inBatch++;
}
function endBatch() {
  if (--globalState.inBatch === 0) {
    runReactions();
    var list3 = globalState.pendingUnobservations;
    for (var i = 0; i < list3.length; i++) {
      var observable2 = list3[i];
      observable2.isPendingUnobservation = false;
      if (observable2.observers.size === 0) {
        if (observable2.isBeingObserved) {
          observable2.isBeingObserved = false;
          observable2.onBecomeUnobserved();
        }
        if (observable2 instanceof ComputedValue) {
          observable2.suspend();
        }
      }
    }
    globalState.pendingUnobservations = [];
  }
}
function reportObserved(observable2) {
  var derivation = globalState.trackingDerivation;
  if (derivation !== null) {
    if (derivation.runId !== observable2.lastAccessedBy) {
      observable2.lastAccessedBy = derivation.runId;
      derivation.newObserving[derivation.unboundDepsCount++] = observable2;
      if (!observable2.isBeingObserved) {
        observable2.isBeingObserved = true;
        observable2.onBecomeObserved();
      }
    }
    return true;
  } else if (observable2.observers.size === 0 && globalState.inBatch > 0) {
    queueForUnobservation(observable2);
  }
  return false;
}
function propagateChanged(observable2) {
  if (observable2.lowestObserverState === IDerivationState.STALE)
    return;
  observable2.lowestObserverState = IDerivationState.STALE;
  observable2.observers.forEach(function(d2) {
    if (d2.dependenciesState === IDerivationState.UP_TO_DATE) {
      if (d2.isTracing !== TraceMode.NONE) {
        logTraceInfo(d2, observable2);
      }
      d2.onBecomeStale();
    }
    d2.dependenciesState = IDerivationState.STALE;
  });
}
function propagateChangeConfirmed(observable2) {
  if (observable2.lowestObserverState === IDerivationState.STALE)
    return;
  observable2.lowestObserverState = IDerivationState.STALE;
  observable2.observers.forEach(function(d2) {
    if (d2.dependenciesState === IDerivationState.POSSIBLY_STALE)
      d2.dependenciesState = IDerivationState.STALE;
    else if (d2.dependenciesState === IDerivationState.UP_TO_DATE)
      observable2.lowestObserverState = IDerivationState.UP_TO_DATE;
  });
}
function propagateMaybeChanged(observable2) {
  if (observable2.lowestObserverState !== IDerivationState.UP_TO_DATE)
    return;
  observable2.lowestObserverState = IDerivationState.POSSIBLY_STALE;
  observable2.observers.forEach(function(d2) {
    if (d2.dependenciesState === IDerivationState.UP_TO_DATE) {
      d2.dependenciesState = IDerivationState.POSSIBLY_STALE;
      if (d2.isTracing !== TraceMode.NONE) {
        logTraceInfo(d2, observable2);
      }
      d2.onBecomeStale();
    }
  });
}
function logTraceInfo(derivation, observable2) {
  console.log("[mobx.trace] '" + derivation.name + "' is invalidated due to a change in: '" + observable2.name + "'");
  if (derivation.isTracing === TraceMode.BREAK) {
    var lines = [];
    printDepTree(getDependencyTree(derivation), lines, 1);
    new Function("debugger;\n/*\nTracing '" + derivation.name + "'\n\nYou are entering this break point because derivation '" + derivation.name + "' is being traced and '" + observable2.name + "' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n" + (derivation instanceof ComputedValue ? derivation.derivation.toString().replace(/[*]\//g, "/") : "") + "\n\nThe dependencies for this derivation are:\n\n" + lines.join("\n") + "\n*/\n    ")();
  }
}
function printDepTree(tree, lines, depth) {
  if (lines.length >= 1e3) {
    lines.push("(and many more)");
    return;
  }
  lines.push("" + new Array(depth).join("	") + tree.name);
  if (tree.dependencies)
    tree.dependencies.forEach(function(child) {
      return printDepTree(child, lines, depth + 1);
    });
}
var Reaction = (
  /** @class */
  function() {
    function Reaction2(name2, onInvalidate, errorHandler, requiresObservable) {
      if (name2 === void 0) {
        name2 = "Reaction@" + getNextId();
      }
      if (requiresObservable === void 0) {
        requiresObservable = false;
      }
      this.name = name2;
      this.onInvalidate = onInvalidate;
      this.errorHandler = errorHandler;
      this.requiresObservable = requiresObservable;
      this.observing = [];
      this.newObserving = [];
      this.dependenciesState = IDerivationState.NOT_TRACKING;
      this.diffValue = 0;
      this.runId = 0;
      this.unboundDepsCount = 0;
      this.__mapid = "#" + getNextId();
      this.isDisposed = false;
      this._isScheduled = false;
      this._isTrackPending = false;
      this._isRunning = false;
      this.isTracing = TraceMode.NONE;
    }
    Reaction2.prototype.onBecomeStale = function() {
      this.schedule();
    };
    Reaction2.prototype.schedule = function() {
      if (!this._isScheduled) {
        this._isScheduled = true;
        globalState.pendingReactions.push(this);
        runReactions();
      }
    };
    Reaction2.prototype.isScheduled = function() {
      return this._isScheduled;
    };
    Reaction2.prototype.runReaction = function() {
      if (!this.isDisposed) {
        startBatch();
        this._isScheduled = false;
        if (shouldCompute(this)) {
          this._isTrackPending = true;
          try {
            this.onInvalidate();
            if (this._isTrackPending && isSpyEnabled() && false) {
              spyReport({
                name: this.name,
                type: "scheduled-reaction"
              });
            }
          } catch (e) {
            this.reportExceptionInDerivation(e);
          }
        }
        endBatch();
      }
    };
    Reaction2.prototype.track = function(fn2) {
      if (this.isDisposed) {
        return;
      }
      startBatch();
      this._isRunning = true;
      var result = trackDerivedFunction(this, fn2, void 0);
      this._isRunning = false;
      this._isTrackPending = false;
      if (this.isDisposed) {
        clearObserving(this);
      }
      if (isCaughtException(result))
        this.reportExceptionInDerivation(result.cause);
      endBatch();
    };
    Reaction2.prototype.reportExceptionInDerivation = function(error2) {
      var _this = this;
      if (this.errorHandler) {
        this.errorHandler(error2, this);
        return;
      }
      if (globalState.disableErrorBoundaries)
        throw error2;
      var message = "[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '" + this + "'";
      if (globalState.suppressReactionErrors) {
        console.warn("[mobx] (error in reaction '" + this.name + "' suppressed, fix error of causing action below)");
      } else {
        console.error(message, error2);
      }
      globalState.globalReactionErrorHandlers.forEach(function(f2) {
        return f2(error2, _this);
      });
    };
    Reaction2.prototype.dispose = function() {
      if (!this.isDisposed) {
        this.isDisposed = true;
        if (!this._isRunning) {
          startBatch();
          clearObserving(this);
          endBatch();
        }
      }
    };
    Reaction2.prototype.getDisposer = function() {
      var r2 = this.dispose.bind(this);
      r2[$mobx] = this;
      return r2;
    };
    Reaction2.prototype.toString = function() {
      return "Reaction[" + this.name + "]";
    };
    Reaction2.prototype.trace = function(enterBreakPoint) {
      if (enterBreakPoint === void 0) {
        enterBreakPoint = false;
      }
      trace$1(this, enterBreakPoint);
    };
    return Reaction2;
  }()
);
var MAX_REACTION_ITERATIONS = 100;
var reactionScheduler = function(f2) {
  return f2();
};
function runReactions() {
  if (globalState.inBatch > 0 || globalState.isRunningReactions)
    return;
  reactionScheduler(runReactionsHelper);
}
function runReactionsHelper() {
  globalState.isRunningReactions = true;
  var allReactions = globalState.pendingReactions;
  var iterations = 0;
  while (allReactions.length > 0) {
    if (++iterations === MAX_REACTION_ITERATIONS) {
      console.error("Reaction doesn't converge to a stable state after " + MAX_REACTION_ITERATIONS + " iterations." + (" Probably there is a cycle in the reactive function: " + allReactions[0]));
      allReactions.splice(0);
    }
    var remainingReactions = allReactions.splice(0);
    for (var i = 0, l2 = remainingReactions.length; i < l2; i++)
      remainingReactions[i].runReaction();
  }
  globalState.isRunningReactions = false;
}
var isReaction = createInstanceofPredicate("Reaction", Reaction);
function isSpyEnabled() {
  return false;
}
function spyReport(event) {
  return;
}
function spyReportStart(event) {
  return;
}
function spyReportEnd(change) {
  return;
}
function spy(listener) {
  {
    console.warn("[mobx.spy] Is a no-op in production builds");
    return function() {
    };
  }
}
function dontReassignFields() {
  fail(false);
}
function namedActionDecorator(name2) {
  return function(target2, prop2, descriptor) {
    if (descriptor) {
      if (descriptor.value) {
        return {
          value: createAction(name2, descriptor.value),
          enumerable: false,
          configurable: true,
          writable: true
          // for typescript, this must be writable, otherwise it cannot inherit :/ (see inheritable actions test)
        };
      }
      var initializer_1 = descriptor.initializer;
      return {
        enumerable: false,
        configurable: true,
        writable: true,
        initializer: function() {
          return createAction(name2, initializer_1.call(this));
        }
      };
    }
    return actionFieldDecorator(name2).apply(this, arguments);
  };
}
function actionFieldDecorator(name2) {
  return function(target2, prop2, descriptor) {
    Object.defineProperty(target2, prop2, {
      configurable: true,
      enumerable: false,
      get: function() {
        return void 0;
      },
      set: function(value) {
        addHiddenProp(this, prop2, action(name2, value));
      }
    });
  };
}
function boundActionDecorator(target2, propertyName, descriptor, applyToInstance) {
  if (applyToInstance === true) {
    defineBoundAction(target2, propertyName, descriptor.value);
    return null;
  }
  if (descriptor) {
    return {
      configurable: true,
      enumerable: false,
      get: function() {
        defineBoundAction(this, propertyName, descriptor.value || descriptor.initializer.call(this));
        return this[propertyName];
      },
      set: dontReassignFields
    };
  }
  return {
    enumerable: false,
    configurable: true,
    set: function(v2) {
      defineBoundAction(this, propertyName, v2);
    },
    get: function() {
      return void 0;
    }
  };
}
var action = function action2(arg1, arg2, arg3, arg4) {
  if (arguments.length === 1 && typeof arg1 === "function")
    return createAction(arg1.name || "<unnamed action>", arg1);
  if (arguments.length === 2 && typeof arg2 === "function")
    return createAction(arg1, arg2);
  if (arguments.length === 1 && typeof arg1 === "string")
    return namedActionDecorator(arg1);
  if (arg4 === true) {
    addHiddenProp(arg1, arg2, createAction(arg1.name || arg2, arg3.value, this));
  } else {
    return namedActionDecorator(arg2).apply(null, arguments);
  }
};
action.bound = boundActionDecorator;
function defineBoundAction(target2, propertyName, fn2) {
  addHiddenProp(target2, propertyName, createAction(propertyName, fn2.bind(target2)));
}
function autorun(view, opts) {
  if (opts === void 0) {
    opts = EMPTY_OBJECT;
  }
  var name2 = opts && opts.name || view.name || "Autorun@" + getNextId();
  var runSync = !opts.scheduler && !opts.delay;
  var reaction;
  if (runSync) {
    reaction = new Reaction(name2, function() {
      this.track(reactionRunner);
    }, opts.onError, opts.requiresObservable);
  } else {
    var scheduler_1 = createSchedulerFromOptions(opts);
    var isScheduled_1 = false;
    reaction = new Reaction(name2, function() {
      if (!isScheduled_1) {
        isScheduled_1 = true;
        scheduler_1(function() {
          isScheduled_1 = false;
          if (!reaction.isDisposed)
            reaction.track(reactionRunner);
        });
      }
    }, opts.onError, opts.requiresObservable);
  }
  function reactionRunner() {
    view(reaction);
  }
  reaction.schedule();
  return reaction.getDisposer();
}
var run = function(f2) {
  return f2();
};
function createSchedulerFromOptions(opts) {
  return opts.scheduler ? opts.scheduler : opts.delay ? function(f2) {
    return setTimeout(f2, opts.delay);
  } : run;
}
function onBecomeObserved(thing, arg2, arg3) {
  return interceptHook("onBecomeObserved", thing, arg2, arg3);
}
function onBecomeUnobserved(thing, arg2, arg3) {
  return interceptHook("onBecomeUnobserved", thing, arg2, arg3);
}
function interceptHook(hook, thing, arg2, arg3) {
  var atom = typeof arg3 === "function" ? getAtom(thing, arg2) : getAtom(thing);
  var cb = typeof arg3 === "function" ? arg3 : arg2;
  var listenersKey = hook + "Listeners";
  if (atom[listenersKey]) {
    atom[listenersKey].add(cb);
  } else {
    atom[listenersKey] = /* @__PURE__ */ new Set([cb]);
  }
  var orig = atom[hook];
  if (typeof orig !== "function")
    return fail(false);
  return function() {
    var hookListeners = atom[listenersKey];
    if (hookListeners) {
      hookListeners.delete(cb);
      if (hookListeners.size === 0) {
        delete atom[listenersKey];
      }
    }
  };
}
function extendObservable(target2, properties, decorators, options2) {
  options2 = asCreateObservableOptions(options2);
  var defaultDecorator = getDefaultDecoratorFromObjectOptions(options2);
  initializeInstance(target2);
  asObservableObject(target2, options2.name, defaultDecorator.enhancer);
  if (properties)
    extendObservableObjectWithProperties(target2, properties, decorators, defaultDecorator);
  return target2;
}
function getDefaultDecoratorFromObjectOptions(options2) {
  return options2.defaultDecorator || (options2.deep === false ? refDecorator : deepDecorator);
}
function extendObservableObjectWithProperties(target2, properties, decorators, defaultDecorator) {
  var e_2, _b2;
  var keys, key;
  startBatch();
  try {
    var keys = getPlainObjectKeys(properties);
    try {
      for (var keys_2 = __values$6(keys), keys_2_1 = keys_2.next(); !keys_2_1.done; keys_2_1 = keys_2.next()) {
        var key = keys_2_1.value;
        var descriptor = Object.getOwnPropertyDescriptor(properties, key);
        if (false)
          ;
        var decorator = decorators && key in decorators ? decorators[key] : descriptor.get ? computedDecorator : defaultDecorator;
        if (false)
          ;
        var resultDescriptor = decorator(target2, key, descriptor, true);
        if (resultDescriptor)
          Object.defineProperty(target2, key, resultDescriptor);
      }
    } catch (e_2_1) {
      e_2 = { error: e_2_1 };
    } finally {
      try {
        if (keys_2_1 && !keys_2_1.done && (_b2 = keys_2.return))
          _b2.call(keys_2);
      } finally {
        if (e_2)
          throw e_2.error;
      }
    }
  } finally {
    endBatch();
  }
}
function getDependencyTree(thing, property) {
  return nodeToDependencyTree(getAtom(thing, property));
}
function nodeToDependencyTree(node) {
  var result = {
    name: node.name
  };
  if (node.observing && node.observing.length > 0)
    result.dependencies = unique(node.observing).map(nodeToDependencyTree);
  return result;
}
function _isComputed(value, property) {
  if (value === null || value === void 0)
    return false;
  if (property !== void 0) {
    if (isObservableObject(value) === false)
      return false;
    if (!value[$mobx].values.has(property))
      return false;
    var atom = getAtom(value, property);
    return isComputedValue(atom);
  }
  return isComputedValue(value);
}
function isComputed(value) {
  if (arguments.length > 1)
    return fail(false);
  return _isComputed(value);
}
function _isObservable(value, property) {
  if (value === null || value === void 0)
    return false;
  if (property !== void 0) {
    if (isObservableObject(value)) {
      return value[$mobx].values.has(property);
    }
    return false;
  }
  return isObservableObject(value) || !!value[$mobx] || isAtom(value) || isReaction(value) || isComputedValue(value);
}
function isObservable(value) {
  if (arguments.length !== 1)
    fail(false);
  return _isObservable(value);
}
function set2(obj, key, value) {
  if (arguments.length === 2 && !isObservableSet(obj)) {
    startBatch();
    var values_1 = key;
    try {
      for (var key_1 in values_1)
        set2(obj, key_1, values_1[key_1]);
    } finally {
      endBatch();
    }
    return;
  }
  if (isObservableObject(obj)) {
    var adm = obj[$mobx];
    var existingObservable = adm.values.get(key);
    if (existingObservable) {
      adm.write(key, value);
    } else {
      adm.addObservableProp(key, value, adm.defaultEnhancer);
    }
  } else if (isObservableMap(obj)) {
    obj.set(key, value);
  } else if (isObservableSet(obj)) {
    obj.add(key);
  } else if (isObservableArray(obj)) {
    if (typeof key !== "number")
      key = parseInt(key, 10);
    invariant(key >= 0, "Not a valid index: '" + key + "'");
    startBatch();
    if (key >= obj.length)
      obj.length = key + 1;
    obj[key] = value;
    endBatch();
  } else {
    return fail(false);
  }
}
function trace$1() {
  var args = [];
  for (var _i = 0; _i < arguments.length; _i++) {
    args[_i] = arguments[_i];
  }
  var enterBreakPoint = false;
  if (typeof args[args.length - 1] === "boolean")
    enterBreakPoint = args.pop();
  var derivation = getAtomFromArgs(args);
  if (!derivation) {
    return fail(false);
  }
  if (derivation.isTracing === TraceMode.NONE) {
    console.log("[mobx.trace] '" + derivation.name + "' tracing enabled");
  }
  derivation.isTracing = enterBreakPoint ? TraceMode.BREAK : TraceMode.LOG;
}
function getAtomFromArgs(args) {
  switch (args.length) {
    case 0:
      return globalState.trackingDerivation;
    case 1:
      return getAtom(args[0]);
    case 2:
      return getAtom(args[0], args[1]);
  }
}
function transaction(action3, thisArg) {
  if (thisArg === void 0) {
    thisArg = void 0;
  }
  startBatch();
  try {
    return action3.apply(thisArg);
  } finally {
    endBatch();
  }
}
function getAdm(target2) {
  return target2[$mobx];
}
function isPropertyKey(val) {
  return typeof val === "string" || typeof val === "number" || typeof val === "symbol";
}
var objectProxyTraps = {
  has: function(target2, name2) {
    if (name2 === $mobx || name2 === "constructor" || name2 === mobxDidRunLazyInitializersSymbol)
      return true;
    var adm = getAdm(target2);
    if (isPropertyKey(name2))
      return adm.has(name2);
    return name2 in target2;
  },
  get: function(target2, name2) {
    if (name2 === $mobx || name2 === "constructor" || name2 === mobxDidRunLazyInitializersSymbol)
      return target2[name2];
    var adm = getAdm(target2);
    var observable2 = adm.values.get(name2);
    if (observable2 instanceof Atom) {
      var result = observable2.get();
      if (result === void 0) {
        adm.has(name2);
      }
      return result;
    }
    if (isPropertyKey(name2))
      adm.has(name2);
    return target2[name2];
  },
  set: function(target2, name2, value) {
    if (!isPropertyKey(name2))
      return false;
    set2(target2, name2, value);
    return true;
  },
  deleteProperty: function(target2, name2) {
    if (!isPropertyKey(name2))
      return false;
    var adm = getAdm(target2);
    adm.remove(name2);
    return true;
  },
  ownKeys: function(target2) {
    var adm = getAdm(target2);
    adm.keysAtom.reportObserved();
    return Reflect.ownKeys(target2);
  },
  preventExtensions: function(target2) {
    fail("Dynamic observable objects cannot be frozen");
    return false;
  }
};
function createDynamicObservableObject(base2) {
  var proxy = new Proxy(base2, objectProxyTraps);
  base2[$mobx].proxy = proxy;
  return proxy;
}
function hasInterceptors(interceptable) {
  return interceptable.interceptors !== void 0 && interceptable.interceptors.length > 0;
}
function registerInterceptor(interceptable, handler) {
  var interceptors = interceptable.interceptors || (interceptable.interceptors = []);
  interceptors.push(handler);
  return once$1(function() {
    var idx = interceptors.indexOf(handler);
    if (idx !== -1)
      interceptors.splice(idx, 1);
  });
}
function interceptChange(interceptable, change) {
  var prevU = untrackedStart();
  try {
    var interceptors = __spread(interceptable.interceptors || []);
    for (var i = 0, l2 = interceptors.length; i < l2; i++) {
      change = interceptors[i](change);
      invariant(!change || change.type, "Intercept handlers should return nothing or a change object");
      if (!change)
        break;
    }
    return change;
  } finally {
    untrackedEnd(prevU);
  }
}
function hasListeners(listenable) {
  return listenable.changeListeners !== void 0 && listenable.changeListeners.length > 0;
}
function registerListener(listenable, handler) {
  var listeners2 = listenable.changeListeners || (listenable.changeListeners = []);
  listeners2.push(handler);
  return once$1(function() {
    var idx = listeners2.indexOf(handler);
    if (idx !== -1)
      listeners2.splice(idx, 1);
  });
}
function notifyListeners(listenable, change) {
  var prevU = untrackedStart();
  var listeners2 = listenable.changeListeners;
  if (!listeners2)
    return;
  listeners2 = listeners2.slice();
  for (var i = 0, l2 = listeners2.length; i < l2; i++) {
    listeners2[i](change);
  }
  untrackedEnd(prevU);
}
var MAX_SPLICE_SIZE = 1e4;
var arrayTraps = {
  get: function(target2, name2) {
    if (name2 === $mobx)
      return target2[$mobx];
    if (name2 === "length")
      return target2[$mobx].getArrayLength();
    if (typeof name2 === "number") {
      return arrayExtensions.get.call(target2, name2);
    }
    if (typeof name2 === "string" && !isNaN(name2)) {
      return arrayExtensions.get.call(target2, parseInt(name2));
    }
    if (arrayExtensions.hasOwnProperty(name2)) {
      return arrayExtensions[name2];
    }
    return target2[name2];
  },
  set: function(target2, name2, value) {
    if (name2 === "length") {
      target2[$mobx].setArrayLength(value);
    }
    if (typeof name2 === "number") {
      arrayExtensions.set.call(target2, name2, value);
    }
    if (typeof name2 === "symbol" || isNaN(name2)) {
      target2[name2] = value;
    } else {
      arrayExtensions.set.call(target2, parseInt(name2), value);
    }
    return true;
  },
  preventExtensions: function(target2) {
    fail("Observable arrays cannot be frozen");
    return false;
  }
};
function createObservableArray(initialValues, enhancer, name2, owned) {
  if (name2 === void 0) {
    name2 = "ObservableArray@" + getNextId();
  }
  if (owned === void 0) {
    owned = false;
  }
  var adm = new ObservableArrayAdministration(name2, enhancer, owned);
  addHiddenFinalProp(adm.values, $mobx, adm);
  var proxy = new Proxy(adm.values, arrayTraps);
  adm.proxy = proxy;
  if (initialValues && initialValues.length) {
    var prev2 = allowStateChangesStart(true);
    adm.spliceWithArray(0, 0, initialValues);
    allowStateChangesEnd(prev2);
  }
  return proxy;
}
var ObservableArrayAdministration = (
  /** @class */
  function() {
    function ObservableArrayAdministration2(name2, enhancer, owned) {
      this.owned = owned;
      this.values = [];
      this.proxy = void 0;
      this.lastKnownLength = 0;
      this.atom = new Atom(name2 || "ObservableArray@" + getNextId());
      this.enhancer = function(newV, oldV) {
        return enhancer(newV, oldV, name2 + "[..]");
      };
    }
    ObservableArrayAdministration2.prototype.dehanceValue = function(value) {
      if (this.dehancer !== void 0)
        return this.dehancer(value);
      return value;
    };
    ObservableArrayAdministration2.prototype.dehanceValues = function(values) {
      if (this.dehancer !== void 0 && values.length > 0)
        return values.map(this.dehancer);
      return values;
    };
    ObservableArrayAdministration2.prototype.intercept = function(handler) {
      return registerInterceptor(this, handler);
    };
    ObservableArrayAdministration2.prototype.observe = function(listener, fireImmediately) {
      if (fireImmediately === void 0) {
        fireImmediately = false;
      }
      if (fireImmediately) {
        listener({
          object: this.proxy,
          type: "splice",
          index: 0,
          added: this.values.slice(),
          addedCount: this.values.length,
          removed: [],
          removedCount: 0
        });
      }
      return registerListener(this, listener);
    };
    ObservableArrayAdministration2.prototype.getArrayLength = function() {
      this.atom.reportObserved();
      return this.values.length;
    };
    ObservableArrayAdministration2.prototype.setArrayLength = function(newLength) {
      if (typeof newLength !== "number" || newLength < 0)
        throw new Error("[mobx.array] Out of range: " + newLength);
      var currentLength = this.values.length;
      if (newLength === currentLength)
        return;
      else if (newLength > currentLength) {
        var newItems = new Array(newLength - currentLength);
        for (var i = 0; i < newLength - currentLength; i++)
          newItems[i] = void 0;
        this.spliceWithArray(currentLength, 0, newItems);
      } else
        this.spliceWithArray(newLength, currentLength - newLength);
    };
    ObservableArrayAdministration2.prototype.updateArrayLength = function(oldLength, delta2) {
      if (oldLength !== this.lastKnownLength)
        throw new Error("[mobx] Modification exception: the internal structure of an observable array was changed.");
      this.lastKnownLength += delta2;
    };
    ObservableArrayAdministration2.prototype.spliceWithArray = function(index2, deleteCount, newItems) {
      var _this = this;
      checkIfStateModificationsAreAllowed(this.atom);
      var length2 = this.values.length;
      if (index2 === void 0)
        index2 = 0;
      else if (index2 > length2)
        index2 = length2;
      else if (index2 < 0)
        index2 = Math.max(0, length2 + index2);
      if (arguments.length === 1)
        deleteCount = length2 - index2;
      else if (deleteCount === void 0 || deleteCount === null)
        deleteCount = 0;
      else
        deleteCount = Math.max(0, Math.min(deleteCount, length2 - index2));
      if (newItems === void 0)
        newItems = EMPTY_ARRAY;
      if (hasInterceptors(this)) {
        var change = interceptChange(this, {
          object: this.proxy,
          type: "splice",
          index: index2,
          removedCount: deleteCount,
          added: newItems
        });
        if (!change)
          return EMPTY_ARRAY;
        deleteCount = change.removedCount;
        newItems = change.added;
      }
      newItems = newItems.length === 0 ? newItems : newItems.map(function(v2) {
        return _this.enhancer(v2, void 0);
      });
      var res = this.spliceItemsIntoValues(index2, deleteCount, newItems);
      if (deleteCount !== 0 || newItems.length !== 0)
        this.notifyArraySplice(index2, newItems, res);
      return this.dehanceValues(res);
    };
    ObservableArrayAdministration2.prototype.spliceItemsIntoValues = function(index2, deleteCount, newItems) {
      var _a3;
      if (newItems.length < MAX_SPLICE_SIZE) {
        return (_a3 = this.values).splice.apply(_a3, __spread([index2, deleteCount], newItems));
      } else {
        var res = this.values.slice(index2, index2 + deleteCount);
        this.values = this.values.slice(0, index2).concat(newItems, this.values.slice(index2 + deleteCount));
        return res;
      }
    };
    ObservableArrayAdministration2.prototype.notifyArrayChildUpdate = function(index2, newValue, oldValue) {
      var notifySpy = !this.owned && isSpyEnabled();
      var notify = hasListeners(this);
      var change = notify || notifySpy ? {
        object: this.proxy,
        type: "update",
        index: index2,
        newValue,
        oldValue
      } : null;
      if (notifySpy && false)
        spyReportStart(__assign$3(__assign$3({}, change), { name: this.atom.name }));
      this.atom.reportChanged();
      if (notify)
        notifyListeners(this, change);
    };
    ObservableArrayAdministration2.prototype.notifyArraySplice = function(index2, added, removed) {
      var notifySpy = !this.owned && isSpyEnabled();
      var notify = hasListeners(this);
      var change = notify || notifySpy ? {
        object: this.proxy,
        type: "splice",
        index: index2,
        removed,
        added,
        removedCount: removed.length,
        addedCount: added.length
      } : null;
      if (notifySpy && false)
        spyReportStart(__assign$3(__assign$3({}, change), { name: this.atom.name }));
      this.atom.reportChanged();
      if (notify)
        notifyListeners(this, change);
    };
    return ObservableArrayAdministration2;
  }()
);
var arrayExtensions = {
  intercept: function(handler) {
    return this[$mobx].intercept(handler);
  },
  observe: function(listener, fireImmediately) {
    if (fireImmediately === void 0) {
      fireImmediately = false;
    }
    var adm = this[$mobx];
    return adm.observe(listener, fireImmediately);
  },
  clear: function() {
    return this.splice(0);
  },
  replace: function(newItems) {
    var adm = this[$mobx];
    return adm.spliceWithArray(0, adm.values.length, newItems);
  },
  /**
   * Converts this array back to a (shallow) javascript structure.
   * For a deep clone use mobx.toJS
   */
  toJS: function() {
    return this.slice();
  },
  toJSON: function() {
    return this.toJS();
  },
  /*
   * functions that do alter the internal structure of the array, (based on lib.es6.d.ts)
   * since these functions alter the inner structure of the array, the have side effects.
   * Because the have side effects, they should not be used in computed function,
   * and for that reason the do not call dependencyState.notifyObserved
   */
  splice: function(index2, deleteCount) {
    var newItems = [];
    for (var _i = 2; _i < arguments.length; _i++) {
      newItems[_i - 2] = arguments[_i];
    }
    var adm = this[$mobx];
    switch (arguments.length) {
      case 0:
        return [];
      case 1:
        return adm.spliceWithArray(index2);
      case 2:
        return adm.spliceWithArray(index2, deleteCount);
    }
    return adm.spliceWithArray(index2, deleteCount, newItems);
  },
  spliceWithArray: function(index2, deleteCount, newItems) {
    var adm = this[$mobx];
    return adm.spliceWithArray(index2, deleteCount, newItems);
  },
  push: function() {
    var items = [];
    for (var _i = 0; _i < arguments.length; _i++) {
      items[_i] = arguments[_i];
    }
    var adm = this[$mobx];
    adm.spliceWithArray(adm.values.length, 0, items);
    return adm.values.length;
  },
  pop: function() {
    return this.splice(Math.max(this[$mobx].values.length - 1, 0), 1)[0];
  },
  shift: function() {
    return this.splice(0, 1)[0];
  },
  unshift: function() {
    var items = [];
    for (var _i = 0; _i < arguments.length; _i++) {
      items[_i] = arguments[_i];
    }
    var adm = this[$mobx];
    adm.spliceWithArray(0, 0, items);
    return adm.values.length;
  },
  reverse: function() {
    var clone2 = this.slice();
    return clone2.reverse.apply(clone2, arguments);
  },
  sort: function(compareFn) {
    var clone2 = this.slice();
    return clone2.sort.apply(clone2, arguments);
  },
  remove: function(value) {
    var adm = this[$mobx];
    var idx = adm.dehanceValues(adm.values).indexOf(value);
    if (idx > -1) {
      this.splice(idx, 1);
      return true;
    }
    return false;
  },
  get: function(index2) {
    var adm = this[$mobx];
    if (adm) {
      if (index2 < adm.values.length) {
        adm.atom.reportObserved();
        return adm.dehanceValue(adm.values[index2]);
      }
      console.warn("[mobx.array] Attempt to read an array index (" + index2 + ") that is out of bounds (" + adm.values.length + "). Please check length first. Out of bound indices will not be tracked by MobX");
    }
    return void 0;
  },
  set: function(index2, newValue) {
    var adm = this[$mobx];
    var values = adm.values;
    if (index2 < values.length) {
      checkIfStateModificationsAreAllowed(adm.atom);
      var oldValue = values[index2];
      if (hasInterceptors(adm)) {
        var change = interceptChange(adm, {
          type: "update",
          object: adm.proxy,
          index: index2,
          newValue
        });
        if (!change)
          return;
        newValue = change.newValue;
      }
      newValue = adm.enhancer(newValue, oldValue);
      var changed = newValue !== oldValue;
      if (changed) {
        values[index2] = newValue;
        adm.notifyArrayChildUpdate(index2, newValue, oldValue);
      }
    } else if (index2 === values.length) {
      adm.spliceWithArray(index2, 0, [newValue]);
    } else {
      throw new Error("[mobx.array] Index out of bounds, " + index2 + " is larger than " + values.length);
    }
  }
};
[
  "concat",
  "every",
  "filter",
  "forEach",
  "indexOf",
  "join",
  "lastIndexOf",
  "map",
  "reduce",
  "reduceRight",
  "slice",
  "some",
  "toString",
  "toLocaleString"
].forEach(function(funcName) {
  arrayExtensions[funcName] = function() {
    var adm = this[$mobx];
    adm.atom.reportObserved();
    var res = adm.dehanceValues(adm.values);
    return res[funcName].apply(res, arguments);
  };
});
var isObservableArrayAdministration = createInstanceofPredicate("ObservableArrayAdministration", ObservableArrayAdministration);
function isObservableArray(thing) {
  return isObject$1(thing) && isObservableArrayAdministration(thing[$mobx]);
}
var _a$1;
var ObservableMapMarker = {};
var ObservableMap = (
  /** @class */
  function() {
    function ObservableMap2(initialData, enhancer, name2) {
      if (enhancer === void 0) {
        enhancer = deepEnhancer;
      }
      if (name2 === void 0) {
        name2 = "ObservableMap@" + getNextId();
      }
      this.enhancer = enhancer;
      this.name = name2;
      this[_a$1] = ObservableMapMarker;
      this._keysAtom = createAtom(this.name + ".keys()");
      this[Symbol.toStringTag] = "Map";
      if (typeof Map !== "function") {
        throw new Error("mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js");
      }
      this._data = /* @__PURE__ */ new Map();
      this._hasMap = /* @__PURE__ */ new Map();
      this.merge(initialData);
    }
    ObservableMap2.prototype._has = function(key) {
      return this._data.has(key);
    };
    ObservableMap2.prototype.has = function(key) {
      var _this = this;
      if (!globalState.trackingDerivation)
        return this._has(key);
      var entry = this._hasMap.get(key);
      if (!entry) {
        var newEntry = entry = new ObservableValue(this._has(key), referenceEnhancer, this.name + "." + stringifyKey(key) + "?", false);
        this._hasMap.set(key, newEntry);
        onBecomeUnobserved(newEntry, function() {
          return _this._hasMap.delete(key);
        });
      }
      return entry.get();
    };
    ObservableMap2.prototype.set = function(key, value) {
      var hasKey = this._has(key);
      if (hasInterceptors(this)) {
        var change = interceptChange(this, {
          type: hasKey ? "update" : "add",
          object: this,
          newValue: value,
          name: key
        });
        if (!change)
          return this;
        value = change.newValue;
      }
      if (hasKey) {
        this._updateValue(key, value);
      } else {
        this._addValue(key, value);
      }
      return this;
    };
    ObservableMap2.prototype.delete = function(key) {
      var _this = this;
      if (hasInterceptors(this)) {
        var change = interceptChange(this, {
          type: "delete",
          object: this,
          name: key
        });
        if (!change)
          return false;
      }
      if (this._has(key)) {
        var notifySpy = isSpyEnabled();
        var notify = hasListeners(this);
        var change = notify || notifySpy ? {
          type: "delete",
          object: this,
          oldValue: this._data.get(key).value,
          name: key
        } : null;
        if (notifySpy && false)
          spyReportStart(__assign$3(__assign$3({}, change), { name: this.name, key }));
        transaction(function() {
          _this._keysAtom.reportChanged();
          _this._updateHasMapEntry(key, false);
          var observable2 = _this._data.get(key);
          observable2.setNewValue(void 0);
          _this._data.delete(key);
        });
        if (notify)
          notifyListeners(this, change);
        return true;
      }
      return false;
    };
    ObservableMap2.prototype._updateHasMapEntry = function(key, value) {
      var entry = this._hasMap.get(key);
      if (entry) {
        entry.setNewValue(value);
      }
    };
    ObservableMap2.prototype._updateValue = function(key, newValue) {
      var observable2 = this._data.get(key);
      newValue = observable2.prepareNewValue(newValue);
      if (newValue !== globalState.UNCHANGED) {
        var notifySpy = isSpyEnabled();
        var notify = hasListeners(this);
        var change = notify || notifySpy ? {
          type: "update",
          object: this,
          oldValue: observable2.value,
          name: key,
          newValue
        } : null;
        if (notifySpy && false)
          spyReportStart(__assign$3(__assign$3({}, change), { name: this.name, key }));
        observable2.setNewValue(newValue);
        if (notify)
          notifyListeners(this, change);
      }
    };
    ObservableMap2.prototype._addValue = function(key, newValue) {
      var _this = this;
      checkIfStateModificationsAreAllowed(this._keysAtom);
      transaction(function() {
        var observable2 = new ObservableValue(newValue, _this.enhancer, _this.name + "." + stringifyKey(key), false);
        _this._data.set(key, observable2);
        newValue = observable2.value;
        _this._updateHasMapEntry(key, true);
        _this._keysAtom.reportChanged();
      });
      var notifySpy = isSpyEnabled();
      var notify = hasListeners(this);
      var change = notify || notifySpy ? {
        type: "add",
        object: this,
        name: key,
        newValue
      } : null;
      if (notify)
        notifyListeners(this, change);
    };
    ObservableMap2.prototype.get = function(key) {
      if (this.has(key))
        return this.dehanceValue(this._data.get(key).get());
      return this.dehanceValue(void 0);
    };
    ObservableMap2.prototype.dehanceValue = function(value) {
      if (this.dehancer !== void 0) {
        return this.dehancer(value);
      }
      return value;
    };
    ObservableMap2.prototype.keys = function() {
      this._keysAtom.reportObserved();
      return this._data.keys();
    };
    ObservableMap2.prototype.values = function() {
      var self2 = this;
      var nextIndex = 0;
      var keys = Array.from(this.keys());
      return makeIterable({
        next: function() {
          return nextIndex < keys.length ? { value: self2.get(keys[nextIndex++]), done: false } : { done: true };
        }
      });
    };
    ObservableMap2.prototype.entries = function() {
      var self2 = this;
      var nextIndex = 0;
      var keys = Array.from(this.keys());
      return makeIterable({
        next: function() {
          if (nextIndex < keys.length) {
            var key = keys[nextIndex++];
            return {
              value: [key, self2.get(key)],
              done: false
            };
          }
          return { done: true };
        }
      });
    };
    ObservableMap2.prototype[_a$1 = $mobx, Symbol.iterator] = function() {
      return this.entries();
    };
    ObservableMap2.prototype.forEach = function(callback, thisArg) {
      var e_1, _b2;
      try {
        for (var _c = __values$6(this), _d = _c.next(); !_d.done; _d = _c.next()) {
          var _e = __read$f(_d.value, 2), key = _e[0], value = _e[1];
          callback.call(thisArg, value, key, this);
        }
      } catch (e_1_1) {
        e_1 = { error: e_1_1 };
      } finally {
        try {
          if (_d && !_d.done && (_b2 = _c.return))
            _b2.call(_c);
        } finally {
          if (e_1)
            throw e_1.error;
        }
      }
    };
    ObservableMap2.prototype.merge = function(other) {
      var _this = this;
      if (isObservableMap(other)) {
        other = other.toJS();
      }
      transaction(function() {
        if (isPlainObject$1(other))
          getPlainObjectKeys(other).forEach(function(key) {
            return _this.set(key, other[key]);
          });
        else if (Array.isArray(other))
          other.forEach(function(_b2) {
            var _c = __read$f(_b2, 2), key = _c[0], value = _c[1];
            return _this.set(key, value);
          });
        else if (isES6Map(other)) {
          if (other.constructor !== Map)
            fail("Cannot initialize from classes that inherit from Map: " + other.constructor.name);
          other.forEach(function(value, key) {
            return _this.set(key, value);
          });
        } else if (other !== null && other !== void 0)
          fail("Cannot initialize map from " + other);
      });
      return this;
    };
    ObservableMap2.prototype.clear = function() {
      var _this = this;
      transaction(function() {
        untracked(function() {
          var e_2, _b2;
          try {
            for (var _c = __values$6(_this.keys()), _d = _c.next(); !_d.done; _d = _c.next()) {
              var key = _d.value;
              _this.delete(key);
            }
          } catch (e_2_1) {
            e_2 = { error: e_2_1 };
          } finally {
            try {
              if (_d && !_d.done && (_b2 = _c.return))
                _b2.call(_c);
            } finally {
              if (e_2)
                throw e_2.error;
            }
          }
        });
      });
    };
    ObservableMap2.prototype.replace = function(values) {
      var _this = this;
      transaction(function() {
        var newKeys = getMapLikeKeys(values);
        var oldKeys = Array.from(_this.keys());
        var missingKeys = oldKeys.filter(function(k2) {
          return newKeys.indexOf(k2) === -1;
        });
        missingKeys.forEach(function(k2) {
          return _this.delete(k2);
        });
        _this.merge(values);
      });
      return this;
    };
    Object.defineProperty(ObservableMap2.prototype, "size", {
      get: function() {
        this._keysAtom.reportObserved();
        return this._data.size;
      },
      enumerable: true,
      configurable: true
    });
    ObservableMap2.prototype.toPOJO = function() {
      var e_3, _b2;
      var res = {};
      try {
        for (var _c = __values$6(this), _d = _c.next(); !_d.done; _d = _c.next()) {
          var _e = __read$f(_d.value, 2), key = _e[0], value = _e[1];
          res[typeof key === "symbol" ? key : stringifyKey(key)] = value;
        }
      } catch (e_3_1) {
        e_3 = { error: e_3_1 };
      } finally {
        try {
          if (_d && !_d.done && (_b2 = _c.return))
            _b2.call(_c);
        } finally {
          if (e_3)
            throw e_3.error;
        }
      }
      return res;
    };
    ObservableMap2.prototype.toJS = function() {
      return new Map(this);
    };
    ObservableMap2.prototype.toJSON = function() {
      return this.toPOJO();
    };
    ObservableMap2.prototype.toString = function() {
      var _this = this;
      return this.name + "[{ " + Array.from(this.keys()).map(function(key) {
        return stringifyKey(key) + ": " + ("" + _this.get(key));
      }).join(", ") + " }]";
    };
    ObservableMap2.prototype.observe = function(listener, fireImmediately) {
      return registerListener(this, listener);
    };
    ObservableMap2.prototype.intercept = function(handler) {
      return registerInterceptor(this, handler);
    };
    return ObservableMap2;
  }()
);
var isObservableMap = createInstanceofPredicate("ObservableMap", ObservableMap);
var _a$1$1;
var ObservableSetMarker = {};
var ObservableSet = (
  /** @class */
  function() {
    function ObservableSet2(initialData, enhancer, name2) {
      if (enhancer === void 0) {
        enhancer = deepEnhancer;
      }
      if (name2 === void 0) {
        name2 = "ObservableSet@" + getNextId();
      }
      this.name = name2;
      this[_a$1$1] = ObservableSetMarker;
      this._data = /* @__PURE__ */ new Set();
      this._atom = createAtom(this.name);
      this[Symbol.toStringTag] = "Set";
      if (typeof Set !== "function") {
        throw new Error("mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js");
      }
      this.enhancer = function(newV, oldV) {
        return enhancer(newV, oldV, name2);
      };
      if (initialData) {
        this.replace(initialData);
      }
    }
    ObservableSet2.prototype.dehanceValue = function(value) {
      if (this.dehancer !== void 0) {
        return this.dehancer(value);
      }
      return value;
    };
    ObservableSet2.prototype.clear = function() {
      var _this = this;
      transaction(function() {
        untracked(function() {
          var e_1, _b2;
          try {
            for (var _c = __values$6(_this._data.values()), _d = _c.next(); !_d.done; _d = _c.next()) {
              var value = _d.value;
              _this.delete(value);
            }
          } catch (e_1_1) {
            e_1 = { error: e_1_1 };
          } finally {
            try {
              if (_d && !_d.done && (_b2 = _c.return))
                _b2.call(_c);
            } finally {
              if (e_1)
                throw e_1.error;
            }
          }
        });
      });
    };
    ObservableSet2.prototype.forEach = function(callbackFn, thisArg) {
      var e_2, _b2;
      try {
        for (var _c = __values$6(this), _d = _c.next(); !_d.done; _d = _c.next()) {
          var value = _d.value;
          callbackFn.call(thisArg, value, value, this);
        }
      } catch (e_2_1) {
        e_2 = { error: e_2_1 };
      } finally {
        try {
          if (_d && !_d.done && (_b2 = _c.return))
            _b2.call(_c);
        } finally {
          if (e_2)
            throw e_2.error;
        }
      }
    };
    Object.defineProperty(ObservableSet2.prototype, "size", {
      get: function() {
        this._atom.reportObserved();
        return this._data.size;
      },
      enumerable: true,
      configurable: true
    });
    ObservableSet2.prototype.add = function(value) {
      var _this = this;
      checkIfStateModificationsAreAllowed(this._atom);
      if (hasInterceptors(this)) {
        var change = interceptChange(this, {
          type: "add",
          object: this,
          newValue: value
        });
        if (!change)
          return this;
      }
      if (!this.has(value)) {
        transaction(function() {
          _this._data.add(_this.enhancer(value, void 0));
          _this._atom.reportChanged();
        });
        var notifySpy = isSpyEnabled();
        var notify = hasListeners(this);
        var change = notify || notifySpy ? {
          type: "add",
          object: this,
          newValue: value
        } : null;
        if (notify)
          notifyListeners(this, change);
      }
      return this;
    };
    ObservableSet2.prototype.delete = function(value) {
      var _this = this;
      if (hasInterceptors(this)) {
        var change = interceptChange(this, {
          type: "delete",
          object: this,
          oldValue: value
        });
        if (!change)
          return false;
      }
      if (this.has(value)) {
        var notifySpy = isSpyEnabled();
        var notify = hasListeners(this);
        var change = notify || notifySpy ? {
          type: "delete",
          object: this,
          oldValue: value
        } : null;
        if (notifySpy && false)
          spyReportStart(__assign$3(__assign$3({}, change), { name: this.name }));
        transaction(function() {
          _this._atom.reportChanged();
          _this._data.delete(value);
        });
        if (notify)
          notifyListeners(this, change);
        return true;
      }
      return false;
    };
    ObservableSet2.prototype.has = function(value) {
      this._atom.reportObserved();
      return this._data.has(this.dehanceValue(value));
    };
    ObservableSet2.prototype.entries = function() {
      var nextIndex = 0;
      var keys = Array.from(this.keys());
      var values = Array.from(this.values());
      return makeIterable({
        next: function() {
          var index2 = nextIndex;
          nextIndex += 1;
          return index2 < values.length ? { value: [keys[index2], values[index2]], done: false } : { done: true };
        }
      });
    };
    ObservableSet2.prototype.keys = function() {
      return this.values();
    };
    ObservableSet2.prototype.values = function() {
      this._atom.reportObserved();
      var self2 = this;
      var nextIndex = 0;
      var observableValues = Array.from(this._data.values());
      return makeIterable({
        next: function() {
          return nextIndex < observableValues.length ? { value: self2.dehanceValue(observableValues[nextIndex++]), done: false } : { done: true };
        }
      });
    };
    ObservableSet2.prototype.replace = function(other) {
      var _this = this;
      if (isObservableSet(other)) {
        other = other.toJS();
      }
      transaction(function() {
        if (Array.isArray(other)) {
          _this.clear();
          other.forEach(function(value) {
            return _this.add(value);
          });
        } else if (isES6Set(other)) {
          _this.clear();
          other.forEach(function(value) {
            return _this.add(value);
          });
        } else if (other !== null && other !== void 0) {
          fail("Cannot initialize set from " + other);
        }
      });
      return this;
    };
    ObservableSet2.prototype.observe = function(listener, fireImmediately) {
      return registerListener(this, listener);
    };
    ObservableSet2.prototype.intercept = function(handler) {
      return registerInterceptor(this, handler);
    };
    ObservableSet2.prototype.toJS = function() {
      return new Set(this);
    };
    ObservableSet2.prototype.toString = function() {
      return this.name + "[ " + Array.from(this).join(", ") + " ]";
    };
    ObservableSet2.prototype[_a$1$1 = $mobx, Symbol.iterator] = function() {
      return this.values();
    };
    return ObservableSet2;
  }()
);
var isObservableSet = createInstanceofPredicate("ObservableSet", ObservableSet);
var ObservableObjectAdministration = (
  /** @class */
  function() {
    function ObservableObjectAdministration2(target2, values, name2, defaultEnhancer) {
      if (values === void 0) {
        values = /* @__PURE__ */ new Map();
      }
      this.target = target2;
      this.values = values;
      this.name = name2;
      this.defaultEnhancer = defaultEnhancer;
      this.keysAtom = new Atom(name2 + ".keys");
    }
    ObservableObjectAdministration2.prototype.read = function(key) {
      return this.values.get(key).get();
    };
    ObservableObjectAdministration2.prototype.write = function(key, newValue) {
      var instance = this.target;
      var observable2 = this.values.get(key);
      if (observable2 instanceof ComputedValue) {
        observable2.set(newValue);
        return;
      }
      if (hasInterceptors(this)) {
        var change = interceptChange(this, {
          type: "update",
          object: this.proxy || instance,
          name: key,
          newValue
        });
        if (!change)
          return;
        newValue = change.newValue;
      }
      newValue = observable2.prepareNewValue(newValue);
      if (newValue !== globalState.UNCHANGED) {
        var notify = hasListeners(this);
        var notifySpy = isSpyEnabled();
        var change = notify || notifySpy ? {
          type: "update",
          object: this.proxy || instance,
          oldValue: observable2.value,
          name: key,
          newValue
        } : null;
        if (notifySpy && false)
          spyReportStart(__assign$3(__assign$3({}, change), { name: this.name, key }));
        observable2.setNewValue(newValue);
        if (notify)
          notifyListeners(this, change);
      }
    };
    ObservableObjectAdministration2.prototype.has = function(key) {
      var map2 = this.pendingKeys || (this.pendingKeys = /* @__PURE__ */ new Map());
      var entry = map2.get(key);
      if (entry)
        return entry.get();
      else {
        var exists = !!this.values.get(key);
        entry = new ObservableValue(exists, referenceEnhancer, this.name + "." + stringifyKey(key) + "?", false);
        map2.set(key, entry);
        return entry.get();
      }
    };
    ObservableObjectAdministration2.prototype.addObservableProp = function(propName, newValue, enhancer) {
      if (enhancer === void 0) {
        enhancer = this.defaultEnhancer;
      }
      var target2 = this.target;
      if (hasInterceptors(this)) {
        var change = interceptChange(this, {
          object: this.proxy || target2,
          name: propName,
          type: "add",
          newValue
        });
        if (!change)
          return;
        newValue = change.newValue;
      }
      var observable2 = new ObservableValue(newValue, enhancer, this.name + "." + stringifyKey(propName), false);
      this.values.set(propName, observable2);
      newValue = observable2.value;
      Object.defineProperty(target2, propName, generateObservablePropConfig(propName));
      this.notifyPropertyAddition(propName, newValue);
    };
    ObservableObjectAdministration2.prototype.addComputedProp = function(propertyOwner, propName, options2) {
      var target2 = this.target;
      options2.name = options2.name || this.name + "." + stringifyKey(propName);
      this.values.set(propName, new ComputedValue(options2));
      if (propertyOwner === target2 || isPropertyConfigurable(propertyOwner, propName))
        Object.defineProperty(propertyOwner, propName, generateComputedPropConfig(propName));
    };
    ObservableObjectAdministration2.prototype.remove = function(key) {
      if (!this.values.has(key))
        return;
      var target2 = this.target;
      if (hasInterceptors(this)) {
        var change = interceptChange(this, {
          object: this.proxy || target2,
          name: key,
          type: "remove"
        });
        if (!change)
          return;
      }
      try {
        startBatch();
        var notify = hasListeners(this);
        var notifySpy = isSpyEnabled();
        var oldObservable = this.values.get(key);
        var oldValue = oldObservable && oldObservable.get();
        oldObservable && oldObservable.set(void 0);
        this.keysAtom.reportChanged();
        this.values.delete(key);
        if (this.pendingKeys) {
          var entry = this.pendingKeys.get(key);
          if (entry)
            entry.set(false);
        }
        delete this.target[key];
        var change = notify || notifySpy ? {
          type: "remove",
          object: this.proxy || target2,
          oldValue,
          name: key
        } : null;
        if (notifySpy && false)
          spyReportStart(__assign$3(__assign$3({}, change), { name: this.name, key }));
        if (notify)
          notifyListeners(this, change);
        if (notifySpy && false)
          spyReportEnd();
      } finally {
        endBatch();
      }
    };
    ObservableObjectAdministration2.prototype.illegalAccess = function(owner, propName) {
      console.warn("Property '" + propName + "' of '" + owner + "' was accessed through the prototype chain. Use 'decorate' instead to declare the prop or access it statically through it's owner");
    };
    ObservableObjectAdministration2.prototype.observe = function(callback, fireImmediately) {
      return registerListener(this, callback);
    };
    ObservableObjectAdministration2.prototype.intercept = function(handler) {
      return registerInterceptor(this, handler);
    };
    ObservableObjectAdministration2.prototype.notifyPropertyAddition = function(key, newValue) {
      var notify = hasListeners(this);
      var notifySpy = isSpyEnabled();
      var change = notify || notifySpy ? {
        type: "add",
        object: this.proxy || this.target,
        name: key,
        newValue
      } : null;
      if (notify)
        notifyListeners(this, change);
      if (this.pendingKeys) {
        var entry = this.pendingKeys.get(key);
        if (entry)
          entry.set(true);
      }
      this.keysAtom.reportChanged();
    };
    ObservableObjectAdministration2.prototype.getKeys = function() {
      var e_1, _a3;
      this.keysAtom.reportObserved();
      var res = [];
      try {
        for (var _b2 = __values$6(this.values), _c = _b2.next(); !_c.done; _c = _b2.next()) {
          var _d = __read$f(_c.value, 2), key = _d[0], value = _d[1];
          if (value instanceof ObservableValue)
            res.push(key);
        }
      } catch (e_1_1) {
        e_1 = { error: e_1_1 };
      } finally {
        try {
          if (_c && !_c.done && (_a3 = _b2.return))
            _a3.call(_b2);
        } finally {
          if (e_1)
            throw e_1.error;
        }
      }
      return res;
    };
    return ObservableObjectAdministration2;
  }()
);
function asObservableObject(target2, name2, defaultEnhancer) {
  if (name2 === void 0) {
    name2 = "";
  }
  if (defaultEnhancer === void 0) {
    defaultEnhancer = deepEnhancer;
  }
  if (Object.prototype.hasOwnProperty.call(target2, $mobx))
    return target2[$mobx];
  if (!isPlainObject$1(target2))
    name2 = (target2.constructor.name || "ObservableObject") + "@" + getNextId();
  if (!name2)
    name2 = "ObservableObject@" + getNextId();
  var adm = new ObservableObjectAdministration(target2, /* @__PURE__ */ new Map(), stringifyKey(name2), defaultEnhancer);
  addHiddenProp(target2, $mobx, adm);
  return adm;
}
var observablePropertyConfigs = /* @__PURE__ */ Object.create(null);
var computedPropertyConfigs = /* @__PURE__ */ Object.create(null);
function generateObservablePropConfig(propName) {
  return observablePropertyConfigs[propName] || (observablePropertyConfigs[propName] = {
    configurable: true,
    enumerable: true,
    get: function() {
      return this[$mobx].read(propName);
    },
    set: function(v2) {
      this[$mobx].write(propName, v2);
    }
  });
}
function getAdministrationForComputedPropOwner(owner) {
  var adm = owner[$mobx];
  if (!adm) {
    initializeInstance(owner);
    return owner[$mobx];
  }
  return adm;
}
function generateComputedPropConfig(propName) {
  return computedPropertyConfigs[propName] || (computedPropertyConfigs[propName] = {
    configurable: globalState.computedConfigurable,
    enumerable: false,
    get: function() {
      return getAdministrationForComputedPropOwner(this).read(propName);
    },
    set: function(v2) {
      getAdministrationForComputedPropOwner(this).write(propName, v2);
    }
  });
}
var isObservableObjectAdministration = createInstanceofPredicate("ObservableObjectAdministration", ObservableObjectAdministration);
function isObservableObject(thing) {
  if (isObject$1(thing)) {
    initializeInstance(thing);
    return isObservableObjectAdministration(thing[$mobx]);
  }
  return false;
}
function getAtom(thing, property) {
  if (typeof thing === "object" && thing !== null) {
    if (isObservableArray(thing)) {
      if (property !== void 0)
        fail(false);
      return thing[$mobx].atom;
    }
    if (isObservableSet(thing)) {
      return thing[$mobx];
    }
    if (isObservableMap(thing)) {
      var anyThing = thing;
      if (property === void 0)
        return anyThing._keysAtom;
      var observable2 = anyThing._data.get(property) || anyThing._hasMap.get(property);
      if (!observable2)
        fail(false);
      return observable2;
    }
    initializeInstance(thing);
    if (property && !thing[$mobx])
      thing[property];
    if (isObservableObject(thing)) {
      if (!property)
        return fail(false);
      var observable2 = thing[$mobx].values.get(property);
      if (!observable2)
        fail(false);
      return observable2;
    }
    if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {
      return thing;
    }
  } else if (typeof thing === "function") {
    if (isReaction(thing[$mobx])) {
      return thing[$mobx];
    }
  }
  return fail(false);
}
function getAdministration(thing, property) {
  if (!thing)
    fail("Expecting some object");
  if (property !== void 0)
    return getAdministration(getAtom(thing, property));
  if (isAtom(thing) || isComputedValue(thing) || isReaction(thing))
    return thing;
  if (isObservableMap(thing) || isObservableSet(thing))
    return thing;
  initializeInstance(thing);
  if (thing[$mobx])
    return thing[$mobx];
  fail(false);
}
function getDebugName(thing, property) {
  var named;
  if (property !== void 0)
    named = getAtom(thing, property);
  else if (isObservableObject(thing) || isObservableMap(thing) || isObservableSet(thing))
    named = getAdministration(thing);
  else
    named = getAtom(thing);
  return named.name;
}
var toString$1 = Object.prototype.toString;
function deepEqual(a2, b2, depth) {
  if (depth === void 0) {
    depth = -1;
  }
  return eq(a2, b2, depth);
}
function eq(a2, b2, depth, aStack, bStack) {
  if (a2 === b2)
    return a2 !== 0 || 1 / a2 === 1 / b2;
  if (a2 == null || b2 == null)
    return false;
  if (a2 !== a2)
    return b2 !== b2;
  var type2 = typeof a2;
  if (type2 !== "function" && type2 !== "object" && typeof b2 != "object")
    return false;
  var className = toString$1.call(a2);
  if (className !== toString$1.call(b2))
    return false;
  switch (className) {
    case "[object RegExp]":
    case "[object String]":
      return "" + a2 === "" + b2;
    case "[object Number]":
      if (+a2 !== +a2)
        return +b2 !== +b2;
      return +a2 === 0 ? 1 / +a2 === 1 / b2 : +a2 === +b2;
    case "[object Date]":
    case "[object Boolean]":
      return +a2 === +b2;
    case "[object Symbol]":
      return typeof Symbol !== "undefined" && Symbol.valueOf.call(a2) === Symbol.valueOf.call(b2);
    case "[object Map]":
    case "[object Set]":
      if (depth >= 0) {
        depth++;
      }
      break;
  }
  a2 = unwrap(a2);
  b2 = unwrap(b2);
  var areArrays = className === "[object Array]";
  if (!areArrays) {
    if (typeof a2 != "object" || typeof b2 != "object")
      return false;
    var aCtor = a2.constructor, bCtor = b2.constructor;
    if (aCtor !== bCtor && !(typeof aCtor === "function" && aCtor instanceof aCtor && typeof bCtor === "function" && bCtor instanceof bCtor) && ("constructor" in a2 && "constructor" in b2)) {
      return false;
    }
  }
  if (depth === 0) {
    return false;
  } else if (depth < 0) {
    depth = -1;
  }
  aStack = aStack || [];
  bStack = bStack || [];
  var length2 = aStack.length;
  while (length2--) {
    if (aStack[length2] === a2)
      return bStack[length2] === b2;
  }
  aStack.push(a2);
  bStack.push(b2);
  if (areArrays) {
    length2 = a2.length;
    if (length2 !== b2.length)
      return false;
    while (length2--) {
      if (!eq(a2[length2], b2[length2], depth - 1, aStack, bStack))
        return false;
    }
  } else {
    var keys = Object.keys(a2);
    var key = void 0;
    length2 = keys.length;
    if (Object.keys(b2).length !== length2)
      return false;
    while (length2--) {
      key = keys[length2];
      if (!(has$1(b2, key) && eq(a2[key], b2[key], depth - 1, aStack, bStack)))
        return false;
    }
  }
  aStack.pop();
  bStack.pop();
  return true;
}
function unwrap(a2) {
  if (isObservableArray(a2))
    return a2.slice();
  if (isES6Map(a2) || isObservableMap(a2))
    return Array.from(a2.entries());
  if (isES6Set(a2) || isObservableSet(a2))
    return Array.from(a2.entries());
  return a2;
}
function has$1(a2, key) {
  return Object.prototype.hasOwnProperty.call(a2, key);
}
function makeIterable(iterator2) {
  iterator2[Symbol.iterator] = getSelf;
  return iterator2;
}
function getSelf() {
  return this;
}
if (typeof Proxy === "undefined" || typeof Symbol === "undefined") {
  throw new Error("[mobx] MobX 5+ requires Proxy and Symbol objects. If your environment doesn't support Symbol or Proxy objects, please downgrade to MobX 4. For React Native Android, consider upgrading JSCore.");
}
try {
  "production";
} catch (e) {
  var g = getGlobal$1();
  if (typeof process === "undefined")
    g.process = {};
  g.process.env = {};
}
(function() {
  function testCodeMinification() {
  }
  if (testCodeMinification.name !== "testCodeMinification" && false) {
    var varName = ["process", "env", "NODE_ENV"].join(".");
    console.warn("[mobx] you are running a minified build, but '" + varName + "' was not set to 'production' in your bundler. This results in an unnecessarily large and slow bundle");
  }
})();
if (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === "object") {
  __MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({
    spy,
    extras: {
      getDebugName
    },
    $mobx
  });
}
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __decorateClass = (decorators, target2, key, kind) => {
  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target2, key) : target2;
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
    if (decorator = decorators[i])
      result = (kind ? decorator(target2, key, result) : decorator(result)) || result;
  if (kind && result)
    __defProp(target2, key, result);
  return result;
};
const defaults = {
  url: "",
  component: {
    height: 500,
    width: 500
  },
  e2e: {
    height: 660,
    width: 1e3
  }
};
class MobxRunnerStore {
  constructor(testingType) {
    this.specs = [];
    this.isLoading = true;
    this.canSaveStudioLogs = false;
    this.width = defaults[testingType].width;
    this.height = defaults[testingType].height;
  }
  setCanSaveStudioLogs(canSave) {
    this.canSaveStudioLogs = canSave;
  }
  setSpec(spec) {
    this.spec = spec;
    this.specRunId = nanoid();
  }
  checkCurrentSpecStillExists(specs) {
    const newSpecsAbsolutes = new Set(specs.map((spec) => spec.absolute));
    this.specs.forEach((oldSpec) => {
      var _a3;
      if (!newSpecsAbsolutes.has(oldSpec.absolute) && ((_a3 = this.spec) == null ? void 0 : _a3.absolute) === oldSpec.absolute) {
        this.spec = void 0;
      }
    });
  }
  setSpecs(specs) {
    this.checkCurrentSpecStillExists(specs);
    this.specs = specs;
  }
  setIsLoading(isLoading) {
    this.isLoading = isLoading;
  }
  updateDimensions(width, height) {
    this.height = height;
    this.width = width;
  }
}
__decorateClass([
  observable
], MobxRunnerStore.prototype, "spec", 2);
__decorateClass([
  observable
], MobxRunnerStore.prototype, "specs", 2);
__decorateClass([
  observable
], MobxRunnerStore.prototype, "specRunId", 2);
__decorateClass([
  observable
], MobxRunnerStore.prototype, "isLoading", 2);
__decorateClass([
  observable
], MobxRunnerStore.prototype, "width", 2);
__decorateClass([
  observable
], MobxRunnerStore.prototype, "height", 2);
__decorateClass([
  observable
], MobxRunnerStore.prototype, "automation", 2);
__decorateClass([
  observable
], MobxRunnerStore.prototype, "canSaveStudioLogs", 2);
__decorateClass([
  action
], MobxRunnerStore.prototype, "setCanSaveStudioLogs", 1);
__decorateClass([
  action
], MobxRunnerStore.prototype, "setSpec", 1);
__decorateClass([
  action
], MobxRunnerStore.prototype, "checkCurrentSpecStillExists", 1);
__decorateClass([
  action
], MobxRunnerStore.prototype, "setSpecs", 1);
__decorateClass([
  action
], MobxRunnerStore.prototype, "setIsLoading", 1);
__decorateClass([
  action
], MobxRunnerStore.prototype, "updateDimensions", 1);
function getMobxRunnerStore() {
  if (!mobxRunnerStore) {
    throw Error("mobxRunnerStore is undefined! Need to call initializeMobxStore");
  }
  return mobxRunnerStore;
}
const initializeMobxStore = (testingType) => {
  mobxRunnerStore = new MobxRunnerStore(testingType);
  return mobxRunnerStore;
};
let mobxRunnerStore;
const useSelectorPlaygroundStore = defineStore({
  id: "selector-playground-store",
  state: () => {
    return {
      show: false,
      getSelector: "body",
      containsSelector: "Hello, World",
      isShowingHighlight: false,
      isOpen: false,
      isEnabled: false,
      isValid: true,
      numElements: 0,
      method: "get"
    };
  },
  actions: {
    setShow(show) {
      this.show = show;
    },
    toggleMethod() {
      this.method = this.method === "get" ? "contains" : "get";
    },
    setEnabled(isEnabled) {
      this.isEnabled = isEnabled;
      if (!this.isEnabled) {
        this.isShowingHighlight = false;
      }
    },
    toggleOpen() {
      this.setOpen(!this.isOpen);
    },
    setOpen(isOpen) {
      this.isOpen = isOpen;
      this.setEnabled(this.isOpen);
    },
    setSelector(selector) {
      if (this.method === "get") {
        this.getSelector = selector;
      } else {
        this.containsSelector = selector;
      }
    },
    setShowingHighlight(isShowingHighlight) {
      this.isShowingHighlight = isShowingHighlight;
    },
    setNumElements(numElements) {
      this.numElements = numElements;
    },
    setValidity(isValid) {
      this.isValid = isValid;
    },
    setMethod(method) {
      this.method = method;
    },
    resetMethod() {
      this.method = "get";
    }
  },
  getters: {
    selector(state) {
      return state.method === "get" ? state.getSelector : state.containsSelector;
    },
    infoHelp(state) {
      if (!state.isValid) {
        return "Invalid selector";
      }
      return state.numElements === 1 ? "1 matched element" : `${state.numElements} matched elements`;
    },
    command(state) {
      return `cy.${state.method}('${this.selector}')`;
    }
  }
});
const createPinia = () => {
  return createPinia$1();
};
const index = "";
const RUNNER_ID = "unified-runner";
const REPORTER_ID = "unified-reporter";
function getRunnerElement() {
  const runnerElement = document.getElementById(RUNNER_ID);
  if (!runnerElement) {
    throw Error(`Expected runner element with #${RUNNER_ID} but did not find it.`);
  }
  return runnerElement;
}
function getReporterElement() {
  return document.getElementById(REPORTER_ID);
}
function empty(el2) {
  while (el2.lastChild) {
    if (el2 && el2.firstChild) {
      el2.removeChild(el2.firstChild);
    }
  }
}
const togglePlayground = (autIframe) => {
  const selectorPlaygroundStore = useSelectorPlaygroundStore();
  if (selectorPlaygroundStore.show) {
    selectorPlaygroundStore.setShow(false);
    autIframe.toggleSelectorPlayground(false);
    selectorPlaygroundStore.setEnabled(false);
    selectorPlaygroundStore.setShowingHighlight(false);
    autIframe.toggleSelectorHighlight(false);
  } else {
    selectorPlaygroundStore.setShow(true);
    autIframe.toggleSelectorPlayground(true);
    selectorPlaygroundStore.setEnabled(true);
    selectorPlaygroundStore.setShowingHighlight(true);
    autIframe.toggleSelectorHighlight(true);
  }
};
let hasInitializeReporter = false;
function setInitializedReporter(val) {
  hasInitializeReporter = val;
}
async function unmountReporter() {
  window.UnifiedRunner.ReactDOM.unmountComponentAtNode(getReporterElement());
}
async function resetReporter() {
  if (hasInitializeReporter) {
    await getEventManager().resetReporter();
  }
}
function setupReporter() {
  const $reporterRoot = getReporterElement();
  if (hasInitializeReporter || !$reporterRoot)
    return;
  renderReporter($reporterRoot, getMobxRunnerStore(), getEventManager());
  hasInitializeReporter = true;
}
function renderReporter(root2, store, eventManager) {
  const runnerUiStore = useRunnerUiStore();
  const specsStore = useSpecStore();
  const config2 = getRunnerConfigFromWindow();
  const reporter = window.UnifiedRunner.React.createElement(window.UnifiedRunner.Reporter, {
    runMode: "single",
    runner: eventManager.reporterBus,
    autoScrollingEnabled: runnerUiStore.autoScrollingEnabled,
    isSpecsListOpen: runnerUiStore.isSpecsListOpen,
    error: null,
    resetStatsOnSpecChange: true,
    // Studio can only be enabled for e2e testing
    studioEnabled: window.__CYPRESS_TESTING_TYPE__ === "e2e" && config2.experimentalStudio,
    runnerStore: store,
    testFilter: specsStore.testFilter
  });
  window.UnifiedRunner.ReactDOM.render(reporter, root2);
}
const UnifiedReporterAPI = {
  unmountReporter,
  setupReporter,
  hasInitializeReporter,
  resetReporter,
  setInitializedReporter
};
const useSnapshotStore = defineStore({
  id: "snapshots",
  state: () => {
    return {
      messageTitle: void 0,
      isSnapshotPinned: false,
      snapshot: void 0,
      snapshotProps: void 0
    };
  },
  actions: {
    setSnapshotPinned(isSnapshotPinned) {
      this.isSnapshotPinned = isSnapshotPinned;
    },
    pinSnapshot(snapshotProps) {
      this.messageTitle = defaultMessages.runner.snapshot.pinnedTitle;
      this.isSnapshotPinned = true;
      this.snapshotProps = snapshotProps;
      this.snapshot = {
        showingHighlights: true,
        stateIndex: 0
      };
    },
    clearMessage() {
      this.messageTitle = void 0;
    },
    unpinSnapshot() {
      this.$reset();
    },
    showSnapshot(messageDescription = defaultMessages.runner.snapshot.defaultTitle) {
      this.messageTitle = messageDescription;
    },
    toggleHighlights(autIframe) {
      if (!this.snapshot) {
        return;
      }
      this.snapshot.showingHighlights = !this.snapshot.showingHighlights;
      this.updateHighlighting(autIframe);
    },
    updateHighlighting(autIframe) {
      if (!this.snapshot) {
        throw Error("Cannot update highlighting if this.snapshot not defined");
      }
      if (this.snapshot.showingHighlights && this.snapshotProps) {
        const snapshot = this.snapshotProps.snapshots[this.snapshot.stateIndex];
        autIframe.highlightEl(snapshot, this.snapshotProps);
      } else {
        autIframe.removeHighlights();
      }
    },
    changeState(index2, autIframe) {
      var _a3;
      if (!this.snapshot) {
        throw Error("Cannot change state without first assigning this.snapshot");
      }
      const snapshot = (_a3 = this.snapshotProps) == null ? void 0 : _a3.snapshots[index2];
      if (!snapshot) {
        throw Error(`Could not find snapshot index ${index2}`);
      }
      this.snapshot.stateIndex = index2;
      autIframe.restoreDom(snapshot);
      this.updateHighlighting(autIframe);
    },
    setTestsRunningError() {
      this.messageTitle = defaultMessages.runner.snapshot.testsRunningError;
    },
    setMessage(messageTitle) {
      this.messageTitle = messageTitle;
    },
    setMissingSnapshotMessage() {
      this.messageTitle = defaultMessages.runner.snapshot.snapshotMissingError;
    }
  }
});
var top = "top";
var bottom = "bottom";
var right = "right";
var left = "left";
var auto = "auto";
var basePlacements = [top, bottom, right, left];
var start = "start";
var end = "end";
var clippingParents = "clippingParents";
var viewport = "viewport";
var popper = "popper";
var reference2 = "reference";
var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) {
  return acc.concat([placement + "-" + start, placement + "-" + end]);
}, []);
var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) {
  return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
}, []);
var beforeRead = "beforeRead";
var read$1 = "read";
var afterRead = "afterRead";
var beforeMain = "beforeMain";
var main = "main";
var afterMain = "afterMain";
var beforeWrite = "beforeWrite";
var write = "write";
var afterWrite = "afterWrite";
var modifierPhases = [beforeRead, read$1, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
function getNodeName(element) {
  return element ? (element.nodeName || "").toLowerCase() : null;
}
function getWindow(node) {
  if (node == null) {
    return window;
  }
  if (node.toString() !== "[object Window]") {
    var ownerDocument = node.ownerDocument;
    return ownerDocument ? ownerDocument.defaultView || window : window;
  }
  return node;
}
function isElement(node) {
  var OwnElement = getWindow(node).Element;
  return node instanceof OwnElement || node instanceof Element;
}
function isHTMLElement(node) {
  var OwnElement = getWindow(node).HTMLElement;
  return node instanceof OwnElement || node instanceof HTMLElement;
}
function isShadowRoot(node) {
  if (typeof ShadowRoot === "undefined") {
    return false;
  }
  var OwnElement = getWindow(node).ShadowRoot;
  return node instanceof OwnElement || node instanceof ShadowRoot;
}
function applyStyles(_ref) {
  var state = _ref.state;
  Object.keys(state.elements).forEach(function(name2) {
    var style = state.styles[name2] || {};
    var attributes = state.attributes[name2] || {};
    var element = state.elements[name2];
    if (!isHTMLElement(element) || !getNodeName(element)) {
      return;
    }
    Object.assign(element.style, style);
    Object.keys(attributes).forEach(function(name3) {
      var value = attributes[name3];
      if (value === false) {
        element.removeAttribute(name3);
      } else {
        element.setAttribute(name3, value === true ? "" : value);
      }
    });
  });
}
function effect$2(_ref2) {
  var state = _ref2.state;
  var initialStyles = {
    popper: {
      position: state.options.strategy,
      left: "0",
      top: "0",
      margin: "0"
    },
    arrow: {
      position: "absolute"
    },
    reference: {}
  };
  Object.assign(state.elements.popper.style, initialStyles.popper);
  state.styles = initialStyles;
  if (state.elements.arrow) {
    Object.assign(state.elements.arrow.style, initialStyles.arrow);
  }
  return function() {
    Object.keys(state.elements).forEach(function(name2) {
      var element = state.elements[name2];
      var attributes = state.attributes[name2] || {};
      var styleProperties = Object.keys(state.styles.hasOwnProperty(name2) ? state.styles[name2] : initialStyles[name2]);
      var style = styleProperties.reduce(function(style2, property) {
        style2[property] = "";
        return style2;
      }, {});
      if (!isHTMLElement(element) || !getNodeName(element)) {
        return;
      }
      Object.assign(element.style, style);
      Object.keys(attributes).forEach(function(attribute2) {
        element.removeAttribute(attribute2);
      });
    });
  };
}
const applyStyles$1 = {
  name: "applyStyles",
  enabled: true,
  phase: "write",
  fn: applyStyles,
  effect: effect$2,
  requires: ["computeStyles"]
};
function getBasePlacement(placement) {
  return placement.split("-")[0];
}
var max = Math.max;
var min = Math.min;
var round = Math.round;
function getUAString() {
  var uaData = navigator.userAgentData;
  if (uaData != null && uaData.brands) {
    return uaData.brands.map(function(item) {
      return item.brand + "/" + item.version;
    }).join(" ");
  }
  return navigator.userAgent;
}
function isLayoutViewport() {
  return !/^((?!chrome|android).)*safari/i.test(getUAString());
}
function getBoundingClientRect(element, includeScale, isFixedStrategy) {
  if (includeScale === void 0) {
    includeScale = false;
  }
  if (isFixedStrategy === void 0) {
    isFixedStrategy = false;
  }
  var clientRect = element.getBoundingClientRect();
  var scaleX = 1;
  var scaleY = 1;
  if (includeScale && isHTMLElement(element)) {
    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
  }
  var _ref = isElement(element) ? getWindow(element) : window, visualViewport = _ref.visualViewport;
  var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
  var x2 = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
  var y2 = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
  var width = clientRect.width / scaleX;
  var height = clientRect.height / scaleY;
  return {
    width,
    height,
    top: y2,
    right: x2 + width,
    bottom: y2 + height,
    left: x2,
    x: x2,
    y: y2
  };
}
function getLayoutRect(element) {
  var clientRect = getBoundingClientRect(element);
  var width = element.offsetWidth;
  var height = element.offsetHeight;
  if (Math.abs(clientRect.width - width) <= 1) {
    width = clientRect.width;
  }
  if (Math.abs(clientRect.height - height) <= 1) {
    height = clientRect.height;
  }
  return {
    x: element.offsetLeft,
    y: element.offsetTop,
    width,
    height
  };
}
function contains(parent, child) {
  var rootNode = child.getRootNode && child.getRootNode();
  if (parent.contains(child)) {
    return true;
  } else if (rootNode && isShadowRoot(rootNode)) {
    var next = child;
    do {
      if (next && parent.isSameNode(next)) {
        return true;
      }
      next = next.parentNode || next.host;
    } while (next);
  }
  return false;
}
function getComputedStyle$1(element) {
  return getWindow(element).getComputedStyle(element);
}
function isTableElement(element) {
  return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0;
}
function getDocumentElement(element) {
  return ((isElement(element) ? element.ownerDocument : (
    // $FlowFixMe[prop-missing]
    element.document
  )) || window.document).documentElement;
}
function getParentNode(element) {
  if (getNodeName(element) === "html") {
    return element;
  }
  return (
    // this is a quicker (but less type safe) way to save quite some bytes from the bundle
    // $FlowFixMe[incompatible-return]
    // $FlowFixMe[prop-missing]
    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node
    element.parentNode || // DOM Element detected
    (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected
    // $FlowFixMe[incompatible-call]: HTMLElement is a Node
    getDocumentElement(element)
  );
}
function getTrueOffsetParent(element) {
  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837
  getComputedStyle$1(element).position === "fixed") {
    return null;
  }
  return element.offsetParent;
}
function getContainingBlock(element) {
  var isFirefox = /firefox/i.test(getUAString());
  var isIE2 = /Trident/i.test(getUAString());
  if (isIE2 && isHTMLElement(element)) {
    var elementCss = getComputedStyle$1(element);
    if (elementCss.position === "fixed") {
      return null;
    }
  }
  var currentNode = getParentNode(element);
  if (isShadowRoot(currentNode)) {
    currentNode = currentNode.host;
  }
  while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) {
    var css = getComputedStyle$1(currentNode);
    if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") {
      return currentNode;
    } else {
      currentNode = currentNode.parentNode;
    }
  }
  return null;
}
function getOffsetParent(element) {
  var window2 = getWindow(element);
  var offsetParent = getTrueOffsetParent(element);
  while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === "static") {
    offsetParent = getTrueOffsetParent(offsetParent);
  }
  if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle$1(offsetParent).position === "static")) {
    return window2;
  }
  return offsetParent || getContainingBlock(element) || window2;
}
function getMainAxisFromPlacement(placement) {
  return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y";
}
function within(min$12, value, max$12) {
  return max(min$12, min(value, max$12));
}
function withinMaxClamp(min2, value, max2) {
  var v2 = within(min2, value, max2);
  return v2 > max2 ? max2 : v2;
}
function getFreshSideObject() {
  return {
    top: 0,
    right: 0,
    bottom: 0,
    left: 0
  };
}
function mergePaddingObject(paddingObject) {
  return Object.assign({}, getFreshSideObject(), paddingObject);
}
function expandToHashMap(value, keys) {
  return keys.reduce(function(hashMap, key) {
    hashMap[key] = value;
    return hashMap;
  }, {});
}
var toPaddingObject = function toPaddingObject2(padding, state) {
  padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, {
    placement: state.placement
  })) : padding;
  return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
};
function arrow(_ref) {
  var _state$modifiersData$;
  var state = _ref.state, name2 = _ref.name, options2 = _ref.options;
  var arrowElement = state.elements.arrow;
  var popperOffsets2 = state.modifiersData.popperOffsets;
  var basePlacement = getBasePlacement(state.placement);
  var axis = getMainAxisFromPlacement(basePlacement);
  var isVertical = [left, right].indexOf(basePlacement) >= 0;
  var len = isVertical ? "height" : "width";
  if (!arrowElement || !popperOffsets2) {
    return;
  }
  var paddingObject = toPaddingObject(options2.padding, state);
  var arrowRect = getLayoutRect(arrowElement);
  var minProp = axis === "y" ? top : left;
  var maxProp = axis === "y" ? bottom : right;
  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len];
  var startDiff = popperOffsets2[axis] - state.rects.reference[axis];
  var arrowOffsetParent = getOffsetParent(arrowElement);
  var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
  var centerToReference = endDiff / 2 - startDiff / 2;
  var min2 = paddingObject[minProp];
  var max2 = clientSize - arrowRect[len] - paddingObject[maxProp];
  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
  var offset2 = within(min2, center, max2);
  var axisProp = axis;
  state.modifiersData[name2] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$);
}
function effect$1(_ref2) {
  var state = _ref2.state, options2 = _ref2.options;
  var _options$element = options2.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element;
  if (arrowElement == null) {
    return;
  }
  if (typeof arrowElement === "string") {
    arrowElement = state.elements.popper.querySelector(arrowElement);
    if (!arrowElement) {
      return;
    }
  }
  if (!contains(state.elements.popper, arrowElement)) {
    return;
  }
  state.elements.arrow = arrowElement;
}
const arrow$1 = {
  name: "arrow",
  enabled: true,
  phase: "main",
  fn: arrow,
  effect: effect$1,
  requires: ["popperOffsets"],
  requiresIfExists: ["preventOverflow"]
};
function getVariation(placement) {
  return placement.split("-")[1];
}
var unsetSides = {
  top: "auto",
  right: "auto",
  bottom: "auto",
  left: "auto"
};
function roundOffsetsByDPR(_ref) {
  var x2 = _ref.x, y2 = _ref.y;
  var win = window;
  var dpr = win.devicePixelRatio || 1;
  return {
    x: round(x2 * dpr) / dpr || 0,
    y: round(y2 * dpr) / dpr || 0
  };
}
function mapToStyles(_ref2) {
  var _Object$assign2;
  var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;
  var _offsets$x = offsets.x, x2 = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y2 = _offsets$y === void 0 ? 0 : _offsets$y;
  var _ref3 = typeof roundOffsets === "function" ? roundOffsets({
    x: x2,
    y: y2
  }) : {
    x: x2,
    y: y2
  };
  x2 = _ref3.x;
  y2 = _ref3.y;
  var hasX = offsets.hasOwnProperty("x");
  var hasY = offsets.hasOwnProperty("y");
  var sideX = left;
  var sideY = top;
  var win = window;
  if (adaptive) {
    var offsetParent = getOffsetParent(popper2);
    var heightProp = "clientHeight";
    var widthProp = "clientWidth";
    if (offsetParent === getWindow(popper2)) {
      offsetParent = getDocumentElement(popper2);
      if (getComputedStyle$1(offsetParent).position !== "static" && position === "absolute") {
        heightProp = "scrollHeight";
        widthProp = "scrollWidth";
      }
    }
    offsetParent = offsetParent;
    if (placement === top || (placement === left || placement === right) && variation === end) {
      sideY = bottom;
      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : (
        // $FlowFixMe[prop-missing]
        offsetParent[heightProp]
      );
      y2 -= offsetY - popperRect.height;
      y2 *= gpuAcceleration ? 1 : -1;
    }
    if (placement === left || (placement === top || placement === bottom) && variation === end) {
      sideX = right;
      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : (
        // $FlowFixMe[prop-missing]
        offsetParent[widthProp]
      );
      x2 -= offsetX - popperRect.width;
      x2 *= gpuAcceleration ? 1 : -1;
    }
  }
  var commonStyles = Object.assign({
    position
  }, adaptive && unsetSides);
  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
    x: x2,
    y: y2
  }) : {
    x: x2,
    y: y2
  };
  x2 = _ref4.x;
  y2 = _ref4.y;
  if (gpuAcceleration) {
    var _Object$assign;
    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x2 + "px, " + y2 + "px)" : "translate3d(" + x2 + "px, " + y2 + "px, 0)", _Object$assign));
  }
  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y2 + "px" : "", _Object$assign2[sideX] = hasX ? x2 + "px" : "", _Object$assign2.transform = "", _Object$assign2));
}
function computeStyles(_ref5) {
  var state = _ref5.state, options2 = _ref5.options;
  var _options$gpuAccelerat = options2.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options2.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options2.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
  var commonStyles = {
    placement: getBasePlacement(state.placement),
    variation: getVariation(state.placement),
    popper: state.elements.popper,
    popperRect: state.rects.popper,
    gpuAcceleration,
    isFixed: state.options.strategy === "fixed"
  };
  if (state.modifiersData.popperOffsets != null) {
    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
      offsets: state.modifiersData.popperOffsets,
      position: state.options.strategy,
      adaptive,
      roundOffsets
    })));
  }
  if (state.modifiersData.arrow != null) {
    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
      offsets: state.modifiersData.arrow,
      position: "absolute",
      adaptive: false,
      roundOffsets
    })));
  }
  state.attributes.popper = Object.assign({}, state.attributes.popper, {
    "data-popper-placement": state.placement
  });
}
const computeStyles$1 = {
  name: "computeStyles",
  enabled: true,
  phase: "beforeWrite",
  fn: computeStyles,
  data: {}
};
var passive = {
  passive: true
};
function effect(_ref) {
  var state = _ref.state, instance = _ref.instance, options2 = _ref.options;
  var _options$scroll = options2.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options2.resize, resize = _options$resize === void 0 ? true : _options$resize;
  var window2 = getWindow(state.elements.popper);
  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
  if (scroll) {
    scrollParents.forEach(function(scrollParent) {
      scrollParent.addEventListener("scroll", instance.update, passive);
    });
  }
  if (resize) {
    window2.addEventListener("resize", instance.update, passive);
  }
  return function() {
    if (scroll) {
      scrollParents.forEach(function(scrollParent) {
        scrollParent.removeEventListener("scroll", instance.update, passive);
      });
    }
    if (resize) {
      window2.removeEventListener("resize", instance.update, passive);
    }
  };
}
const eventListeners = {
  name: "eventListeners",
  enabled: true,
  phase: "write",
  fn: function fn() {
  },
  effect,
  data: {}
};
var hash$1 = {
  left: "right",
  right: "left",
  bottom: "top",
  top: "bottom"
};
function getOppositePlacement(placement) {
  return placement.replace(/left|right|bottom|top/g, function(matched) {
    return hash$1[matched];
  });
}
var hash = {
  start: "end",
  end: "start"
};
function getOppositeVariationPlacement(placement) {
  return placement.replace(/start|end/g, function(matched) {
    return hash[matched];
  });
}
function getWindowScroll(node) {
  var win = getWindow(node);
  var scrollLeft = win.pageXOffset;
  var scrollTop = win.pageYOffset;
  return {
    scrollLeft,
    scrollTop
  };
}
function getWindowScrollBarX(element) {
  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
}
function getViewportRect(element, strategy) {
  var win = getWindow(element);
  var html = getDocumentElement(element);
  var visualViewport = win.visualViewport;
  var width = html.clientWidth;
  var height = html.clientHeight;
  var x2 = 0;
  var y2 = 0;
  if (visualViewport) {
    width = visualViewport.width;
    height = visualViewport.height;
    var layoutViewport = isLayoutViewport();
    if (layoutViewport || !layoutViewport && strategy === "fixed") {
      x2 = visualViewport.offsetLeft;
      y2 = visualViewport.offsetTop;
    }
  }
  return {
    width,
    height,
    x: x2 + getWindowScrollBarX(element),
    y: y2
  };
}
function getDocumentRect(element) {
  var _element$ownerDocumen;
  var html = getDocumentElement(element);
  var winScroll = getWindowScroll(element);
  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
  var x2 = -winScroll.scrollLeft + getWindowScrollBarX(element);
  var y2 = -winScroll.scrollTop;
  if (getComputedStyle$1(body || html).direction === "rtl") {
    x2 += max(html.clientWidth, body ? body.clientWidth : 0) - width;
  }
  return {
    width,
    height,
    x: x2,
    y: y2
  };
}
function isScrollParent(element) {
  var _getComputedStyle = getComputedStyle$1(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;
  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
}
function getScrollParent(node) {
  if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) {
    return node.ownerDocument.body;
  }
  if (isHTMLElement(node) && isScrollParent(node)) {
    return node;
  }
  return getScrollParent(getParentNode(node));
}
function listScrollParents(element, list3) {
  var _element$ownerDocumen;
  if (list3 === void 0) {
    list3 = [];
  }
  var scrollParent = getScrollParent(element);
  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
  var win = getWindow(scrollParent);
  var target2 = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
  var updatedList = list3.concat(target2);
  return isBody ? updatedList : (
    // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
    updatedList.concat(listScrollParents(getParentNode(target2)))
  );
}
function rectToClientRect(rect2) {
  return Object.assign({}, rect2, {
    left: rect2.x,
    top: rect2.y,
    right: rect2.x + rect2.width,
    bottom: rect2.y + rect2.height
  });
}
function getInnerBoundingClientRect(element, strategy) {
  var rect2 = getBoundingClientRect(element, false, strategy === "fixed");
  rect2.top = rect2.top + element.clientTop;
  rect2.left = rect2.left + element.clientLeft;
  rect2.bottom = rect2.top + element.clientHeight;
  rect2.right = rect2.left + element.clientWidth;
  rect2.width = element.clientWidth;
  rect2.height = element.clientHeight;
  rect2.x = rect2.left;
  rect2.y = rect2.top;
  return rect2;
}
function getClientRectFromMixedType(element, clippingParent, strategy) {
  return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
}
function getClippingParents(element) {
  var clippingParents2 = listScrollParents(getParentNode(element));
  var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle$1(element).position) >= 0;
  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
  if (!isElement(clipperElement)) {
    return [];
  }
  return clippingParents2.filter(function(clippingParent) {
    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body";
  });
}
function getClippingRect(element, boundary, rootBoundary, strategy) {
  var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary);
  var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]);
  var firstClippingParent = clippingParents2[0];
  var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) {
    var rect2 = getClientRectFromMixedType(element, clippingParent, strategy);
    accRect.top = max(rect2.top, accRect.top);
    accRect.right = min(rect2.right, accRect.right);
    accRect.bottom = min(rect2.bottom, accRect.bottom);
    accRect.left = max(rect2.left, accRect.left);
    return accRect;
  }, getClientRectFromMixedType(element, firstClippingParent, strategy));
  clippingRect.width = clippingRect.right - clippingRect.left;
  clippingRect.height = clippingRect.bottom - clippingRect.top;
  clippingRect.x = clippingRect.left;
  clippingRect.y = clippingRect.top;
  return clippingRect;
}
function computeOffsets(_ref) {
  var reference3 = _ref.reference, element = _ref.element, placement = _ref.placement;
  var basePlacement = placement ? getBasePlacement(placement) : null;
  var variation = placement ? getVariation(placement) : null;
  var commonX = reference3.x + reference3.width / 2 - element.width / 2;
  var commonY = reference3.y + reference3.height / 2 - element.height / 2;
  var offsets;
  switch (basePlacement) {
    case top:
      offsets = {
        x: commonX,
        y: reference3.y - element.height
      };
      break;
    case bottom:
      offsets = {
        x: commonX,
        y: reference3.y + reference3.height
      };
      break;
    case right:
      offsets = {
        x: reference3.x + reference3.width,
        y: commonY
      };
      break;
    case left:
      offsets = {
        x: reference3.x - element.width,
        y: commonY
      };
      break;
    default:
      offsets = {
        x: reference3.x,
        y: reference3.y
      };
  }
  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
  if (mainAxis != null) {
    var len = mainAxis === "y" ? "height" : "width";
    switch (variation) {
      case start:
        offsets[mainAxis] = offsets[mainAxis] - (reference3[len] / 2 - element[len] / 2);
        break;
      case end:
        offsets[mainAxis] = offsets[mainAxis] + (reference3[len] / 2 - element[len] / 2);
        break;
    }
  }
  return offsets;
}
function detectOverflow(state, options2) {
  if (options2 === void 0) {
    options2 = {};
  }
  var _options = options2, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;
  var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
  var altContext = elementContext === popper ? reference2 : popper;
  var popperRect = state.rects.popper;
  var element = state.elements[altBoundary ? altContext : elementContext];
  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);
  var referenceClientRect = getBoundingClientRect(state.elements.reference);
  var popperOffsets2 = computeOffsets({
    reference: referenceClientRect,
    element: popperRect,
    strategy: "absolute",
    placement
  });
  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2));
  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect;
  var overflowOffsets = {
    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
    right: elementClientRect.right - clippingClientRect.right + paddingObject.right
  };
  var offsetData = state.modifiersData.offset;
  if (elementContext === popper && offsetData) {
    var offset2 = offsetData[placement];
    Object.keys(overflowOffsets).forEach(function(key) {
      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
      var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x";
      overflowOffsets[key] += offset2[axis] * multiply;
    });
  }
  return overflowOffsets;
}
function computeAutoPlacement(state, options2) {
  if (options2 === void 0) {
    options2 = {};
  }
  var _options = options2, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
  var variation = getVariation(placement);
  var placements$12 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) {
    return getVariation(placement2) === variation;
  }) : basePlacements;
  var allowedPlacements = placements$12.filter(function(placement2) {
    return allowedAutoPlacements.indexOf(placement2) >= 0;
  });
  if (allowedPlacements.length === 0) {
    allowedPlacements = placements$12;
  }
  var overflows = allowedPlacements.reduce(function(acc, placement2) {
    acc[placement2] = detectOverflow(state, {
      placement: placement2,
      boundary,
      rootBoundary,
      padding
    })[getBasePlacement(placement2)];
    return acc;
  }, {});
  return Object.keys(overflows).sort(function(a2, b2) {
    return overflows[a2] - overflows[b2];
  });
}
function getExpandedFallbackPlacements(placement) {
  if (getBasePlacement(placement) === auto) {
    return [];
  }
  var oppositePlacement = getOppositePlacement(placement);
  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
}
function flip(_ref) {
  var state = _ref.state, options2 = _ref.options, name2 = _ref.name;
  if (state.modifiersData[name2]._skip) {
    return;
  }
  var _options$mainAxis = options2.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options2.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options2.fallbackPlacements, padding = options2.padding, boundary = options2.boundary, rootBoundary = options2.rootBoundary, altBoundary = options2.altBoundary, _options$flipVariatio = options2.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options2.allowedAutoPlacements;
  var preferredPlacement = state.options.placement;
  var basePlacement = getBasePlacement(preferredPlacement);
  var isBasePlacement = basePlacement === preferredPlacement;
  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
  var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) {
    return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, {
      placement: placement2,
      boundary,
      rootBoundary,
      padding,
      flipVariations,
      allowedAutoPlacements
    }) : placement2);
  }, []);
  var referenceRect = state.rects.reference;
  var popperRect = state.rects.popper;
  var checksMap = /* @__PURE__ */ new Map();
  var makeFallbackChecks = true;
  var firstFittingPlacement = placements2[0];
  for (var i = 0; i < placements2.length; i++) {
    var placement = placements2[i];
    var _basePlacement = getBasePlacement(placement);
    var isStartVariation = getVariation(placement) === start;
    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
    var len = isVertical ? "width" : "height";
    var overflow = detectOverflow(state, {
      placement,
      boundary,
      rootBoundary,
      altBoundary,
      padding
    });
    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
    if (referenceRect[len] > popperRect[len]) {
      mainVariationSide = getOppositePlacement(mainVariationSide);
    }
    var altVariationSide = getOppositePlacement(mainVariationSide);
    var checks = [];
    if (checkMainAxis) {
      checks.push(overflow[_basePlacement] <= 0);
    }
    if (checkAltAxis) {
      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
    }
    if (checks.every(function(check2) {
      return check2;
    })) {
      firstFittingPlacement = placement;
      makeFallbackChecks = false;
      break;
    }
    checksMap.set(placement, checks);
  }
  if (makeFallbackChecks) {
    var numberOfChecks = flipVariations ? 3 : 1;
    var _loop = function _loop2(_i2) {
      var fittingPlacement = placements2.find(function(placement2) {
        var checks2 = checksMap.get(placement2);
        if (checks2) {
          return checks2.slice(0, _i2).every(function(check2) {
            return check2;
          });
        }
      });
      if (fittingPlacement) {
        firstFittingPlacement = fittingPlacement;
        return "break";
      }
    };
    for (var _i = numberOfChecks; _i > 0; _i--) {
      var _ret = _loop(_i);
      if (_ret === "break")
        break;
    }
  }
  if (state.placement !== firstFittingPlacement) {
    state.modifiersData[name2]._skip = true;
    state.placement = firstFittingPlacement;
    state.reset = true;
  }
}
const flip$1 = {
  name: "flip",
  enabled: true,
  phase: "main",
  fn: flip,
  requiresIfExists: ["offset"],
  data: {
    _skip: false
  }
};
function getSideOffsets(overflow, rect2, preventedOffsets) {
  if (preventedOffsets === void 0) {
    preventedOffsets = {
      x: 0,
      y: 0
    };
  }
  return {
    top: overflow.top - rect2.height - preventedOffsets.y,
    right: overflow.right - rect2.width + preventedOffsets.x,
    bottom: overflow.bottom - rect2.height + preventedOffsets.y,
    left: overflow.left - rect2.width - preventedOffsets.x
  };
}
function isAnySideFullyClipped(overflow) {
  return [top, right, bottom, left].some(function(side) {
    return overflow[side] >= 0;
  });
}
function hide(_ref) {
  var state = _ref.state, name2 = _ref.name;
  var referenceRect = state.rects.reference;
  var popperRect = state.rects.popper;
  var preventedOffsets = state.modifiersData.preventOverflow;
  var referenceOverflow = detectOverflow(state, {
    elementContext: "reference"
  });
  var popperAltOverflow = detectOverflow(state, {
    altBoundary: true
  });
  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
  state.modifiersData[name2] = {
    referenceClippingOffsets,
    popperEscapeOffsets,
    isReferenceHidden,
    hasPopperEscaped
  };
  state.attributes.popper = Object.assign({}, state.attributes.popper, {
    "data-popper-reference-hidden": isReferenceHidden,
    "data-popper-escaped": hasPopperEscaped
  });
}
const hide$1 = {
  name: "hide",
  enabled: true,
  phase: "main",
  requiresIfExists: ["preventOverflow"],
  fn: hide
};
function distanceAndSkiddingToXY(placement, rects, offset2) {
  var basePlacement = getBasePlacement(placement);
  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
  var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, {
    placement
  })) : offset2, skidding = _ref[0], distance = _ref[1];
  skidding = skidding || 0;
  distance = (distance || 0) * invertDistance;
  return [left, right].indexOf(basePlacement) >= 0 ? {
    x: distance,
    y: skidding
  } : {
    x: skidding,
    y: distance
  };
}
function offset(_ref2) {
  var state = _ref2.state, options2 = _ref2.options, name2 = _ref2.name;
  var _options$offset = options2.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset;
  var data = placements.reduce(function(acc, placement) {
    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2);
    return acc;
  }, {});
  var _data$state$placement = data[state.placement], x2 = _data$state$placement.x, y2 = _data$state$placement.y;
  if (state.modifiersData.popperOffsets != null) {
    state.modifiersData.popperOffsets.x += x2;
    state.modifiersData.popperOffsets.y += y2;
  }
  state.modifiersData[name2] = data;
}
const offset$1 = {
  name: "offset",
  enabled: true,
  phase: "main",
  requires: ["popperOffsets"],
  fn: offset
};
function popperOffsets(_ref) {
  var state = _ref.state, name2 = _ref.name;
  state.modifiersData[name2] = computeOffsets({
    reference: state.rects.reference,
    element: state.rects.popper,
    strategy: "absolute",
    placement: state.placement
  });
}
const popperOffsets$1 = {
  name: "popperOffsets",
  enabled: true,
  phase: "read",
  fn: popperOffsets,
  data: {}
};
function getAltAxis(axis) {
  return axis === "x" ? "y" : "x";
}
function preventOverflow(_ref) {
  var state = _ref.state, options2 = _ref.options, name2 = _ref.name;
  var _options$mainAxis = options2.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options2.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options2.boundary, rootBoundary = options2.rootBoundary, altBoundary = options2.altBoundary, padding = options2.padding, _options$tether = options2.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options2.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
  var overflow = detectOverflow(state, {
    boundary,
    rootBoundary,
    padding,
    altBoundary
  });
  var basePlacement = getBasePlacement(state.placement);
  var variation = getVariation(state.placement);
  var isBasePlacement = !variation;
  var mainAxis = getMainAxisFromPlacement(basePlacement);
  var altAxis = getAltAxis(mainAxis);
  var popperOffsets2 = state.modifiersData.popperOffsets;
  var referenceRect = state.rects.reference;
  var popperRect = state.rects.popper;
  var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, {
    placement: state.placement
  })) : tetherOffset;
  var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? {
    mainAxis: tetherOffsetValue,
    altAxis: tetherOffsetValue
  } : Object.assign({
    mainAxis: 0,
    altAxis: 0
  }, tetherOffsetValue);
  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
  var data = {
    x: 0,
    y: 0
  };
  if (!popperOffsets2) {
    return;
  }
  if (checkMainAxis) {
    var _offsetModifierState$;
    var mainSide = mainAxis === "y" ? top : left;
    var altSide = mainAxis === "y" ? bottom : right;
    var len = mainAxis === "y" ? "height" : "width";
    var offset2 = popperOffsets2[mainAxis];
    var min$12 = offset2 + overflow[mainSide];
    var max$12 = offset2 - overflow[altSide];
    var additive = tether ? -popperRect[len] / 2 : 0;
    var minLen = variation === start ? referenceRect[len] : popperRect[len];
    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len];
    var arrowElement = state.elements.arrow;
    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
      width: 0,
      height: 0
    };
    var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject();
    var arrowPaddingMin = arrowPaddingObject[mainSide];
    var arrowPaddingMax = arrowPaddingObject[altSide];
    var arrowLen = within(0, referenceRect[len], arrowRect[len]);
    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
    var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
    var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset;
    var tetherMax = offset2 + maxOffset - offsetModifierValue;
    var preventedOffset = within(tether ? min(min$12, tetherMin) : min$12, offset2, tether ? max(max$12, tetherMax) : max$12);
    popperOffsets2[mainAxis] = preventedOffset;
    data[mainAxis] = preventedOffset - offset2;
  }
  if (checkAltAxis) {
    var _offsetModifierState$2;
    var _mainSide = mainAxis === "x" ? top : left;
    var _altSide = mainAxis === "x" ? bottom : right;
    var _offset = popperOffsets2[altAxis];
    var _len = altAxis === "y" ? "height" : "width";
    var _min = _offset + overflow[_mainSide];
    var _max = _offset - overflow[_altSide];
    var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
    var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
    popperOffsets2[altAxis] = _preventedOffset;
    data[altAxis] = _preventedOffset - _offset;
  }
  state.modifiersData[name2] = data;
}
const preventOverflow$1 = {
  name: "preventOverflow",
  enabled: true,
  phase: "main",
  fn: preventOverflow,
  requiresIfExists: ["offset"]
};
function getHTMLElementScroll(element) {
  return {
    scrollLeft: element.scrollLeft,
    scrollTop: element.scrollTop
  };
}
function getNodeScroll(node) {
  if (node === getWindow(node) || !isHTMLElement(node)) {
    return getWindowScroll(node);
  } else {
    return getHTMLElementScroll(node);
  }
}
function isElementScaled(element) {
  var rect2 = element.getBoundingClientRect();
  var scaleX = round(rect2.width) / element.offsetWidth || 1;
  var scaleY = round(rect2.height) / element.offsetHeight || 1;
  return scaleX !== 1 || scaleY !== 1;
}
function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
  if (isFixed === void 0) {
    isFixed = false;
  }
  var isOffsetParentAnElement = isHTMLElement(offsetParent);
  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
  var documentElement = getDocumentElement(offsetParent);
  var rect2 = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);
  var scroll = {
    scrollLeft: 0,
    scrollTop: 0
  };
  var offsets = {
    x: 0,
    y: 0
  };
  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
    if (getNodeName(offsetParent) !== "body" || // https://github.com/popperjs/popper-core/issues/1078
    isScrollParent(documentElement)) {
      scroll = getNodeScroll(offsetParent);
    }
    if (isHTMLElement(offsetParent)) {
      offsets = getBoundingClientRect(offsetParent, true);
      offsets.x += offsetParent.clientLeft;
      offsets.y += offsetParent.clientTop;
    } else if (documentElement) {
      offsets.x = getWindowScrollBarX(documentElement);
    }
  }
  return {
    x: rect2.left + scroll.scrollLeft - offsets.x,
    y: rect2.top + scroll.scrollTop - offsets.y,
    width: rect2.width,
    height: rect2.height
  };
}
function order(modifiers) {
  var map2 = /* @__PURE__ */ new Map();
  var visited = /* @__PURE__ */ new Set();
  var result = [];
  modifiers.forEach(function(modifier) {
    map2.set(modifier.name, modifier);
  });
  function sort(modifier) {
    visited.add(modifier.name);
    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
    requires.forEach(function(dep) {
      if (!visited.has(dep)) {
        var depModifier = map2.get(dep);
        if (depModifier) {
          sort(depModifier);
        }
      }
    });
    result.push(modifier);
  }
  modifiers.forEach(function(modifier) {
    if (!visited.has(modifier.name)) {
      sort(modifier);
    }
  });
  return result;
}
function orderModifiers(modifiers) {
  var orderedModifiers = order(modifiers);
  return modifierPhases.reduce(function(acc, phase) {
    return acc.concat(orderedModifiers.filter(function(modifier) {
      return modifier.phase === phase;
    }));
  }, []);
}
function debounce(fn2) {
  var pending;
  return function() {
    if (!pending) {
      pending = new Promise(function(resolve3) {
        Promise.resolve().then(function() {
          pending = void 0;
          resolve3(fn2());
        });
      });
    }
    return pending;
  };
}
function mergeByName(modifiers) {
  var merged = modifiers.reduce(function(merged2, current) {
    var existing = merged2[current.name];
    merged2[current.name] = existing ? Object.assign({}, existing, current, {
      options: Object.assign({}, existing.options, current.options),
      data: Object.assign({}, existing.data, current.data)
    }) : current;
    return merged2;
  }, {});
  return Object.keys(merged).map(function(key) {
    return merged[key];
  });
}
var DEFAULT_OPTIONS = {
  placement: "bottom",
  modifiers: [],
  strategy: "absolute"
};
function areValidElements() {
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
    args[_key] = arguments[_key];
  }
  return !args.some(function(element) {
    return !(element && typeof element.getBoundingClientRect === "function");
  });
}
function popperGenerator(generatorOptions) {
  if (generatorOptions === void 0) {
    generatorOptions = {};
  }
  var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions2 = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
  return function createPopper2(reference3, popper2, options2) {
    if (options2 === void 0) {
      options2 = defaultOptions2;
    }
    var state = {
      placement: "bottom",
      orderedModifiers: [],
      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions2),
      modifiersData: {},
      elements: {
        reference: reference3,
        popper: popper2
      },
      attributes: {},
      styles: {}
    };
    var effectCleanupFns = [];
    var isDestroyed = false;
    var instance = {
      state,
      setOptions: function setOptions(setOptionsAction) {
        var options3 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction;
        cleanupModifierEffects();
        state.options = Object.assign({}, defaultOptions2, state.options, options3);
        state.scrollParents = {
          reference: isElement(reference3) ? listScrollParents(reference3) : reference3.contextElement ? listScrollParents(reference3.contextElement) : [],
          popper: listScrollParents(popper2)
        };
        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers)));
        state.orderedModifiers = orderedModifiers.filter(function(m2) {
          return m2.enabled;
        });
        runModifierEffects();
        return instance.update();
      },
      // Sync update â€“ it will always be executed, even if not necessary. This
      // is useful for low frequency updates where sync behavior simplifies the
      // logic.
      // For high frequency updates (e.g. `resize` and `scroll` events), always
      // prefer the async Popper#update method
      forceUpdate: function forceUpdate() {
        if (isDestroyed) {
          return;
        }
        var _state$elements = state.elements, reference4 = _state$elements.reference, popper3 = _state$elements.popper;
        if (!areValidElements(reference4, popper3)) {
          return;
        }
        state.rects = {
          reference: getCompositeRect(reference4, getOffsetParent(popper3), state.options.strategy === "fixed"),
          popper: getLayoutRect(popper3)
        };
        state.reset = false;
        state.placement = state.options.placement;
        state.orderedModifiers.forEach(function(modifier) {
          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
        });
        for (var index2 = 0; index2 < state.orderedModifiers.length; index2++) {
          if (state.reset === true) {
            state.reset = false;
            index2 = -1;
            continue;
          }
          var _state$orderedModifie = state.orderedModifiers[index2], fn2 = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name2 = _state$orderedModifie.name;
          if (typeof fn2 === "function") {
            state = fn2({
              state,
              options: _options,
              name: name2,
              instance
            }) || state;
          }
        }
      },
      // Async and optimistically optimized update â€“ it will not be executed if
      // not necessary (debounced to run at most once-per-tick)
      update: debounce(function() {
        return new Promise(function(resolve3) {
          instance.forceUpdate();
          resolve3(state);
        });
      }),
      destroy: function destroy() {
        cleanupModifierEffects();
        isDestroyed = true;
      }
    };
    if (!areValidElements(reference3, popper2)) {
      return instance;
    }
    instance.setOptions(options2).then(function(state2) {
      if (!isDestroyed && options2.onFirstUpdate) {
        options2.onFirstUpdate(state2);
      }
    });
    function runModifierEffects() {
      state.orderedModifiers.forEach(function(_ref3) {
        var name2 = _ref3.name, _ref3$options = _ref3.options, options3 = _ref3$options === void 0 ? {} : _ref3$options, effect2 = _ref3.effect;
        if (typeof effect2 === "function") {
          var cleanupFn = effect2({
            state,
            name: name2,
            instance,
            options: options3
          });
          var noopFn = function noopFn2() {
          };
          effectCleanupFns.push(cleanupFn || noopFn);
        }
      });
    }
    function cleanupModifierEffects() {
      effectCleanupFns.forEach(function(fn2) {
        return fn2();
      });
      effectCleanupFns = [];
    }
    return instance;
  };
}
var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];
var createPopper = /* @__PURE__ */ popperGenerator({
  defaultModifiers
});
const _hoisted_1$2 = ["onClick"];
const _hoisted_2$2 = {
  key: 0,
  class: "assertion-option-name"
};
const _hoisted_3$2 = {
  key: 1,
  class: "assertion-option-value"
};
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
  __name: "AssertionOptions.ce",
  props: {
    type: null,
    options: null
  },
  emits: ["addAssertion", "setPopperElement"],
  setup(__props, { emit: emit3 }) {
    const props = __props;
    const truncate = (str) => {
      if (str && str.length > 80) {
        return `${str.substr(0, 77)}...`;
      }
      return str;
    };
    const popper2 = ref(null);
    onMounted(() => {
      nextTick(() => {
        const popperEl = popper2.value;
        const reference3 = popperEl.parentElement;
        createPopper(reference3, popperEl, {
          placement: "right-start"
        });
        emit3("setPopperElement", popperEl);
      });
    });
    const onClick = (name2, value) => {
      emit3("addAssertion", { type: props.type, name: name2, value });
    };
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        ref_key: "popper",
        ref: popper2,
        class: "assertion-options"
      }, [
        (openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, ({ name: name2, value }) => {
          return openBlock(), createElementBlock("div", {
            key: `${name2}${value}`,
            class: "assertion-option",
            onClick: withModifiers(() => onClick(name2, value), ["stop"])
          }, [
            name2 ? (openBlock(), createElementBlock("span", _hoisted_2$2, toDisplayString$1(truncate(name2)) + ":" + toDisplayString$1(" "), 1)) : (openBlock(), createElementBlock("span", _hoisted_3$2, toDisplayString$1(typeof value === "string" && truncate(value)), 1))
          ], 8, _hoisted_1$2);
        }), 128))
      ], 512);
    };
  }
});
const _style_0$3 = ".assertion-options {\n  background: #fff;\n  border: 1px solid #DDD;\n  box-shadow: 2px 5px 12px rgba(0, 0, 0, 0.2);\n  border-radius: 4px;\n  font-size: 14px;\n  max-width: 150px;\n  overflow: hidden;\n  overflow-wrap: break-word;\n  position: absolute;\n}\n.assertion-options .assertion-option {\n  cursor: pointer;\n  padding: 0.4rem 0.6rem;\n}\n.assertion-options .assertion-option:hover {\n  background-color: #e9ecef;\n}\n.assertion-options .assertion-option .assertion-option-value {\n  font-weight: 600;\n}";
const AssertionOptions = /* @__PURE__ */ _export_sfc$1(_sfc_main$4, [["styles", [_style_0$3]]]);
const _hoisted_1$1 = ["onClick", "onMouseover", "onMouseout"];
const _hoisted_2$1 = { class: "assertion-type-text" };
const _hoisted_3$1 = {
  key: 0,
  class: "dropdown-arrow"
};
const _hoisted_4$1 = /* @__PURE__ */ createBaseVNode("svg", {
  xmlns: "http://www.w3.org/2000/svg",
  width: "12",
  height: "12",
  fill: "currentColor",
  viewBox: "0 0 16 16"
}, [
  /* @__PURE__ */ createBaseVNode("path", {
    fillRule: "evenodd",
    d: "M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z"
  })
], -1);
const _hoisted_5$1 = [
  _hoisted_4$1
];
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
  __name: "AssertionType.ce",
  props: {
    type: null,
    options: null
  },
  emits: ["addAssertion"],
  setup(__props, { emit: emit3 }) {
    const props = __props;
    const isOpen = ref(false);
    const hasOptions = props.options && !!props.options.length;
    const popperElement = ref(null);
    const onOpen = () => {
      isOpen.value = true;
    };
    const onClose = (e) => {
      if (e.relatedTarget instanceof Element && popperElement.value && popperElement.value.contains(e.relatedTarget)) {
        return;
      }
      isOpen.value = false;
    };
    const onClick = () => {
      if (!hasOptions) {
        emit3("addAssertion", { type: props.type });
      }
    };
    const setPopperElement = (el2) => {
      popperElement.value = el2;
    };
    const addAssertion = ({ type: type2, name: name2, value }) => {
      emit3("addAssertion", { type: type2, name: name2, value });
    };
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["assertion-type", { "single-assertion": !unref(hasOptions) }]),
        onClick: withModifiers(onClick, ["stop"]),
        onMouseover: withModifiers(onOpen, ["stop"]),
        onMouseout: withModifiers(onClose, ["stop"])
      }, [
        createBaseVNode("div", _hoisted_2$1, [
          createBaseVNode("span", null, toDisplayString$1(__props.type.replace(/\./g, " ")), 1),
          unref(hasOptions) ? (openBlock(), createElementBlock("span", _hoisted_3$1, _hoisted_5$1)) : createCommentVNode("", true)
        ]),
        unref(hasOptions) && isOpen.value ? (openBlock(), createBlock(AssertionOptions, {
          key: 0,
          type: __props.type,
          options: __props.options,
          onSetPopperElement: setPopperElement,
          onAddAssertion: addAssertion
        }, null, 8, ["type", "options"])) : createCommentVNode("", true)
      ], 42, _hoisted_1$1);
    };
  }
});
const _style_0$2 = ".assertion-type {\n  color: #202020;\n  cursor: default;\n  font-size: 14px;\n  padding: 0.4rem 0.4rem 0.4rem 0.7rem;\n  position: static;\n}\n.assertion-type:first-of-type {\n  padding-top: 0.5rem;\n}\n.assertion-type:last-of-type {\n  border-bottom-left-radius: 4px;\n  border-bottom-right-radius: 4px;\n  padding-bottom: 0.5rem;\n}\n.assertion-type:hover {\n  background-color: #e9ecef;\n}\n.assertion-type.single-assertion {\n  cursor: pointer;\n  font-weight: 600;\n}\n.assertion-type .assertion-type-text {\n  align-items: center;\n  display: flex;\n}\n.assertion-type .assertion-type-text .dropdown-arrow {\n  margin-left: auto;\n}";
const AssertionType = /* @__PURE__ */ _export_sfc$1(_sfc_main$3, [["styles", [_style_0$2]]]);
const _hoisted_1 = { class: "header" };
const _hoisted_2 = /* @__PURE__ */ createBaseVNode("div", { class: "title" }, [
  /* @__PURE__ */ createBaseVNode("span", null, "Add Assertion")
], -1);
const _hoisted_3 = { class: "close-wrapper" };
const _hoisted_4 = ["onClick"];
const _hoisted_5 = { class: "assertions-list" };
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
  __name: "AssertionsMenu.ce",
  props: {
    jqueryElement: null,
    possibleAssertions: null,
    addAssertion: null,
    closeMenu: { type: Function },
    highlightStyle: null
  },
  setup(__props) {
    const props = __props;
    const onAddAssertion = ({ type: type2, name: name2, value }) => {
      let args = [type2, name2, value];
      args = lodashExports.compact(args);
      props.addAssertion(props.jqueryElement, ...args);
    };
    const onClose = () => {
      props.closeMenu();
    };
    const tagName = `<${props.jqueryElement.prop("tagName").toLowerCase()}>`;
    const highlight = ref(null);
    const assertionsMenu = ref(null);
    onMounted(() => {
      nextTick(() => {
        const highlightEl = highlight.value;
        const assertionsMenuEl = assertionsMenu.value;
        createPopper(highlightEl, assertionsMenuEl, {
          modifiers: [
            {
              name: "preventOverflow",
              options: {
                altAxis: true
              }
            }
          ]
        });
      });
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock(Fragment, null, [
        createBaseVNode("div", {
          ref_key: "highlight",
          ref: highlight,
          class: "highlight",
          style: normalizeStyle(__props.highlightStyle)
        }, null, 4),
        createBaseVNode("div", {
          ref_key: "assertionsMenu",
          ref: assertionsMenu,
          class: "assertions-menu"
        }, [
          createBaseVNode("div", _hoisted_1, [
            _hoisted_2,
            createBaseVNode("div", _hoisted_3, [
              createBaseVNode("a", {
                class: "close",
                onClick: withModifiers(onClose, ["stop"])
              }, "Ã—", 8, _hoisted_4)
            ])
          ]),
          createBaseVNode("div", { class: "subtitle" }, [
            createTextVNode(" expect " + toDisplayString$1(" ") + " "),
            createBaseVNode("code", null, toDisplayString$1(tagName)),
            createTextVNode(" " + toDisplayString$1(" ") + " to ")
          ]),
          createBaseVNode("div", _hoisted_5, [
            (openBlock(true), createElementBlock(Fragment, null, renderList(__props.possibleAssertions, (assertion) => {
              return openBlock(), createBlock(AssertionType, {
                key: assertion.type,
                type: assertion.type,
                options: assertion.options,
                onAddAssertion
              }, null, 8, ["type", "options"]);
            }), 128))
          ])
        ], 512)
      ], 64);
    };
  }
});
const _style_0$1 = '.highlight {\n  background: rgba(159, 196, 231, 0.6);\n  border: solid 2px #9FC4E7;\n  cursor: pointer;\n}\n.assertions-menu {\n  background: #fff;\n  border: 1px solid #DDD;\n  box-shadow: 2px 5px 12px rgba(0, 0, 0, 0.2);\n  border-radius: 4px;\n  font-family: "Helvetica Neue", "Arial", sans-serif;\n  z-index: 2147483647;\n  width: 175px;\n  position: absolute;\n}\n.assertions-menu .header {\n  align-items: center;\n  background: #07b282;\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  color: #fff;\n  display: flex;\n  padding: 0.5rem 0.7rem;\n}\n.assertions-menu .header .title {\n  font-size: 14px;\n  font-weight: 600;\n}\n.assertions-menu .header .close-wrapper {\n  margin-left: auto;\n  margin-top: -2.5px;\n}\n.assertions-menu .header .close-wrapper .close {\n  font-size: 18px;\n  font-weight: 500;\n}\n.assertions-menu .header .close-wrapper .close:hover, .assertions-menu .header .close-wrapper .close:focus, .assertions-menu .header .close-wrapper .close:active {\n  cursor: pointer;\n  color: #eee;\n}\n.assertions-menu .subtitle {\n  border-bottom: 1px solid #c4c4c4;\n  color: #6b6b6b;\n  font-size: 13px;\n  font-style: italic;\n  font-weight: 400;\n  padding: 0.5rem 0.7rem;\n}\n.assertions-menu .subtitle code {\n  font-weight: 600;\n}';
const AssertionsMenu = /* @__PURE__ */ _export_sfc$1(_sfc_main$2, [["styles", [_style_0$1]]]);
const getElementDimensions = (el2) => {
  const { offsetHeight, offsetWidth } = el2;
  const paddingTop = getStylePropertyNumber(el2, "padding-top");
  const paddingRight = getStylePropertyNumber(el2, "padding-right");
  const paddingBottom = getStylePropertyNumber(el2, "padding-bottom");
  const paddingLeft = getStylePropertyNumber(el2, "padding-left");
  const borderTop = getStylePropertyNumber(el2, "border-top-width");
  const borderRight = getStylePropertyNumber(el2, "border-right-width");
  const borderBottom = getStylePropertyNumber(el2, "border-bottom-width");
  const borderLeft = getStylePropertyNumber(el2, "border-left-width");
  const marginTop = getStylePropertyNumber(el2, "margin-top");
  const marginRight = getStylePropertyNumber(el2, "margin-right");
  const marginBottom = getStylePropertyNumber(el2, "margin-bottom");
  const marginLeft = getStylePropertyNumber(el2, "margin-left");
  const width = offsetWidth - (paddingLeft + paddingRight + borderLeft + borderRight);
  const height = offsetHeight - (paddingTop + paddingBottom + borderTop + borderBottom);
  const heightWithPadding = height + paddingTop + paddingBottom;
  const heightWithBorder = heightWithPadding + borderTop + borderBottom;
  const heightWithMargin = heightWithBorder + marginTop + marginBottom;
  const widthWithPadding = width + paddingLeft + paddingRight;
  const widthWithBorder = widthWithPadding + borderLeft + borderRight;
  const widthWithMargin = widthWithBorder + marginLeft + marginRight;
  return {
    // offset disregards margin but takes into account border + padding
    offset: getOffset(el2),
    paddingTop,
    paddingRight,
    paddingBottom,
    paddingLeft,
    borderTop,
    borderRight,
    borderBottom,
    borderLeft,
    marginTop,
    marginRight,
    marginBottom,
    marginLeft,
    width,
    height,
    heightWithPadding,
    heightWithBorder,
    heightWithMargin,
    widthWithPadding,
    widthWithBorder,
    widthWithMargin
  };
};
const setOffset = (el2, offset2) => {
  const curOffset = getOffset(el2);
  const curTop = parseFloat(getComputedStyle(el2, null).top);
  const curLeft = parseFloat(getComputedStyle(el2, null).left);
  el2.style.top = `${offset2.top - curOffset.top + curTop}px`;
  el2.style.left = `${offset2.left - curOffset.left + curLeft}px`;
};
const getOffset = (el2) => {
  const rect2 = el2.getBoundingClientRect();
  const win = el2.ownerDocument.defaultView;
  return {
    top: rect2.top + win.scrollY,
    left: rect2.left + win.scrollX
  };
};
const getStylePropertyNumber = (el2, property) => {
  const value = parseFloat(getComputedStyle(el2, null).getPropertyValue(property));
  if (isNaN(value)) {
    throw new Error("Element attr did not return a valid number");
  }
  return value;
};
const INT32_MAX = 2147483647;
function getZIndex(el2) {
  const value = getComputedStyle(el2, null).getPropertyValue("z-index");
  if (/^(auto|0)$/.test(value)) {
    return INT32_MAX;
  }
  return parseFloat(value);
}
function getOrCreateHelperDom({ body, className, css }) {
  let containers = body.querySelectorAll(`.${className}`);
  if (containers.length > 0) {
    const shadowRoot2 = containers[0].shadowRoot;
    return {
      container: containers[0],
      vueContainer: shadowRoot2.querySelector(".vue-container")
    };
  }
  const container = document.createElement("div");
  container.classList.add(className);
  container.style.position = "static";
  body.appendChild(container);
  const shadowRoot = container.attachShadow({ mode: "open" });
  const vueContainer = document.createElement("div");
  vueContainer.classList.add("vue-container");
  shadowRoot.appendChild(vueContainer);
  const style = document.createElement("style");
  style.innerHTML = css.toString();
  shadowRoot.prepend(style);
  return {
    container,
    vueContainer,
    shadowRoot
  };
}
function getSelectorHighlightStyles(elements) {
  const borderSize = 2;
  return elements.map((el2) => {
    const offset2 = getOffset(el2);
    return {
      position: "absolute",
      margin: `0px`,
      padding: `0px`,
      width: `${el2.offsetWidth}px`,
      height: `${el2.offsetHeight}px`,
      top: `${offset2.top - borderSize}px`,
      left: `${offset2.left - borderSize}px`,
      transform: getComputedStyle(el2, null).transform,
      zIndex: getZIndex(el2)
    };
  });
}
function getStudioAssertionsMenuDom(body) {
  return getOrCreateHelperDom({
    body,
    className: "__cypress-studio-assertions-menu",
    css: `${AssertionsMenu.styles}
${AssertionType.styles}
${AssertionOptions.styles}`
  });
}
function openStudioAssertionsMenu({ $el, $body, props }) {
  const { vueContainer } = getStudioAssertionsMenuDom($body.get(0));
  vueContainerListeners(vueContainer);
  const selectorHighlightStyles = getSelectorHighlightStyles([$el.get(0)])[0];
  mountAssertionsMenu(vueContainer, $el, props.possibleAssertions, props.addAssertion, props.closeMenu, selectorHighlightStyles);
}
function closeStudioAssertionsMenu($body) {
  const { container } = getStudioAssertionsMenuDom($body.get(0));
  unmountAssertionsMenu();
  container.remove();
}
let app$2 = null;
const mountAssertionsMenu = (container, jqueryElement, possibleAssertions, addAssertion, closeMenu, highlightStyle) => {
  app$2 = createApp(AssertionsMenu, {
    jqueryElement,
    possibleAssertions,
    addAssertion,
    closeMenu,
    highlightStyle
  });
  app$2.mount(container);
};
const unmountAssertionsMenu = () => {
  if (app$2) {
    app$2.unmount();
    app$2 = null;
  }
};
let lastTarget = null;
let lastTimeStamp = -1;
function vueContainerListeners(vueContainer) {
  vueContainer.addEventListener("click", (e) => {
    const paths = e.composedPath();
    for (let i = 0; i < paths.length; i++) {
      const el2 = paths[i];
      if (classIncludes(el2, "single-assertion") || classIncludes(el2, "assertion-option") || el2.tagName === "A" && classIncludes(el2, "close")) {
        el2.dispatchEvent(new MouseEvent("click", e));
        break;
      }
    }
  });
  vueContainer.addEventListener("mouseover", (e) => {
    const paths = e.composedPath();
    for (let i = 0; i < paths.length; i++) {
      const el2 = paths[i];
      if (classIncludes(el2, "assertion-type")) {
        el2.dispatchEvent(new MouseEvent("mouseover", e));
        break;
      }
    }
  });
  vueContainer.addEventListener("mouseout", (e) => {
    if (lastTarget === e.target && lastTimeStamp - e.timeStamp < 100) {
      return;
    }
    lastTarget = e.target;
    lastTimeStamp = e.timeStamp;
    const paths = e.composedPath();
    for (let i = 0; i < paths.length; i++) {
      const el2 = paths[i];
      if (classIncludes(el2, "assertion-type")) {
        el2.dispatchEvent(new MouseEvent("mouseout", e));
        break;
      }
    }
  });
}
function classIncludes(el2, className) {
  return typeof el2.className === "string" && el2.className.includes(className);
}
function getCypress() {
  const eventManager = getEventManager();
  return eventManager.getCypress();
}
function stringifyActual(val) {
  return Cypress.utils.stringifyActual(val);
}
const saveErrorMessage = (message) => {
  return `${message}

Cypress was unable to save these commands to your spec file. You can use the copy button below to copy the commands to your clipboard. 

Cypress Studio is still in beta and the team is working hard to resolve issues like this. To help us fix this issue more quickly, you can provide us with more information by clicking 'Learn more' below.`;
};
function assertNonNullish(value, message) {
  if (value === null || value === void 0) {
    throw Error(message);
  }
}
const eventTypes = [
  "click",
  // 'dblclick',
  "change",
  "keydown",
  "keyup"
];
const eventsWithValue = [
  "change",
  "keydown",
  "keyup"
];
const internalMouseEvents = [
  "mousedown",
  "mouseover",
  "mouseout"
];
const tagNamesWithoutText = [
  "SELECT",
  "INPUT",
  "TEXTAREA"
];
const tagNamesWithValue = [
  "BUTTON",
  "INPUT",
  "METER",
  "LI",
  "OPTION",
  "PROGRESS",
  "TEXTAREA"
];
const useStudioStore = defineStore("studioRecorder", {
  state: () => {
    return {
      saveModalIsOpen: false,
      instructionModalIsOpen: false,
      logs: [],
      url: "",
      isLoading: false,
      isActive: false,
      isFailed: false,
      _hasStarted: false,
      _currentId: 1
    };
  },
  actions: {
    setTestId(testId) {
      this.testId = testId;
    },
    setSuiteId(suiteId) {
      this.suiteId = suiteId;
      this.testId = void 0;
    },
    clearRunnableIds() {
      this.testId = void 0;
      this.suiteId = void 0;
    },
    openInstructionModal() {
      this.instructionModalIsOpen = true;
    },
    closeInstructionModal() {
      this.instructionModalIsOpen = false;
    },
    showSaveModal() {
      this.saveModalIsOpen = true;
    },
    closeSaveModal() {
      this.saveModalIsOpen = false;
    },
    startLoading() {
      this.isLoading = true;
    },
    setInactive() {
      this.isActive = false;
    },
    setUrl(url2) {
      this.url = url2;
    },
    testFailed() {
      this.isFailed = true;
    },
    initialize(config2, state) {
      const { studio } = state;
      if (studio) {
        if (studio.testId) {
          this.setTestId(studio.testId);
        }
        if (studio.suiteId) {
          this.setSuiteId(studio.suiteId);
        }
        if (studio.url) {
          this.setUrl(studio.url);
        }
      }
      if (this.testId || this.suiteId) {
        this.setAbsoluteFile(config2.spec.absolute);
        this.startLoading();
        if (this.suiteId) {
          getCypress().runner.setOnlySuiteId(this.suiteId);
        } else if (this.testId) {
          getCypress().runner.setOnlyTestId(this.testId);
        }
      }
    },
    interceptTest(test2) {
      if (this.suiteId) {
        this.setTestId(test2.id);
      }
      if (this.testId || this.suiteId) {
        if (test2.invocationDetails) {
          this.setFileDetails(test2.invocationDetails);
        }
        if (this.suiteId) {
          if (test2.parent && test2.parent.id !== "r1") {
            this.setRunnableTitle(test2.parent.title);
          }
        } else {
          this.setRunnableTitle(test2.title);
        }
      }
    },
    start(body) {
      this.isActive = true;
      this.isLoading = false;
      this.logs = [];
      this._currentId = 1;
      this._hasStarted = true;
      const autStore = useAutStore();
      if (this.url) {
        this.visitUrl();
      }
      if (!this.url && autStore.url) {
        this.setUrl(autStore.url);
      }
      this.attachListeners(body);
    },
    stop() {
      this.removeListeners();
      this.isActive = false;
      this.isLoading = false;
    },
    reset() {
      this.stop();
      this.logs = [];
      this.url = void 0;
      this._hasStarted = false;
      this._currentId = 1;
      this.isFailed = false;
    },
    cancel() {
      this.reset();
      this.clearRunnableIds();
    },
    startSave() {
      if (this.suiteId) {
        this.showSaveModal();
      } else {
        this.save();
      }
    },
    save(testName) {
      this.closeSaveModal();
      this.stop();
      assertNonNullish(this.absoluteFile, `absoluteFile should exist`);
      const payload = {
        fileDetails: this.fileDetails,
        absoluteFile: this.absoluteFile,
        runnableTitle: this.runnableTitle,
        commands: this.logs,
        isSuite: !!this.suiteId,
        isRoot: this.suiteId === "r1",
        testName
      };
      getEventManager().emit("studio:save", payload);
    },
    visitUrl(url2) {
      this.setUrl(url2 ?? this.url);
      getCypress().cy.visit(this.url);
      this.logs.push({
        id: this._getId(),
        selector: void 0,
        name: "visit",
        message: this.url
      });
    },
    _recordEvent(event) {
      var _a3;
      if (this.isFailed || !this._trustEvent(event))
        return;
      const $el = window.UnifiedRunner.CypressJQuery(event.target);
      if (this._isAssertionsMenu($el)) {
        return;
      }
      this._closeAssertionsMenu();
      if (!this._shouldRecordEvent(event, $el)) {
        return;
      }
      const name2 = this._getName(event, $el);
      const message = this._getMessage(event, $el);
      if (name2 === "change") {
        return;
      }
      let selector = "";
      if (name2 === "click" && this._matchPreviousMouseEvent($el)) {
        selector = (_a3 = this._previousMouseEvent) == null ? void 0 : _a3.selector;
      } else {
        selector = getCypress().SelectorPlayground.getSelector($el);
      }
      this._clearPreviousMouseEvent();
      if (name2 === "type" && !message) {
        return this._removeLastLogIfType(selector);
      }
      const updateOnly = this._updateLastLog(selector, name2, message);
      if (updateOnly) {
        return;
      }
      if (name2 === "type") {
        this._addClearLog(selector);
      }
      this._addLog({
        selector,
        name: name2,
        message
      });
    },
    _removeLastLogIfType(selector) {
      const lastLog = this.logs[this.logs.length - 1];
      if (lastLog.selector === selector && lastLog.name === "type") {
        return this.removeLog(lastLog.id);
      }
    },
    removeLog(commandId) {
      const index2 = this.logs.findIndex((command) => command.id === commandId);
      const log = this.logs[index2];
      this.logs.splice(index2, 1);
      this._generateBothLogs(log).forEach((commandLog) => {
        getEventManager().emit("reporter:log:remove", commandLog);
      });
    },
    _addLog(log) {
      log.id = this._getId();
      this.logs.push(log);
      this._generateBothLogs(log).forEach((commandLog) => {
        getEventManager().emit("reporter:log:add", commandLog);
      });
    },
    _addAssertion($el, ...args) {
      const id2 = this._getId();
      const selector = getCypress().SelectorPlayground.getSelector($el);
      const log = {
        id: id2,
        selector,
        name: "should",
        message: args,
        isAssertion: true
      };
      this.logs.push(log);
      const reporterLog = {
        id: id2,
        selector,
        name: "assert",
        message: this._generateAssertionMessage($el, ...args)
      };
      this._generateBothLogs(reporterLog).forEach((commandLog) => {
        getEventManager().emit("reporter:log:add", commandLog);
      });
      this._closeAssertionsMenu();
    },
    saveError(err) {
      return {
        id: this.testId,
        err: {
          ...err,
          message: saveErrorMessage(err.message),
          docsUrl: "https://on.cypress.io/studio-beta"
        }
      };
    },
    setFileDetails(fileDetails) {
      this.fileDetails = fileDetails;
    },
    setAbsoluteFile(absoluteFile) {
      this.absoluteFile = absoluteFile;
    },
    setRunnableTitle(runnableTitle) {
      this.runnableTitle = runnableTitle;
    },
    _clearPreviousMouseEvent() {
      this._previousMouseEvent = void 0;
    },
    _matchPreviousMouseEvent(el2) {
      return this._previousMouseEvent && window.UnifiedRunner.CypressJQuery(el2).is(this._previousMouseEvent.element);
    },
    attachListeners(body) {
      if (this.isFailed) {
        return;
      }
      this._body = body;
      for (const event of eventTypes) {
        this._body.addEventListener(event, this._recordEvent, {
          capture: true,
          passive: true
        });
      }
      for (const event of internalMouseEvents) {
        this._body.addEventListener(event, this._recordMouseEvent, {
          capture: true,
          passive: true
        });
      }
      this._body.addEventListener("contextmenu", this._openAssertionsMenu, {
        capture: true
      });
      this._clearPreviousMouseEvent();
    },
    removeListeners() {
      if (!this._body)
        return;
      for (const event of eventTypes) {
        this._body.removeEventListener(event, this._recordEvent, {
          capture: true
        });
      }
      for (const event of internalMouseEvents) {
        this._body.removeEventListener(event, this._recordMouseEvent, {
          capture: true
        });
      }
      this._body.removeEventListener("contextmenu", this._openAssertionsMenu, {
        capture: true
      });
      this._clearPreviousMouseEvent();
    },
    copyToClipboard(commandsText) {
      if (window.isSecureContext && navigator.clipboard) {
        return navigator.clipboard.writeText(commandsText);
      }
      const textArea = document.createElement("textarea");
      textArea.value = commandsText;
      textArea.style.position = "fixed";
      textArea.style.opacity = "0";
      document.body.appendChild(textArea);
      textArea.select();
      document.execCommand("copy");
      textArea.remove();
      return Promise.resolve();
    },
    _trustEvent(event) {
      return event.isTrusted || getCypress().env("INTERNAL_E2E_TESTS") === 1;
    },
    _recordMouseEvent(event) {
      if (!this._trustEvent(event))
        return;
      const { type: type2, target: target2 } = event;
      if (type2 === "mouseout") {
        return this._clearPreviousMouseEvent();
      }
      if (!this._matchPreviousMouseEvent(target2)) {
        this._previousMouseEvent = {
          element: target2,
          selector: getCypress().SelectorPlayground.getSelector(window.UnifiedRunner.CypressJQuery(target2))
        };
      }
    },
    _getId() {
      return this._currentId++;
    },
    _getName(event, $el) {
      const tagName = $el.prop("tagName");
      const { type: type2 } = event;
      if (tagName === "SELECT" && type2 === "change") {
        return "select";
      }
      if (type2 === "keydown" || type2 === "keyup") {
        return "type";
      }
      if (type2 === "click" && tagName === "INPUT") {
        const inputType = $el.prop("type");
        const checked = $el.prop("checked");
        if (inputType === "radio" || inputType === "checkbox" && checked) {
          return "check";
        }
        if (inputType === "checkbox") {
          return "uncheck";
        }
      }
      return type2;
    },
    _getMessage(event, $el) {
      if (!eventsWithValue.includes(event.type)) {
        return void 0;
      }
      let val = $el.val();
      if (event.type === "keydown" || event.type === "keyup") {
        val = val.replace(/{/g, "{{}");
        if (event.key === "Enter") {
          val = `${val}{enter}`;
        }
      }
      return val;
    },
    _shouldRecordEvent(event, $el) {
      const tagName = $el.prop("tagName");
      if ((event.type === "keydown" || event.type === "keyup") && tagName !== "INPUT") {
        return false;
      }
      if (event.type === "keyup" && event.key === "Enter") {
        return false;
      }
      if (event.type === "keydown" && event.key !== "Enter") {
        return false;
      }
      if (tagName === "SELECT" && event.type === "click") {
        return false;
      }
      if (tagName === "OPTION") {
        return false;
      }
      return true;
    },
    _generateLog({ id: id2, name: name2, message, type: type2, number: number2 }) {
      return {
        id: id2,
        testId: this.testId,
        hookId: this.hookId,
        name: name2,
        message: message ? stringifyActual(message) : void 0,
        type: type2,
        state: "passed",
        instrument: "command",
        number: number2,
        numElements: 1,
        isStudio: true
      };
    },
    _generateBothLogs(log) {
      return [
        this._generateLog({
          id: `s${log.id}-get`,
          name: "get",
          message: log.selector,
          type: "parent",
          number: log.id
        }),
        this._generateLog({
          id: `s${log.id}`,
          name: log.name,
          message: log.message,
          type: "child"
        })
      ];
    },
    _addClearLog(selector) {
      const lastLog = this.logs[this.logs.length - 1];
      if (lastLog && lastLog.name === "clear" && lastLog.selector === selector) {
        return;
      }
      this._addLog({
        selector,
        name: "clear",
        message: void 0
      });
    },
    _updateLog(log) {
      const { id: id2, name: name2, message } = log;
      getEventManager().emit("reporter:log:state:changed", this._generateLog({
        id: `s${id2}`,
        name: name2,
        message,
        type: "child"
      }));
    },
    _updateLastLog(selector, name2, message) {
      const { length: length2 } = this.logs;
      if (!length2) {
        return false;
      }
      const lastLog = this.logs[length2 - 1];
      const updateLog = (newName = name2, newMessage = message) => {
        lastLog.message = newMessage;
        lastLog.name = newName;
        this._updateLog(lastLog);
      };
      if (selector === lastLog.selector) {
        if (name2 === "type" && lastLog.name === "type") {
          updateLog();
          return true;
        }
        if (name2 === "type" && lastLog.name === "click") {
          updateLog("clear", void 0);
          return false;
        }
      }
      return false;
    },
    _generateAssertionMessage($el, ...args) {
      const elementString = stringifyActual($el);
      const assertionString = args[0].replace(/\./g, " ");
      let message = `expect **${elementString}** to ${assertionString}`;
      if (args[1]) {
        message = `${message} **${args[1]}**`;
      }
      if (args[2]) {
        message = `${message} with the value **${args[2]}**`;
      }
      return message;
    },
    _isAssertionsMenu($el) {
      return $el.hasClass("__cypress-studio-assertions-menu");
    },
    _openAssertionsMenu(event) {
      if (!this._body) {
        throw Error("this._body was not defined");
      }
      event.preventDefault();
      event.stopPropagation();
      const $el = window.UnifiedRunner.CypressJQuery(event.target);
      if (this._isAssertionsMenu($el)) {
        return;
      }
      this._closeAssertionsMenu();
      openStudioAssertionsMenu({
        $el,
        $body: window.UnifiedRunner.CypressJQuery(this._body),
        props: {
          possibleAssertions: this._generatePossibleAssertions($el),
          addAssertion: this._addAssertion,
          closeMenu: this._closeAssertionsMenu
        }
      });
    },
    _closeAssertionsMenu() {
      if (!this._body) {
        throw Error("this._body was not defined");
      }
      closeStudioAssertionsMenu(window.UnifiedRunner.CypressJQuery(this._body));
    },
    _generatePossibleAssertions($el) {
      const tagName = $el.prop("tagName");
      const possibleAssertions = [];
      if (!tagNamesWithoutText.includes(tagName)) {
        const text3 = $el.text();
        if (text3) {
          possibleAssertions.push({
            type: "have.text",
            options: [{
              value: text3
            }]
          });
        }
      }
      if (tagNamesWithValue.includes(tagName)) {
        const val = $el.val();
        if (val !== void 0 && val !== "") {
          possibleAssertions.push({
            type: "have.value",
            options: [{
              value: val
            }]
          });
        }
      }
      const attributes = Array.from($el[0].attributes).reduce((acc, { name: name2, value }) => {
        if (name2 === "value" || name2 === "disabled") {
          return acc;
        }
        if (name2 === "class") {
          possibleAssertions.push({
            type: "have.class",
            options: value.split(" ").map((value2) => ({ value: value2 }))
          });
          return acc;
        }
        if (name2 === "id") {
          possibleAssertions.push({
            type: "have.id",
            options: [{
              value
            }]
          });
          return acc;
        }
        if (name2 !== void 0 && name2 !== "" && value !== void 0 && value !== "") {
          return acc.concat({
            name: name2,
            value
          });
        }
        return acc;
      }, []);
      if (attributes.length > 0) {
        possibleAssertions.push({
          type: "have.attr",
          options: attributes
        });
      }
      possibleAssertions.push({
        type: "be.visible"
      });
      const isDisabled = $el.prop("disabled");
      if (isDisabled !== void 0) {
        possibleAssertions.push({
          type: isDisabled ? "be.disabled" : "be.enabled"
        });
      }
      const isChecked = $el.prop("checked");
      if (isChecked !== void 0) {
        possibleAssertions.push({
          type: isChecked ? "be.checked" : "not.be.checked"
        });
      }
      return possibleAssertions;
    }
  },
  getters: {
    hasRunnableId(state) {
      return !!state.testId || !!state.suiteId;
    },
    isOpen: (state) => {
      return state.isActive || state.isLoading || state._hasStarted;
    },
    isEmpty: (state) => {
      return state.logs.length === 0;
    },
    isReady(state) {
      return this.isOpen && this.isEmpty && !state.isLoading && !state.isFailed;
    },
    hookId: (state) => {
      return `${state.testId}-studio`;
    },
    needsUrl: (state) => {
      return state.isActive && !state.url && !state.isFailed;
    },
    testError: (state) => {
      return {
        id: state.testId,
        state: "failed"
      };
    }
  }
});
class IframeModel {
  constructor(detachDom, restoreDom, highlightEl, isAUTSameOrigin, eventManager, studio) {
    this.detachDom = detachDom;
    this.restoreDom = restoreDom;
    this.highlightEl = highlightEl;
    this.isAUTSameOrigin = isAUTSameOrigin;
    this.eventManager = eventManager;
    this.studio = studio;
    this.isSnapshotPinned = false;
    this._beforeRun = () => {
      const autStore = useAutStore();
      autStore.setIsLoading(false);
      autStore.setIsRunning(true);
      autStore.resetUrl();
      this._reset();
    };
    this._afterRun = () => {
      const autStore = useAutStore();
      autStore.setIsRunning(false);
    };
    this._updateViewport = ({ viewportWidth, viewportHeight }, cb) => {
      const autStore = useAutStore();
      autStore.updateDimensions(viewportWidth, viewportHeight);
      if (cb) {
        autStore.setViewportUpdatedCallback(cb);
      }
    };
    this._updateLoadingUrl = (isLoadingUrl) => {
      const autStore = useAutStore();
      autStore.setIsLoadingUrl(isLoadingUrl);
    };
    this.setSnapshots = (snapshotProps) => {
      const snapshotStore = useSnapshotStore();
      const autStore = useAutStore();
      const studioStore = useStudioStore();
      if (snapshotStore.isSnapshotPinned) {
        return;
      }
      if (autStore.isRunning) {
        return snapshotStore.setTestsRunningError();
      }
      if (studioStore.isOpen) {
        return this._studioOpenError();
      }
      const { snapshots } = snapshotProps;
      if (!snapshots || !snapshots.length) {
        this._clearSnapshots();
        snapshotStore.setMissingSnapshotMessage();
        return;
      }
      autStore.setHighlightUrl(false);
      if (!this.originalState) {
        this._storeOriginalState();
      }
      this.detachedId = snapshotProps.id;
      this._updateViewport(snapshotProps);
      autStore.updateUrl(snapshotProps.url);
      clearInterval(this.intervalId);
      if (snapshots.length > 1) {
        let i = 0;
        this.intervalId = window.setInterval(() => {
          if (this.isSnapshotPinned)
            return;
          i += 1;
          if (!snapshots[i]) {
            i = 0;
          }
          this._showSnapshotVue(snapshots[i], snapshotProps);
        }, 800);
      }
      this._showSnapshotVue(snapshots[0], snapshotProps);
    };
    this._showSnapshotVue = (snapshot, snapshotProps) => {
      const snapshotStore = useSnapshotStore();
      snapshotStore.showSnapshot(snapshot.name);
      this._restoreDom(snapshot, snapshotProps);
    };
    this._clearSnapshots = () => {
      const snapshotStore = useSnapshotStore();
      const autStore = useAutStore();
      if (snapshotStore.isSnapshotPinned)
        return;
      clearInterval(this.intervalId);
      autStore.setHighlightUrl(false);
      if (!this.originalState || !this.originalState.body) {
        return snapshotStore.clearMessage();
      }
      const previousDetachedId = this.detachedId;
      setTimeout(() => {
        if (!this.originalState) {
          return;
        }
        if (previousDetachedId !== this.detachedId)
          return;
        this._updateViewport(this.originalState);
        autStore.updateUrl(this.originalState.url);
        this.restoreDom(this.originalState.snapshot);
        snapshotStore.clearMessage();
        this.originalState = void 0;
        this.detachedId = void 0;
      });
    };
    this._pinSnapshot = (snapshotProps) => {
      const snapshotStore = useSnapshotStore();
      const { snapshots } = snapshotProps;
      if (!snapshots || !snapshots.length) {
        this.eventManager.snapshotUnpinned();
        snapshotStore.setMissingSnapshotMessage();
        return;
      }
      snapshotStore.pinSnapshot(snapshotProps);
      clearInterval(this.intervalId);
      this._restoreDom(snapshots[0], snapshotProps);
    };
    this._unpinSnapshot = () => {
      useSnapshotStore().$reset();
    };
    this._reset();
  }
  listen() {
    this.eventManager.on("run:start", this._beforeRun);
    this.eventManager.on("run:end", this._afterRun);
    this.eventManager.on("viewport:changed", this._updateViewport);
    this.eventManager.on("config", (config2) => {
      const { viewportWidth, viewportHeight } = config2;
      return this._updateViewport({ viewportHeight, viewportWidth });
    });
    const autStore = useAutStore();
    this.eventManager.on("url:changed", (url2) => {
      autStore.updateUrl(url2);
    });
    this.eventManager.on("page:loading", this._updateLoadingUrl);
    this.eventManager.on("show:snapshot", this.setSnapshots);
    this.eventManager.on("hide:snapshot", this._clearSnapshots);
    this.eventManager.on("pin:snapshot", this._pinSnapshot);
    this.eventManager.on("unpin:snapshot", this._unpinSnapshot);
  }
  _restoreDom(snapshot, snapshotProps) {
    this.restoreDom(snapshot);
    if (snapshotProps.$el) {
      this.highlightEl(snapshot, snapshotProps);
    }
  }
  _studioOpenError() {
    const snapshotStore = useSnapshotStore();
    snapshotStore.setMessage(
      defaultMessages.runner.snapshot.studioActiveError
    );
  }
  _storeOriginalState() {
    const autStore = useAutStore();
    if (!this.isAUTSameOrigin()) {
      const Cypress2 = this.eventManager.getCypress();
      Cypress2.primaryOriginCommunicator.toAllSpecBridges("generate:final:snapshot", autStore.url || "");
      Cypress2.primaryOriginCommunicator.once("snapshot:final:generated", (finalSnapshot2) => {
        this.originalState = {
          body: finalSnapshot2.body,
          htmlAttrs: finalSnapshot2.htmlAttrs,
          snapshot: finalSnapshot2,
          snapshots: [],
          url: autStore.url || "",
          // TODO: use same attr for both runner and runner-ct states.
          // these refer to the same thing - the viewport dimensions.
          viewportWidth: autStore.viewportWidth,
          viewportHeight: autStore.viewportHeight
        };
      });
      return;
    }
    const finalSnapshot = this.detachDom();
    if (!finalSnapshot)
      return;
    const { body, htmlAttrs } = finalSnapshot;
    this.originalState = {
      body,
      htmlAttrs,
      snapshot: finalSnapshot,
      snapshots: [],
      url: autStore.url || "",
      // TODO: UNIFY-1318 - use same attr for both runner and runner-ct states.
      // these refer to the same thing - the viewport dimensions.
      viewportWidth: autStore.viewportWidth,
      viewportHeight: autStore.viewportHeight
    };
  }
  _reset() {
    this.detachedId = void 0;
    this.intervalId = void 0;
    this.originalState = void 0;
    useSnapshotStore().$reset();
  }
}
const svgCy = `<svg data-cy="cypress-logo" width="49" height="48" viewBox="0 0 49 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.7571 19.0494C19.6992 19.0494 21.2811 20.085 22.094 21.8915L22.1583 22.0329L25.42 20.9253L25.3505 20.7583C24.0875 17.6823 21.1783 15.7704 17.7571 15.7704C15.352 15.7704 13.397 16.5414 11.7816 18.1243C10.1765 19.697 9.36366 21.6757 9.36366 24.0064C9.36366 26.3166 10.1765 28.285 11.7816 29.8577C13.397 31.4407 15.352 32.2116 17.7571 32.2116C21.1783 32.2116 24.0875 30.2997 25.3505 27.2263L25.42 27.0593L22.1531 25.9491L22.0914 26.0956C21.3635 27.8713 19.7429 28.9326 17.7571 28.9326C16.4041 28.9326 15.2619 28.4598 14.3565 27.5295C13.4407 26.5864 12.9777 25.4018 12.9777 24.009C12.9777 22.6059 13.4304 21.4444 14.3565 20.4576C15.2594 19.5222 16.4041 19.0494 17.7571 19.0494Z" fill="#BFC2D4"/>
<path d="M38.1863 16.0737L33.5381 27.8353L28.8591 16.0737H25.0315L31.5934 32.1268L26.9247 43.449L26.7081 43.963C26.559 44.3224 26.2335 44.5752 25.8578 44.6273C25.5338 44.6423 25.2078 44.65 24.8801 44.65C24.8124 44.65 24.7448 44.6497 24.6773 44.649C13.366 44.5402 4.23013 35.337 4.23013 24C4.23013 12.5953 13.4754 3.35 24.8801 3.35C36.2848 3.35 45.5301 12.5953 45.5301 24C45.5301 32.5719 40.3072 39.924 32.8701 43.0474L31.6574 45.9958C31.4788 46.43 31.2556 46.8377 30.9942 47.2142C41.2877 44.5105 48.8801 35.1419 48.8801 24C48.8801 10.7452 38.135 0 24.8801 0C11.6253 0 0.880127 10.7452 0.880127 24C0.880127 37.1872 11.5158 47.8902 24.6773 47.9992C24.7048 47.9994 25.8997 47.9794 25.8978 47.9794C27.6161 47.9075 29.1518 46.8308 29.8077 45.235L30.3495 43.9179L41.8029 16.0737H38.1863Z" fill="#BFC2D4"/>
</svg>
`;
const svgWarning = `<svg viewBox="0 0 32 30"><path d="M18.286 24.554v-3.393q0-0.25-0.17-0.42t-0.402-0.17h-3.429q-0.232 0-0.402 0.17t-0.17 0.42v3.393q0 0.25 0.17 0.42t0.402 0.17h3.429q0.232 0 0.402-0.17t0.17-0.42zM18.25 17.875l0.321-8.196q0-0.214-0.179-0.339-0.232-0.196-0.429-0.196h-3.929q-0.196 0-0.429 0.196-0.179 0.125-0.179 0.375l0.304 8.161q0 0.179 0.179 0.295t0.429 0.116h3.304q0.25 0 0.42-0.116t0.188-0.295zM18 1.196l13.714 25.143q0.625 1.125-0.036 2.25-0.304 0.518-0.83 0.821t-1.134 0.304h-27.429q-0.607 0-1.134-0.304t-0.83-0.821q-0.661-1.125-0.036-2.25l13.714-25.143q0.304-0.554 0.839-0.875t1.161-0.321 1.161 0.321 0.839 0.875z"></path></svg>`;
const defaultStyles = `
  body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img,a img{border:none;}address,caption,cite,code,dfn,em,strong,th,var,optgroup{font-style:inherit;font-weight:inherit;}del,ins{text-decoration:none;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:baseline;}sub{vertical-align:baseline;}legend{color:#000;}

  * {
    box-sizing: border-box;
  }

  body {
    color: #1b1e2e;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;
    font-size: 16px;
    line-height: 1.4;
    padding: 20px;
    width: 100%;
    height: 100%;
  }

  .container {
    background-color: #f3f4fa;
    border-radius: 8px;
    border: 2px dashed #e1e3ed;
    padding: 32px 16px;
    text-align: center;
    height: 100%;
  }

  svg {
    display: inline-block;
    stroke-width: 0;
    stroke: currentColor;
    fill: currentColor;
    margin: 16px 0;
    width: 64px;
  }

  p {
    font-size: 21px;
    font-weight: 200;
    line-height: 1.4;
  }

  a,
  a:hover,
  a:focus,
  a:active {
    color: currentColor;
    text-decoration: underline;
  }
`;
const blankStyles = `
  * { 
    margin: 0;
    padding: 0;
    box-sizing: border-box;
  }

  body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;
    min-height: 100vh;
    background-color: #f3f4fa;
    display: flex;
    align-items: center;
    justify-content: center;
  }

  svg {
    display: inline-block;
    stroke-width: 0;
    margin: 0 0 24px;
  }

  .inner-container {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
    margin: 32px;
  }

  .text {
    font-style: normal;
    font-weight: 500;
    font-size: 18px;
    line-height: 28px;
    text-align: center;
    color: #2E3247;
    margin: 0 0 4px;
  }

  .subtext {
    font-style: normal;
    font-weight: 500;
    font-size: 14px;
    line-height: 20px;
    text-align: center;
    color: #747994;
  }
`;
const blankContentsHtml = (text3 = "", subtext = "") => {
  return `
    <style>
      ${blankStyles}
    </style>

    <div class='inner-container'>
      ${svgCy}
      <p data-cy="text" class="text">${text3}</p>
      <p data-cy="subtext" class="subtext">${subtext}</p>
    </div>
  `;
};
const blankPageHeader = "Default blank page";
const blankPageSubtext = "This page was cleared by navigating to about:blank.";
const initial = () => {
  return blankContentsHtml();
};
const testIsolationBlankPage = () => {
  return blankContentsHtml(blankPageHeader, `${blankPageSubtext}<br>All active session data (cookies, localStorage and sessionStorage) across all domains are cleared.`);
};
const visitFailure = (props) => {
  const {
    status,
    statusText,
    contentType
  } = props;
  const getContentType = () => {
    if (!contentType) {
      return "";
    }
    return `(${contentType})`;
  };
  const getStatus = () => {
    if (!status) {
      return "";
    }
    return `<p>${status} - ${statusText} ${getContentType()}</p>`;
  };
  return `
  <style>
    ${defaultStyles}

    .container {
      background: #f5f4d7;
    }

    p {
      margin-bottom: 15px;
    }

    a {
      color: #4956e3;
      font-weight: bold;
      text-decoration: none;
    }

    a:hover,
    a:focus,
    a:active {
      color: #3a46cc;
      text-decoration: underline;
    }

  </style>

  <div class='container'>
    ${svgWarning}
    <p>Sorry, we could not load:</p>
    <p>
      <a href="${props.url}" target="_blank" rel="noopener noreferrer">${props.url}</a>
    </p>
    ${getStatus()}

  </div>
  `;
};
const blankContents = {
  initial,
  testIsolationBlankPage,
  visitFailure
};
const logger = {
  log(...args) {
    console.log(...args);
  },
  logError(...args) {
    console.error(...args);
  },
  clearLog() {
    var _a3;
    (_a3 = console.clear) == null ? void 0 : _a3.call(console);
  },
  logFormatted(consoleProps) {
    if (lodashExports.isEmpty(consoleProps))
      return;
    this._logValues(consoleProps);
    this._logArgs(consoleProps);
    this._logGroups(consoleProps);
    this._logTables(consoleProps);
  },
  _logValues(consoleProps) {
    const formattedLog = this._formatted(lodashExports.omit(consoleProps, "args", "groups", "table"));
    lodashExports.each(formattedLog, (value, key) => {
      if (lodashExports.isString(value) && lodashExports.trim(value) === "")
        return;
      if (typeof value !== "object" && lodashExports.trim(value) === "" && !lodashExports.isArray(value))
        return;
      this.log(`%c${key}`, "font-weight: bold", value);
    });
  },
  _formatted(consoleProps) {
    const maxKeyLength = this._getMaxKeyLength(consoleProps);
    return lodashExports.reduce(consoleProps, (memo, value, key) => {
      const append = ": ";
      key = lodashExports.capitalize(key + append).padEnd(maxKeyLength + append.length, " ");
      memo[key] = value;
      return memo;
    }, {});
  },
  _getMaxKeyLength(obj) {
    const lengths = Object.keys(obj).map((x2) => x2.length);
    return Math.max(...lengths);
  },
  _logArgs(consoleProps) {
    const args = this._getArgs(consoleProps);
    if (!args)
      return;
    this.log(`%cArgs:`, "font-weight: bold");
    args.forEach((arg, index2) => {
      this.log(`%c  [${index2}]:`, "font-weight: bold", arg);
    });
  },
  _getArgs(consoleProps) {
    const args = lodashExports.result(consoleProps, "args");
    if (!args)
      return;
    return args;
  },
  _logGroups(consoleProps) {
    const groups = this._getGroups(consoleProps);
    lodashExports.each(groups, (group) => {
      if (group.expand) {
        console.group(group.name);
      } else {
        console.groupCollapsed(group.name);
      }
      lodashExports.each(group.items, (value, key) => {
        if (group.label === false) {
          this.log(value);
        } else {
          this.log(`%c${key}`, "color: blue", value);
        }
      });
      this._logGroups(group);
      console.groupEnd();
    });
  },
  _getGroups(consoleProps) {
    const groups = lodashExports.result(consoleProps, "groups");
    if (!groups)
      return;
    return lodashExports.map(groups, (group) => {
      group.items = this._formatted(group.items || {});
      return group;
    });
  },
  _logTables(consoleProps) {
    const logTable = ({ name: name2, data, columns }) => {
      let tableData = data;
      if (Cypress.isBrowser("webkit")) {
        const getSimplifiedElementDisplay = (element) => {
          let display = element.tagName.toLowerCase();
          if (element.id) {
            display += `#${element.id}`;
          }
          element.classList.forEach((className) => {
            display += `.${className}`;
          });
          return display;
        };
        tableData = data.map((rowObj) => {
          return Object.entries(rowObj).reduce((acc, value) => {
            acc[value[0]] = lodashExports.isElement(value[1]) ? getSimplifiedElementDisplay(value[1]) : value[1];
            return acc;
          }, {});
        });
      }
      console.group(name2);
      console.table(tableData, columns);
      console.groupEnd();
    };
    lodashExports.each(lodashExports.sortBy(consoleProps.table, (val, key) => key), (getTableData) => {
      return logTable(getTableData());
    });
  }
};
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
  __name: "Highlight.ce",
  props: {
    selector: null,
    style: null
  },
  setup(__props) {
    const props = __props;
    const highlightStyle = props.style || {};
    const highlightTop = parseFloat(highlightStyle.top);
    const highlightLeft = parseFloat(highlightStyle.left);
    const highlightHeight = parseFloat(highlightStyle.height);
    const placeOnBottom = highlightTop < 35;
    const tooltipStyle = placeOnBottom ? {
      top: `${highlightTop + highlightHeight + 10}px`,
      left: `${highlightLeft}px`
    } : {
      top: `${highlightTop - 33}px`,
      left: `${highlightLeft}px`
    };
    const arrowStyle = placeOnBottom ? {
      left: `8px`,
      top: `-6px`,
      transform: "rotate(0deg)"
    } : {
      left: `8px`,
      top: `24px`,
      transform: "rotate(180deg)"
    };
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock(Fragment, null, [
        createBaseVNode("div", {
          class: "highlight",
          style: normalizeStyle(unref(highlightStyle))
        }, null, 4),
        createBaseVNode("div", {
          class: "tooltip",
          style: normalizeStyle(unref(tooltipStyle))
        }, [
          createBaseVNode("span", null, toDisplayString$1(__props.selector), 1),
          createBaseVNode("div", {
            class: "arrow",
            style: normalizeStyle(unref(arrowStyle))
          }, null, 4)
        ], 4)
      ], 64);
    };
  }
});
const _style_0 = "\n.highlight {\n  background: rgba(159, 196, 231, 0.6);\n  border: solid 2px #9FC4E7;\n  cursor: pointer;\n}\n.tooltip {\n  position: absolute;\n  background: #333;\n  border: solid 1px #333;\n  border-radius: 3px;\n  color: #e3e3e3;\n  font-size: 12px;\n  padding: 4px 6px;\n  text-align: center;\n}\n.arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-style: solid;\n  border-width: 0 6px 6px 6px;\n  border-color: transparent transparent #333 transparent;\n}\n";
const Highlight = /* @__PURE__ */ _export_sfc$1(_sfc_main$1, [["styles", [_style_0]]]);
const _sfc_main = /* @__PURE__ */ defineComponent({
  __name: "HighlightApp.ce",
  props: {
    selector: null,
    styles: null
  },
  setup(__props) {
    return (_ctx, _cache) => {
      return openBlock(true), createElementBlock(Fragment, null, renderList(__props.styles, (style, i) => {
        return openBlock(), createBlock(Highlight, {
          key: i,
          selector: __props.selector,
          style: normalizeStyle(style)
        }, null, 8, ["selector", "style"]);
      }), 128);
    };
  }
});
let app$1 = null;
const highlightMounter = {
  mount(container, selector, styles) {
    if (app$1) {
      app$1.unmount();
    }
    app$1 = createApp(_sfc_main, {
      selector,
      styles
    });
    app$1.mount(container);
  }
};
const sizzleRe = /sizzle/i;
class AutIframe {
  constructor(projectName, eventManager, $2) {
    this.projectName = projectName;
    this.eventManager = eventManager;
    this.$ = $2;
    this.showVisitFailure = (props) => {
      this._showContents(blankContents.visitFailure(props));
    };
    this.detachDom = () => {
      const Cypress2 = this.eventManager.getCypress();
      if (!Cypress2)
        return;
      return Cypress2.cy.detachDom(this._contents());
    };
    this.doesAUTMatchTopSuperDomainOrigin = () => {
      const Cypress2 = this.eventManager.getCypress();
      if (!Cypress2)
        return true;
      try {
        const { href: currentHref } = this.$iframe[0].contentWindow.document.location;
        const locationTop = Cypress2.Location.create(window.location.href);
        const locationAUT = Cypress2.Location.create(currentHref);
        return locationTop.superDomainOrigin === locationAUT.superDomainOrigin || locationAUT.superDomainOrigin === "about://blank";
      } catch (err) {
        if (err.name === "SecurityError") {
          return false;
        }
        throw err;
      }
    };
    this.removeSrcAttribute = () => {
      var _a3;
      (_a3 = this.$iframe) == null ? void 0 : _a3.removeAttr("src");
    };
    this.visitBlankPage = (testIsolation) => {
      return new Promise((resolve3) => {
        if (!this.$iframe) {
          return;
        }
        this.$iframe[0].src = "about:blank";
        this.$iframe.one("load", () => {
          if (testIsolation) {
            this._showTestIsolationBlankPage();
          } else {
            this._showInitialBlankPage();
          }
          resolve3();
        });
      });
    };
    this.restoreDom = (snapshot) => {
      var _a3, _b2;
      if (!this.doesAUTMatchTopSuperDomainOrigin()) {
        (_a3 = this.$iframe) == null ? void 0 : _a3.one("load", () => {
          this.restoreDom(snapshot);
        });
        this.removeSrcAttribute();
        return;
      }
      const Cypress2 = this.eventManager.getCypress();
      const { headStyles = void 0, bodyStyles = void 0 } = Cypress2 ? Cypress2.cy.getStyles(snapshot) : {};
      const { body, htmlAttrs } = snapshot;
      const contents = this._contents();
      const $html = contents == null ? void 0 : contents.find("html");
      if ($html) {
        this._replaceHtmlAttrs($html, htmlAttrs);
      }
      this._replaceHeadStyles(headStyles);
      (_b2 = this._body()) == null ? void 0 : _b2.remove();
      this._insertBodyStyles(body.get(), bodyStyles);
      $html == null ? void 0 : $html.append(body.get());
      const selectorPlaygroundStore = useSelectorPlaygroundStore();
      this.debouncedToggleSelectorPlayground(selectorPlaygroundStore.isEnabled);
    };
    this.highlightEl = ({ body }, { $el, coords, highlightAttr, scrollBy }) => {
      var _a3;
      this.removeHighlights();
      if (body) {
        $el = body.get().find(`[${highlightAttr}]`);
      } else {
        body = { get: () => this._body() };
      }
      const el2 = $el.get(0);
      const $body = body.get();
      body = $body.get(0);
      if (el2) {
        el2.scrollIntoView();
        if (scrollBy) {
          (_a3 = this.$iframe) == null ? void 0 : _a3.prop("contentWindow").scrollBy(scrollBy.x, scrollBy.y);
        }
      }
      $el.each((__, element) => {
        const $_el = this.$(element);
        if (!this.$.contains(body, element))
          return;
        const dimensions = this._getOffsetSize($_el.get(0));
        if (dimensions.width === 0 || dimensions.height === 0 || $_el.css("display") === "none") {
          return;
        }
        this._addElementBoxModelLayers($_el, $body).setAttribute("data-highlight-el", `true`);
      });
      if (coords) {
        requestAnimationFrame(() => {
          this._addHitBoxLayer(coords, $body.get(0)).setAttribute("data-highlight-hitbox", "true");
        });
      }
    };
    this.removeHighlights = () => {
      var _a3;
      this._contents() && ((_a3 = this._contents()) == null ? void 0 : _a3.find(".__cypress-highlight").remove());
    };
    this.toggleSelectorPlayground = (isEnabled) => {
      const $body = this._body();
      if (!$body)
        return;
      if (isEnabled) {
        $body.on("mouseenter", this._resetShowHighlight);
        $body.on("mousemove", this._onSelectorMouseMove);
        $body.on("mouseleave", this._clearHighlight);
      } else {
        $body.off("mouseenter", this._resetShowHighlight);
        $body.off("mousemove", this._onSelectorMouseMove);
        $body.off("mouseleave", this._clearHighlight);
        if (this._highlightedEl) {
          this._clearHighlight();
        }
      }
    };
    this._resetShowHighlight = () => {
      const selectorPlaygroundStore = useSelectorPlaygroundStore();
      selectorPlaygroundStore.setShowingHighlight(false);
    };
    this._onSelectorMouseMove = (e) => {
      const $body = this._body();
      if (!$body)
        return;
      let el2 = e.target;
      let $el = this.$(el2);
      const $ancestorHighlight = $el.closest(".__cypress-selector-playground");
      if ($ancestorHighlight.length) {
        $el = $ancestorHighlight;
      }
      if ($ancestorHighlight.length || $el.hasClass("__cypress-selector-playground")) {
        const $highlight = $el;
        $highlight.css("display", "none");
        el2 = this._document().elementFromPoint(e.clientX, e.clientY);
        $el = this.$(el2);
        $highlight.css("display", "block");
      }
      if (this._highlightedEl === el2)
        return;
      this._highlightedEl = el2;
      const Cypress2 = this.eventManager.getCypress();
      const selector = Cypress2.SelectorPlayground.getSelector($el);
      const selectorPlaygroundStore = useSelectorPlaygroundStore();
      this._addOrUpdateSelectorPlaygroundHighlight({
        $el,
        $body,
        selector,
        showTooltip: true,
        onClick: () => {
          selectorPlaygroundStore.setNumElements(1);
          selectorPlaygroundStore.resetMethod();
          selectorPlaygroundStore.setSelector(selector);
          selectorPlaygroundStore.setValidity(!!el2);
        }
      });
    };
    this._clearHighlight = () => {
      const $body = this._body();
      if (!$body)
        return;
      this._addOrUpdateSelectorPlaygroundHighlight({
        $el: null,
        $body
      });
      if (this._highlightedEl) {
        this._highlightedEl = void 0;
      }
    };
    this._isInViewport = (win, el2) => {
      let rect2 = el2.getBoundingClientRect();
      return rect2.top >= 0 && rect2.left >= 0 && rect2.bottom <= win.innerHeight && rect2.right <= win.innerWidth;
    };
    this.listeners = [];
    this.debouncedToggleSelectorPlayground = lodashExports.debounce(this.toggleSelectorPlayground, 300);
  }
  create() {
    const $iframe = this.$("<iframe>", {
      id: `Your project: '${this.projectName}'`,
      title: `Your project: '${this.projectName}'`,
      class: "aut-iframe"
    });
    this.$iframe = $iframe;
    return $iframe;
  }
  destroy() {
    if (!this.$iframe) {
      throw Error(`Cannot call #remove without first calling #create`);
    }
    this.$iframe.remove();
  }
  _showInitialBlankPage() {
    this._showContents(blankContents.initial());
  }
  _showTestIsolationBlankPage() {
    this._showContents(blankContents.testIsolationBlankPage());
  }
  _showContents(contents) {
    var _a3;
    (_a3 = this._body()) == null ? void 0 : _a3.html(contents);
  }
  _contents() {
    return this.$iframe && this.$iframe.contents();
  }
  _window() {
    var _a3;
    return (_a3 = this.$iframe) == null ? void 0 : _a3.prop("contentWindow");
  }
  _document() {
    var _a3;
    return (_a3 = this.$iframe) == null ? void 0 : _a3.prop("contentDocument");
  }
  _body() {
    var _a3;
    return (_a3 = this._contents()) == null ? void 0 : _a3.find("body");
  }
  // note htmlAttrs is actually `NamedNodeMap`: https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap
  // but typing it correctly gives a lot more weird typing errors
  _replaceHtmlAttrs($html, htmlAttrs) {
    let oldAttrs = {};
    if ($html[0]) {
      oldAttrs = lodashExports.map($html[0].attributes, (attr) => {
        return attr.name;
      });
    }
    lodashExports.each(oldAttrs, (attr) => {
      $html.removeAttr(attr);
    });
    lodashExports.each(htmlAttrs, (value, key) => {
      $html.attr(key, value);
    });
  }
  _replaceHeadStyles(styles = {}) {
    var _a3;
    const $head = (_a3 = this._contents()) == null ? void 0 : _a3.find("head");
    const existingStyles = $head == null ? void 0 : $head.find('link[rel="stylesheet"],style');
    lodashExports.each(styles, (style, index2) => {
      if (style.href) {
        this._replaceLink($head, existingStyles == null ? void 0 : existingStyles[index2], style);
      } else {
        this._replaceStyle($head, existingStyles == null ? void 0 : existingStyles[index2], style);
      }
    });
    if (existingStyles && existingStyles.length > styles.length) {
      existingStyles.slice(styles.length).remove();
    }
  }
  _replaceLink($head, existingStyle, style) {
    const linkTag = this._linkTag(style);
    if (!existingStyle) {
      $head.append(linkTag);
      return;
    }
    if (existingStyle.href !== style.href) {
      this.$(existingStyle).replaceWith(linkTag);
    }
  }
  _replaceStyle($head, existingStyle, style) {
    const styleTag = this._styleTag(style);
    if (existingStyle) {
      this.$(existingStyle).replaceWith(styleTag);
    } else {
      $head.append(styleTag);
    }
  }
  _insertBodyStyles($body, styles = {}) {
    lodashExports.each(styles, (style) => {
      $body.append(style.href ? this._linkTag(style) : this._styleTag(style));
    });
  }
  _linkTag(style) {
    return `<link rel="stylesheet" href="${style.href}" />`;
  }
  _styleTag(style) {
    return `<style>${style}</style>`;
  }
  toggleSelectorHighlight(isShowingHighlight) {
    const selectorPlaygroundStore = useSelectorPlaygroundStore();
    if (!isShowingHighlight) {
      this._clearHighlight();
      return;
    }
    const Cypress2 = this.eventManager.getCypress();
    const $el = this.getElements(Cypress2.dom);
    selectorPlaygroundStore.setValidity(!!$el);
    if ($el) {
      selectorPlaygroundStore.setNumElements($el.length);
      if ($el.length) {
        this._scrollIntoView(this._window(), $el[0]);
      }
    }
    this._addOrUpdateSelectorPlaygroundHighlight({
      $el: $el && $el.length ? $el : null,
      $body: this._body(),
      selector: selectorPlaygroundStore.selector,
      showTooltip: false
    });
  }
  getElements(cypressDom) {
    const selectorPlaygroundStore = useSelectorPlaygroundStore();
    const $contents = this._contents();
    if (!$contents || !selectorPlaygroundStore.selector)
      return;
    return this._getElementsForSelector({
      method: selectorPlaygroundStore.method,
      selector: selectorPlaygroundStore.selector,
      cypressDom,
      $root: $contents
    });
  }
  printSelectorElementsToConsole() {
    logger.clearLog();
    const Cypress2 = this.eventManager.getCypress();
    const $el = this.getElements(Cypress2.dom);
    const selectorPlaygroundStore = useSelectorPlaygroundStore();
    if (!$el) {
      return logger.logFormatted({
        Command: selectorPlaygroundStore.command,
        Yielded: "Nothing"
      });
    }
    logger.logFormatted({
      Command: selectorPlaygroundStore.command,
      Elements: $el.length,
      Yielded: Cypress2.dom.getElements($el)
    });
  }
  startStudio() {
    var _a3;
    const studioStore = useStudioStore();
    if (studioStore.isLoading) {
      studioStore.start((_a3 = this._body()) == null ? void 0 : _a3[0]);
    }
  }
  reattachStudio() {
    var _a3;
    const studioStore = useStudioStore();
    if (studioStore.isActive) {
      const body = (_a3 = this._body()) == null ? void 0 : _a3[0];
      if (!body) {
        throw Error(`Cannot reattach Studio without the HTMLBodyElement for the app`);
      }
      studioStore.attachListeners(body);
    }
  }
  _scrollIntoView(win, el2) {
    if (!el2 || this._isInViewport(win, el2))
      return;
    el2.scrollIntoView();
  }
  _getElementsForSelector({ $root, selector, method, cypressDom }) {
    let $el = null;
    try {
      if (method === "contains") {
        $el = $root.find(cypressDom.getContainsSelector(selector));
        if ($el.length) {
          $el = cypressDom.getFirstDeepestElement($el);
        }
      } else {
        $el = $root.find(selector);
      }
    } catch (err) {
      if (!sizzleRe.test(err.stack))
        throw err;
    }
    return $el;
  }
  _addHitBoxLayer(coords, body) {
    const height = 10;
    const width = 10;
    const dotHeight = 4;
    const dotWidth = 4;
    const top2 = coords.y - height / 2;
    const left2 = coords.x - width / 2;
    const dotTop = height / 2 - dotHeight / 2;
    const dotLeft = width / 2 - dotWidth / 2;
    const resetStyles = {
      border: "none !important",
      margin: "0 !important",
      padding: "0 !important"
    };
    const boxStyles = {
      ...resetStyles,
      position: "absolute",
      top: `${top2}px`,
      left: `${left2}px`,
      width: `${width}px`,
      height: `${height}px`,
      backgroundColor: "red",
      borderRadius: "5px",
      boxShadow: "0 0 5px #333",
      zIndex: "2147483647"
    };
    const box = document.createElement("div");
    box.classList.add("__cypress-highlight");
    for (const key in boxStyles) {
      box.style[key] = boxStyles[key];
    }
    const wrapperStyles = {
      ...resetStyles,
      position: "relative"
    };
    const wrapper = document.createElement("div");
    for (const key in wrapperStyles) {
      wrapper.style[key] = wrapperStyles[key];
    }
    const dotStyles = {
      ...resetStyles,
      position: "absolute",
      top: `${dotTop}px`,
      left: `${dotLeft}px`,
      height: `${dotHeight}px`,
      width: `${dotWidth}px`,
      backgroundColor: "pink",
      borderRadius: "5px"
    };
    const dot2 = document.createElement("div");
    for (const key in dotStyles) {
      dot2.style[key] = dotStyles[key];
    }
    body.appendChild(box);
    box.appendChild(wrapper);
    wrapper.appendChild(dot2);
    return box;
  }
  _getOffsetSize(el2) {
    return {
      width: el2.offsetWidth,
      height: el2.offsetHeight
    };
  }
  _addElementBoxModelLayers($el, $body) {
    $body = $body || $("body");
    const el2 = $el.get(0);
    const body = $body.get(0);
    const dimensions = getElementDimensions(el2);
    const container = document.createElement("div");
    container.classList.add("__cypress-highlight");
    container.style.opacity = `0.7`;
    container.style.position = "absolute";
    container.style.zIndex = `${INT32_MAX}`;
    const layers = {
      Content: "#9FC4E7",
      Padding: "#C1CD89",
      Border: "#FCDB9A",
      Margin: "#F9CC9D"
    };
    lodashExports.each(layers, (color, attr) => {
      let obj;
      switch (attr) {
        case "Content":
          obj = {
            width: dimensions.width,
            height: dimensions.height,
            top: dimensions.offset.top + dimensions.borderTop + dimensions.paddingTop,
            left: dimensions.offset.left + dimensions.borderLeft + dimensions.paddingLeft
          };
          break;
        default:
          obj = {
            width: this._getDimensionsFor(dimensions, attr, "width"),
            height: this._getDimensionsFor(dimensions, attr, "height"),
            top: dimensions.offset.top,
            left: dimensions.offset.left
          };
      }
      if (attr === "Margin") {
        obj.top -= dimensions.marginTop;
        obj.left -= dimensions.marginLeft;
      }
      if (attr === "Padding") {
        obj.top += dimensions.borderTop;
        obj.left += dimensions.borderLeft;
      }
      if (this._dimensionsMatchPreviousLayer(obj, container))
        return;
      this._createLayer($el.get(0), attr, color, container, obj);
    });
    body.appendChild(container);
    for (let i = 0; i < container.children.length; i++) {
      const el22 = container.children[i];
      const top2 = parseFloat(el22.getAttribute("data-top"));
      const left2 = parseFloat(el22.getAttribute("data-left"));
      setOffset(el22, { top: top2, left: left2 });
    }
    return container;
  }
  _createLayer(el2, attr, color, container, dimensions) {
    const div2 = document.createElement("div");
    div2.style.transform = getComputedStyle(el2, null).transform;
    div2.style.width = `${dimensions.width}px`;
    div2.style.height = `${dimensions.height}px`;
    div2.style.position = "absolute";
    div2.style.zIndex = `${getZIndex(el2)}`;
    div2.style.backgroundColor = color;
    div2.setAttribute("data-top", dimensions.top);
    div2.setAttribute("data-left", dimensions.left);
    div2.setAttribute("data-layer", attr);
    container.prepend(div2);
    return div2;
  }
  _dimensionsMatchPreviousLayer(obj, container) {
    const previousLayer = container.childNodes[0];
    if (!previousLayer) {
      return;
    }
    return obj.width === previousLayer.offsetWidth && obj.height === previousLayer.offsetHeight;
  }
  _getDimensionsFor(dimensions, attr, dimension) {
    return dimensions[`${dimension}With${attr}`];
  }
  _addOrUpdateSelectorPlaygroundHighlight({ $el, $body, selector, showTooltip, onClick }) {
    const { container, vueContainer } = getOrCreateHelperDom({
      body: ($body == null ? void 0 : $body.get(0)) || document.body,
      className: "__cypress-selector-playground",
      css: Highlight.styles[0]
    });
    const removeContainerClickListeners = () => {
      this.listeners.forEach((listener) => {
        vueContainer.removeEventListener("click", listener);
      });
      this.listeners = [];
    };
    if (!$el) {
      removeContainerClickListeners();
      container.remove();
      return;
    }
    const elements = $el.get();
    const styles = getSelectorHighlightStyles(elements);
    if (elements.length === 1) {
      removeContainerClickListeners();
      if (onClick) {
        vueContainer.addEventListener("click", onClick);
        this.listeners.push(onClick);
      }
    }
    highlightMounter.mount(vueContainer, selector, styles);
  }
}
var bluebirdExports = {};
var bluebird = {
  get exports() {
    return bluebirdExports;
  },
  set exports(v2) {
    bluebirdExports = v2;
  }
};
/* @preserve
 * The MIT License (MIT)
 * 
 * Copyright (c) 2013-2018 Petka Antonov
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 * 
 */
(function(module, exports) {
  !function(e) {
    module.exports = e();
  }(function() {
    return function e(t2, n, r2) {
      function s2(o3, u2) {
        if (!n[o3]) {
          if (!t2[o3]) {
            var a2 = typeof _dereq_ == "function" && _dereq_;
            if (!u2 && a2)
              return a2(o3, true);
            if (i)
              return i(o3, true);
            var f2 = new Error("Cannot find module '" + o3 + "'");
            throw f2.code = "MODULE_NOT_FOUND", f2;
          }
          var l2 = n[o3] = { exports: {} };
          t2[o3][0].call(l2.exports, function(e2) {
            var n2 = t2[o3][1][e2];
            return s2(n2 ? n2 : e2);
          }, l2, l2.exports, e, t2, n, r2);
        }
        return n[o3].exports;
      }
      var i = typeof _dereq_ == "function" && _dereq_;
      for (var o2 = 0; o2 < r2.length; o2++)
        s2(r2[o2]);
      return s2;
    }({ 1: [function(_dereq_2, module2, exports2) {
      module2.exports = function(Promise2) {
        var SomePromiseArray = Promise2._SomePromiseArray;
        function any(promises) {
          var ret = new SomePromiseArray(promises);
          var promise = ret.promise();
          ret.setHowMany(1);
          ret.setUnwrap();
          ret.init();
          return promise;
        }
        Promise2.any = function(promises) {
          return any(promises);
        };
        Promise2.prototype.any = function() {
          return any(this);
        };
      };
    }, {}], 2: [function(_dereq_2, module2, exports2) {
      var firstLineError;
      try {
        throw new Error();
      } catch (e) {
        firstLineError = e;
      }
      var schedule = _dereq_2("./schedule");
      var Queue = _dereq_2("./queue");
      var util2 = _dereq_2("./util");
      function Async() {
        this._customScheduler = false;
        this._isTickUsed = false;
        this._lateQueue = new Queue(16);
        this._normalQueue = new Queue(16);
        this._haveDrainedQueues = false;
        this._trampolineEnabled = true;
        var self2 = this;
        this.drainQueues = function() {
          self2._drainQueues();
        };
        this._schedule = schedule;
      }
      Async.prototype.setScheduler = function(fn2) {
        var prev2 = this._schedule;
        this._schedule = fn2;
        this._customScheduler = true;
        return prev2;
      };
      Async.prototype.hasCustomScheduler = function() {
        return this._customScheduler;
      };
      Async.prototype.enableTrampoline = function() {
        this._trampolineEnabled = true;
      };
      Async.prototype.disableTrampolineIfNecessary = function() {
        if (util2.hasDevTools) {
          this._trampolineEnabled = false;
        }
      };
      Async.prototype.haveItemsQueued = function() {
        return this._isTickUsed || this._haveDrainedQueues;
      };
      Async.prototype.fatalError = function(e, isNode2) {
        if (isNode2) {
          process.stderr.write("Fatal " + (e instanceof Error ? e.stack : e) + "\n");
          process.exit(2);
        } else {
          this.throwLater(e);
        }
      };
      Async.prototype.throwLater = function(fn2, arg) {
        if (arguments.length === 1) {
          arg = fn2;
          fn2 = function() {
            throw arg;
          };
        }
        if (typeof setTimeout !== "undefined") {
          setTimeout(function() {
            fn2(arg);
          }, 0);
        } else
          try {
            this._schedule(function() {
              fn2(arg);
            });
          } catch (e) {
            throw new Error("No async scheduler available\n\n    See http://goo.gl/MqrFmX\n");
          }
      };
      function AsyncInvokeLater(fn2, receiver, arg) {
        this._lateQueue.push(fn2, receiver, arg);
        this._queueTick();
      }
      function AsyncInvoke(fn2, receiver, arg) {
        this._normalQueue.push(fn2, receiver, arg);
        this._queueTick();
      }
      function AsyncSettlePromises(promise) {
        this._normalQueue._pushOne(promise);
        this._queueTick();
      }
      if (!util2.hasDevTools) {
        Async.prototype.invokeLater = AsyncInvokeLater;
        Async.prototype.invoke = AsyncInvoke;
        Async.prototype.settlePromises = AsyncSettlePromises;
      } else {
        Async.prototype.invokeLater = function(fn2, receiver, arg) {
          if (this._trampolineEnabled) {
            AsyncInvokeLater.call(this, fn2, receiver, arg);
          } else {
            this._schedule(function() {
              setTimeout(function() {
                fn2.call(receiver, arg);
              }, 100);
            });
          }
        };
        Async.prototype.invoke = function(fn2, receiver, arg) {
          if (this._trampolineEnabled) {
            AsyncInvoke.call(this, fn2, receiver, arg);
          } else {
            this._schedule(function() {
              fn2.call(receiver, arg);
            });
          }
        };
        Async.prototype.settlePromises = function(promise) {
          if (this._trampolineEnabled) {
            AsyncSettlePromises.call(this, promise);
          } else {
            this._schedule(function() {
              promise._settlePromises();
            });
          }
        };
      }
      function _drainQueue(queue2) {
        while (queue2.length() > 0) {
          _drainQueueStep(queue2);
        }
      }
      function _drainQueueStep(queue2) {
        var fn2 = queue2.shift();
        if (typeof fn2 !== "function") {
          fn2._settlePromises();
        } else {
          var receiver = queue2.shift();
          var arg = queue2.shift();
          fn2.call(receiver, arg);
        }
      }
      Async.prototype._drainQueues = function() {
        _drainQueue(this._normalQueue);
        this._reset();
        this._haveDrainedQueues = true;
        _drainQueue(this._lateQueue);
      };
      Async.prototype._queueTick = function() {
        if (!this._isTickUsed) {
          this._isTickUsed = true;
          this._schedule(this.drainQueues);
        }
      };
      Async.prototype._reset = function() {
        this._isTickUsed = false;
      };
      module2.exports = Async;
      module2.exports.firstLineError = firstLineError;
    }, { "./queue": 26, "./schedule": 29, "./util": 36 }], 3: [function(_dereq_2, module2, exports2) {
      module2.exports = function(Promise2, INTERNAL, tryConvertToPromise, debug2) {
        var calledBind = false;
        var rejectThis = function(_2, e) {
          this._reject(e);
        };
        var targetRejected = function(e, context2) {
          context2.promiseRejectionQueued = true;
          context2.bindingPromise._then(rejectThis, rejectThis, null, this, e);
        };
        var bindingResolved = function(thisArg, context2) {
          if ((this._bitField & 50397184) === 0) {
            this._resolveCallback(context2.target);
          }
        };
        var bindingRejected = function(e, context2) {
          if (!context2.promiseRejectionQueued)
            this._reject(e);
        };
        Promise2.prototype.bind = function(thisArg) {
          if (!calledBind) {
            calledBind = true;
            Promise2.prototype._propagateFrom = debug2.propagateFromFunction();
            Promise2.prototype._boundValue = debug2.boundValueFunction();
          }
          var maybePromise = tryConvertToPromise(thisArg);
          var ret = new Promise2(INTERNAL);
          ret._propagateFrom(this, 1);
          var target2 = this._target();
          ret._setBoundTo(maybePromise);
          if (maybePromise instanceof Promise2) {
            var context2 = {
              promiseRejectionQueued: false,
              promise: ret,
              target: target2,
              bindingPromise: maybePromise
            };
            target2._then(INTERNAL, targetRejected, void 0, ret, context2);
            maybePromise._then(
              bindingResolved,
              bindingRejected,
              void 0,
              ret,
              context2
            );
            ret._setOnCancel(maybePromise);
          } else {
            ret._resolveCallback(target2);
          }
          return ret;
        };
        Promise2.prototype._setBoundTo = function(obj) {
          if (obj !== void 0) {
            this._bitField = this._bitField | 2097152;
            this._boundTo = obj;
          } else {
            this._bitField = this._bitField & ~2097152;
          }
        };
        Promise2.prototype._isBound = function() {
          return (this._bitField & 2097152) === 2097152;
        };
        Promise2.bind = function(thisArg, value) {
          return Promise2.resolve(value).bind(thisArg);
        };
      };
    }, {}], 4: [function(_dereq_2, module2, exports2) {
      var old;
      if (typeof Promise !== "undefined")
        old = Promise;
      function noConflict() {
        try {
          if (Promise === bluebird2)
            Promise = old;
        } catch (e) {
        }
        return bluebird2;
      }
      var bluebird2 = _dereq_2("./promise")();
      bluebird2.noConflict = noConflict;
      module2.exports = bluebird2;
    }, { "./promise": 22 }], 5: [function(_dereq_2, module2, exports2) {
      var cr = Object.create;
      if (cr) {
        var callerCache = cr(null);
        var getterCache = cr(null);
        callerCache[" size"] = getterCache[" size"] = 0;
      }
      module2.exports = function(Promise2) {
        var util2 = _dereq_2("./util");
        var canEvaluate = util2.canEvaluate;
        util2.isIdentifier;
        var getGetter;
        function ensureMethod(obj, methodName) {
          var fn2;
          if (obj != null)
            fn2 = obj[methodName];
          if (typeof fn2 !== "function") {
            var message = "Object " + util2.classString(obj) + " has no method '" + util2.toString(methodName) + "'";
            throw new Promise2.TypeError(message);
          }
          return fn2;
        }
        function caller(obj) {
          var methodName = this.pop();
          var fn2 = ensureMethod(obj, methodName);
          return fn2.apply(obj, this);
        }
        Promise2.prototype.call = function(methodName) {
          var args = [].slice.call(arguments, 1);
          args.push(methodName);
          return this._then(caller, void 0, void 0, args, void 0);
        };
        function namedGetter(obj) {
          return obj[this];
        }
        function indexedGetter(obj) {
          var index2 = +this;
          if (index2 < 0)
            index2 = Math.max(0, index2 + obj.length);
          return obj[index2];
        }
        Promise2.prototype.get = function(propertyName) {
          var isIndex = typeof propertyName === "number";
          var getter;
          if (!isIndex) {
            if (canEvaluate) {
              var maybeGetter = getGetter(propertyName);
              getter = maybeGetter !== null ? maybeGetter : namedGetter;
            } else {
              getter = namedGetter;
            }
          } else {
            getter = indexedGetter;
          }
          return this._then(getter, void 0, void 0, propertyName, void 0);
        };
      };
    }, { "./util": 36 }], 6: [function(_dereq_2, module2, exports2) {
      module2.exports = function(Promise2, PromiseArray, apiRejection, debug2) {
        var util2 = _dereq_2("./util");
        var tryCatch = util2.tryCatch;
        var errorObj = util2.errorObj;
        var async = Promise2._async;
        Promise2.prototype["break"] = Promise2.prototype.cancel = function() {
          if (!debug2.cancellation())
            return this._warn("cancellation is disabled");
          var promise = this;
          var child = promise;
          while (promise._isCancellable()) {
            if (!promise._cancelBy(child)) {
              if (child._isFollowing()) {
                child._followee().cancel();
              } else {
                child._cancelBranched();
              }
              break;
            }
            var parent = promise._cancellationParent;
            if (parent == null || !parent._isCancellable()) {
              if (promise._isFollowing()) {
                promise._followee().cancel();
              } else {
                promise._cancelBranched();
              }
              break;
            } else {
              if (promise._isFollowing())
                promise._followee().cancel();
              promise._setWillBeCancelled();
              child = promise;
              promise = parent;
            }
          }
        };
        Promise2.prototype._branchHasCancelled = function() {
          this._branchesRemainingToCancel--;
        };
        Promise2.prototype._enoughBranchesHaveCancelled = function() {
          return this._branchesRemainingToCancel === void 0 || this._branchesRemainingToCancel <= 0;
        };
        Promise2.prototype._cancelBy = function(canceller) {
          if (canceller === this) {
            this._branchesRemainingToCancel = 0;
            this._invokeOnCancel();
            return true;
          } else {
            this._branchHasCancelled();
            if (this._enoughBranchesHaveCancelled()) {
              this._invokeOnCancel();
              return true;
            }
          }
          return false;
        };
        Promise2.prototype._cancelBranched = function() {
          if (this._enoughBranchesHaveCancelled()) {
            this._cancel();
          }
        };
        Promise2.prototype._cancel = function() {
          if (!this._isCancellable())
            return;
          this._setCancelled();
          async.invoke(this._cancelPromises, this, void 0);
        };
        Promise2.prototype._cancelPromises = function() {
          if (this._length() > 0)
            this._settlePromises();
        };
        Promise2.prototype._unsetOnCancel = function() {
          this._onCancelField = void 0;
        };
        Promise2.prototype._isCancellable = function() {
          return this.isPending() && !this._isCancelled();
        };
        Promise2.prototype.isCancellable = function() {
          return this.isPending() && !this.isCancelled();
        };
        Promise2.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {
          if (util2.isArray(onCancelCallback)) {
            for (var i = 0; i < onCancelCallback.length; ++i) {
              this._doInvokeOnCancel(onCancelCallback[i], internalOnly);
            }
          } else if (onCancelCallback !== void 0) {
            if (typeof onCancelCallback === "function") {
              if (!internalOnly) {
                var e = tryCatch(onCancelCallback).call(this._boundValue());
                if (e === errorObj) {
                  this._attachExtraTrace(e.e);
                  async.throwLater(e.e);
                }
              }
            } else {
              onCancelCallback._resultCancelled(this);
            }
          }
        };
        Promise2.prototype._invokeOnCancel = function() {
          var onCancelCallback = this._onCancel();
          this._unsetOnCancel();
          async.invoke(this._doInvokeOnCancel, this, onCancelCallback);
        };
        Promise2.prototype._invokeInternalOnCancel = function() {
          if (this._isCancellable()) {
            this._doInvokeOnCancel(this._onCancel(), true);
            this._unsetOnCancel();
          }
        };
        Promise2.prototype._resultCancelled = function() {
          this.cancel();
        };
      };
    }, { "./util": 36 }], 7: [function(_dereq_2, module2, exports2) {
      module2.exports = function(NEXT_FILTER) {
        var util2 = _dereq_2("./util");
        var getKeys = _dereq_2("./es5").keys;
        var tryCatch = util2.tryCatch;
        var errorObj = util2.errorObj;
        function catchFilter(instances, cb, promise) {
          return function(e) {
            var boundTo = promise._boundValue();
            predicateLoop:
              for (var i = 0; i < instances.length; ++i) {
                var item = instances[i];
                if (item === Error || item != null && item.prototype instanceof Error) {
                  if (e instanceof item) {
                    return tryCatch(cb).call(boundTo, e);
                  }
                } else if (typeof item === "function") {
                  var matchesPredicate = tryCatch(item).call(boundTo, e);
                  if (matchesPredicate === errorObj) {
                    return matchesPredicate;
                  } else if (matchesPredicate) {
                    return tryCatch(cb).call(boundTo, e);
                  }
                } else if (util2.isObject(e)) {
                  var keys = getKeys(item);
                  for (var j2 = 0; j2 < keys.length; ++j2) {
                    var key = keys[j2];
                    if (item[key] != e[key]) {
                      continue predicateLoop;
                    }
                  }
                  return tryCatch(cb).call(boundTo, e);
                }
              }
            return NEXT_FILTER;
          };
        }
        return catchFilter;
      };
    }, { "./es5": 13, "./util": 36 }], 8: [function(_dereq_2, module2, exports2) {
      module2.exports = function(Promise2) {
        var longStackTraces = false;
        var contextStack = [];
        Promise2.prototype._promiseCreated = function() {
        };
        Promise2.prototype._pushContext = function() {
        };
        Promise2.prototype._popContext = function() {
          return null;
        };
        Promise2._peekContext = Promise2.prototype._peekContext = function() {
        };
        function Context2() {
          this._trace = new Context2.CapturedTrace(peekContext());
        }
        Context2.prototype._pushContext = function() {
          if (this._trace !== void 0) {
            this._trace._promiseCreated = null;
            contextStack.push(this._trace);
          }
        };
        Context2.prototype._popContext = function() {
          if (this._trace !== void 0) {
            var trace2 = contextStack.pop();
            var ret = trace2._promiseCreated;
            trace2._promiseCreated = null;
            return ret;
          }
          return null;
        };
        function createContext() {
          if (longStackTraces)
            return new Context2();
        }
        function peekContext() {
          var lastIndex = contextStack.length - 1;
          if (lastIndex >= 0) {
            return contextStack[lastIndex];
          }
          return void 0;
        }
        Context2.CapturedTrace = null;
        Context2.create = createContext;
        Context2.deactivateLongStackTraces = function() {
        };
        Context2.activateLongStackTraces = function() {
          var Promise_pushContext = Promise2.prototype._pushContext;
          var Promise_popContext = Promise2.prototype._popContext;
          var Promise_PeekContext = Promise2._peekContext;
          var Promise_peekContext = Promise2.prototype._peekContext;
          var Promise_promiseCreated = Promise2.prototype._promiseCreated;
          Context2.deactivateLongStackTraces = function() {
            Promise2.prototype._pushContext = Promise_pushContext;
            Promise2.prototype._popContext = Promise_popContext;
            Promise2._peekContext = Promise_PeekContext;
            Promise2.prototype._peekContext = Promise_peekContext;
            Promise2.prototype._promiseCreated = Promise_promiseCreated;
            longStackTraces = false;
          };
          longStackTraces = true;
          Promise2.prototype._pushContext = Context2.prototype._pushContext;
          Promise2.prototype._popContext = Context2.prototype._popContext;
          Promise2._peekContext = Promise2.prototype._peekContext = peekContext;
          Promise2.prototype._promiseCreated = function() {
            var ctx = this._peekContext();
            if (ctx && ctx._promiseCreated == null)
              ctx._promiseCreated = this;
          };
        };
        return Context2;
      };
    }, {}], 9: [function(_dereq_2, module2, exports2) {
      module2.exports = function(Promise2, Context2) {
        var getDomain = Promise2._getDomain;
        var async = Promise2._async;
        var Warning = _dereq_2("./errors").Warning;
        var util2 = _dereq_2("./util");
        var es5 = _dereq_2("./es5");
        var canAttachTrace = util2.canAttachTrace;
        var unhandledRejectionHandled;
        var possiblyUnhandledRejection;
        var bluebirdFramePattern = /[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/;
        var nodeFramePattern = /\((?:timers\.js):\d+:\d+\)/;
        var parseLinePattern = /[\/<\(](.+?):(\d+):(\d+)\)?\s*$/;
        var stackFramePattern = null;
        var formatStack = null;
        var indentStackFrames = false;
        var printWarning;
        var debugging = !!(util2.env("BLUEBIRD_DEBUG") != 0 && true);
        var warnings = !!(util2.env("BLUEBIRD_WARNINGS") != 0 && (debugging || util2.env("BLUEBIRD_WARNINGS")));
        var longStackTraces = !!(util2.env("BLUEBIRD_LONG_STACK_TRACES") != 0 && (debugging || util2.env("BLUEBIRD_LONG_STACK_TRACES")));
        var wForgottenReturn = util2.env("BLUEBIRD_W_FORGOTTEN_RETURN") != 0 && (warnings || !!util2.env("BLUEBIRD_W_FORGOTTEN_RETURN"));
        Promise2.prototype.suppressUnhandledRejections = function() {
          var target2 = this._target();
          target2._bitField = target2._bitField & ~1048576 | 524288;
        };
        Promise2.prototype._ensurePossibleRejectionHandled = function() {
          if ((this._bitField & 524288) !== 0)
            return;
          this._setRejectionIsUnhandled();
          var self2 = this;
          setTimeout(function() {
            self2._notifyUnhandledRejection();
          }, 1);
        };
        Promise2.prototype._notifyUnhandledRejectionIsHandled = function() {
          fireRejectionEvent(
            "rejectionHandled",
            unhandledRejectionHandled,
            void 0,
            this
          );
        };
        Promise2.prototype._setReturnedNonUndefined = function() {
          this._bitField = this._bitField | 268435456;
        };
        Promise2.prototype._returnedNonUndefined = function() {
          return (this._bitField & 268435456) !== 0;
        };
        Promise2.prototype._notifyUnhandledRejection = function() {
          if (this._isRejectionUnhandled()) {
            var reason = this._settledValue();
            this._setUnhandledRejectionIsNotified();
            fireRejectionEvent(
              "unhandledRejection",
              possiblyUnhandledRejection,
              reason,
              this
            );
          }
        };
        Promise2.prototype._setUnhandledRejectionIsNotified = function() {
          this._bitField = this._bitField | 262144;
        };
        Promise2.prototype._unsetUnhandledRejectionIsNotified = function() {
          this._bitField = this._bitField & ~262144;
        };
        Promise2.prototype._isUnhandledRejectionNotified = function() {
          return (this._bitField & 262144) > 0;
        };
        Promise2.prototype._setRejectionIsUnhandled = function() {
          this._bitField = this._bitField | 1048576;
        };
        Promise2.prototype._unsetRejectionIsUnhandled = function() {
          this._bitField = this._bitField & ~1048576;
          if (this._isUnhandledRejectionNotified()) {
            this._unsetUnhandledRejectionIsNotified();
            this._notifyUnhandledRejectionIsHandled();
          }
        };
        Promise2.prototype._isRejectionUnhandled = function() {
          return (this._bitField & 1048576) > 0;
        };
        Promise2.prototype._warn = function(message, shouldUseOwnTrace, promise) {
          return warn2(message, shouldUseOwnTrace, promise || this);
        };
        Promise2.onPossiblyUnhandledRejection = function(fn2) {
          var domain = getDomain();
          possiblyUnhandledRejection = typeof fn2 === "function" ? domain === null ? fn2 : util2.domainBind(domain, fn2) : void 0;
        };
        Promise2.onUnhandledRejectionHandled = function(fn2) {
          var domain = getDomain();
          unhandledRejectionHandled = typeof fn2 === "function" ? domain === null ? fn2 : util2.domainBind(domain, fn2) : void 0;
        };
        var disableLongStackTraces = function() {
        };
        Promise2.longStackTraces = function() {
          if (async.haveItemsQueued() && !config2.longStackTraces) {
            throw new Error("cannot enable long stack traces after promises have been created\n\n    See http://goo.gl/MqrFmX\n");
          }
          if (!config2.longStackTraces && longStackTracesIsSupported()) {
            var Promise_captureStackTrace = Promise2.prototype._captureStackTrace;
            var Promise_attachExtraTrace = Promise2.prototype._attachExtraTrace;
            var Promise_dereferenceTrace = Promise2.prototype._dereferenceTrace;
            config2.longStackTraces = true;
            disableLongStackTraces = function() {
              if (async.haveItemsQueued() && !config2.longStackTraces) {
                throw new Error("cannot enable long stack traces after promises have been created\n\n    See http://goo.gl/MqrFmX\n");
              }
              Promise2.prototype._captureStackTrace = Promise_captureStackTrace;
              Promise2.prototype._attachExtraTrace = Promise_attachExtraTrace;
              Promise2.prototype._dereferenceTrace = Promise_dereferenceTrace;
              Context2.deactivateLongStackTraces();
              async.enableTrampoline();
              config2.longStackTraces = false;
            };
            Promise2.prototype._captureStackTrace = longStackTracesCaptureStackTrace;
            Promise2.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;
            Promise2.prototype._dereferenceTrace = longStackTracesDereferenceTrace;
            Context2.activateLongStackTraces();
            async.disableTrampolineIfNecessary();
          }
        };
        Promise2.hasLongStackTraces = function() {
          return config2.longStackTraces && longStackTracesIsSupported();
        };
        var fireDomEvent = function() {
          try {
            if (typeof CustomEvent === "function") {
              var event = new CustomEvent("CustomEvent");
              util2.global.dispatchEvent(event);
              return function(name2, event2) {
                var eventData = {
                  detail: event2,
                  cancelable: true
                };
                es5.defineProperty(
                  eventData,
                  "promise",
                  { value: event2.promise }
                );
                es5.defineProperty(eventData, "reason", { value: event2.reason });
                var domEvent = new CustomEvent(name2.toLowerCase(), eventData);
                return !util2.global.dispatchEvent(domEvent);
              };
            } else if (typeof Event === "function") {
              var event = new Event("CustomEvent");
              util2.global.dispatchEvent(event);
              return function(name2, event2) {
                var domEvent = new Event(name2.toLowerCase(), {
                  cancelable: true
                });
                domEvent.detail = event2;
                es5.defineProperty(domEvent, "promise", { value: event2.promise });
                es5.defineProperty(domEvent, "reason", { value: event2.reason });
                return !util2.global.dispatchEvent(domEvent);
              };
            } else {
              var event = document.createEvent("CustomEvent");
              event.initCustomEvent("testingtheevent", false, true, {});
              util2.global.dispatchEvent(event);
              return function(name2, event2) {
                var domEvent = document.createEvent("CustomEvent");
                domEvent.initCustomEvent(
                  name2.toLowerCase(),
                  false,
                  true,
                  event2
                );
                return !util2.global.dispatchEvent(domEvent);
              };
            }
          } catch (e) {
          }
          return function() {
            return false;
          };
        }();
        var fireGlobalEvent = function() {
          if (util2.isNode) {
            return function() {
              return process.emit.apply(process, arguments);
            };
          } else {
            if (!util2.global) {
              return function() {
                return false;
              };
            }
            return function(name2) {
              var methodName = "on" + name2.toLowerCase();
              var method = util2.global[methodName];
              if (!method)
                return false;
              method.apply(util2.global, [].slice.call(arguments, 1));
              return true;
            };
          }
        }();
        function generatePromiseLifecycleEventObject(name2, promise) {
          return { promise };
        }
        var eventToObjectGenerator = {
          promiseCreated: generatePromiseLifecycleEventObject,
          promiseFulfilled: generatePromiseLifecycleEventObject,
          promiseRejected: generatePromiseLifecycleEventObject,
          promiseResolved: generatePromiseLifecycleEventObject,
          promiseCancelled: generatePromiseLifecycleEventObject,
          promiseChained: function(name2, promise, child) {
            return { promise, child };
          },
          warning: function(name2, warning) {
            return { warning };
          },
          unhandledRejection: function(name2, reason, promise) {
            return { reason, promise };
          },
          rejectionHandled: generatePromiseLifecycleEventObject
        };
        var activeFireEvent = function(name2) {
          var globalEventFired = false;
          try {
            globalEventFired = fireGlobalEvent.apply(null, arguments);
          } catch (e) {
            async.throwLater(e);
            globalEventFired = true;
          }
          var domEventFired = false;
          try {
            domEventFired = fireDomEvent(
              name2,
              eventToObjectGenerator[name2].apply(null, arguments)
            );
          } catch (e) {
            async.throwLater(e);
            domEventFired = true;
          }
          return domEventFired || globalEventFired;
        };
        Promise2.config = function(opts) {
          opts = Object(opts);
          if ("longStackTraces" in opts) {
            if (opts.longStackTraces) {
              Promise2.longStackTraces();
            } else if (!opts.longStackTraces && Promise2.hasLongStackTraces()) {
              disableLongStackTraces();
            }
          }
          if ("warnings" in opts) {
            var warningsOption = opts.warnings;
            config2.warnings = !!warningsOption;
            wForgottenReturn = config2.warnings;
            if (util2.isObject(warningsOption)) {
              if ("wForgottenReturn" in warningsOption) {
                wForgottenReturn = !!warningsOption.wForgottenReturn;
              }
            }
          }
          if ("cancellation" in opts && opts.cancellation && !config2.cancellation) {
            if (async.haveItemsQueued()) {
              throw new Error(
                "cannot enable cancellation after promises are in use"
              );
            }
            Promise2.prototype._clearCancellationData = cancellationClearCancellationData;
            Promise2.prototype._propagateFrom = cancellationPropagateFrom;
            Promise2.prototype._onCancel = cancellationOnCancel;
            Promise2.prototype._setOnCancel = cancellationSetOnCancel;
            Promise2.prototype._attachCancellationCallback = cancellationAttachCancellationCallback;
            Promise2.prototype._execute = cancellationExecute;
            propagateFromFunction = cancellationPropagateFrom;
            config2.cancellation = true;
          }
          if ("monitoring" in opts) {
            if (opts.monitoring && !config2.monitoring) {
              config2.monitoring = true;
              Promise2.prototype._fireEvent = activeFireEvent;
            } else if (!opts.monitoring && config2.monitoring) {
              config2.monitoring = false;
              Promise2.prototype._fireEvent = defaultFireEvent;
            }
          }
          return Promise2;
        };
        function defaultFireEvent() {
          return false;
        }
        Promise2.prototype._fireEvent = defaultFireEvent;
        Promise2.prototype._execute = function(executor, resolve3, reject) {
          try {
            executor(resolve3, reject);
          } catch (e) {
            return e;
          }
        };
        Promise2.prototype._onCancel = function() {
        };
        Promise2.prototype._setOnCancel = function(handler) {
        };
        Promise2.prototype._attachCancellationCallback = function(onCancel) {
        };
        Promise2.prototype._captureStackTrace = function() {
        };
        Promise2.prototype._attachExtraTrace = function() {
        };
        Promise2.prototype._dereferenceTrace = function() {
        };
        Promise2.prototype._clearCancellationData = function() {
        };
        Promise2.prototype._propagateFrom = function(parent, flags) {
        };
        function cancellationExecute(executor, resolve3, reject) {
          var promise = this;
          try {
            executor(resolve3, reject, function(onCancel) {
              if (typeof onCancel !== "function") {
                throw new TypeError("onCancel must be a function, got: " + util2.toString(onCancel));
              }
              promise._attachCancellationCallback(onCancel);
            });
          } catch (e) {
            return e;
          }
        }
        function cancellationAttachCancellationCallback(onCancel) {
          if (!this._isCancellable())
            return this;
          var previousOnCancel = this._onCancel();
          if (previousOnCancel !== void 0) {
            if (util2.isArray(previousOnCancel)) {
              previousOnCancel.push(onCancel);
            } else {
              this._setOnCancel([previousOnCancel, onCancel]);
            }
          } else {
            this._setOnCancel(onCancel);
          }
        }
        function cancellationOnCancel() {
          return this._onCancelField;
        }
        function cancellationSetOnCancel(onCancel) {
          this._onCancelField = onCancel;
        }
        function cancellationClearCancellationData() {
          this._cancellationParent = void 0;
          this._onCancelField = void 0;
        }
        function cancellationPropagateFrom(parent, flags) {
          if ((flags & 1) !== 0) {
            this._cancellationParent = parent;
            var branchesRemainingToCancel = parent._branchesRemainingToCancel;
            if (branchesRemainingToCancel === void 0) {
              branchesRemainingToCancel = 0;
            }
            parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;
          }
          if ((flags & 2) !== 0 && parent._isBound()) {
            this._setBoundTo(parent._boundTo);
          }
        }
        function bindingPropagateFrom(parent, flags) {
          if ((flags & 2) !== 0 && parent._isBound()) {
            this._setBoundTo(parent._boundTo);
          }
        }
        var propagateFromFunction = bindingPropagateFrom;
        function boundValueFunction() {
          var ret = this._boundTo;
          if (ret !== void 0) {
            if (ret instanceof Promise2) {
              if (ret.isFulfilled()) {
                return ret.value();
              } else {
                return void 0;
              }
            }
          }
          return ret;
        }
        function longStackTracesCaptureStackTrace() {
          this._trace = new CapturedTrace(this._peekContext());
        }
        function longStackTracesAttachExtraTrace(error2, ignoreSelf) {
          if (canAttachTrace(error2)) {
            var trace2 = this._trace;
            if (trace2 !== void 0) {
              if (ignoreSelf)
                trace2 = trace2._parent;
            }
            if (trace2 !== void 0) {
              trace2.attachExtraTrace(error2);
            } else if (!error2.__stackCleaned__) {
              var parsed = parseStackAndMessage(error2);
              util2.notEnumerableProp(
                error2,
                "stack",
                parsed.message + "\n" + parsed.stack.join("\n")
              );
              util2.notEnumerableProp(error2, "__stackCleaned__", true);
            }
          }
        }
        function longStackTracesDereferenceTrace() {
          this._trace = void 0;
        }
        function checkForgottenReturns(returnValue, promiseCreated, name2, promise, parent) {
          if (returnValue === void 0 && promiseCreated !== null && wForgottenReturn) {
            if (parent !== void 0 && parent._returnedNonUndefined())
              return;
            if ((promise._bitField & 65535) === 0)
              return;
            if (name2)
              name2 = name2 + " ";
            var handlerLine = "";
            var creatorLine = "";
            if (promiseCreated._trace) {
              var traceLines = promiseCreated._trace.stack.split("\n");
              var stack = cleanStack(traceLines);
              for (var i = stack.length - 1; i >= 0; --i) {
                var line = stack[i];
                if (!nodeFramePattern.test(line)) {
                  var lineMatches = line.match(parseLinePattern);
                  if (lineMatches) {
                    handlerLine = "at " + lineMatches[1] + ":" + lineMatches[2] + ":" + lineMatches[3] + " ";
                  }
                  break;
                }
              }
              if (stack.length > 0) {
                var firstUserLine = stack[0];
                for (var i = 0; i < traceLines.length; ++i) {
                  if (traceLines[i] === firstUserLine) {
                    if (i > 0) {
                      creatorLine = "\n" + traceLines[i - 1];
                    }
                    break;
                  }
                }
              }
            }
            var msg = "a promise was created in a " + name2 + "handler " + handlerLine + "but was not returned from it, see http://goo.gl/rRqMUw" + creatorLine;
            promise._warn(msg, true, promiseCreated);
          }
        }
        function deprecated(name2, replacement) {
          var message = name2 + " is deprecated and will be removed in a future version.";
          if (replacement)
            message += " Use " + replacement + " instead.";
          return warn2(message);
        }
        function warn2(message, shouldUseOwnTrace, promise) {
          if (!config2.warnings)
            return;
          var warning = new Warning(message);
          var ctx;
          if (shouldUseOwnTrace) {
            promise._attachExtraTrace(warning);
          } else if (config2.longStackTraces && (ctx = Promise2._peekContext())) {
            ctx.attachExtraTrace(warning);
          } else {
            var parsed = parseStackAndMessage(warning);
            warning.stack = parsed.message + "\n" + parsed.stack.join("\n");
          }
          if (!activeFireEvent("warning", warning)) {
            formatAndLogError(warning, "", true);
          }
        }
        function reconstructStack(message, stacks) {
          for (var i = 0; i < stacks.length - 1; ++i) {
            stacks[i].push("From previous event:");
            stacks[i] = stacks[i].join("\n");
          }
          if (i < stacks.length) {
            stacks[i] = stacks[i].join("\n");
          }
          return message + "\n" + stacks.join("\n");
        }
        function removeDuplicateOrEmptyJumps(stacks) {
          for (var i = 0; i < stacks.length; ++i) {
            if (stacks[i].length === 0 || i + 1 < stacks.length && stacks[i][0] === stacks[i + 1][0]) {
              stacks.splice(i, 1);
              i--;
            }
          }
        }
        function removeCommonRoots(stacks) {
          var current = stacks[0];
          for (var i = 1; i < stacks.length; ++i) {
            var prev2 = stacks[i];
            var currentLastIndex = current.length - 1;
            var currentLastLine = current[currentLastIndex];
            var commonRootMeetPoint = -1;
            for (var j2 = prev2.length - 1; j2 >= 0; --j2) {
              if (prev2[j2] === currentLastLine) {
                commonRootMeetPoint = j2;
                break;
              }
            }
            for (var j2 = commonRootMeetPoint; j2 >= 0; --j2) {
              var line = prev2[j2];
              if (current[currentLastIndex] === line) {
                current.pop();
                currentLastIndex--;
              } else {
                break;
              }
            }
            current = prev2;
          }
        }
        function cleanStack(stack) {
          var ret = [];
          for (var i = 0; i < stack.length; ++i) {
            var line = stack[i];
            var isTraceLine = "    (No stack trace)" === line || stackFramePattern.test(line);
            var isInternalFrame = isTraceLine && shouldIgnore(line);
            if (isTraceLine && !isInternalFrame) {
              if (indentStackFrames && line.charAt(0) !== " ") {
                line = "    " + line;
              }
              ret.push(line);
            }
          }
          return ret;
        }
        function stackFramesAsArray(error2) {
          var stack = error2.stack.replace(/\s+$/g, "").split("\n");
          for (var i = 0; i < stack.length; ++i) {
            var line = stack[i];
            if ("    (No stack trace)" === line || stackFramePattern.test(line)) {
              break;
            }
          }
          if (i > 0 && error2.name != "SyntaxError") {
            stack = stack.slice(i);
          }
          return stack;
        }
        function parseStackAndMessage(error2) {
          var stack = error2.stack;
          var message = error2.toString();
          stack = typeof stack === "string" && stack.length > 0 ? stackFramesAsArray(error2) : ["    (No stack trace)"];
          return {
            message,
            stack: error2.name == "SyntaxError" ? stack : cleanStack(stack)
          };
        }
        function formatAndLogError(error2, title, isSoft) {
          if (typeof console !== "undefined") {
            var message;
            if (util2.isObject(error2)) {
              var stack = error2.stack;
              message = title + formatStack(stack, error2);
            } else {
              message = title + String(error2);
            }
            if (typeof printWarning === "function") {
              printWarning(message, isSoft);
            } else if (typeof console.log === "function" || typeof console.log === "object") {
              console.log(message);
            }
          }
        }
        function fireRejectionEvent(name2, localHandler, reason, promise) {
          var localEventFired = false;
          try {
            if (typeof localHandler === "function") {
              localEventFired = true;
              if (name2 === "rejectionHandled") {
                localHandler(promise);
              } else {
                localHandler(reason, promise);
              }
            }
          } catch (e) {
            async.throwLater(e);
          }
          if (name2 === "unhandledRejection") {
            if (!activeFireEvent(name2, reason, promise) && !localEventFired) {
              formatAndLogError(reason, "Unhandled rejection ");
            }
          } else {
            activeFireEvent(name2, promise);
          }
        }
        function formatNonError(obj) {
          var str;
          if (typeof obj === "function") {
            str = "[function " + (obj.name || "anonymous") + "]";
          } else {
            str = obj && typeof obj.toString === "function" ? obj.toString() : util2.toString(obj);
            var ruselessToString = /\[object [a-zA-Z0-9$_]+\]/;
            if (ruselessToString.test(str)) {
              try {
                var newStr = JSON.stringify(obj);
                str = newStr;
              } catch (e) {
              }
            }
            if (str.length === 0) {
              str = "(empty array)";
            }
          }
          return "(<" + snip(str) + ">, no stack trace)";
        }
        function snip(str) {
          var maxChars = 41;
          if (str.length < maxChars) {
            return str;
          }
          return str.substr(0, maxChars - 3) + "...";
        }
        function longStackTracesIsSupported() {
          return typeof captureStackTrace === "function";
        }
        var shouldIgnore = function() {
          return false;
        };
        var parseLineInfoRegex = /[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;
        function parseLineInfo(line) {
          var matches2 = line.match(parseLineInfoRegex);
          if (matches2) {
            return {
              fileName: matches2[1],
              line: parseInt(matches2[2], 10)
            };
          }
        }
        function setBounds(firstLineError, lastLineError) {
          if (!longStackTracesIsSupported())
            return;
          var firstStackLines = firstLineError.stack.split("\n");
          var lastStackLines = lastLineError.stack.split("\n");
          var firstIndex = -1;
          var lastIndex = -1;
          var firstFileName;
          var lastFileName;
          for (var i = 0; i < firstStackLines.length; ++i) {
            var result = parseLineInfo(firstStackLines[i]);
            if (result) {
              firstFileName = result.fileName;
              firstIndex = result.line;
              break;
            }
          }
          for (var i = 0; i < lastStackLines.length; ++i) {
            var result = parseLineInfo(lastStackLines[i]);
            if (result) {
              lastFileName = result.fileName;
              lastIndex = result.line;
              break;
            }
          }
          if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName || firstFileName !== lastFileName || firstIndex >= lastIndex) {
            return;
          }
          shouldIgnore = function(line) {
            if (bluebirdFramePattern.test(line))
              return true;
            var info = parseLineInfo(line);
            if (info) {
              if (info.fileName === firstFileName && (firstIndex <= info.line && info.line <= lastIndex)) {
                return true;
              }
            }
            return false;
          };
        }
        function CapturedTrace(parent) {
          this._parent = parent;
          this._promisesCreated = 0;
          var length2 = this._length = 1 + (parent === void 0 ? 0 : parent._length);
          captureStackTrace(this, CapturedTrace);
          if (length2 > 32)
            this.uncycle();
        }
        util2.inherits(CapturedTrace, Error);
        Context2.CapturedTrace = CapturedTrace;
        CapturedTrace.prototype.uncycle = function() {
          var length2 = this._length;
          if (length2 < 2)
            return;
          var nodes = [];
          var stackToIndex = {};
          for (var i = 0, node = this; node !== void 0; ++i) {
            nodes.push(node);
            node = node._parent;
          }
          length2 = this._length = i;
          for (var i = length2 - 1; i >= 0; --i) {
            var stack = nodes[i].stack;
            if (stackToIndex[stack] === void 0) {
              stackToIndex[stack] = i;
            }
          }
          for (var i = 0; i < length2; ++i) {
            var currentStack = nodes[i].stack;
            var index2 = stackToIndex[currentStack];
            if (index2 !== void 0 && index2 !== i) {
              if (index2 > 0) {
                nodes[index2 - 1]._parent = void 0;
                nodes[index2 - 1]._length = 1;
              }
              nodes[i]._parent = void 0;
              nodes[i]._length = 1;
              var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;
              if (index2 < length2 - 1) {
                cycleEdgeNode._parent = nodes[index2 + 1];
                cycleEdgeNode._parent.uncycle();
                cycleEdgeNode._length = cycleEdgeNode._parent._length + 1;
              } else {
                cycleEdgeNode._parent = void 0;
                cycleEdgeNode._length = 1;
              }
              var currentChildLength = cycleEdgeNode._length + 1;
              for (var j2 = i - 2; j2 >= 0; --j2) {
                nodes[j2]._length = currentChildLength;
                currentChildLength++;
              }
              return;
            }
          }
        };
        CapturedTrace.prototype.attachExtraTrace = function(error2) {
          if (error2.__stackCleaned__)
            return;
          this.uncycle();
          var parsed = parseStackAndMessage(error2);
          var message = parsed.message;
          var stacks = [parsed.stack];
          var trace2 = this;
          while (trace2 !== void 0) {
            stacks.push(cleanStack(trace2.stack.split("\n")));
            trace2 = trace2._parent;
          }
          removeCommonRoots(stacks);
          removeDuplicateOrEmptyJumps(stacks);
          util2.notEnumerableProp(error2, "stack", reconstructStack(message, stacks));
          util2.notEnumerableProp(error2, "__stackCleaned__", true);
        };
        var captureStackTrace = function stackDetection() {
          var v8stackFramePattern = /^\s*at\s*/;
          var v8stackFormatter = function(stack, error2) {
            if (typeof stack === "string")
              return stack;
            if (error2.name !== void 0 && error2.message !== void 0) {
              return error2.toString();
            }
            return formatNonError(error2);
          };
          if (typeof Error.stackTraceLimit === "number" && typeof Error.captureStackTrace === "function") {
            Error.stackTraceLimit += 6;
            stackFramePattern = v8stackFramePattern;
            formatStack = v8stackFormatter;
            var captureStackTrace2 = Error.captureStackTrace;
            shouldIgnore = function(line) {
              return bluebirdFramePattern.test(line);
            };
            return function(receiver, ignoreUntil) {
              Error.stackTraceLimit += 6;
              captureStackTrace2(receiver, ignoreUntil);
              Error.stackTraceLimit -= 6;
            };
          }
          var err = new Error();
          if (typeof err.stack === "string" && err.stack.split("\n")[0].indexOf("stackDetection@") >= 0) {
            stackFramePattern = /@/;
            formatStack = v8stackFormatter;
            indentStackFrames = true;
            return function captureStackTrace3(o2) {
              o2.stack = new Error().stack;
            };
          }
          var hasStackAfterThrow;
          try {
            throw new Error();
          } catch (e) {
            hasStackAfterThrow = "stack" in e;
          }
          if (!("stack" in err) && hasStackAfterThrow && typeof Error.stackTraceLimit === "number") {
            stackFramePattern = v8stackFramePattern;
            formatStack = v8stackFormatter;
            return function captureStackTrace3(o2) {
              Error.stackTraceLimit += 6;
              try {
                throw new Error();
              } catch (e) {
                o2.stack = e.stack;
              }
              Error.stackTraceLimit -= 6;
            };
          }
          formatStack = function(stack, error2) {
            if (typeof stack === "string")
              return stack;
            if ((typeof error2 === "object" || typeof error2 === "function") && error2.name !== void 0 && error2.message !== void 0) {
              return error2.toString();
            }
            return formatNonError(error2);
          };
          return null;
        }();
        if (typeof console !== "undefined" && typeof console.warn !== "undefined") {
          printWarning = function(message) {
            console.warn(message);
          };
          if (util2.isNode && process.stderr.isTTY) {
            printWarning = function(message, isSoft) {
              var color = isSoft ? "\x1B[33m" : "\x1B[31m";
              console.warn(color + message + "\x1B[0m\n");
            };
          } else if (!util2.isNode && typeof new Error().stack === "string") {
            printWarning = function(message, isSoft) {
              console.warn(
                "%c" + message,
                isSoft ? "color: darkorange" : "color: red"
              );
            };
          }
        }
        var config2 = {
          warnings,
          longStackTraces: false,
          cancellation: false,
          monitoring: false
        };
        if (longStackTraces)
          Promise2.longStackTraces();
        return {
          longStackTraces: function() {
            return config2.longStackTraces;
          },
          warnings: function() {
            return config2.warnings;
          },
          cancellation: function() {
            return config2.cancellation;
          },
          monitoring: function() {
            return config2.monitoring;
          },
          propagateFromFunction: function() {
            return propagateFromFunction;
          },
          boundValueFunction: function() {
            return boundValueFunction;
          },
          checkForgottenReturns,
          setBounds,
          warn: warn2,
          deprecated,
          CapturedTrace,
          fireDomEvent,
          fireGlobalEvent
        };
      };
    }, { "./errors": 12, "./es5": 13, "./util": 36 }], 10: [function(_dereq_2, module2, exports2) {
      module2.exports = function(Promise2) {
        function returner() {
          return this.value;
        }
        function thrower() {
          throw this.reason;
        }
        Promise2.prototype["return"] = Promise2.prototype.thenReturn = function(value) {
          if (value instanceof Promise2)
            value.suppressUnhandledRejections();
          return this._then(
            returner,
            void 0,
            void 0,
            { value },
            void 0
          );
        };
        Promise2.prototype["throw"] = Promise2.prototype.thenThrow = function(reason) {
          return this._then(
            thrower,
            void 0,
            void 0,
            { reason },
            void 0
          );
        };
        Promise2.prototype.catchThrow = function(reason) {
          if (arguments.length <= 1) {
            return this._then(
              void 0,
              thrower,
              void 0,
              { reason },
              void 0
            );
          } else {
            var _reason = arguments[1];
            var handler = function() {
              throw _reason;
            };
            return this.caught(reason, handler);
          }
        };
        Promise2.prototype.catchReturn = function(value) {
          if (arguments.length <= 1) {
            if (value instanceof Promise2)
              value.suppressUnhandledRejections();
            return this._then(
              void 0,
              returner,
              void 0,
              { value },
              void 0
            );
          } else {
            var _value = arguments[1];
            if (_value instanceof Promise2)
              _value.suppressUnhandledRejections();
            var handler = function() {
              return _value;
            };
            return this.caught(value, handler);
          }
        };
      };
    }, {}], 11: [function(_dereq_2, module2, exports2) {
      module2.exports = function(Promise2, INTERNAL) {
        var PromiseReduce = Promise2.reduce;
        var PromiseAll = Promise2.all;
        function promiseAllThis() {
          return PromiseAll(this);
        }
        function PromiseMapSeries(promises, fn2) {
          return PromiseReduce(promises, fn2, INTERNAL, INTERNAL);
        }
        Promise2.prototype.each = function(fn2) {
          return PromiseReduce(this, fn2, INTERNAL, 0)._then(promiseAllThis, void 0, void 0, this, void 0);
        };
        Promise2.prototype.mapSeries = function(fn2) {
          return PromiseReduce(this, fn2, INTERNAL, INTERNAL);
        };
        Promise2.each = function(promises, fn2) {
          return PromiseReduce(promises, fn2, INTERNAL, 0)._then(promiseAllThis, void 0, void 0, promises, void 0);
        };
        Promise2.mapSeries = PromiseMapSeries;
      };
    }, {}], 12: [function(_dereq_2, module2, exports2) {
      var es5 = _dereq_2("./es5");
      var Objectfreeze = es5.freeze;
      var util2 = _dereq_2("./util");
      var inherits = util2.inherits;
      var notEnumerableProp = util2.notEnumerableProp;
      function subError(nameProperty, defaultMessage) {
        function SubError(message) {
          if (!(this instanceof SubError))
            return new SubError(message);
          notEnumerableProp(
            this,
            "message",
            typeof message === "string" ? message : defaultMessage
          );
          notEnumerableProp(this, "name", nameProperty);
          if (Error.captureStackTrace) {
            Error.captureStackTrace(this, this.constructor);
          } else {
            Error.call(this);
          }
        }
        inherits(SubError, Error);
        return SubError;
      }
      var _TypeError, _RangeError;
      var Warning = subError("Warning", "warning");
      var CancellationError = subError("CancellationError", "cancellation error");
      var TimeoutError = subError("TimeoutError", "timeout error");
      var AggregateError = subError("AggregateError", "aggregate error");
      try {
        _TypeError = TypeError;
        _RangeError = RangeError;
      } catch (e) {
        _TypeError = subError("TypeError", "type error");
        _RangeError = subError("RangeError", "range error");
      }
      var methods = "join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" ");
      for (var i = 0; i < methods.length; ++i) {
        if (typeof Array.prototype[methods[i]] === "function") {
          AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];
        }
      }
      es5.defineProperty(AggregateError.prototype, "length", {
        value: 0,
        configurable: false,
        writable: true,
        enumerable: true
      });
      AggregateError.prototype["isOperational"] = true;
      var level = 0;
      AggregateError.prototype.toString = function() {
        var indent2 = Array(level * 4 + 1).join(" ");
        var ret = "\n" + indent2 + "AggregateError of:\n";
        level++;
        indent2 = Array(level * 4 + 1).join(" ");
        for (var i2 = 0; i2 < this.length; ++i2) {
          var str = this[i2] === this ? "[Circular AggregateError]" : this[i2] + "";
          var lines = str.split("\n");
          for (var j2 = 0; j2 < lines.length; ++j2) {
            lines[j2] = indent2 + lines[j2];
          }
          str = lines.join("\n");
          ret += str + "\n";
        }
        level--;
        return ret;
      };
      function OperationalError(message) {
        if (!(this instanceof OperationalError))
          return new OperationalError(message);
        notEnumerableProp(this, "name", "OperationalError");
        notEnumerableProp(this, "message", message);
        this.cause = message;
        this["isOperational"] = true;
        if (message instanceof Error) {
          notEnumerableProp(this, "message", message.message);
          notEnumerableProp(this, "stack", message.stack);
        } else if (Error.captureStackTrace) {
          Error.captureStackTrace(this, this.constructor);
        }
      }
      inherits(OperationalError, Error);
      var errorTypes = Error["__BluebirdErrorTypes__"];
      if (!errorTypes) {
        errorTypes = Objectfreeze({
          CancellationError,
          TimeoutError,
          OperationalError,
          RejectionError: OperationalError,
          AggregateError
        });
        es5.defineProperty(Error, "__BluebirdErrorTypes__", {
          value: errorTypes,
          writable: false,
          enumerable: false,
          configurable: false
        });
      }
      module2.exports = {
        Error,
        TypeError: _TypeError,
        RangeError: _RangeError,
        CancellationError: errorTypes.CancellationError,
        OperationalError: errorTypes.OperationalError,
        TimeoutError: errorTypes.TimeoutError,
        AggregateError: errorTypes.AggregateError,
        Warning
      };
    }, { "./es5": 13, "./util": 36 }], 13: [function(_dereq_2, module2, exports2) {
      var isES5 = function() {
        return this === void 0;
      }();
      if (isES5) {
        module2.exports = {
          freeze: Object.freeze,
          defineProperty: Object.defineProperty,
          getDescriptor: Object.getOwnPropertyDescriptor,
          keys: Object.keys,
          names: Object.getOwnPropertyNames,
          getPrototypeOf: Object.getPrototypeOf,
          isArray: Array.isArray,
          isES5,
          propertyIsWritable: function(obj, prop2) {
            var descriptor = Object.getOwnPropertyDescriptor(obj, prop2);
            return !!(!descriptor || descriptor.writable || descriptor.set);
          }
        };
      } else {
        var has2 = {}.hasOwnProperty;
        var str = {}.toString;
        var proto2 = {}.constructor.prototype;
        var ObjectKeys = function(o2) {
          var ret = [];
          for (var key in o2) {
            if (has2.call(o2, key)) {
              ret.push(key);
            }
          }
          return ret;
        };
        var ObjectGetDescriptor = function(o2, key) {
          return { value: o2[key] };
        };
        var ObjectDefineProperty = function(o2, key, desc) {
          o2[key] = desc.value;
          return o2;
        };
        var ObjectFreeze = function(obj) {
          return obj;
        };
        var ObjectGetPrototypeOf = function(obj) {
          try {
            return Object(obj).constructor.prototype;
          } catch (e) {
            return proto2;
          }
        };
        var ArrayIsArray = function(obj) {
          try {
            return str.call(obj) === "[object Array]";
          } catch (e) {
            return false;
          }
        };
        module2.exports = {
          isArray: ArrayIsArray,
          keys: ObjectKeys,
          names: ObjectKeys,
          defineProperty: ObjectDefineProperty,
          getDescriptor: ObjectGetDescriptor,
          freeze: ObjectFreeze,
          getPrototypeOf: ObjectGetPrototypeOf,
          isES5,
          propertyIsWritable: function() {
            return true;
          }
        };
      }
    }, {}], 14: [function(_dereq_2, module2, exports2) {
      module2.exports = function(Promise2, INTERNAL) {
        var PromiseMap = Promise2.map;
        Promise2.prototype.filter = function(fn2, options2) {
          return PromiseMap(this, fn2, options2, INTERNAL);
        };
        Promise2.filter = function(promises, fn2, options2) {
          return PromiseMap(promises, fn2, options2, INTERNAL);
        };
      };
    }, {}], 15: [function(_dereq_2, module2, exports2) {
      module2.exports = function(Promise2, tryConvertToPromise, NEXT_FILTER) {
        var util2 = _dereq_2("./util");
        var CancellationError = Promise2.CancellationError;
        var errorObj = util2.errorObj;
        var catchFilter = _dereq_2("./catch_filter")(NEXT_FILTER);
        function PassThroughHandlerContext(promise, type2, handler) {
          this.promise = promise;
          this.type = type2;
          this.handler = handler;
          this.called = false;
          this.cancelPromise = null;
        }
        PassThroughHandlerContext.prototype.isFinallyHandler = function() {
          return this.type === 0;
        };
        function FinallyHandlerCancelReaction(finallyHandler2) {
          this.finallyHandler = finallyHandler2;
        }
        FinallyHandlerCancelReaction.prototype._resultCancelled = function() {
          checkCancel(this.finallyHandler);
        };
        function checkCancel(ctx, reason) {
          if (ctx.cancelPromise != null) {
            if (arguments.length > 1) {
              ctx.cancelPromise._reject(reason);
            } else {
              ctx.cancelPromise._cancel();
            }
            ctx.cancelPromise = null;
            return true;
          }
          return false;
        }
        function succeed() {
          return finallyHandler.call(this, this.promise._target()._settledValue());
        }
        function fail2(reason) {
          if (checkCancel(this, reason))
            return;
          errorObj.e = reason;
          return errorObj;
        }
        function finallyHandler(reasonOrValue) {
          var promise = this.promise;
          var handler = this.handler;
          if (!this.called) {
            this.called = true;
            var ret = this.isFinallyHandler() ? handler.call(promise._boundValue()) : handler.call(promise._boundValue(), reasonOrValue);
            if (ret === NEXT_FILTER) {
              return ret;
            } else if (ret !== void 0) {
              promise._setReturnedNonUndefined();
              var maybePromise = tryConvertToPromise(ret, promise);
              if (maybePromise instanceof Promise2) {
                if (this.cancelPromise != null) {
                  if (maybePromise._isCancelled()) {
                    var reason = new CancellationError("late cancellation observer");
                    promise._attachExtraTrace(reason);
                    errorObj.e = reason;
                    return errorObj;
                  } else if (maybePromise.isPending()) {
                    maybePromise._attachCancellationCallback(
                      new FinallyHandlerCancelReaction(this)
                    );
                  }
                }
                return maybePromise._then(
                  succeed,
                  fail2,
                  void 0,
                  this,
                  void 0
                );
              }
            }
          }
          if (promise.isRejected()) {
            checkCancel(this);
            errorObj.e = reasonOrValue;
            return errorObj;
          } else {
            checkCancel(this);
            return reasonOrValue;
          }
        }
        Promise2.prototype._passThrough = function(handler, type2, success, fail3) {
          if (typeof handler !== "function")
            return this.then();
          return this._then(
            success,
            fail3,
            void 0,
            new PassThroughHandlerContext(this, type2, handler),
            void 0
          );
        };
        Promise2.prototype.lastly = Promise2.prototype["finally"] = function(handler) {
          return this._passThrough(
            handler,
            0,
            finallyHandler,
            finallyHandler
          );
        };
        Promise2.prototype.tap = function(handler) {
          return this._passThrough(handler, 1, finallyHandler);
        };
        Promise2.prototype.tapCatch = function(handlerOrPredicate) {
          var len = arguments.length;
          if (len === 1) {
            return this._passThrough(
              handlerOrPredicate,
              1,
              void 0,
              finallyHandler
            );
          } else {
            var catchInstances = new Array(len - 1), j2 = 0, i;
            for (i = 0; i < len - 1; ++i) {
              var item = arguments[i];
              if (util2.isObject(item)) {
                catchInstances[j2++] = item;
              } else {
                return Promise2.reject(new TypeError(
                  "tapCatch statement predicate: expecting an object but got " + util2.classString(item)
                ));
              }
            }
            catchInstances.length = j2;
            var handler = arguments[i];
            return this._passThrough(
              catchFilter(catchInstances, handler, this),
              1,
              void 0,
              finallyHandler
            );
          }
        };
        return PassThroughHandlerContext;
      };
    }, { "./catch_filter": 7, "./util": 36 }], 16: [function(_dereq_2, module2, exports2) {
      module2.exports = function(Promise2, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug2) {
        var errors2 = _dereq_2("./errors");
        var TypeError2 = errors2.TypeError;
        var util2 = _dereq_2("./util");
        var errorObj = util2.errorObj;
        var tryCatch = util2.tryCatch;
        var yieldHandlers = [];
        function promiseFromYieldHandler(value, yieldHandlers2, traceParent) {
          for (var i = 0; i < yieldHandlers2.length; ++i) {
            traceParent._pushContext();
            var result = tryCatch(yieldHandlers2[i])(value);
            traceParent._popContext();
            if (result === errorObj) {
              traceParent._pushContext();
              var ret = Promise2.reject(errorObj.e);
              traceParent._popContext();
              return ret;
            }
            var maybePromise = tryConvertToPromise(result, traceParent);
            if (maybePromise instanceof Promise2)
              return maybePromise;
          }
          return null;
        }
        function PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {
          if (debug2.cancellation()) {
            var internal2 = new Promise2(INTERNAL);
            var _finallyPromise = this._finallyPromise = new Promise2(INTERNAL);
            this._promise = internal2.lastly(function() {
              return _finallyPromise;
            });
            internal2._captureStackTrace();
            internal2._setOnCancel(this);
          } else {
            var promise = this._promise = new Promise2(INTERNAL);
            promise._captureStackTrace();
          }
          this._stack = stack;
          this._generatorFunction = generatorFunction;
          this._receiver = receiver;
          this._generator = void 0;
          this._yieldHandlers = typeof yieldHandler === "function" ? [yieldHandler].concat(yieldHandlers) : yieldHandlers;
          this._yieldedPromise = null;
          this._cancellationPhase = false;
        }
        util2.inherits(PromiseSpawn, Proxyable);
        PromiseSpawn.prototype._isResolved = function() {
          return this._promise === null;
        };
        PromiseSpawn.prototype._cleanup = function() {
          this._promise = this._generator = null;
          if (debug2.cancellation() && this._finallyPromise !== null) {
            this._finallyPromise._fulfill();
            this._finallyPromise = null;
          }
        };
        PromiseSpawn.prototype._promiseCancelled = function() {
          if (this._isResolved())
            return;
          var implementsReturn = typeof this._generator["return"] !== "undefined";
          var result;
          if (!implementsReturn) {
            var reason = new Promise2.CancellationError(
              "generator .return() sentinel"
            );
            Promise2.coroutine.returnSentinel = reason;
            this._promise._attachExtraTrace(reason);
            this._promise._pushContext();
            result = tryCatch(this._generator["throw"]).call(
              this._generator,
              reason
            );
            this._promise._popContext();
          } else {
            this._promise._pushContext();
            result = tryCatch(this._generator["return"]).call(
              this._generator,
              void 0
            );
            this._promise._popContext();
          }
          this._cancellationPhase = true;
          this._yieldedPromise = null;
          this._continue(result);
        };
        PromiseSpawn.prototype._promiseFulfilled = function(value) {
          this._yieldedPromise = null;
          this._promise._pushContext();
          var result = tryCatch(this._generator.next).call(this._generator, value);
          this._promise._popContext();
          this._continue(result);
        };
        PromiseSpawn.prototype._promiseRejected = function(reason) {
          this._yieldedPromise = null;
          this._promise._attachExtraTrace(reason);
          this._promise._pushContext();
          var result = tryCatch(this._generator["throw"]).call(this._generator, reason);
          this._promise._popContext();
          this._continue(result);
        };
        PromiseSpawn.prototype._resultCancelled = function() {
          if (this._yieldedPromise instanceof Promise2) {
            var promise = this._yieldedPromise;
            this._yieldedPromise = null;
            promise.cancel();
          }
        };
        PromiseSpawn.prototype.promise = function() {
          return this._promise;
        };
        PromiseSpawn.prototype._run = function() {
          this._generator = this._generatorFunction.call(this._receiver);
          this._receiver = this._generatorFunction = void 0;
          this._promiseFulfilled(void 0);
        };
        PromiseSpawn.prototype._continue = function(result) {
          var promise = this._promise;
          if (result === errorObj) {
            this._cleanup();
            if (this._cancellationPhase) {
              return promise.cancel();
            } else {
              return promise._rejectCallback(result.e, false);
            }
          }
          var value = result.value;
          if (result.done === true) {
            this._cleanup();
            if (this._cancellationPhase) {
              return promise.cancel();
            } else {
              return promise._resolveCallback(value);
            }
          } else {
            var maybePromise = tryConvertToPromise(value, this._promise);
            if (!(maybePromise instanceof Promise2)) {
              maybePromise = promiseFromYieldHandler(
                maybePromise,
                this._yieldHandlers,
                this._promise
              );
              if (maybePromise === null) {
                this._promiseRejected(
                  new TypeError2(
                    "A value %s was yielded that could not be treated as a promise\n\n    See http://goo.gl/MqrFmX\n\n".replace("%s", String(value)) + "From coroutine:\n" + this._stack.split("\n").slice(1, -7).join("\n")
                  )
                );
                return;
              }
            }
            maybePromise = maybePromise._target();
            var bitField = maybePromise._bitField;
            if ((bitField & 50397184) === 0) {
              this._yieldedPromise = maybePromise;
              maybePromise._proxy(this, null);
            } else if ((bitField & 33554432) !== 0) {
              Promise2._async.invoke(
                this._promiseFulfilled,
                this,
                maybePromise._value()
              );
            } else if ((bitField & 16777216) !== 0) {
              Promise2._async.invoke(
                this._promiseRejected,
                this,
                maybePromise._reason()
              );
            } else {
              this._promiseCancelled();
            }
          }
        };
        Promise2.coroutine = function(generatorFunction, options2) {
          if (typeof generatorFunction !== "function") {
            throw new TypeError2("generatorFunction must be a function\n\n    See http://goo.gl/MqrFmX\n");
          }
          var yieldHandler = Object(options2).yieldHandler;
          var PromiseSpawn$ = PromiseSpawn;
          var stack = new Error().stack;
          return function() {
            var generator = generatorFunction.apply(this, arguments);
            var spawn = new PromiseSpawn$(
              void 0,
              void 0,
              yieldHandler,
              stack
            );
            var ret = spawn.promise();
            spawn._generator = generator;
            spawn._promiseFulfilled(void 0);
            return ret;
          };
        };
        Promise2.coroutine.addYieldHandler = function(fn2) {
          if (typeof fn2 !== "function") {
            throw new TypeError2("expecting a function but got " + util2.classString(fn2));
          }
          yieldHandlers.push(fn2);
        };
        Promise2.spawn = function(generatorFunction) {
          debug2.deprecated("Promise.spawn()", "Promise.coroutine()");
          if (typeof generatorFunction !== "function") {
            return apiRejection("generatorFunction must be a function\n\n    See http://goo.gl/MqrFmX\n");
          }
          var spawn = new PromiseSpawn(generatorFunction, this);
          var ret = spawn.promise();
          spawn._run(Promise2.spawn);
          return ret;
        };
      };
    }, { "./errors": 12, "./util": 36 }], 17: [function(_dereq_2, module2, exports2) {
      module2.exports = function(Promise2, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain) {
        var util2 = _dereq_2("./util");
        util2.canEvaluate;
        util2.tryCatch;
        util2.errorObj;
        Promise2.join = function() {
          var last = arguments.length - 1;
          var fn2;
          if (last > 0 && typeof arguments[last] === "function") {
            fn2 = arguments[last];
            var ret;
          }
          var args = [].slice.call(arguments);
          if (fn2)
            args.pop();
          var ret = new PromiseArray(args).promise();
          return fn2 !== void 0 ? ret.spread(fn2) : ret;
        };
      };
    }, { "./util": 36 }], 18: [function(_dereq_2, module2, exports2) {
      module2.exports = function(Promise2, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug2) {
        var getDomain = Promise2._getDomain;
        var util2 = _dereq_2("./util");
        var tryCatch = util2.tryCatch;
        var errorObj = util2.errorObj;
        var async = Promise2._async;
        function MappingPromiseArray(promises, fn2, limit, _filter) {
          this.constructor$(promises);
          this._promise._captureStackTrace();
          var domain = getDomain();
          this._callback = domain === null ? fn2 : util2.domainBind(domain, fn2);
          this._preservedValues = _filter === INTERNAL ? new Array(this.length()) : null;
          this._limit = limit;
          this._inFlight = 0;
          this._queue = [];
          async.invoke(this._asyncInit, this, void 0);
        }
        util2.inherits(MappingPromiseArray, PromiseArray);
        MappingPromiseArray.prototype._asyncInit = function() {
          this._init$(void 0, -2);
        };
        MappingPromiseArray.prototype._init = function() {
        };
        MappingPromiseArray.prototype._promiseFulfilled = function(value, index2) {
          var values = this._values;
          var length2 = this.length();
          var preservedValues = this._preservedValues;
          var limit = this._limit;
          if (index2 < 0) {
            index2 = index2 * -1 - 1;
            values[index2] = value;
            if (limit >= 1) {
              this._inFlight--;
              this._drainQueue();
              if (this._isResolved())
                return true;
            }
          } else {
            if (limit >= 1 && this._inFlight >= limit) {
              values[index2] = value;
              this._queue.push(index2);
              return false;
            }
            if (preservedValues !== null)
              preservedValues[index2] = value;
            var promise = this._promise;
            var callback = this._callback;
            var receiver = promise._boundValue();
            promise._pushContext();
            var ret = tryCatch(callback).call(receiver, value, index2, length2);
            var promiseCreated = promise._popContext();
            debug2.checkForgottenReturns(
              ret,
              promiseCreated,
              preservedValues !== null ? "Promise.filter" : "Promise.map",
              promise
            );
            if (ret === errorObj) {
              this._reject(ret.e);
              return true;
            }
            var maybePromise = tryConvertToPromise(ret, this._promise);
            if (maybePromise instanceof Promise2) {
              maybePromise = maybePromise._target();
              var bitField = maybePromise._bitField;
              if ((bitField & 50397184) === 0) {
                if (limit >= 1)
                  this._inFlight++;
                values[index2] = maybePromise;
                maybePromise._proxy(this, (index2 + 1) * -1);
                return false;
              } else if ((bitField & 33554432) !== 0) {
                ret = maybePromise._value();
              } else if ((bitField & 16777216) !== 0) {
                this._reject(maybePromise._reason());
                return true;
              } else {
                this._cancel();
                return true;
              }
            }
            values[index2] = ret;
          }
          var totalResolved = ++this._totalResolved;
          if (totalResolved >= length2) {
            if (preservedValues !== null) {
              this._filter(values, preservedValues);
            } else {
              this._resolve(values);
            }
            return true;
          }
          return false;
        };
        MappingPromiseArray.prototype._drainQueue = function() {
          var queue2 = this._queue;
          var limit = this._limit;
          var values = this._values;
          while (queue2.length > 0 && this._inFlight < limit) {
            if (this._isResolved())
              return;
            var index2 = queue2.pop();
            this._promiseFulfilled(values[index2], index2);
          }
        };
        MappingPromiseArray.prototype._filter = function(booleans, values) {
          var len = values.length;
          var ret = new Array(len);
          var j2 = 0;
          for (var i = 0; i < len; ++i) {
            if (booleans[i])
              ret[j2++] = values[i];
          }
          ret.length = j2;
          this._resolve(ret);
        };
        MappingPromiseArray.prototype.preservedValues = function() {
          return this._preservedValues;
        };
        function map2(promises, fn2, options2, _filter) {
          if (typeof fn2 !== "function") {
            return apiRejection("expecting a function but got " + util2.classString(fn2));
          }
          var limit = 0;
          if (options2 !== void 0) {
            if (typeof options2 === "object" && options2 !== null) {
              if (typeof options2.concurrency !== "number") {
                return Promise2.reject(
                  new TypeError("'concurrency' must be a number but it is " + util2.classString(options2.concurrency))
                );
              }
              limit = options2.concurrency;
            } else {
              return Promise2.reject(new TypeError(
                "options argument must be an object but it is " + util2.classString(options2)
              ));
            }
          }
          limit = typeof limit === "number" && isFinite(limit) && limit >= 1 ? limit : 0;
          return new MappingPromiseArray(promises, fn2, limit, _filter).promise();
        }
        Promise2.prototype.map = function(fn2, options2) {
          return map2(this, fn2, options2, null);
        };
        Promise2.map = function(promises, fn2, options2, _filter) {
          return map2(promises, fn2, options2, _filter);
        };
      };
    }, { "./util": 36 }], 19: [function(_dereq_2, module2, exports2) {
      module2.exports = function(Promise2, INTERNAL, tryConvertToPromise, apiRejection, debug2) {
        var util2 = _dereq_2("./util");
        var tryCatch = util2.tryCatch;
        Promise2.method = function(fn2) {
          if (typeof fn2 !== "function") {
            throw new Promise2.TypeError("expecting a function but got " + util2.classString(fn2));
          }
          return function() {
            var ret = new Promise2(INTERNAL);
            ret._captureStackTrace();
            ret._pushContext();
            var value = tryCatch(fn2).apply(this, arguments);
            var promiseCreated = ret._popContext();
            debug2.checkForgottenReturns(
              value,
              promiseCreated,
              "Promise.method",
              ret
            );
            ret._resolveFromSyncValue(value);
            return ret;
          };
        };
        Promise2.attempt = Promise2["try"] = function(fn2) {
          if (typeof fn2 !== "function") {
            return apiRejection("expecting a function but got " + util2.classString(fn2));
          }
          var ret = new Promise2(INTERNAL);
          ret._captureStackTrace();
          ret._pushContext();
          var value;
          if (arguments.length > 1) {
            debug2.deprecated("calling Promise.try with more than 1 argument");
            var arg = arguments[1];
            var ctx = arguments[2];
            value = util2.isArray(arg) ? tryCatch(fn2).apply(ctx, arg) : tryCatch(fn2).call(ctx, arg);
          } else {
            value = tryCatch(fn2)();
          }
          var promiseCreated = ret._popContext();
          debug2.checkForgottenReturns(
            value,
            promiseCreated,
            "Promise.try",
            ret
          );
          ret._resolveFromSyncValue(value);
          return ret;
        };
        Promise2.prototype._resolveFromSyncValue = function(value) {
          if (value === util2.errorObj) {
            this._rejectCallback(value.e, false);
          } else {
            this._resolveCallback(value, true);
          }
        };
      };
    }, { "./util": 36 }], 20: [function(_dereq_2, module2, exports2) {
      var util2 = _dereq_2("./util");
      var maybeWrapAsError = util2.maybeWrapAsError;
      var errors2 = _dereq_2("./errors");
      var OperationalError = errors2.OperationalError;
      var es5 = _dereq_2("./es5");
      function isUntypedError(obj) {
        return obj instanceof Error && es5.getPrototypeOf(obj) === Error.prototype;
      }
      var rErrorKey = /^(?:name|message|stack|cause)$/;
      function wrapAsOperationalError(obj) {
        var ret;
        if (isUntypedError(obj)) {
          ret = new OperationalError(obj);
          ret.name = obj.name;
          ret.message = obj.message;
          ret.stack = obj.stack;
          var keys = es5.keys(obj);
          for (var i = 0; i < keys.length; ++i) {
            var key = keys[i];
            if (!rErrorKey.test(key)) {
              ret[key] = obj[key];
            }
          }
          return ret;
        }
        util2.markAsOriginatingFromRejection(obj);
        return obj;
      }
      function nodebackForPromise(promise, multiArgs) {
        return function(err, value) {
          if (promise === null)
            return;
          if (err) {
            var wrapped = wrapAsOperationalError(maybeWrapAsError(err));
            promise._attachExtraTrace(wrapped);
            promise._reject(wrapped);
          } else if (!multiArgs) {
            promise._fulfill(value);
          } else {
            var args = [].slice.call(arguments, 1);
            promise._fulfill(args);
          }
          promise = null;
        };
      }
      module2.exports = nodebackForPromise;
    }, { "./errors": 12, "./es5": 13, "./util": 36 }], 21: [function(_dereq_2, module2, exports2) {
      module2.exports = function(Promise2) {
        var util2 = _dereq_2("./util");
        var async = Promise2._async;
        var tryCatch = util2.tryCatch;
        var errorObj = util2.errorObj;
        function spreadAdapter(val, nodeback) {
          var promise = this;
          if (!util2.isArray(val))
            return successAdapter.call(promise, val, nodeback);
          var ret = tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));
          if (ret === errorObj) {
            async.throwLater(ret.e);
          }
        }
        function successAdapter(val, nodeback) {
          var promise = this;
          var receiver = promise._boundValue();
          var ret = val === void 0 ? tryCatch(nodeback).call(receiver, null) : tryCatch(nodeback).call(receiver, null, val);
          if (ret === errorObj) {
            async.throwLater(ret.e);
          }
        }
        function errorAdapter(reason, nodeback) {
          var promise = this;
          if (!reason) {
            var newReason = new Error(reason + "");
            newReason.cause = reason;
            reason = newReason;
          }
          var ret = tryCatch(nodeback).call(promise._boundValue(), reason);
          if (ret === errorObj) {
            async.throwLater(ret.e);
          }
        }
        Promise2.prototype.asCallback = Promise2.prototype.nodeify = function(nodeback, options2) {
          if (typeof nodeback == "function") {
            var adapter = successAdapter;
            if (options2 !== void 0 && Object(options2).spread) {
              adapter = spreadAdapter;
            }
            this._then(
              adapter,
              errorAdapter,
              void 0,
              this,
              nodeback
            );
          }
          return this;
        };
      };
    }, { "./util": 36 }], 22: [function(_dereq_2, module2, exports2) {
      module2.exports = function() {
        var makeSelfResolutionError = function() {
          return new TypeError2("circular promise resolution chain\n\n    See http://goo.gl/MqrFmX\n");
        };
        var reflectHandler = function() {
          return new Promise2.PromiseInspection(this._target());
        };
        var apiRejection = function(msg) {
          return Promise2.reject(new TypeError2(msg));
        };
        function Proxyable() {
        }
        var UNDEFINED_BINDING = {};
        var util2 = _dereq_2("./util");
        var getDomain;
        if (util2.isNode) {
          getDomain = function() {
            var ret = process.domain;
            if (ret === void 0)
              ret = null;
            return ret;
          };
        } else {
          getDomain = function() {
            return null;
          };
        }
        util2.notEnumerableProp(Promise2, "_getDomain", getDomain);
        var es5 = _dereq_2("./es5");
        var Async = _dereq_2("./async");
        var async = new Async();
        es5.defineProperty(Promise2, "_async", { value: async });
        var errors2 = _dereq_2("./errors");
        var TypeError2 = Promise2.TypeError = errors2.TypeError;
        Promise2.RangeError = errors2.RangeError;
        var CancellationError = Promise2.CancellationError = errors2.CancellationError;
        Promise2.TimeoutError = errors2.TimeoutError;
        Promise2.OperationalError = errors2.OperationalError;
        Promise2.RejectionError = errors2.OperationalError;
        Promise2.AggregateError = errors2.AggregateError;
        var INTERNAL = function() {
        };
        var APPLY = {};
        var NEXT_FILTER = {};
        var tryConvertToPromise = _dereq_2("./thenables")(Promise2, INTERNAL);
        var PromiseArray = _dereq_2("./promise_array")(
          Promise2,
          INTERNAL,
          tryConvertToPromise,
          apiRejection,
          Proxyable
        );
        var Context2 = _dereq_2("./context")(Promise2);
        var createContext = Context2.create;
        var debug2 = _dereq_2("./debuggability")(Promise2, Context2);
        debug2.CapturedTrace;
        var PassThroughHandlerContext = _dereq_2("./finally")(Promise2, tryConvertToPromise, NEXT_FILTER);
        var catchFilter = _dereq_2("./catch_filter")(NEXT_FILTER);
        var nodebackForPromise = _dereq_2("./nodeback");
        var errorObj = util2.errorObj;
        var tryCatch = util2.tryCatch;
        function check2(self2, executor) {
          if (self2 == null || self2.constructor !== Promise2) {
            throw new TypeError2("the promise constructor cannot be invoked directly\n\n    See http://goo.gl/MqrFmX\n");
          }
          if (typeof executor !== "function") {
            throw new TypeError2("expecting a function but got " + util2.classString(executor));
          }
        }
        function Promise2(executor) {
          if (executor !== INTERNAL) {
            check2(this, executor);
          }
          this._bitField = 0;
          this._fulfillmentHandler0 = void 0;
          this._rejectionHandler0 = void 0;
          this._promise0 = void 0;
          this._receiver0 = void 0;
          this._resolveFromExecutor(executor);
          this._promiseCreated();
          this._fireEvent("promiseCreated", this);
        }
        Promise2.prototype.toString = function() {
          return "[object Promise]";
        };
        Promise2.prototype.caught = Promise2.prototype["catch"] = function(fn2) {
          var len = arguments.length;
          if (len > 1) {
            var catchInstances = new Array(len - 1), j2 = 0, i;
            for (i = 0; i < len - 1; ++i) {
              var item = arguments[i];
              if (util2.isObject(item)) {
                catchInstances[j2++] = item;
              } else {
                return apiRejection("Catch statement predicate: expecting an object but got " + util2.classString(item));
              }
            }
            catchInstances.length = j2;
            fn2 = arguments[i];
            return this.then(void 0, catchFilter(catchInstances, fn2, this));
          }
          return this.then(void 0, fn2);
        };
        Promise2.prototype.reflect = function() {
          return this._then(
            reflectHandler,
            reflectHandler,
            void 0,
            this,
            void 0
          );
        };
        Promise2.prototype.then = function(didFulfill, didReject) {
          if (debug2.warnings() && arguments.length > 0 && typeof didFulfill !== "function" && typeof didReject !== "function") {
            var msg = ".then() only accepts functions but was passed: " + util2.classString(didFulfill);
            if (arguments.length > 1) {
              msg += ", " + util2.classString(didReject);
            }
            this._warn(msg);
          }
          return this._then(didFulfill, didReject, void 0, void 0, void 0);
        };
        Promise2.prototype.done = function(didFulfill, didReject) {
          var promise = this._then(didFulfill, didReject, void 0, void 0, void 0);
          promise._setIsFinal();
        };
        Promise2.prototype.spread = function(fn2) {
          if (typeof fn2 !== "function") {
            return apiRejection("expecting a function but got " + util2.classString(fn2));
          }
          return this.all()._then(fn2, void 0, void 0, APPLY, void 0);
        };
        Promise2.prototype.toJSON = function() {
          var ret = {
            isFulfilled: false,
            isRejected: false,
            fulfillmentValue: void 0,
            rejectionReason: void 0
          };
          if (this.isFulfilled()) {
            ret.fulfillmentValue = this.value();
            ret.isFulfilled = true;
          } else if (this.isRejected()) {
            ret.rejectionReason = this.reason();
            ret.isRejected = true;
          }
          return ret;
        };
        Promise2.prototype.all = function() {
          if (arguments.length > 0) {
            this._warn(".all() was passed arguments but it does not take any");
          }
          return new PromiseArray(this).promise();
        };
        Promise2.prototype.error = function(fn2) {
          return this.caught(util2.originatesFromRejection, fn2);
        };
        Promise2.getNewLibraryCopy = module2.exports;
        Promise2.is = function(val) {
          return val instanceof Promise2;
        };
        Promise2.fromNode = Promise2.fromCallback = function(fn2) {
          var ret = new Promise2(INTERNAL);
          ret._captureStackTrace();
          var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs : false;
          var result = tryCatch(fn2)(nodebackForPromise(ret, multiArgs));
          if (result === errorObj) {
            ret._rejectCallback(result.e, true);
          }
          if (!ret._isFateSealed())
            ret._setAsyncGuaranteed();
          return ret;
        };
        Promise2.all = function(promises) {
          return new PromiseArray(promises).promise();
        };
        Promise2.cast = function(obj) {
          var ret = tryConvertToPromise(obj);
          if (!(ret instanceof Promise2)) {
            ret = new Promise2(INTERNAL);
            ret._captureStackTrace();
            ret._setFulfilled();
            ret._rejectionHandler0 = obj;
          }
          return ret;
        };
        Promise2.resolve = Promise2.fulfilled = Promise2.cast;
        Promise2.reject = Promise2.rejected = function(reason) {
          var ret = new Promise2(INTERNAL);
          ret._captureStackTrace();
          ret._rejectCallback(reason, true);
          return ret;
        };
        Promise2.setScheduler = function(fn2) {
          if (typeof fn2 !== "function") {
            throw new TypeError2("expecting a function but got " + util2.classString(fn2));
          }
          return async.setScheduler(fn2);
        };
        Promise2.prototype._then = function(didFulfill, didReject, _2, receiver, internalData) {
          var haveInternalData = internalData !== void 0;
          var promise = haveInternalData ? internalData : new Promise2(INTERNAL);
          var target2 = this._target();
          var bitField = target2._bitField;
          if (!haveInternalData) {
            promise._propagateFrom(this, 3);
            promise._captureStackTrace();
            if (receiver === void 0 && (this._bitField & 2097152) !== 0) {
              if (!((bitField & 50397184) === 0)) {
                receiver = this._boundValue();
              } else {
                receiver = target2 === this ? void 0 : this._boundTo;
              }
            }
            this._fireEvent("promiseChained", this, promise);
          }
          var domain = getDomain();
          if (!((bitField & 50397184) === 0)) {
            var handler, value, settler = target2._settlePromiseCtx;
            if ((bitField & 33554432) !== 0) {
              value = target2._rejectionHandler0;
              handler = didFulfill;
            } else if ((bitField & 16777216) !== 0) {
              value = target2._fulfillmentHandler0;
              handler = didReject;
              target2._unsetRejectionIsUnhandled();
            } else {
              settler = target2._settlePromiseLateCancellationObserver;
              value = new CancellationError("late cancellation observer");
              target2._attachExtraTrace(value);
              handler = didReject;
            }
            async.invoke(settler, target2, {
              handler: domain === null ? handler : typeof handler === "function" && util2.domainBind(domain, handler),
              promise,
              receiver,
              value
            });
          } else {
            target2._addCallbacks(didFulfill, didReject, promise, receiver, domain);
          }
          return promise;
        };
        Promise2.prototype._length = function() {
          return this._bitField & 65535;
        };
        Promise2.prototype._isFateSealed = function() {
          return (this._bitField & 117506048) !== 0;
        };
        Promise2.prototype._isFollowing = function() {
          return (this._bitField & 67108864) === 67108864;
        };
        Promise2.prototype._setLength = function(len) {
          this._bitField = this._bitField & -65536 | len & 65535;
        };
        Promise2.prototype._setFulfilled = function() {
          this._bitField = this._bitField | 33554432;
          this._fireEvent("promiseFulfilled", this);
        };
        Promise2.prototype._setRejected = function() {
          this._bitField = this._bitField | 16777216;
          this._fireEvent("promiseRejected", this);
        };
        Promise2.prototype._setFollowing = function() {
          this._bitField = this._bitField | 67108864;
          this._fireEvent("promiseResolved", this);
        };
        Promise2.prototype._setIsFinal = function() {
          this._bitField = this._bitField | 4194304;
        };
        Promise2.prototype._isFinal = function() {
          return (this._bitField & 4194304) > 0;
        };
        Promise2.prototype._unsetCancelled = function() {
          this._bitField = this._bitField & ~65536;
        };
        Promise2.prototype._setCancelled = function() {
          this._bitField = this._bitField | 65536;
          this._fireEvent("promiseCancelled", this);
        };
        Promise2.prototype._setWillBeCancelled = function() {
          this._bitField = this._bitField | 8388608;
        };
        Promise2.prototype._setAsyncGuaranteed = function() {
          if (async.hasCustomScheduler())
            return;
          this._bitField = this._bitField | 134217728;
        };
        Promise2.prototype._receiverAt = function(index2) {
          var ret = index2 === 0 ? this._receiver0 : this[index2 * 4 - 4 + 3];
          if (ret === UNDEFINED_BINDING) {
            return void 0;
          } else if (ret === void 0 && this._isBound()) {
            return this._boundValue();
          }
          return ret;
        };
        Promise2.prototype._promiseAt = function(index2) {
          return this[index2 * 4 - 4 + 2];
        };
        Promise2.prototype._fulfillmentHandlerAt = function(index2) {
          return this[index2 * 4 - 4 + 0];
        };
        Promise2.prototype._rejectionHandlerAt = function(index2) {
          return this[index2 * 4 - 4 + 1];
        };
        Promise2.prototype._boundValue = function() {
        };
        Promise2.prototype._migrateCallback0 = function(follower) {
          follower._bitField;
          var fulfill = follower._fulfillmentHandler0;
          var reject = follower._rejectionHandler0;
          var promise = follower._promise0;
          var receiver = follower._receiverAt(0);
          if (receiver === void 0)
            receiver = UNDEFINED_BINDING;
          this._addCallbacks(fulfill, reject, promise, receiver, null);
        };
        Promise2.prototype._migrateCallbackAt = function(follower, index2) {
          var fulfill = follower._fulfillmentHandlerAt(index2);
          var reject = follower._rejectionHandlerAt(index2);
          var promise = follower._promiseAt(index2);
          var receiver = follower._receiverAt(index2);
          if (receiver === void 0)
            receiver = UNDEFINED_BINDING;
          this._addCallbacks(fulfill, reject, promise, receiver, null);
        };
        Promise2.prototype._addCallbacks = function(fulfill, reject, promise, receiver, domain) {
          var index2 = this._length();
          if (index2 >= 65535 - 4) {
            index2 = 0;
            this._setLength(0);
          }
          if (index2 === 0) {
            this._promise0 = promise;
            this._receiver0 = receiver;
            if (typeof fulfill === "function") {
              this._fulfillmentHandler0 = domain === null ? fulfill : util2.domainBind(domain, fulfill);
            }
            if (typeof reject === "function") {
              this._rejectionHandler0 = domain === null ? reject : util2.domainBind(domain, reject);
            }
          } else {
            var base2 = index2 * 4 - 4;
            this[base2 + 2] = promise;
            this[base2 + 3] = receiver;
            if (typeof fulfill === "function") {
              this[base2 + 0] = domain === null ? fulfill : util2.domainBind(domain, fulfill);
            }
            if (typeof reject === "function") {
              this[base2 + 1] = domain === null ? reject : util2.domainBind(domain, reject);
            }
          }
          this._setLength(index2 + 1);
          return index2;
        };
        Promise2.prototype._proxy = function(proxyable, arg) {
          this._addCallbacks(void 0, void 0, arg, proxyable, null);
        };
        Promise2.prototype._resolveCallback = function(value, shouldBind) {
          if ((this._bitField & 117506048) !== 0)
            return;
          if (value === this)
            return this._rejectCallback(makeSelfResolutionError(), false);
          var maybePromise = tryConvertToPromise(value, this);
          if (!(maybePromise instanceof Promise2))
            return this._fulfill(value);
          if (shouldBind)
            this._propagateFrom(maybePromise, 2);
          var promise = maybePromise._target();
          if (promise === this) {
            this._reject(makeSelfResolutionError());
            return;
          }
          var bitField = promise._bitField;
          if ((bitField & 50397184) === 0) {
            var len = this._length();
            if (len > 0)
              promise._migrateCallback0(this);
            for (var i = 1; i < len; ++i) {
              promise._migrateCallbackAt(this, i);
            }
            this._setFollowing();
            this._setLength(0);
            this._setFollowee(promise);
          } else if ((bitField & 33554432) !== 0) {
            this._fulfill(promise._value());
          } else if ((bitField & 16777216) !== 0) {
            this._reject(promise._reason());
          } else {
            var reason = new CancellationError("late cancellation observer");
            promise._attachExtraTrace(reason);
            this._reject(reason);
          }
        };
        Promise2.prototype._rejectCallback = function(reason, synchronous, ignoreNonErrorWarnings) {
          var trace2 = util2.ensureErrorObject(reason);
          var hasStack = trace2 === reason;
          if (!hasStack && !ignoreNonErrorWarnings && debug2.warnings()) {
            var message = "a promise was rejected with a non-error: " + util2.classString(reason);
            this._warn(message, true);
          }
          this._attachExtraTrace(trace2, synchronous ? hasStack : false);
          this._reject(reason);
        };
        Promise2.prototype._resolveFromExecutor = function(executor) {
          if (executor === INTERNAL)
            return;
          var promise = this;
          this._captureStackTrace();
          this._pushContext();
          var synchronous = true;
          var r2 = this._execute(executor, function(value) {
            promise._resolveCallback(value);
          }, function(reason) {
            promise._rejectCallback(reason, synchronous);
          });
          synchronous = false;
          this._popContext();
          if (r2 !== void 0) {
            promise._rejectCallback(r2, true);
          }
        };
        Promise2.prototype._settlePromiseFromHandler = function(handler, receiver, value, promise) {
          var bitField = promise._bitField;
          if ((bitField & 65536) !== 0)
            return;
          promise._pushContext();
          var x2;
          if (receiver === APPLY) {
            if (!value || typeof value.length !== "number") {
              x2 = errorObj;
              x2.e = new TypeError2("cannot .spread() a non-array: " + util2.classString(value));
            } else {
              x2 = tryCatch(handler).apply(this._boundValue(), value);
            }
          } else {
            x2 = tryCatch(handler).call(receiver, value);
          }
          var promiseCreated = promise._popContext();
          bitField = promise._bitField;
          if ((bitField & 65536) !== 0)
            return;
          if (x2 === NEXT_FILTER) {
            promise._reject(value);
          } else if (x2 === errorObj) {
            promise._rejectCallback(x2.e, false);
          } else {
            debug2.checkForgottenReturns(x2, promiseCreated, "", promise, this);
            promise._resolveCallback(x2);
          }
        };
        Promise2.prototype._target = function() {
          var ret = this;
          while (ret._isFollowing())
            ret = ret._followee();
          return ret;
        };
        Promise2.prototype._followee = function() {
          return this._rejectionHandler0;
        };
        Promise2.prototype._setFollowee = function(promise) {
          this._rejectionHandler0 = promise;
        };
        Promise2.prototype._settlePromise = function(promise, handler, receiver, value) {
          var isPromise2 = promise instanceof Promise2;
          var bitField = this._bitField;
          var asyncGuaranteed = (bitField & 134217728) !== 0;
          if ((bitField & 65536) !== 0) {
            if (isPromise2)
              promise._invokeInternalOnCancel();
            if (receiver instanceof PassThroughHandlerContext && receiver.isFinallyHandler()) {
              receiver.cancelPromise = promise;
              if (tryCatch(handler).call(receiver, value) === errorObj) {
                promise._reject(errorObj.e);
              }
            } else if (handler === reflectHandler) {
              promise._fulfill(reflectHandler.call(receiver));
            } else if (receiver instanceof Proxyable) {
              receiver._promiseCancelled(promise);
            } else if (isPromise2 || promise instanceof PromiseArray) {
              promise._cancel();
            } else {
              receiver.cancel();
            }
          } else if (typeof handler === "function") {
            if (!isPromise2) {
              handler.call(receiver, value, promise);
            } else {
              if (asyncGuaranteed)
                promise._setAsyncGuaranteed();
              this._settlePromiseFromHandler(handler, receiver, value, promise);
            }
          } else if (receiver instanceof Proxyable) {
            if (!receiver._isResolved()) {
              if ((bitField & 33554432) !== 0) {
                receiver._promiseFulfilled(value, promise);
              } else {
                receiver._promiseRejected(value, promise);
              }
            }
          } else if (isPromise2) {
            if (asyncGuaranteed)
              promise._setAsyncGuaranteed();
            if ((bitField & 33554432) !== 0) {
              promise._fulfill(value);
            } else {
              promise._reject(value);
            }
          }
        };
        Promise2.prototype._settlePromiseLateCancellationObserver = function(ctx) {
          var handler = ctx.handler;
          var promise = ctx.promise;
          var receiver = ctx.receiver;
          var value = ctx.value;
          if (typeof handler === "function") {
            if (!(promise instanceof Promise2)) {
              handler.call(receiver, value, promise);
            } else {
              this._settlePromiseFromHandler(handler, receiver, value, promise);
            }
          } else if (promise instanceof Promise2) {
            promise._reject(value);
          }
        };
        Promise2.prototype._settlePromiseCtx = function(ctx) {
          this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);
        };
        Promise2.prototype._settlePromise0 = function(handler, value, bitField) {
          var promise = this._promise0;
          var receiver = this._receiverAt(0);
          this._promise0 = void 0;
          this._receiver0 = void 0;
          this._settlePromise(promise, handler, receiver, value);
        };
        Promise2.prototype._clearCallbackDataAtIndex = function(index2) {
          var base2 = index2 * 4 - 4;
          this[base2 + 2] = this[base2 + 3] = this[base2 + 0] = this[base2 + 1] = void 0;
        };
        Promise2.prototype._fulfill = function(value) {
          var bitField = this._bitField;
          if ((bitField & 117506048) >>> 16)
            return;
          if (value === this) {
            var err = makeSelfResolutionError();
            this._attachExtraTrace(err);
            return this._reject(err);
          }
          this._setFulfilled();
          this._rejectionHandler0 = value;
          if ((bitField & 65535) > 0) {
            if ((bitField & 134217728) !== 0) {
              this._settlePromises();
            } else {
              async.settlePromises(this);
            }
            this._dereferenceTrace();
          }
        };
        Promise2.prototype._reject = function(reason) {
          var bitField = this._bitField;
          if ((bitField & 117506048) >>> 16)
            return;
          this._setRejected();
          this._fulfillmentHandler0 = reason;
          if (this._isFinal()) {
            return async.fatalError(reason, util2.isNode);
          }
          if ((bitField & 65535) > 0) {
            async.settlePromises(this);
          } else {
            this._ensurePossibleRejectionHandled();
          }
        };
        Promise2.prototype._fulfillPromises = function(len, value) {
          for (var i = 1; i < len; i++) {
            var handler = this._fulfillmentHandlerAt(i);
            var promise = this._promiseAt(i);
            var receiver = this._receiverAt(i);
            this._clearCallbackDataAtIndex(i);
            this._settlePromise(promise, handler, receiver, value);
          }
        };
        Promise2.prototype._rejectPromises = function(len, reason) {
          for (var i = 1; i < len; i++) {
            var handler = this._rejectionHandlerAt(i);
            var promise = this._promiseAt(i);
            var receiver = this._receiverAt(i);
            this._clearCallbackDataAtIndex(i);
            this._settlePromise(promise, handler, receiver, reason);
          }
        };
        Promise2.prototype._settlePromises = function() {
          var bitField = this._bitField;
          var len = bitField & 65535;
          if (len > 0) {
            if ((bitField & 16842752) !== 0) {
              var reason = this._fulfillmentHandler0;
              this._settlePromise0(this._rejectionHandler0, reason, bitField);
              this._rejectPromises(len, reason);
            } else {
              var value = this._rejectionHandler0;
              this._settlePromise0(this._fulfillmentHandler0, value, bitField);
              this._fulfillPromises(len, value);
            }
            this._setLength(0);
          }
          this._clearCancellationData();
        };
        Promise2.prototype._settledValue = function() {
          var bitField = this._bitField;
          if ((bitField & 33554432) !== 0) {
            return this._rejectionHandler0;
          } else if ((bitField & 16777216) !== 0) {
            return this._fulfillmentHandler0;
          }
        };
        function deferResolve(v2) {
          this.promise._resolveCallback(v2);
        }
        function deferReject(v2) {
          this.promise._rejectCallback(v2, false);
        }
        Promise2.defer = Promise2.pending = function() {
          debug2.deprecated("Promise.defer", "new Promise");
          var promise = new Promise2(INTERNAL);
          return {
            promise,
            resolve: deferResolve,
            reject: deferReject
          };
        };
        util2.notEnumerableProp(
          Promise2,
          "_makeSelfResolutionError",
          makeSelfResolutionError
        );
        _dereq_2("./method")(
          Promise2,
          INTERNAL,
          tryConvertToPromise,
          apiRejection,
          debug2
        );
        _dereq_2("./bind")(Promise2, INTERNAL, tryConvertToPromise, debug2);
        _dereq_2("./cancel")(Promise2, PromiseArray, apiRejection, debug2);
        _dereq_2("./direct_resolve")(Promise2);
        _dereq_2("./synchronous_inspec…“E‹
-%ÝÜ@ä›è‚ªªªªÞÜAIH€ä›è‚ªªªªâÜmÛ’©à
…“E‹ ððàÝÝÐ´K‚­…“e‹€€+äÞ“À	á…“E‹UWXPäÜP5�¯9…“E‹%
ßÜÛÐÝ–
…“e‹€âà!’!H’e“E‹þþþþâáI‚$A�e‹E‹ áÞ¬X4…“E‹¿«++àÝ[×¶)Ö…“e‹  ßÝ É„I…“e‹€äÝwsåD	…“E‹àèZWãáIB&	&e‹E‹
­	äái—
0e‹E‹x^WUäßZ‹Õk²&e“E‹õµ
âß[³­ÅÚme“e‹¿¿¿ÿâÝ­SÛuç
…“E‹ úåÝyio¥0	…“%ƒ àú~æãiÛnÛ`E‹%ƒ¨ªîÿæåH‚A‚ †‹‚zªªªªæå$I�$f‹¢zªªªªæåA ’f‹¢zªªªªæå@� H‚f‹¢zªªªªèæ�	™$%ƒäzªª  éç$I$É�F‹‚jªªªªéèI’$H$f‹bjªªªªèèI’$I’$f‹bjªªªªéäÚ¢ÍÐ*ÕE‹{¿?¿¿æÞ¬`Só¯>…“%ƒzú+çÞš°	¯�e“ƒ~xxçÝhP�9…“ƒUõ-
çÜ°
÷ûÄ…“ƒUÿ€éä“4IÖ»E‹{ÿþþ¨èå ¶¡%ƒÄz**ªªæÜ½M? �Ù…“%ƒ

àÜŒãØŽM
…“E‹ èÜÿ›»÷Ô
…“ƒ€àxéå‘J¤m’E‹ƒþÿÿÿéæ+ÖmiÛmf‹brªªªªèæ$Á!H’f‹‚rªªªªæÜ˜ƒ9 ³º…“%ƒ

«àÜql;Ž
Ñ…“e‹
ÝÜAHä›è‚ªªªªÝÜ ä›è‚ªªªªàÜv[±Û…“e‹€€èÜÀivý?…“ƒWþçÜ Mµ›ÿ…“ƒUÿèÜ€´mu›<…“ƒUÿçÜ�¯ùöÿç…“ƒ
çÝàNþ�$…“ƒ~êçÝ0	.—…“ƒÕÿê çà­ÀiÒª5e‹ƒzú/çß0I>•¼…“ƒUê çã @‚ÛE‹ƒÿÿÿ
èä¤$’’ÛE‹ƒÿÿ_úçäÀ�4%ƒÄzªªªçæ	€ f‹brªªªªçæ’f‹brªªªªèæ$I’!IF‹‚jªªªªçæ’H’ f‹brªªªªæå@ %ƒƒ

*ªåäH�E‹%ƒëûûÿæå�$I�f‹¢zªªªªæå�$�%ƒƒ€€çäÛ¶5ÛŠ¶%ƒå‚


æä$€f‹¢zªªªªæäH’$Á„E‹ƒêêêªèæ’$˜%ƒƒþþúêçæI‚$H‚$fƒ‚‚ªªªªçæH‚ ‚$f‹‚rªªªªçæ�$�f‹‚rªªªªçæH$I’$f‹‚rªªªªçßZ#9Ò(Ae‹ƒ
-½ÕçÝñ÷Ðe“ƒxxxzçæAf‹‚rªªªªèç$¦‹Âiªªªªèç	� I€¦‹Âiªªªªèæ$AdH’F‹‚jªªªªçæ@I�f‹‚rªªªªèæ`&$HF‹‚jªªªªçæI�Af‹‚rªªªªçå`0D2%ƒƒª*ªªæE€(À(%ƒäz````D8@0äzÄzªª*
D' Iµí$äzÄrªªD(#'®%ƒcjªªªªDB …ƒ£aªªªªD>ä$…ƒ£aªªªªD>�$…ƒ£aªªªªD=ðü…ƒ£aªªªªW>®à
¯�wäzÄrèèè [
iP�=%ƒÄrUý­-Ç(&aÛÿŸÿƒÄr?ÿªªã5`É™äE‹äzµÕãÚP	q’…“E‹
­uUçá)ç	“0IE‹ƒàøþþçåL€ €f‹‚zªªªªçÞ’&‰P�5e“ƒÿ½-
äÞà
Iér…“%‹_zàêæá‰àL[,ÙE‹%ƒ`à
èåm;Y—m%‹ƒÿÿþüçæ	f‹brªªªªèÅ€ (%ƒåzÀJJ¨Op²'LÒ$ÅrFR\VWWPMC,Ø6l‡bFR-­õUPL‰C;¢9ÈbFRªª¯­NL$@aÈ�¨bgZWþêê£O‰‘|I˜¤ærGR55•—Ý¾P…“FƒÝÐ@ä›è‚ªªªªÝO"'€
…“%ƒW\€ØI’$OÕ…“%ƒUU_à)�$I’$†‹‚zªªªªH’$I’$†‹‚zªªªªI’$I’$†‹‚zªªªªI�DIœ$†‹‚zªªªª½9þ“û†‹‚zªªªªn‘¤Iê$†‹‚zªªªª8/ð¹�$%ƒäzøø h+ÛþŸ$%ƒäz˜Ó$Mo†‹‚zªªªªÝ'…“E‹ßÜíÐ´m’´…“E‹€ßÜX×¦i›¶…“E‹àÜ’`‡±iÇ…“E‹¨äÜ9m¦O…“E‹¥¯xpæÝ4�Z¿>…“%ƒß¿/æÝ­ä
÷”W…“%ƒúpðàåã €‘E‹%ƒ*¯ª åáIb3’@e‹%ƒªªâßë¶mX¬e“E‹ª¯­äàqbÓ¡DAe‹E‹øX^âß†­X³&…“E‹Þ¯++ãÞ“OñW…“E‹Zøxèäà6á�¤D’e“E‹_z_ÿçâ�à
©àJE‹ƒøððàçæ	$fƒb‚ªªªªçâšt€$E‹ƒ¯ÿÿçã!-€E‹ä‚(¾ÿÿçßÿë¼š@e“ƒ‚‚ÿUçå$’%ƒäz¨ª çÞP-=Ð#Õ…“ƒ-

­ãÜ¹õ›¬…“E‹¯¥åÜm×7Y…“E‹ªàZèßq›·Ü&	e“ƒ  þ_çÞuÛ'âÕ…“ƒª-çs@e‹FRp€€€æ~2?X¨ƒèAUW\àä�S‰ûÜE‹è9½ÕUåX�
E‹J-æâ$€IE‹%ƒ˜–×­åÞ¼]ç˜ù…“%ƒŠŠ/-åÞÂ(¬äÈ-E‹ƒâEPžºÕE‹çApØž7æ¿$%ƒÅj�æUsñ%ƒç9^x€à4ÿó'tõ%ƒç9UUWxƒ9y‘Ûwë¶&Rç9UUUæNÉ™$%ƒç9-ÕUät@�
E‹Jà€-åVI2?Ð%ƒÇ9U^ Ü+~â'l
H{è9UUÿÍ+I’$¶
{è9UUÿÁ%ÿýÿ~‚9{è9UUWxáðSIœ$e‹BµUUâ+SE‹B-ãá	I&C&¥‹ÅŠªªªªãá!˜	‘„¥“¥zªªªªã(˜ˆE‹è9x€á'Iò$sñEƒè9UW^`à'§�xþ'E‹B
µUUâ'e‹è9-äám‹µC³6¥“¥zªªªªãá$�dB¥“¥zªªªªäâ!H�E‹ƒ(((âÞ¢:€‘…“E‹-¯¿¿ßÞA�I…“e‹ªªªªáÞm²µ:¬e“E‹
¯ßßàÞD†L†…“E‹**
ßÞI’ 	’ …“e‹ªªªªàÞ	&IÈ0…“E‹/*ßÔ…“f‹ÀªÞ
{õ…“(BVx€Ã
ÉŸÿýú{BUUWX“'‰‘äÉÿÛÇjè95UUUâ-à9‘¼E‹è9-Õã sñ&E‹B^p€Ò#ò?}‚={è9UUWxßÉûÿ…“B-ÕUá�ˆàe‹(JxÀ	á
Iò$s5e‹BUUVxÞ
�Iš$e“B%ÕUßL�…“gR	ßÞI’$I…“e‹ªªªªßÞHI…“e‹ªªªªáÞIÖtIÑ…“E‹èèxzäá0º-E‹%ƒªªª
äÝ MµùÄ…“%‹U}ª‚æàZ#ÕƒFE‹ƒ¾þçÜÿã¶Ò…“ƒªÿUç6È�=e“ç9€àx^Nó`¾ëü(BÇ9øúªÉõo?¯cèFƒè9UU}Ãnå`n÷–s(JÇ9?_^ú¿>`þäÉŸ¿ærç9XUUÕçII’² Mƒç9Uý"çIÉïÿêðƒÇ9UU^p_¢‚9˜µHRÇ9…õõõæIþöà%ƒBU•5
è»@$‹år©ªª*âÜsÈ–jm…“E‹‚‚ƒÿèß“Zi©ôe‹ƒ¶Þppèß9×
“$He“ƒàz_UçÜ�9PÔ…“ƒ-

-ÞÜ$I’L‚ä›è‚ªªªªßÜIÛ6i…“E‹¨çÝIœ»1U
…“ƒ€€àzçã–-9’E‹ƒÿÿçãIœØ%E‹ƒÿÿçå$Afƒ‚‚ªªªªçæfƒ‚‚ªªªªçæ@ fƒ‚‚ªªªªçæ@H‚fƒ‚‚ªªªªçæ@fƒ‚‚ªªªªçæ€’fƒ‚‚ªªªªç»(ƒ¥j@çŸ�ƒfZ%ßXM²$p¢'{Ç9WV\VZQZI�$Iç9Ç9
ªªªZ
P�9˜ƒ9BÇ9¯///»
ÿŸ$ÉŸ&ƒBUUU!Àf?N¢$IJBUýÿþßÿ�„I’$e‹B%•UUà…“B€	Ýÿ¿$X,…“BUVX`dÛÿŸä)BBUÿªêß”É•ß…“(B	%•Uãþ¯þ�#è%ƒè9W\pÂ=PJ¿ý'Bç9úªãðÉ—üE‹è9	%•UåœI…“¦jjªàö¿ÿX,e‹è9UVXà5v›ÛBÇ9ªª?
)m®Bç9ªªèàB(ùoÛÛF
Bè9þÿÿÿC)9õNÑ:è9ú~ß½ã3ÿ›T±pEƒè9Õ5
äÙa7rë@N…“E‹‹¢zpãÝÂ
Ðƒ5…“E‹¥%%-ÞÝ€@�$Ä›ƒªªªªäÜ’À	¥…“%‹~zxpåâXƒ%[Ò6E‹%ƒ


åâé�°E‹%ƒ  ¨ªåáR"9"%He‹%ƒ
ªªåã$€0E‹%ƒ¨¨ªªåâÀ¶-E‹%ƒªªªåá(‰¤”˜e‹%ƒ¿ªªåßö`ŽÖNe“%‹ppðúäÝ��Ýôïü…“%‹-/
ßÜØº¦Xºm…“E‹
äÝÉ{Ÿÿô
…“E‹€ xXåá¤CÆ’e‹%ƒ
ª¯æã]SÃ0E‹%ƒ*þþþæáu¢%Ò&e‹ƒ«ÿæÞÚ#õ’&	…“%ƒ/ÿUåÝ©dJÒH…“%ƒðøÿýåâlCƒ5E‹ƒzúªªåâ¶­Iš$%ƒäz¿®*äáh·¶i›´E‹%ƒãH¢@E‹'J~â/É¿þØ¿ÿE‹ç9U^XVDùmÿ‘BÇ9«¯ßÉŸÜ¿ue‹è9UÕµ-ãa e‹GR	âÜ&�
.i›…“E‹Xð€€äÝNÛ²Û8`…“Eƒ¢ªÿÿáÜ«³&’
4…“E‹
àÜ6‘„‰íÄ…“e‹À€äÍ"I’¶m…“{jªÝN®'Ðè…“(BWVX`P›äI’$)BBýªÿÿ"Üp›É�$Bè9ê€ äpù—äE‹B	%•Uà¯…“&ƒ*€�ãÝIb»’6h…“E‹ªUUßÜIÛ4XŠ¥…“e‹àÝIšdI‘d…“e‹ààààäáé0�¶E‹%ƒøþþ¨äá¶6E‹%ƒÿÿ¿*äÜ IsYÇ…“%ƒUÿë‚äÝlBM>…“%‹Uõ%äÜ Imûç…“%‹Uÿ€äÝ Iv—Ç…“E‹UUª€åâÛ6Ý�6E‹ƒ¨¨åã‚ ˜„E‹%ƒªªªåã@€˜„E‹%ƒªªªæãÝ¶µC›$E‹ƒªªªåã	Á�E‹%ƒªªª åáHH:e‹%ƒªªªåÞ’ I.—°e“E‹UUZðåß€°	õ””e“%‹U_zàåâ[Š%[’&E‹%ƒ

æâ„HÑf’$E‹ƒ(ãá É$IÈ�e‹E‹«€êåáIb;”(e‹ƒ¨ºäà1@$še‹E‹PZk‰å,r9=E‹è9^x`XS3�Ð	¹›»èAÇ9þþêªU˜ƒ9-�BÇ9//¯¿Vyyså°BÇ9 èúÿæH!�
¿ñ¿ƒÇ9	
5Õæ9,X²'%ƒè9€`XVQ3Olß›ÐBÇ9ªª¯¿â4òçÉ•%ƒè9UÕ5
ã4$èÐ£'E‹B�`XVH4H’$Iò$Bè9üÿÿÿæ4ÉŸüÉ—ƒè9UU•%æ-0`E‹è9	€å'À‚%{ò'%ƒè9`XVU/'ñpW¿ù_Bè9úúêêã0Iž\¹pe‹BU•%	ã3€&E‹èA‚Àp\=2îðÿùÿéA2ªªªªH3õ›¤IØBÇ9ªªêÿV>“=%ÂÜè9Ç9¯¯¯¯§3mÛöo?fZç9sUUUá:?‘|I˜dƒç95•••åã Á�LH’E‹%ƒª‚ èä@I‰SE‹ƒÿÿøøèã’&¨’�9E‹ƒÿÿ/äãH‚$I†“Ãzªªªªåã$‘0L’$E‹%ƒê€çã ¶�$E‹ƒÿÿèã� I¶ÛE‹ƒÿÿ€èæ$A$†%ƒƒêªªªéä’‹%Z²ÚE‹ƒ½-/¯èå°u[²¥%ƒäzªª

èåØ¶µ[Ò5%ƒäzªª

èçIAf‹‚rªªªªéæíÒ¡Šaf‹bjªªªªåàh‚:˜«ne‹%ƒäáÁÛÐE‹%ƒ€€€€èæ!@€$I‚%ƒƒª®ªªéâ&�â¯=E‹ƒÕý

å|>À€%‹BW^`Àæ:ùð›ÿÿÿƒÇ9%ÕUUÇVèï?ÿ“ü¦jÇ9ÜWUUÔAäÎ·øærÇ9pií%}IöSW®×JÇ9õ••Tçf!0pƒJ		çX{>@ÈƒÇ9VXpÀd9P‡9��ùBÇ9µµõõäRp)�E‹ç9
%ãá$€ ¥‹¥ŠªªªªäâdH&aH¥‹¥Šªªªªèâæ�NîVJE‹ƒøððøèæ$H‚	Áf‹‚rªªªªèæ"I2f‹brªªªªçm0ƒB€`çVÀ®þNž${Ç9`\WUèeI’ä‰ƒÇ9UUµ
éb)0@À*>ƒçA
à\ç[PC'O’$ƒÇ9x^UUç^I’äIåƒÇ9UUµèfñ@ÐƒÇ9-€àè`€Š9}’$ƒÇ9ÀxWUkax™J@çAÇ9VUUUè`I’äIg{Ç9UUµ	éiñ@ƒÇ9-éè‚F‹‚jªªªªéèI�	€F‹‚jªªªªéè@F‹‚jªªªªéç	II�F‹‚jªªªªéèIF‹‚jªªªªéèI€Â‰¦{ÿÿÿÿéè@ @F‹‚jªªªªéç@H0I0f‹bjªªªªéç™Á�f‹bjªªªªéà�€(ƒåzªªªjé_€XÃ'ƒç9€xWÌ:`â$~âÇÆrç9XWUÕèVùŸx©@ƒÇ9U•-é› ƒ&R	èæ@’f‹brªªªªé§0ƒfZ`è_¬ëó$ƒÇ9à^W¾gàó$I’¼…jÇ9\UUÕéhI’¼ï0{Ç9UÕ-è©0„õƒJ-€xéqÛ–$ƒçAªUèeÛö'ƒçAªUçYˆô“$ƒç9 _UÚZXÓ'I’$åzÇ9xWUU¢[I’$I’fZÇ9UUU5ç^I’x¦ ƒÇ9Uµ+è�¡ ƒFR
éçH’!™„f‹bjªªªªéç!’$I‚f‹bjªªªªé}À ƒ'J`À€âYð
±\e‹ç9	
'6åÅ ’ )e“årª¨ `émˆZÓ'{Ç9€xWÙW˜S?ÿó›ÅrÇ9xWU•ã!Ï�S E‹è9Õ½ä£E‹¦j	äãA’I’$†“Ãzªªªªäã� I†“ÃzªªªªèâîàRuÛ:E‹ƒððèá)¶­�ÛE‹ƒ¯èã’°I¶�$E‹ƒÿÿèã�0A®wE‹ƒÿÿøðèã©Ò¬9E‹ƒÿÿ/äã‚$I’$†“ÃzªªªªäãI‚$I’†“Ãzªªªªãâ‚†“ÃzªªªªäÞ[½9`£9…“E‹----ÞÜ 	0Ä›ƒªªªªÝÜ@$ä›è‚ªªªªÝÜ€@ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ’@‚ä›ƒªªªªÝÜä›ƒªªªªÝÜA‚ä›è‚ªªªªÝÜ€@�ä›è‚ªªªªÝÜH €ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ�@€$ä›è‚ªªªªÝÜ@€ ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜH‚@�ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ@H$ä›è‚ªªªªÝÜH‚ Hä›è‚ªªªªÝÜ$	€ä›è‚ªªªªÝ��5Pì…“çrpp`à‚�H €G{Fbªªªª‚�@@G{Fbªªªª‚�G{Fbªªªª‚�H G{FZªªªªæ‚±©p%‹s-­©çáZ"Ú‘e‹ƒ
ý­çã”dA’l;E‹ƒþþ¿(æÝ�/:ìÝû…“%ƒ--
ßÞI$	$&›$„ªªªªßÝdB& I’Æ›ƒªªªªßÝI&C2Ä›ƒªªªªåÝ®�N¹›ä…“%‹xx åÞ`mý$…“%‹ÕÕªãÝtR×¥d…“E‹"XXßÜmÛ¶k‹¦…“E‹ÞÜ$$I’ä›è‚ªªªªâÜ
Ðe·…“E‹//ÝÜ	€$ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ@@ä›è‚ªªªªÝÜ@€ä›è‚ªªªªÝÜ@�ä›è‚ªªªªÝÜ  ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ@A‚ ä›è‚ªªªªÝÜA’€ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ‚ä›è‚ªªªªÝÜ‚$€ ä›è‚ªªªªÝÜ� ä›è‚ªªªªÝÜAHä›è‚ªªªªÝÜ’ @ä›è‚ªªªªÝÜH�ä›è‚ªªªªÝÜ@	ä›è‚ªªªªÝÜ@€ä›è‚ªªªªÝÜ�H ä›è‚ªªªªÝÜ‚ä›è‚ªªªªÞÜLB’	Áä›è‚ªªªªÞÜ$“�!ä›è‚ªªªªÞÜ$É„LBä›è‚ªªªªàÜŽmÇ¶E…“E‹€€ãÜù_?R´…“E‹%%ßÜÉÖvmtä›è‚ªªªªßÝ$‚&Æ›ƒªªªªâÞ&K&K…“E‹¨¨xèäÞåàLuÙ¶e“E‹xpê¢äáÅ�¶e‹E‹UUWèäâ A’ I††“ÃzªªªªäáÛ: Øº5e‹E‹ÕÕ•?âÞ@¶èØ…“E‹{úª âÞ A¶˜8…“E‹ßúª áÜMk];…“E‹ªªáÜ Mm»…“E‹ªªáÜØ¶ÙµmÇ…“E‹ª
àÜ€$9¶íØ…“E‹*
ãÜ­�—¿�ç…“E‹x áÜ°¶«ÝÆ…“E‹ªàÜDÒc’…“e‹¯ßÜØÖ´IÚ¶ä›è‚ªªªªÞÜd’I&ä›è‚ªªªªÝÜ ä›è‚ªªªªÞÜ$2@B2ä›è‚ªªªªÞÜ!I’$@’ä›è‚ªªªªßÜMš¶k·Ä›ƒªªªªãÜ·Ý>’Ð…“E‹
/%ÞÜ$C2$ä›è‚ªªªªáÜvìØ­×
…“E‹€ äÝIrÛ“$H…“E‹€WUãÝ¶Û:Pµ…“E‹
­­ãÜÎã¶ @…“E‹WWãÜyÒÖ&h…“E‹ÕÕßÝ!��LH…“E‹ €ãÝliwéP
…“E‹ª€xzäâ@@†“£rªªªªäÝšƒ9˜ƒõ…“E‹%-ãÜù�»ïd…“E‹€ðpâßIÚmØ€
e“E‹(¾ÿÿãÞ‰k§�+´…“E‹ Š­¥äámS`Úme‹E‹>×××äÞ±`s¶Û¸…“E‹Xr¢‚ãÝtB'ZÕ…“E‹/-ãÝ1™N±Ô…“E‹ èxZâáI’$H‚e‹E‹äáÍ–éÐ¶e‹E‹xXXøäÝšƒõK²…“E‹-%­«áÝ±m“’H…“e‹ÿÿâÞ	•” 	…“E‹àèêþäá6`X»5e‹E‹WÕµ/äÞµÛ„$Å	e“E‹‚‚z_äá¶¡m»&e‹E‹W×ªâà ’$I�e‹E‹âáI’$H€“„ªªªªäáI‘I›$e‹E‹px åá”@I6Se‹%ƒêª  æå	H$†‹‚zªªªªæäD’C††‹‚zªªªªæä$A’Á�f‹¢zªªªªæä A’  %‹%ƒÿÿÿ¿æä I’È$E‹%ƒÿÿÿªæä@� E‹%ƒÿÿêèåÐuI›$%ƒäzª¨èæ‚$’f‹‚rªªªªéç$2I’$f‹brªªªªèåÀº-ÝÒmfƒ‚‚ªªªªåß#©–kŒ•e“%‹¯ï‹­èãéTi•P	E‹{¨úüþèÝØƒõ�`…“ƒ
-µÕáÜŽë¸�
I…“E‹«äÞWºqÕ…“E‹çªhZçäÖ­–$E‹ƒ¾¾¾åÝtÞß#¥	…“%‹‚ëçàqÙIƒe“ƒè^WUèå)€a°
E‹äzªþûîèçI’$@ f‹‚rªªªªèæ$@’$Af‹brªªªªèä’Ñ’@E‹{¿¿¿ÿèàIu“Ie‹ƒ ðßçÝ ù	L…“ƒ-­ýçÝIb?£Ñ…“ƒ-çÜÿŸß?×
…“ƒàxçÜÏ_ÿ›µ…“ƒ-çÜÏÿ·7×
…“ƒ€àxçÜÏïÖ˜…“ƒÿUèÜOâÚ›…“ƒÿUèÜÉïÖÛ`…“ƒ¿ÕâÜIbÛL‚‘…“E‹«àÜ1aGN	…“E‹€ªãÜ@=9›/­…“E‹%¥àÜ¶èÄI,	…“E‹€ªàÜ’dÛ±-	…“E‹®¯ãÜey×qW…“%ƒú ð^áÜÒPg�«Ö…“E‹}‚	çÝ@i¶�Û…“ƒ×þ¨€çà›ðN¹—te‹ƒzú€€èÞŒP�9…“ƒUõ­-çÞ�$	®…“ƒU_Zxçå$2 0fƒ‚‚ªªªªæä C�f‹¢zªªªªæâDJLìÄE‹%ƒýÿ‚‚æä A!@f‹¢zªªªªæäI�$C€E‹$ƒ¯¯¯¿æß¤­¬¿&e“%ƒÕÿ«+ãÞ€´n±�$…“E‹UýªçÞœÔJï�Se“ƒ_zxøçã�I’è8E‹ƒÿÿÿªçá´i,çÄE‹ƒÿÿªèäIJÓE‹ƒÿÿWêçå$	$™fƒ‚‚ªªªªçæI’I f‹‚rªªªªçäÍf‹‚rªªªªçæ@f‹‚rªªªªèæI’I$F‹‚jªªªªèä$Aå$%ƒäzªªªèäH’Š%ƒ{ªªª èæIÈ„f‹‚rªªªªèá‚$i‹9E‹ƒUõ½-çá€$IœE‹{¯ªêàçäk»5X»%%ƒƒ**ª*åY€è E‹äzjjê‚D«Õ¬ý${Är

+Ø4IÓ”ÿ{äzÿÿÿD®àNv›·{äzWwú D $imûüƒäzUUÿú4' ÙÿþÿÜEƒcrªªªª0'‚”<>‰Eƒcrªªªª/'ðÿOÂäEƒcrªªªªD'.‘{¹—{EƒCjªªªªS
Ð=Ð£ù%ƒ¤r///¯>(!!qEƒCjªªªªWCÝ6¨ÜÃ=äzÄrª®**ä•pE‹äzçã¦J”@	E‹ƒøøþþçæA€fƒ‚‚ªªªªçàâƒÙÒ&e“ƒ-­õUçã!I@(AE‹ƒ¨ÿ¿¿çàÐ¸mþíÄe‹ƒµ¯çäé�nPE‹ƒøøþþçæ@f‹brªªªªçÅà
`%ƒåzJJª¤OMÂ${'ærFRWW^\QOI’…ZÉAªªªªQLZƒÕØ6i¨bFR­½õßMLH$@$¨b‡Zï¿½­¥LIš„É—ærGRŸŸ¿?Ý¿p0…“&ƒÝÜä›è‚ªªªªÝÜ	€$A‚$ä›è‚ªªªªÝÑ€ä›è‚ªªªªÝmh…“%ƒZ€ÝIâ$…“%ƒU_à—I’$I:e“%ƒUUWzI’¤I�†‹‚zªªªªEÉï¶6`%ƒäzª××OÒ$H‚$†‹‚zªªªªI’$I’$†‹‚zªªªªI’$I’$†‹‚zªªªª)y›$†‹‚zªªªªÝ%…“E‹ÝÜ€ä›è‚ªªªªÝÜ‚ ä›è‚ªªªªÝÜA$@’ä›è‚ªªªªßÜÙÐ¦mÛ¤ä›è‚ªªªªßÜX“´iÚ¦ä›è‚ªªªªãÝq›”ñä
…“E‹  pXåß©àN›0Me“%‹xx_ÿåäI’$E‹%ƒªªªªåãLB$È$E‹%ƒªªåá9 HRe‹%ƒ

*ªãßŽm“4	Ñe“E‹¢ »½ßÞ$H€ …“e‹¢âÞ¶™X±�P…“E‹ª èàäáÝ�uÛ’$e“E‹WWÕ¿çß4Iv•Ø…“ƒ×ÿê çá›°MÒH&E‹ƒúê/çá°Mm—¤e‹ä‚ÿÿªçâ¨@»9E‹ä‚¿?/
çáñàpNk'e‹ƒ`à çÞ�&Iuý$…“ƒýÿªæÞ�$Iu�$…“ƒÿÿªæÞ$@­–Ô…“%ƒ_×ú çÞ’@N6—»e“ƒ_zê çáÐ(I%™8e‹ƒ­ÿªçß’ I£]ç…“ƒÿªŠçÔÐm$@e‹ƒ�
·÷æ<|ŽõE‹èA^x€ÎB¿÷ÿý>årç9µUWXåAÐ	—ÜE‹ç9µUå”e“fb



å> À8E‹B€À`pä5¿0E‹B%	æâ@	&™$E‹%ƒW~ çâ’iR;9E‹%ƒUÕ%æ²€E‹ÆrjäVN":€%ƒÇ9Wx€Ë@ÿÿÿý�=ÆrÇ9UUWx¯A7ñßÿŸü¦jç95UUUä3ÐIÿý'E‹ç9/ÕUä2œ”ÛE‹çA«Uä=Ûö$E‹'JªUãA€
�wE‹'Jà
µâN¢>À
@e‹BU^à¢ É™$O>ærèAÕUU\á"�É›$E‹èA-ÕUâG�
E‹GJ-âßiÑlë¶µe“E‹zz}ÿá¹…“{jª

á'M>€
E‹è9Wxà£'I–$O'Æjè9•UW\â#`
y•äE‹è9µÕä•E‹Æjäß$A¶e‹E‹UUPPâßh‚%[‹µe“E‹­­ýýáàA€$e‹E‹¨¨áÞ@ƒ5@ƒ%e“E‹¿­­«áÞI’¶°m…“E‹‚ªÿÿáÞ[‚5X‹%…“E‹*/ßÞI$@’Æ›ƒªªªªáÞÛ: i“4…“e‹¾¾ßÞA’$I …“e‹€äo@e‹gR`€ä7IÂ'˜ˆ%ƒè9UWx€Y3vR'®�¶Bè9ÿÿÿüá?§�xIž$E‹ç9
µUUãDÀ@E‹è9à-ä'IB'P`E‹è9U^x€¾'y‘ÄIâ$ærè9%ÕUWá(Jé�œE‹BÀ-Õá I²'�#€E‹BUVxÀÜ ù�œIò$E‹è9-ÕUUá( �E‹È9-âàIB€$I’e‹E‹ÿÿÿäàŽm“¤De‹%ƒ èäÞd3:
h…“%‹¯/½õâÝIj{[…“E‹€ÀUçã¡mÒ–DE‹ƒ®®þ~èZ@
,%ƒçAÀpÇ¨O?~âÿÅjBTWUUáIž„Iñ
E‹BU•5
æ�—"I`e“åzAª~°Î�çxÒ'{BW\TWÀ.aK¡zð&ƒç9•µíc¬KðëÿùŸÿ†bÇ9ÜUUUäAÃþúÉŸü%ƒç9b]UUçQOòŸÿpƒÇ9UÕ%
èŽ$@E‹EZ
ªèàOž¿š&e‹ƒÿUéäqmm•4E‹äzªþÿÿéæI»¶Û0%ƒäz ªªÿéç	I&	‚ƒäzªªèä�Á’$HE‹ƒ?ÿÿÿçÞÏÝ¶ÚI…“ƒªÿýçâi;’$IE‹ƒþÿÿçå		$I’E‹ƒúÿÿÿçæ@ I’$fƒ‚‚ªªªªçæ€I’$fƒ‚‚ªªªªçæH I’$fƒ‚‚ªªªªçæ�$I’$Æƒâ�ªªªªçæ€$I’$fƒ‚‚ªªªªçæ I’fƒ‚‚ªªªªçæI’$fƒ‚‚ªªªªçæ€I’$fƒ‚‚ªªªªçU@ƒ%`‚%%ƒç9pX\X¤W‰‘$I’$fZÇ95UUUtVøÿÿÉŸ$'JÇ9VUUUXW�$(B&)ªªªªY�ù˜ƒ9)BÇ9­­¯/Þ	‘„…“(B	
5ÕÝz=€@…“(JVX`€I’$O‚'HJ	BÿÿÿüÝÉ�dI’$e‹(B%•UUÝ�…“	:€	ÝI²äXì…“BUVX`F
œ4HS=9Bç9úþ®.à
dÏ•äe‹B	%•Uã~"'Ð#è%ƒè9W\pÀ8

8€#ùBç9*


à
�É—ÿe‹B	%•Uâ
È�Ã&e‹B€Àp^.±ÔAÂ4Bè9øú¯/9.à·K)Bè9__^~Cö�ÉfkBÇ9êà ªâþ[	‘X%ƒè9Õ5%µäÀ‘$I�H…“%ƒÞÜ @&!C&ä›è‚ªªªªÞÜH2 A�Ä›ƒªªªªßÜiÛ5@…“E‹
*äÜ¯povmç…“E‹PðäÜ£ÐJv™»…“E‹Zz åÜ€¤Mmk;…“%‹Uÿ*åÜ$I¥”N…“%‹U_øðåß©�-ç�e“E‹UÕZðâÜÀ*:ªM7…“E‹-
áÜí[I»…“E‹ €€åÝ&hÍ5…“%‹ß÷¯/äÝNþ»7…“E‹ pPåÞ9ûn“A…“%‹øúßUåÞ1aO¤ÀIe“%‹pzz_åã@H„ ��E‹ƒ

ª æãPÝÐ&E‹%ƒþþþæãÀ6lÛÐ4E‹%ƒÿÿÿæã†m–$E‹%ƒÿÿÿæäd€$C2E‹%ƒ«¿¿®åâ[ƒ&KÒ$E‹%ƒïïêêãáC’$I%ƒ{**ãá	’dH‚E‹ƒä3ìØ£'E‹B€`XVM2þ`ÛBÇ9øúÿªãþÿß¹•Eƒ:UÕ•%äN0E‹J	äÜP#9´Ó$…“E‹%
ßÜiÑvm×tä›è‚ªªªªåàƒäMn»E‹%ƒ¬¨äÝ˜ƒÕ)‘…“E‹%%µõâÜqÌ6PÕ…“%‹äÜùÛ÷t…“E‹pPã´’"I€H…“%ƒ@+/ÝO²'Øì…“(BUVX`I’$I’$	J*ªªªªI’$I’$	J*ªªªªÞ�É•Ü…“(B	%•UßÂe“Eƒ¨¡ßÜk»5ÛŠm…“e‹

 ¯ßÜIÛ¶m»
…“e“€ªªªßÜÖ¦[»µ…“e‹ÿ


ÞÝ�$I’…“e“Õ€àÜ´m;$-A…“e‹ªÿÞÜB2I’…“E‹
ÞÜI’Hä›è‚ªªªªßÜÙÖv]¬…“E‹
àÝÐ&MÚ6…“E‹ªàÝÐ¦iÛ4…“E‹ªàÝ–´I’¤…“E‹ªàÝ–4Iš´…“E‹ªãÝ%�nvÇ…“E‹Zø âÝkë´1…“E‹*°ðßÜÐ¶ËŠ…“e‹€€ßÝ$�$IHÄ›ƒªªªªãß±B €…“E‹ÚXWÕäÞí`öàL…“E‹zPZzäãI†“Ãzªªªªåã$HÀ0E‹%ƒªªªå`À‚%E‹B€`Xº3ðÿÿùŸÿærç9TUUUWB7Û�¤n3è9Ç9º¾¾ºXäÔÉ�PBÇ9ÿúúê^N%	ŒÛ˜ÿç9Ç9¨¯ª_T¶ív®»ç9Ç9ªªú¨aQuB®’* ç9Ç9ª¿¿æ?ÿÿß‰•åzÇ9UÕ5
å4$èÐ£'E‹B‰bXVV4;K±�SBÇ9øúúúâ4Iò$öE‹è9UU•%ç50`%ƒè9	€çMÀ‚={ò$ƒÇ9`XVUQ(â#>˜�ùBÇ9¯¯¯¯ä(Iž\¿pE‹BU•%	åH€ƒ&E‹çAÀp\š3xb'Oò$†bè9TUUUÝ3ÉŸÜù›åzç9UUÕ5ç?ÿ_ÿ�4ƒç9UWxp]:Ð­•ï”è9Ç9¯¯úú`)Ðý�«•BÇ9­­­ÿæHy‘¿÷ßƒÇ95%•Uç¢@0%‹†bcè¤%ƒ†b
çäX´E‹ƒ¯ÿÿèâ[»9[±E‹ƒ/äãI’$	$†“ÃzªªªªäãI’$H‚$†“ÃzªªªªäãI’ H�†“Ãzªªªªäã�$I�†“Ãzªªªªçã¶`±�8E‹ƒøðèã€&IîWE‹ƒÿÿøðèçA	�$f‹brªªªªéçdH„I’„f‹brªªªªéç$H0B f‹bjªªªªæà"-¶k‚Æ…“ƒ««««èàùK§Ð	e“ƒzxZ^èç	� f‹bjªªªªèâ€&mlË6E‹ƒýÿçÐÐ"mÛ¦m…“%ƒm­Šêå]N²'Ø0%ƒÇ9WVXp^1mX‚…(JÇ9Uõý½çX	0ƒÇ95-ç[{&@èƒÇ9V\pàçZ)�É—ÄƒÇ9
%•ÕèÊ`ƒÅr@ç9}2?àô{ç9UV\p·,¿ñßOò$ærè95ÕUUæ! E‹B	èâÜ´
å”nE‹ƒÿÿøðèä’$´”E‹ƒÿÿúðéç	’$‚f‹bjªªªªèa`¯&ƒçA€`\ØU`Ò$I’ÄåzÇ9\WUÕèUIžX!0ˆƒç9Uµ
ÂèZñsò$ƒÇ9‚p^UÆ`M’$yž¥jÇ9WUU5éYÉ@ƒÇ9Õ-ç^ˆ�Ã'ƒÇ9€xVÎZàïäI’$ÅrÇ9\WUU·YòçÉŸ†bÇ9UUU5èbÉOƒÇ9Õ-éÍƒ¥jéèI’$F‹‚jªªªªéâqb.>E‹ƒUý

éçH!F‹‚jªªªªéè F‹‚jªªªªéè€F‹‚jªªªªéè F‹‚jªªªªéç€0F‹‚jªªªªéà I¬[ÇE‹ƒUÿéå)I‘%ƒäzªª¨¨éy5ƒçA€xéjÀ*>N’$ƒÇ9à\WUæ^Oò$ÏyƒÇ9UUÕ-ç_‰çE‹ç9µåß’@Nv‘Te“%ƒÿêààéÏ(ƒÅr¨¨¨hèehXß'ƒÇ9€xWØc˜Ó'I’äårÇ9xWUUæ]I’äyÕ%ƒÇ9UUµèh1EÍƒÇ9­àèiñt’$ƒÇ9€x^Uœeh’$Oò'FRÇ9\UUUib%Ãò›
©èA¥)ªªªª_ZJ¢Ú˜‹µèA¦)ªªªª�ZI’$I’FRÇ9UUU5è[I’Üñ@{Ç9UÕ-èbé0ƒç9-çæHf‹brªªªªçæ $f‹brªªªªéæ]—u]×f‹brªªªªéèI’H’$F‹‚jªªªªéè  F‹‚jªªªªéXhˆÙ,{ç9œØp`ã]O'I’ä{Ç9à^UUèfI’ÄyÕƒÇ9UUµéuñ@ƒÇ9-èâ£�ÕZ#ÖE‹ƒãâI€$¥‹¥Šªªªªæâ¶i[!`E‹ƒ€ððçã¢
Ù‚-&E‹ƒæáÀ"Ô[»µE‹ƒãàÍ�Ýe‹E‹ppzUäãA$I’$†“Ãzªªªªäã� I’$†“Ãzªªªªäã@$A€$†“ÃzªªªªäãH‚ †“ÃzªªªªäãI€$	’$†“ÃzªªªªäãH’$I�$†“ÃzªªªªäÞ˜£ÙX£5…“E‹----ßÜX»5[‹µÄ›ƒªªªªÝÜ	ä›è‚ªªªªÝÜA A ä›è‚ªªªªÝÜ€ Ä›ƒªªªªÝÜä›ƒªªªªÝÜAH‚ä›ƒªªªªÝÜä›è‚ªªªªÝÜ	 ä›è‚ªªªªÝÜI€	€ä›è‚ªªªªÝÜä›è‚ªªªªÝÜA‚Aä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ@ � ä›è‚ªªªªÝÜ	€ä›è‚ªªªªÝÜ‚I ä›è‚ªªªªÝÜ@� I’ä›è‚ªªªªÝÜ@@ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ$	ä›è‚ªªªªÝ¤À¨…“&{`€Ï�Iâ${‚9f‹çrUW^x‚�A $G{Fbªªªª‚�H$G{FbªªªªÏ�I’ÄÉf‹çrUÕµ-ç£!P e“{ëâ  çß˜£9Ò(Ie“ƒ--·×æÞ¶�ßöD
…“%ƒ* øzæÝÏSû’@…“%ƒ*ÿUáÝ±ãÄL’…“E‹ßÝ$C&$’Æ›ƒªªªªßÝ’I’Ä›ƒªªªªßÜIº­Ã6`Ä›ƒªªªªàÝMÒ$]Û…“e‹ ßÜÛ°6[Šµ…“E‹€ÞÜ I&I†ä›è‚ªªªªÝÜ@ä›è‚ªªªªÞÜ!@‚$I†ä›è‚ªªªªÝÜA @ ä›è‚ªªªªÝÜ$�ä›è‚ªªªªÝÜ‚A€ä›è‚ªªªªÝÜ@€ä›è‚ªªªªÝÜI ä›è‚ªªªªÝÜ‚ ä›è‚ªªªªÝÜ@Aä›è‚ªªªªÝÜA A€ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ H ä›è‚ªªªªÝÜä›è‚ªªªªÝÜA$Hä›è‚ªªªªÝÜä›è‚ªªªªÝÜAHä›è‚ªªªªÝÜ‚$A ä›è‚ªªªªÝÜ	� ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ’ä›è‚ªªªªÝÜ H$ä›è‚ªªªªÝÜ‚$@ä›è‚ªªªªÞÜ!I$‘ä›è‚ªªªªßÝ	’$I�Æ›ƒªªªªßÝLH‚$IÆ›ƒªªªªßÞIH� &›$„ªªªªßÜÀ¶mX·5…“E‹
ÞÝ@@’$Æ›ƒªªªªÞÜ 	2$I’ä›è‚ªªªªßÜÅÖ¶m›6ä›è‚ªªªªÞÜ@	™$Ä›ƒªªªªàÝÛ�¶mÚ$…“e‹ªáÝ@Q´í$…“E‹þªáÜ´mmëÄ…“E‹¿ªßÜÖ®ÍÖvÄ›ƒªªªªÞÝ	$A‚Ä›ƒªªªªÞÜ‚$2Ä›ƒªªªªÝÜHHä›è‚ªªªªÞÜIH2C’ä›è‚ªªªªÞÜL˜�’ä›è‚ªªªªÞÜdB†@’ä›è‚ªªªªÞÜ	I†$Iä›è‚ªªªªÞÜ!!ä›è‚ªªªªãÝµc·)…“E‹ XPßÝL’$HÂÄ›ƒªªªªÞÜ!™$dH€ä›è‚ªªªªÝÜ@� ä›è‚ªªªªÝÜ@‚Aä›è‚ªªªªßÜmÑfIÖ&ä›è‚ªªªªãÜB=õ¶ýØ…“E‹%/ßÜÀÐM×…“E‹€äÞñd
4`…“E‹xZWÕäÝ@+:ýóü…“E‹¥-àÜIÛ¶m;…“E‹
àÜdÛql'…“E‹ªàÜDÚNìØ…“E‹ªâÜ¥`
ikÛ…“E‹xxãÝÐŠ5uœ$…“E‹­-ãÝ%àjqkÛ…“E‹Zø âÞ$`K‰�$…“E‹úú ßÞ€$$…“e‹¢
âà!H’!I�e“E‹þþþþâà@H’$I’e‹E‹
äáIÛ´)Ðe‹E‹ª XXäàIbÓ¤D‚e“E‹ªÿ__áÝ€-Ùp,›…“E‹
äàd‰!Û…“E‹WWþþâáH‚$I’$e‹E‹âá	�$I’$e‹E‹ áÞX‹µX‹¥…“E‹««áÞX»µ[»¥…“e‹¯¯âà$$’e“e‹ÿþþÿâßØ°­[²%e“E‹ÿ«äáé�vI›6e‹E‹Xx ¨äáX³5m’&e‹E‹--
âáI’ I’$“„ªªªªâáI’I$e‹E‹
âáI’$I’e‹E‹ åá11e‹%ƒ    æä!A%‹%ƒÿÿþþæã@7´Û†&E‹%ƒÿÿ¯æä’$f‹¢zªªªªæädB0	’E‹ƒªªªªæáŽí$Ú&	E‹%ƒªÿæâ	™�%@E‹%ƒ  êÿæåH$A$†‹‚zªªªªçå$!A†%ƒäz¨ €éæÛºmÝ�uf‹brªªªªéç	C’$H�f‹bjªªªªéåt,I$ˆf‹brªªªªéç	™�If‹brªªªªéç$C"$A’f‹bjªªªªèät,	E‹{¢ÿÿÿèãm
À
(E‹{*?¿/áÜØ$»rºØ…“E‹ªçÞ¥`Nÿûç…“ƒzú€èã’$Hƒ”	E‹ƒÿÿÿüçæf‹brªªªªèÞLš->e“ƒUý-	èà°I·Oe“ƒU_xxèá�ØƒýE‹ƒÿÿèåØÖ­Y×
E‹{ïêêþèæ@�€f‹‚rªªªªèå[³+Ö
E‹{ªþÿÿçäé°Ã€
E‹ƒúÿÿÿçàÒI«9e‹ƒ¿ÿ¯çà“0$e‹äzúúøàèæ`H†$If‹brªªªªéèA’$I’$f‹bjªªªªèæ$‚	�f‹brªªªªèä±-@’$‰E‹ƒªÿÿÿçäM
Ã6E‹ƒ‚ÿÿÿçä[ƒE‹ƒ*ÿÿÿèä‰#’$	E‹ƒ¨___çãŒ	@E‹ä‚ŠÿÿÿèåI»ëÖm%ƒäz¨úªªçÜ˜Ô€e“ƒ-ýUçÝ1éJ@…“ƒàøÿõçáéD
íDJE‹ƒàððúçÝ�ƒùê-º…“ƒ-
«èÞ±à
0e“ƒxx^Wèå[³­X·mf‹‚rªªªªæåI’$@€$f‹¢zªªªªæäC�$A‚f‹¢zªªªªæå@’A€f‹¢zªªªªæä A$ˆ0f‹¢zªªªªæàš±’aE‹%ƒ¿ÿäÝÿÓ'ì�‘…“E‹
©ýåÝñôn4…“%ƒà¨ú_áÝ É$J…“E‹«ýãÜµ];¤
Œ…“E‹ª/ÕâÜÜ»¶ÛØ…“E‹~€çÜPN¿ûü…“ƒ^ú èÝ°ï…“ƒU_zxèæ�$’f‹bjªªªªçæ€f‹bjªªªªèä�),�%ƒäz***ªáÝ ©$J…“E‹ýƒƒ}çßñK”$	e‹ƒxx~Wèæa’!’f‹bjªªªªçß˜ùÒ&Ie‹ƒ-/ÿÿçÞ±àN“$Ie‹ƒpð_UæÝÐ*ÕX£Õe“ƒ½­--à’ `…“E‹kÂ@êH
O’'e��%ƒäzªª÷W/
I’$$	EƒäzªªÿU11¥%ƒäzZZÿÿD�û”îÄ	%ƒäzêú__D'Il»“%ƒcjªªªªD7'C€ñ%ƒcjªªªª0'üƒÿú¿ŽEƒcrªªªª<'y——yyEƒCrªªªªR*íc·îÈaäz¤r  R%×Rÿ�ƒÄrêúúðW7‚&ˆP�=äz¤rªª

à7p�e“äz			
çá¦�Nnç¶E‹ƒøà€çå@’&%ƒäzªª(æâ	²E‡E‹ƒÿÿ‚çå	’E‹ƒÿÿÿþçåI$À„%‹ƒ‚ÿÿëçåH2fƒ‚‚ªªªªçå’fƒ‚‚ªªªªçàÒm’$	E‹ƒ¯¯ÿÿçPs>P¨ƒFR\xp€iOI’?O‚'fZFRÕýW\PO’ AgZFRººÿÿeLIò'þ§bFR*/-ÝL‰•¯P…“§bµ%
ÝÛ	 ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ@�H$ä›è‚ªªªªÝÜ’ä›è‚ªªªªÝÜ‚$ä›è‚ªªªªÝÜA $ä›è‚ªªªªÝ«…“E‹€ÝLí…“%ƒVÀÜÿÿ$â`…“ƒUÿøWO’$I‚&E‹%ƒÿÿÿøI’$I’$†‹‚zªªªªI’$I’$†‹‚zªªªªI’$I–E‹%ƒÿÿ¿¿ÝU`…“E‹ÝÜ€$�ä›è‚ªªªªÝÜ� Aä›è‚ªªªªÝÜ ä›è‚ªªªªÞÜaÈ„aBä›è‚ªªªªßÜm×vI±ä›è‚ªªªªäái[,6`e‹E‹¬·×Wäám›tmÑe‹E‹êàzZääI’$I’$†“£rªªªªäà4)Ú 
9…“E‹ýýõµãÞ“°m«½:…“E‹««
ãÝÀ<5­ã$…“E‹¥/
ßÜÃ°míš¦Ä›ƒªªªªÞÜ$@2$Iä›è‚ªªªªßÜØ–5¶mÆ›ƒªªªªÞÜ†dH’ä›è‚ªªªªßÜÀÖ&M›¤…“E‹
ßÜÐmé�n…“e‹ áÜÂÖ¶¶Û…“E‹ªßÜ°­m›d…“E‹*ÞÜ@LÈ�ä›è‚ªªªªÞÜ$@†Ä›ƒªªªªÞÜ’$C’Ä›ƒªªªªßÜPlm“¶…“E‹ ßÜ–vI·…“E‹ ãÝuZ›6áR…“E‹‚€hhæà4½Õe“%ƒ§%¥¯ãÞ¤µµíÄ…“E‹U®ªãu@e‹‡bpß-ÉÍßX
`e‹è9U^x€Ë>÷ð¿Â'årç9-ÕUWäCXL‘E‹ç9Ø¿5%âÖ�lÛ¶M…“%ƒ©
‚äß[Ö¹Ý6e‹E‹
ø^æâ‚#Ù’-�E‹%ƒ¥åáŽ)’)ˆE‹%ƒ€�çå	’"%ƒä‚€¨((æiÀ@e“†Zjä ‰MÛÐ
@e‹ç9U^à€«­_ÿ}‚ù¦bè9UUUxLPJ9™·BÇ9þú¨ª4(ðƒ>êó³IBE1ªªªªR#÷p×¿ÿ'(JÈ9¿ÿÿÿß�WÉ›ÿ…“èAµÕUâ?@SE‹è9à-á#IÂ'P`E‹è9U^ø€�I‘ä¿=Û§bè9-ÕU^ß&`
I—äe‹BµUà|…“‡b	âà!I‚!I&e‹E‹¨¨¨â3P`E‹(Jx€áIîäâÌE‹BUW\àá¯ð›ÉŸäE‹B-ÕUUã! �SE‹B5äÞ£=&š°…“E‹¯--µßÞ$A…“E‹ªªßÞI’ …“E‹ª  ªßÞ€ A…“e‹ªªª¯âÞN’8d9…“E‹


ßÞI�$I’$Æ›ƒªªªªßÞ	‚$H‚…“e‹ªªáÞÛ¶aiÛv…“e“××ÀÃäß±�
®Ðe“E‹XXVUäáXtE‹ƒªªäDkñ%ƒç9^à€ÜCI’$M‚9ƒç9UUWx‚-vaûöc?gRç95UUUâ+p
‰•äE‹èA	µUâ(êÌDE‹B^à€Þ'I’$}‚9E‹è9UUWxá'�SÉ›üE‹è95ÕUä'{9x
E‹èAVxÂ
³(I˜$ÿ�þÆjè9•UU\ã>àù�„E‹ç9%ÕåÖE‹{¨ªª«åäI I E‹%ƒªþþÿåãa’$	’E‹%ƒªëëëè° %ƒ†b@çG�¯>|ò'ƒÇ9X^WUÛ4Éÿß¿iåzÇ9UUÕ5èc@%‹'J	åK
0Ø/ÿ%ƒç9À`XVâ~bŸuÕ
Eƒç9Õ•5%àCè…“(Jr`€°6·Û�‹»ærÇ9UUW\äWI’ÄÉ—ƒÇ9UU•5èŠ0ƒ&R	éçÉ0 C’F‹‚jªªªªéç	I$A’ƒäz ¨ªªéè	@�ƒäzªªªªéè€H’ ƒäzªªªªéæÛŠuÃÖ¤%ƒäz««ª¢èæ$&!Ã$fƒ‚‚ªªªªçæI’$	’ Æƒâ�ªªªªæÜH
9…“%ƒUõ-
æÝ0Iv›¤…“%ƒUÿ æã0�
E‹%ƒUWVxææI’$I’$Æ‹âyªªªªçæI’$H’$Æ‹âyªªªªçæI’$H’$Æ‹âyªªªªçæA’$I’$Æƒâ�ªªªªçæI$I’$Æƒâ�ªªªªçÇ %ƒÅr@ç¤�%ƒ†b%æS€0Ø³'%ƒç9p`XVVS�$ç9Ç9ªªªVSØ€
Û�lç9Ç9ªª¨æTI’äÉ•ƒÇ9UÕµ5æöC?è8ƒè9UW\p
OâÛ6×
)BBªªúÿÞ	‘„…“(B
5ÕÞz=€@…“(JVX`€I’$I‚$HJ	BÿÿÿüÜÉ�dI’$e‹(B%•UUá�…“:€	å÷3ÿ˜ÌE‹è9UVX`E
InÿâµBç9¯â”ÿõçE‹è9-µUãN¢'Ð#ÈE‹(BUTPB8S8€¯ýBç9*


,¶Ýú€8)Bè9ª¯¿¿ÀÜÖÿŸs)BBõÿªþ:9•S±p)Bè9úz~~D-¦J�·”è9ç9ªªªêO	aSä¤‘Bç9 úÿ¿ãàþðg…“èA	%•ßÜIÛ¦Í–…“E‹€ßÜmÒµK¶…“e‹€äÝñhj4…“E‹øXWUàÜL¬8¢
Ñ…“E‹
äÝÏŸ»ñf
…“E‹ xZãÝ‰Ó²�@…“E‹ªÕÕäÝ±·fs…“E‹XPPúâÝuÛx-°…“E‹¢¢zZäÝÿc·ä´	…“E‹ªZ_ãÜù]ßš�µ…“E‹--äÞ¤SÛñ–…“E‹.ªxXäÝ1UsÓl…“E‹pêõUåã$H€!I2E‹%ƒª¨((åà´mÎšhe‹%ƒª*  ãÞàHNÒÄ…“E‹Zò‚áÜÐÖÆµ½­…“E‹ª*àÝÀ–¶IÒ´…“E‹ªàÝX‘fM–d…“e‹êåÞ@mœO&…“%‹W÷/
äÞÐ6Mî”…“ƒÿ~xxåã!I�$I’%ƒäz¾¿¿¿åDèÐ#'E‹ç9€`x^]9°Óö¶mÛ'Jç9ÖÕUUC¬M?âÕ)Bç9««¯¯ä0E‹HJ	äá
 MÛvE‹ƒ(äÜõÃÖ’&@…“E‹+ÕUÞÜ$�ä›è‚ªªªªäßÙTIÐMe‹E‹|\Vüäà¤#Ò’@e‹E‹+UUäÝvRû›@…“E‹"ÕUãÜ)àN¾ËÇ…“E‹Xpâ‹ãÝ¬Í:Z#°e“E‹))%•Þ¦…“{@ÞO²'Øìe“BUVX`*I’»/`)BÇ9ªªúú))ð½ßÛBÇ9¨¨"¢ãI‘¤EƒB
5ÕâÕ€hÛ–qe“E‹%%*ÞÝ€ H‚Æ›äzªªªªßÜhÚ5Ý¶m…“e‹

ªªàÜvèD4E
…“E‹€€ªjäám3`PE‹%ƒ(¾þþäÝN^ÿ£ù…“E‹-%âÝ±ëv®àB…“E‹€ øøâÞ�9t’Ø…“E‹//
¢ßÝI‚$I’Æ›ƒªªªªÞÜ’`�ä›è‚ªªªªÞÜ$II�„ä›è‚ªªªªßÝaÈ$dHÆ›ƒªªªªßÝ	C†	0…“E‹âÜ®n.à…“E‹  ððâÜ¥@
5É´…“E‹ðð€áÞkŠ¦MÚv…“e‹‹‹€êãÝÒ*4P#Ñ…“E‹¥%%%äÝww÷à…“E‹ààxZäâI’$A¥‹¥Šªªªªã/`À‚=E‹è9€`X¤xþü‰�ØÇjBTUUUG%¡”J®`SBÇ9úúúêÄ9ÉŸüÿýÅrç9UUUå1ùúAE‹Bå	â2Iî$r9%ƒè9UW\pQ3Ø€¿9:Ç9ÿ¯¯¯`3Ôiï–“è9Ç9ßþúúå;”ÍÉŸü%‹ç9‰iUUe4è3úK²èAÇ9®¿ÿÿâ3I’$I–E‹è9UU•%ä?0€E‹è9	€ä7ÀŒýËŸüE‹ç9`XVUH3hÇÇ|¾'èAÇ9«ªªªä3þ_¹pE‹çAU•%	ä2€&E‹BÀp\“4ÈŸ$I’$†bè9TUUUÔ7I’$Iœ%ƒè9UUÕ5ç7±`0%ƒè9
€`ç8˜¿ÿI’${ç9XVUU]7¶dK·S:Ç9úúúúX:|ÌÇØ�ýè9Ç9ªª¯¯aOPAø6ç9Ç9þþ¾(¨@mÛ¿�ØfZÇ9sUUUçJ÷ð[öD{Ç9%5èæA�$H$f‹‚rªªªªçã	´éÄE‹ƒÿÿ‚çã¢Ø‚C:E‹ƒäã’$I’$†“Ãzªªªªäã	‚$	’$†“ÃzªªªªäãH’$H€ †“ÃzªªªªäãI’$	†“Ãzªªªªçã±m'¤ÑE‹ƒ/èã®ñà	E‹ƒøððøéçd†!Af‹bjªªªªéæ`À²-%ƒ{ªªª*èâš­‘%ÕE‹ƒ¯úðèæ!I€�%ƒä‚ªªªªèç @‚f‹‚rªªªªèå[¬‚!E‹{«¿¿¿æÞ’I¬Ù¸…“%ƒ}ª¢ç�€`ƒFR@€æOOâÿûþƒÇ9UWV\çZð±�ƒÇ9	-5ç¾ E‹¥rjª  çHþÏÿè9ƒç9UW\xçGpÿ�XƒÇ9	%5äYÀ€E‹'J`ÀÙ+Oò?ôƒ&{è9UUV\â+ù�XIš$EƒèA%5ÕUçžE‹Åj   ¡èÏ  )E‹år   `è`ìêã$ƒÇ9€`\WÓ`M’$IœårÇ9WUÕ5ãWIuÂ,&{ç95	â\âV˜Ó'I’${Ç9xWUUçWI’¼9QƒÇ9UÕ%én©05ƒB-€xéaÀ,>N’$ƒÇ9à^WUg^�*hR/>èA¥)ªªªªè[I’Ä9å{Ç9UÕ5çj©0ƒçA-éæéÐv[·uf‹brªªªªèæ Àf‹bjªªªªéèI$I’$F‹‚jªªªªèå@lÀ%ƒäz
ªªªéç!AI‚F‹‚jªªªªéè‚F‹‚jªªªªéè @$F‹‚jªªªªéè @’$F‹‚jªªªªéè‚�$F‹‚jªªªªéÑÐI€ E‹År
Šªjè]¨˜Ó'ƒÇ9àxW¼^èÿüÉŸœ¥jÇ9\UUÕéjIžx' ƒÇ9Uµ	é°ƒfZ	èà+�’$(E‹{+¯ÿæa@½&E‹Ç9à^åfM'I’$ƒÇ9ø^UUåcI’$Éi
$ƒÇ9UUÕ-édIg
ˆƒÇ9µàé?¬âÓ?ƒç9à^U¸K ýÜùÿÿ¦jÇ9XWUU£X¶}Û¿�FRÇ9UUU5èhI’¼ç0ƒÇ9UÕ-ér¹;ƒçAõ
èœI.	ƒfZUè­1ƒ†b½èä‘D‰$f‹‚rªªªªéæk»¥íŠuf‹brªªªªèæ	C2$If‹brªªªªèæ’	’f‹brªªªªéæM×vé–f‹brªªªªéèI$@ F‹‚jªªªªé{5ƒçA€xç^ƒ9}’$ƒÇ9pxWUè]É—ùƒÇ9•5%
éÞƒåz©ªªªéèA‚ ‚F‹‚jªªªªåã`‚0L&E‹%ƒäâ	I’ I’†“Ãzªªªªäã	€$I’$†“Ãzªªªªäã@�$H$†“Ãzªªªªçã¤CÙ¦E‹ƒ/øðèã¶cÛÒ¶AE‹ƒÿÿäã	’$HE‹ƒäãI‚ E‹%ƒªäãI’ I’ †“Ãzªªªªäã@‚A†“ÃzªªªªäãA‚ I’$†“Ãzªªªªäâ$A††“ÃzªªªªãÞPÕP#9…“E‹----ßÜÃºµ[³µÄ›ƒªªªªÝÜ A� ä›è‚ªªªªÝÜ@  ä›è‚ªªªªÝÜHI’ä›è‚ªªªªÝÜ€�ä›ƒªªªªÝÜH$@€ ä›ƒªªªªÝÜ‚ä›è‚ªªªªÝÜ€H�ä›è‚ªªªªÝÜI€$ä›è‚ªªªªÝÜI€Hä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ’H�ä›è‚ªªªªÝÜ	€@ä›è‚ªªªªÝÜ @�ä›è‚ªªªªÝÜ@ Hä›è‚ªªªªÝÜä›è‚ªªªªÝÜH ä›è‚ªªªªÝÜ‚ $ä›è‚ªªªªÝÜA 	ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝ¤Ph…“&{`€Ý�OÂÖ�…“çrWúÝ‚Iî–’…“çrÕ¯Ý£©0…“&{)åÜ©ð
—»…“%ƒpð€€çäÛ¶
ÙÖm%ƒå‚(¨¨¨çå		’$I’E‹ƒúÿÿÿæÝIP
5…“%ƒUÕ­-äÝ˜9õc?…“%ƒ
ÞÜ�aHä›è‚ªªªªßÝA"&Ä›ƒªªªªÞÜ @$&Ä›ƒªªªªãÝ.äB1§…“E‹XX àÞH‚$L…“e‹ààÜŽCÛ$
…“E‹ªßÜiÚ&i¬…“E‹ÝÜ‚ $ä›è‚ªªªªÝÜ  ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜAä›è‚ªªªªÝÜ�$	ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜIä›è‚ªªªªÝÜä›è‚ªªªªÝÜ@€ ä›è‚ªªªªÝÜ@ ä›è‚ªªªªÝÜ@€ ä›è‚ªªªªÝÜ@‚ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜH€$	 ä›è‚ªªªªÝÜA$ä›è‚ªªªªÝÜ€€ä›è‚ªªªªÝÜ@ Hä›è‚ªªªªÝÜH ä›è‚ªªªªÝÜ€ ä›è‚ªªªªÞÜ$A‚Iä›è‚ªªªªàÜŽéPŽi
…“E‹ ßÝ$H2dÂ$Æ›ƒªªªªßÜÛÐuMÓ¶Ä›ƒªªªªßÜÖnm›tÄ›ƒªªªªßÜk‚µ[Š5Ä›ƒªªªªÝÜ@�ä›è‚ªªªªÝÜH$ä›è‚ªªªªÝÜ’ Aä›è‚ªªªªÞÜ 	„	I†ä›è‚ªªªªÞÜd�0$C†ä›è‚ªªªªÞÜ�$&ä›è‚ªªªªÞÜ$’`’ä›è‚ªªªªÝÜAä›è‚ªªªªÝÜ@�ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜI€ ä›è‚ªªªªÝÜ@ ä›è‚ªªªªâÜ±ë’¦T
…“E‹€àààÜŽmÛrÚ…“E‹ßÜÖmYÛvä›è‚ªªªªßÝ$A$’Æ›ƒªªªªàÜ¶h2$MB…“e‹ ßÜÝÖaé¶nÆ›ƒªªªªßÝ I‚$‘�Æ›ƒªªªªÞÝH Æ›ƒªªªªÝÜ@‚  ä›è‚ªªªªÞÜdH�!Cä›è‚ªªªªÞÜaH’I’ä›è‚ªªªªâÜNis¥`J…“E‹€ øøãÝ­9´Ó¸…“E‹%äÜŽ—ñä
…“E‹ pXãÝIÂÚX�Õ…“E‹
--ÞÝAÆ›ƒªªªªÞÜ$ƒ� ä›è‚ªªªªäÜ¹Ÿ—ïä
…“E‹ xXäÝÏïÖÓ†m…“E‹ªÕÕßÝ!I’	’…“E‹ßÞI�$I�$…“E‹€€âÝP+µ¶ë¸…“E‹//âà$I�!’e“E‹þþþþâáI’$I�e‹E‹€€äá)Ðb6 e‹E‹X^×•âÞ$J´äP…“E‹ÿ«ª¢áÞM×…“E‹¢êêþãáI’�!He‹E‹ øÞäáI’´é–e‹E‹ zZäà¶MÚ":…“E‹ÿ¿µµáÞÀ°mi“4…“E‹«ªáÞÀ-�…“E‹ªêààâá	’$I’ “„ªªªªâáI’$I�e‹E‹€€àåãI2!C E‹ƒ(âßØ¶nK×e“E‹ÿëââááI’$I’$e‹E‹€€ãáC2d’�e‹E‹//
 ãá		‘„e‹E‹øxà€åâI×nÝÐvE‹ƒ€€€æäI’$’%‹%ƒÿÿÿþæà`¢ÙÐ(`…“ƒ««¯ÿæãé–)ÐnE‹%ƒ^^^Zæå	’If‹¢zªªªªæåI‚A†‹‚zªªªªæäAI&E‹%ƒÿÿÿæãÛ°mÃ–4E‹%ƒÿÿÿæâ‚I�d'E‹%ƒÿÿ¯èãÐ	mÇE‹ƒÿþþèä @’˜$E‹{ÿÿ¾èá ìô¸E‹äzÿ¯àèã šäØE‹{ÿÿÿéä’¤A“wE‹{ÿÿÿ¨éæ¶¶k›$%ƒäzªªª
èÞ�9=Ö…“ƒ--­¯ãÜŽë“-àj…“E‹ PXâÞT:4•�…“E‹
*ª æÜ&pO¶íç…“ƒxàèÝ°Iw�$…“ƒUÿ çÜ˜½Ùöÿä…“ƒ
èà•TIžse‹ƒ|^XàèÝ€hX?>e“ƒõõ-èÜ°muû?…“ƒUÿèÜ mu�<…“ƒUÿèÜ°mnûü…“ƒUÿçÜ mmûç…“ƒUÿŠæÜ��ùšC:…“%ƒ-

æÜ¶p±pO…“%ƒxppðèã @ƒf7E‹{ÿÿ¾ èÞ 	5÷˜…“ƒUê èå6lÛ–®%ƒäzªªª(çå%ƒäzªªª€èæI’ A�f‹‚rªªªªçæ@‚@f‹‚rªªªªèæ$H™�f‹bjªªªªççI’$I’$f‹brªªªªèæ!I’ 	�f‹bjªªªªçæ$fƒ‚‚ªªªªçã-%P,ÇE‹ƒ¯çå$�2Æƒâ�ªªªªèä¢#H€Dš%ƒäzªªèæ!I$f‹bjªªªªèæ$’$0f‹‚rªªªªçä[‡µkÛ´f‹¢zªªªªæä$@	„f‹¢zªªªªæåIf‹¢zªªªªæä É„H’†‹‚zªªªªæäB H’f‹¢zªªªªçäIÚÝ¶mE‹ƒªþÿÿçå!I�f‹‚rªªªªèä¶#PD	%ƒä‚ªªªèã]#¡“¦I%ƒäzªªªèÜ}ÞÖÛa…“ƒªÿUâÜ±m»k
…“E‹€Ë}èÞñ`
0e“ƒxz_WèçH’I�F‹‚jªªªªèçI ¦‹Âiªªªªçæ‚$f‹‚rªªªªèäNBI�I%ƒäzªªªèæIH’	‚f‹bjªªªªèæa2C2f‹bjªªªªææI’$I’$f‹‚rªªªªçæI’$	’$f‹‚rªªªªåâXƒmØ†mE‹%ƒ­ýýýäß[¨E‹%ƒ/ÿÿÀ3M¾üø�ÿ%ƒäzVTVVD>I@`äzÄzªª D>IäzÄz

D>é …ƒ£aªªªªDB @  …ƒ£aªªªªD,�õ€¦m%ƒcjªªªªC+9ùJ M%ƒcjªªªªW-9u¥P
äz¤r€   Z<›À-äzÄr:??/F
ñTOõT%ƒäzzrrrY;Û³µÃ6äz¤r

ªªäJ	�¿ñE‹Är¥µÕæâ”Ð	E‹ƒ
/ÿÿæâ4iÆ’
ÐE‹ƒ/æâ�#ÚvBÓE‹ƒ

çâžKñä
E‹ƒøððøçãNÈÄ"	IE‹ƒ‚¿ÿæâ€,Út"&E‹%ƒ%æâ&SŽÇE‹%ƒX çâ+`®E‹ƒúðððçÏ€@ƒåzÀçWô£±ƒFZ^èãPIbÛ’%‹FRUÿªçX¹YN%‹fZµ¯
çÎÙ�Ð(�…“ƒ	

ÝÜHä›è‚ªªªªÝÜ@@ ä›è‚ªªªªÝÜ	 ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ�@ ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ@€H€ä›è‚ªªªªÝÜ	�ä›è‚ªªªªÝTÐ…“E‹àÝO‚ù…“%ƒWøÛI’$uŒ…“%ƒUU^€ºIœ„Iöe“%ƒÕ•µ?ÝÑ0ä›è‚ªªªªÝÜ @�ä›è‚ªªªªÝÜ  ä›è‚ªªªªÝÜ @ä›è‚ªªªªâÝ±±›¤…“E‹ðð€âÝNºº€$…“E‹‚ïwäâ@†“Ãrªªªªäáí°
ÛŠ%e‹E‹Z_õäá@×$e‹E‹UUõ
åß¢£9Ò:H…“%‹-­÷×âÞNbÛ¢‘…“E‹ª«âÝµÓ¶‚$h…“E‹*¾¿ÞÜ$`ä›è‚ªªªªßÝLB&$I‚Æ›ƒªªªªßÝdB„$I‚Æ›ƒªªªªßÜé¶®Û
´…“E‹ÞÜ	dB‚ä›è‚ªªªªÞÜ$I2!	’ä›è‚ªªªªÞÜ$C’$’ä›è‚ªªªªÞÜ	!Á�ä›è‚ªªªªßÜk‹µmÚ¤ä›è‚ªªªªßÜmÛ¶m‘nä›è‚ªªªªÞÜI�€ä›è‚ªªªªÞÜ!Á!I&ä›è‚ªªªªâÜ$imé$…“E‹¾¾àÜ¢ ’¶“…“e‹¢âÞ"�8±…“E‹ª ¨øâÞqìØ¶D…“E‹€êzâáI’$I e“E‹¾þÿÿäà‰eS&a
e‹E‹ÀàxxåMØ4ÀÈ%ƒçAXp`Àâ*?ñ{Oþ$Eƒè9%µÕUâ+�Se‹è9½æÞ¤À	œJE‹%ƒàpðàæä$	’	2f‹¢zªªªªåãL’$$�E‹%ƒëÿæã)–í¶nE‹%ƒØøæÜ³/ú˜�9…“%ƒ--çÜ©�
÷ts…“ƒppðàæ±XE‹Æjzæ€þHEƒ‡Z_å\·#AE‹'J€äO²>€E‹BU^à»#Ižÿµ�ùÆjè9UUWxg¾á'þoû‡Zè95UUUá'ð
‰™üe‹B-ÕUå8¢ˆp
e‹'JXà-ä#Iâ'¢ˆƒè9UWxà¿ñ�¼ÿßÿ{è9-ÕUWà/@ñ”¼e‹è9-Õâ´E‹æräË’AE‹%ƒ@¨ªä|‚5E‹BVx€¾É›üþ
ÚÆrè9ÕUWXå6ð
Ï÷$Eƒç9
µUå‹�E‹fZ	äàvLS&`
E‹%ƒ€à åáq"‘$IE‹%ƒ
¿ªäÞšƒÙ	h…“E‹
¥õUäßvÒ&R
­…“E‹*¯õõãÞ±æ
›°M…“E‹X^_UåàŽÝv’&`E‹%ƒª¾åã!I$A€E‹%ƒ¨êêþæäIB’AE‹$ƒªªþÿæäIB2$E‹$ƒªª¿ÿåŒÀ@%ƒfZ`å>O2'`%ƒç9U^p€y-¶oûö?'Rç9UUUTà*ñ�˜ÉŸüE‹ç9-ÕUUâ4€(�TE‹Bàµä-~²&
@%ƒç9U^à€²*	‘ÜÉÏÿ¦jç95UUVà/P_�ñ�œ%ƒç9pƒ-ÕÐCIò$r0åzç9UU\påD�Iš$%ƒç9%ÕUåy�%ƒFR	æäL†a‚E‹%ƒëþ~~æXÀ9hÂ$ƒÇ9`p\VŠ\OžßùŸ&JÇ9UUUèdù ƒç9%	è^€À=ƒÇ9À`xÒ]M’$IšÅrÇ9WUÕ5émPƒçA	è]€€4%‹Ç9€àp¦HÊýØ¿m¦jÇ9TWU•è`±pƒç9
	èç@@$F‹‚jªªªªèçH�If‹bjªªªªèçA’@f‹brªªªªéç!@$F‹‚jªªªªéæ À,%ƒäzª**ªçàµðÏTE‹ƒðàààçæH�$I�$Æƒâ�ªªªªæå Æƒâ�ªªªªæÜ�ù�#Ú…“%ƒ


ßÜm×¦m;…“E‹¨æÝ¥�
©ÔJ…“%ƒxxxúçäÃ¶mÝš´E‹%ƒUUÿêçå$I�IÂ0f‹¢zªªªªæå	f‹¢zªªªªæå€$f‹¢zªªªªæåf‹¢zªªªªæNÀ=X%ƒçA`PXP¢M‘$I’$fZç95UUUmM¸ÿÿÿŸ$'Jç9VUUURM IÛ;(BF1ªªªªSM´ml›´(BF1ªªªª°MÉ‘$I’$†bç9UUUçH€2@�%ƒÈ9À	%åIâÿ¨
Ðƒè9UW\p@R?˜�Ù)Bè9ª¯½ýÞ	ñŸ…“(B
5ÕÞz=€@…“(JVX`€KI~»Üi)BÇ9€ªþþäù�ÉŸü%ƒè9%•UUäGE‹È9€	à
¶¿ÿX,e‹è9UVX`:
í`O¿�$Bè9úú ã
tk¹�üE‹B‰¥UU$	¨¿üüÏ$	J*ªªªª;öó»÷Bè9
 øøÍÉÿÛ¶k{è9UUÕ5ãénaE‹Bmƒã*ÉŸüû�=e‹èAUUVXD+úôã')BÇ9¯¯*
˜k?’Ü)BBõ¯ªêä�ù�{E‹B	%•äßIeoÒ©…“E‹rZõÕäáÐÉ�le‹E‹^ZXpäßjÙ@­­…“E‹­¥µõäàD@$M2e‹E‹V×**ãÝÐ4vµëÄ…“E‹ýªãÞµ½Å•TAe“E‹

þVãß±DJ@e“E‹úþ__ãá!�$He‹E‹XØÚZáÞk²¤K±
…“E‹
‚¢êäà±K¦`
…“E‹^^^_äâ$À†“ÃzªªªªääI’$I’$†“£rªªªªäâ$†“£rªªªªäßIÕ
@e“E‹pZUUãßˆ´C;e“E‹ÕÕàÜ´M'4
@…“E‹ªäÜÿ×ñd…“E‹ðpáÞIÚ¤[
¬…“E‹€
½äÝ@¯�Oe“äzúúxðä>È@ƒ&äzÇ9Àp\pBH’$I’$JÇ9üýõõD3`¼)è9ç9ÿ¿¿ªãöÿÛ‰•E‹èAUU•%äáIÛ¦X³6¥“¥zªªªªäáÛ6m—¤¥“¥zªªªªäá
¬[Ó5e‹%ƒ>*

âÜuJ¶Ú$…“E‹ªÿãÞ±gÇš
Ô…“E‹¨€¯¥äàD‰¦iÇe‹E‹WÖè
äÞš0nk['e“%ƒÿúªŠâÞp"Ù$e“%‹¯ÿ_ãÞÔjMR;e“E‹UW«©àÜ¢#›ŽI…“E‹

‚êã�e“år@ªªßÏ¿'X,e‹BUVX`4÷p¹›<Bç9øø 3PÕõ›¼Bç9//Š€ß�?ñŸe‹è9
5ÕßÚÐ$A��Me“E‹ßÝ!’$I’Æ›äzªªªªäÞ	•
©K…“%ƒøxøøäß€0®kE‹%ƒ¯ª äÞP#:uâÄ…“E‹%-¢ßÞ’$I�$…“e‹ ãÞñ–
©ài…“E‹øXXúàÝk‹6k³®…“E‹ÞÜ‚$Áä›è‚ªªªªßÝ	™$I"Ä›ƒªªªªßÝ$™I†…“E‹€€áÝ0¤c“…“E‹/
 ãÝ±”j±`K…“E‹ðPPðÞÜ``Ä›ƒªªªªãß”$@”I&e“E‹VW§äáX3´Åºae‹E‹
µ××äà¤I“•e“E‹÷õZZä>€&E‹è9€`X¥$øó?ÿïÿÆjè9TUUU-�é¿ª‹QBè9 ‚ª«Ì%IžÿÿýÅrè9UUÕ5æ4¹p%‹B%	æáë´Nš�Åe‹ƒªêæa€@E‹GR`€ä3Iò$òù%ƒè9UW\pV3ñæJ&Aè9Ç9úúÿÿ=2ð€çøƒ'éA2ªªªª§3ÿ“$I”Æjè9UUä90€E‹è9	€å4ÀŽýK’$%ƒè9`XVUT67po¹�üBÇ9þúúªã7Iž\¹pe‹BU•%	ä5€&E‹èAÀp\“2H’$I’$†bè9TUUUÓ5I’$Iœ%{è9UUÕ5ä8±`0E‹è9
€`ä9`²$I’$%ƒè9XVUUd9I’$I’GJÈ1ÿÿÿ?ä9‰ %ƒè9µ
ã9N²'Ø4E‹è9WVXpC9”$rÿéA2ªªªªZ91o‰�$:Ç9úúªªç:‘‰—äƒè95%µUçM€6>%ƒ'J€ZähE‹'J	äã@’I’†“Ãzªªªªäã	‚ H$†“ÃzªªªªäãI‚$I’$†“ÃzªªªªäãI’$@†“ÃzªªªªäãI�I†“ÃzªªªªèåÛVlÝšaf‹‚rªªªªèåÛ°
É–n%ƒÄzªª  èç	�I‚f‹brªªªªéå’L)(%‹ƒßŸµµçÝ¬`SŽíØ…“ƒzàèß0Iq÷we“ƒU_èèéå”DJ›%ƒ{ªªª¨èã
hÐ
9E‹ƒÿ¿­èàOeOœ4	e“ƒàz_Wèæ!I’Hf‹‚rªªªªè\€èƒç9p`€§YÉ‘$O‚'†bÇ9UUVç]0�
%ƒÇ9
ç3À e‹HJ`ÀÀ
ÿ™$M'&ƒBÕUW\ä
@�e‹(J	%ãÐ,@E‹(BX`Àl¹›»¶Û'Jè9ÿÿÿüæ4÷'%ƒçA	
µUäÀ
ÞÍ�ü%ƒè9àXWUÊXùŸ¿9á‰¥jÇ9UÕ%‹×_$ðsò$årÇ9‰`^UÎVM’$IœÅrÇ9WUÕ%æWÉ™
@ƒÇ9µ-€çe¨àã$ƒÇ9àxW¾]hò$I’$…jÇ9\UUUÍ]ò'IœÅrÇ9UUÕ5è_ÉƒÇ9Õ-èÙ$ƒåz©ªªªéçLB’É€f‹bjªªªªèç I�$f‹brªªªªèæHÈ„ 	�f‹‚rªªªªéç H’$C2f‹bjªªªªèç	$f‹‚rªªªªéç!Á�d2f‹‚rªªªªèç’$f‹bjªªªªéç$	’	É�f‹bjªªªªèçA H$f‹‚rªªªªèh€ˆ5ƒç9Àxçd­&O’${Ç9à^UUç^I’$‰÷
ƒÇ9UUµ-è^9QƒçA%éç@�$	2F‹‚jªªªªéd€(:ƒÇ9 xç]€*>N’$$ƒÇ9à^WUÔ_O’$IÅrÇ9UUÕ-éiÉO@åzÇ9Õ-éj`XÏ'ƒç9€xWÞg˜Ó'I’$ÅzÇ9xWUUyWìÃÚµí&JÇ9UUU•ãXI’Ä1E%ƒÇ9UÕ-èTñ@%ƒç9-èåÀÐ)�%ƒäzªª  éè’ 	�F‹‚jªªªªéçaÈ� �f‹bjªªªªèçI$A f‹‚rªªªªéç$$ƒäzªªªêéç`&$	2f‹bjªªªªèç‚$H$f‹‚rªªªªèçA‚$@f‹‚rªªªªé°,ƒFZ`énÑsò$ƒÇ9€è^U°ihò?ÿóœFZÇ9\UU•è`I’¼ï0ƒÇ9UÕ-è… ƒJ	éç$H€!HF‹‚jªªªªéè@ƒäz¿¿¿ÿéã«#6�ÕE‹äz
/äã’	†“ÃzªªªªåãI’„aHE‹ƒ¨åãaÂ�a‚E‹ƒªåã!&	’E‹%ƒ ªçã&‹Ž�$E‹ƒúðäãHA�E‹%ƒ‚‚€€èã“*hRÝ9E‹ƒÿÿ/äãI€$H’$†“ÃzªªªªäãH’ 	’$†“ÃzªªªªäãIA�$†“ÃzªªªªäâC’$	 ¥‹¥ŠªªªªãÞ’#9’
5…“E‹----ßÜÛŠ6mÓ¶ä›è‚ªªªªÝÜ	A€ä›è‚ªªªªÝÜ  ä›è‚ªªªªÝÜHH ä›è‚ªªªªÝÜ@ä›ƒªªªªÝÜ@ ä›è‚ªªªªÝÜ‚$€ä›è‚ªªªªÝÜ@� ä›è‚ªªªªÝÜ@€	€ ä›è‚ªªªªÝÜAHä›è‚ªªªªÝÜA�Iä›è‚ªªªªÝÜ�$ä›è‚ªªªªÝÜ@€ ä›è‚ªªªªÝÜ’ä›è‚ªªªªÝÜH€ä›è‚ªªªªÝÜ’I‚ ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜHä›è‚ªªªªÝÜH€ ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜH�ä›è‚ªªªªÝÜä›è‚ªªªªÝÜä›ƒªªªªÝÜ  ä›ƒªªªªàÜ¶GväX…“E‹€€€€çã†dH
E‹ƒþþþøçå�™E‹ƒÿÿÿúçÝ�ù˜ƒ9…“ƒ----ßÝ$C’ I&›$|ªªªªßÜI×nÃ¶­Æ›ƒªªªªßÜÃ:`k³vä›è‚ªªªªÞÜ C‰ä›è‚ªªªªßÝaH2$A…“E‹€çÞyõ
•@Ie“ƒàx^þçåI@%‹ƒ ÿÿÿçÞ£Õ’(ae“ƒ-µÕßÜIº¦h‹&…“E‹ÝÜ	�ä›è‚ªªªªÝÜ	@ä›è‚ªªªªÝÜ A€ ä›è‚ªªªªÝÜ’ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ@ ä›è‚ªªªªÝÜ@�ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ$ ä›è‚ªªªªÝÜ 	 ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ’ä›è‚ªªªªÝÜ€I‚ä›è‚ªªªªÝÜ‚ ’ä›è‚ªªªªÝÜ‚$€ ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜH€@ä›è‚ªªªªÝÜ�@ä›è‚ªªªªÞÜ!I@ä›è‚ªªªªãÝ©à
6›$…“E‹XX ßÜhº¶m’v…“E‹ßÝ	“�I’Æ›ƒªªªªßÜéÖM±mÄ›ƒªªªªàÞL’$a˜…“e‹ààÝIÒ®Íºa…“e‹ªÞÝI H€Ä›ƒªªªªßÜ[Û5í
…“E‹*ÞÜd’ "ä›è‚ªªªªÝÜ’ €ä›è‚ªªªªÞÜdÈ�$ä›è‚ªªªªàÜ´m:6-H…“E‹ªßÜiš¦m‹­ä›è‚ªªªªßÜI“´k`…“E‹ÞÜ$Á�$Iä›è‚ªªªªÞÜ$$I’ä›è‚ªªªªßÜi’¶iä›è‚ªªªªßÜ)ÐuÝ€…“E‹€ªÞÞI’$I’$Æ›ƒªªªªáÝ4cÛ¶i…“E‹€àæÝÉïÖ“(ˆ…“%ƒ ÿ÷ãÞ)äµÛ$…“E‹XX¢àÝh‹®kÛ6…“e‹äÝ‰Ÿ´ÿ–…“%‹ ðXâÝµSÛ«‹Ù…“E‹àÜ¶mÇ2-A…“e‹ªßÜi×mm·
Ä›ƒªªªªßÝ!Ã$d…“E‹ªàÝm—vm7…“e‹ €êãÞöæJÒÔ…“E‹øú¯¥ãÞ6àJ©à…“E‹ZZXZäÞtÒØöÖB…“E‹
¢úZäÞ‰“Ø6Ù…“E‹ úZáÜ�[Çs‹M…“E‹ªãÝ!J!@…“E‹XXXZâÞ¤í˜4@…“E‹ª¢zzãÞqÜ$˜
m…“E‹
­­äÝÿã;ã=…“E‹
%äÝyü¿ñdB…“E‹ xZâà!I’$’e“E‹þþÿÿäáI’tI‘e‹E‹€àxXäáÃ‚5Xƒ5e“E‹•µµµßÝ †`†…“e‹åßn™ræäe“E‹þ~^^äáÀ4@´e‹%ƒ



åá1eŠ–$@e‹%ƒ  ¨ªãÞ˜£:Z¢Ù…“E‹-«àÞL’„@�…“E‹
ªâßÙVlÝ0e“E‹èþþÿâáI€$I$e‹E‹
åá1S‰Ke‹%ƒ€   åá(ˆ
9e‹%ƒ®+

äàŽM“&iBe‹E‹¢øXâá	’H‚$e‹E‹äám—ÉÐ
e‹E‹øXX^äáI²&[ƒ5e‹E‹--ãá!™„L’e‹E‹ê€€êåã@@†E‹%ƒþþ¨¨æä C&d’$E‹%ƒ¿»ªªåâíÐÛ¶mE‹%ƒppzúåãI@&E‹%ƒÿÿÿ
æâ‚DÊ”˜$E‹ƒª**æÜP-:£Oÿ…“%ƒ-ßÜÐ¤MÒ´…“E‹ªßÜ�6IÛ´…“E‹
ßÜ�´íÚl…“E‹ªßÜ�´k»­…“E‹ªÞÜÀ@…“E‹ ßÝ@2	’…“E‹ªåÝ§�s¾ï$…“%‹zàæÜ¨‘¶�ÿ…“%ƒõ¯áÜÀ¶¶nmÇ…“E‹«ÞÜ�$&…“E‹ ÞÜ A’$™�ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ‚‚ä›è‚ªªªªÞÜ$Á$dB†ä›è‚ªªªªàÜ$aÇŽ“Ä…“E‹ ßÜ@Ó¶M“4…“E‹ÝÜä›è‚ªªªªÝÜ� ä›è‚ªªªªÝÜ’€ä›è‚ªªªªÞÜL’LB’ä›è‚ªªªªÞÜB2&ä›è‚ªªªªàÜ¶`›vÛ…“e‹ àÜà˜±cÛ…“e‹ºàÜ&‘˜±mÛ…“e‹€æÜ`Ž¶ý'…“%ƒ_úæÜ$PO·ýç…“ƒzàçÜ°m¾�ç…“ƒUÿçÝ°A6™s…“ƒUÿèàçäÛ°mé�´%ƒäz¾úø çå I�%ƒäzªªª€çæ€ f‹‚rªªªªçâiÐ*'E‹ƒÿ¿/æâ¤M‡’)HE‹%ƒ‹Š¯÷æÝ‚&­R9…“%ƒõµ%-åÜåPw¿›¤…“%ƒzà€€èåÅV`Á`%ƒ{ª¨¨¨çå’	fƒ‚‚ªªªªæãM×vE‹%ƒúúÿÕæä C2$I�†‹‚zªªªªæå�A’f‹¢zªªªªæä’!‘†‹‚zªªªªæäC’$I2f‹¢zªªªªæä$!%ƒƒ€€çæ’$I’$fƒ‚‚ªªªªçæ	�I�fƒ‚‚ªªªªèç	‚ @’ F‹‚jªªªªèæC’C’f‹bjªªªªèä¶C‘‚(I%ƒäzªªªèæaH&$If‹bjªªªªèæ!Á�dH2f‹bjªªªªèæH’$’F‹‚jªªªªèä¢#Æ)‰%ƒä‚

ªªçâ0M³7ÇE‹ƒÿªªçå	’$’%ƒ{ªªª*çâ‚¤m­[ÇE‹ƒÿÿªªçå$I’’%ƒƒªªª¨çäÛ¶­C·5%ƒƒ"
åã 	’ ‰�E‹%ƒýý««äá`À4E‹%ƒÿÿ

á(úÿ`‚%E‹äzVVXðD(­p·%ƒcjªªªªDC …ƒ£aªªªªDC …ƒ£aªªªªD%ˆP
9{äzUUõ54 Ø¶¶l›¸ƒäzÿÿÿú/'ðÿÿŸÿEƒcrªªªªX(÷�S¹›»äz¤r €Y+¯5µïßäz¤r

>
	qä q%ƒäzrzÿZ<0ÛäzÄrþþþgD$A²$™—äzÄr¿¿ÿøæZ0E‹Är«­çäÛ:Ð$E‹ƒÿÿÿªçä]À�$E‹ƒÿÿÿªçäÛ†mÀÐd%ƒäz ªªçæ‚ @ fƒ‚‚ªªªªæâ 
Ñd,[E‹%ƒ		‚çâ‰]ÛÕ* E‹ƒ>?æÜ@Nµí<…“ƒzêçÝ°m¶�$…“%ƒUÿçÜ´�¶ý?…“ƒÕ¿âÜØÈÚ¶mÇ…“E‹«ßÜÐ&MÛ¦…“E‹ªßÜ@Ó6MÒ´…“E‹ÝÜ$’$ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ‚‚ä›è‚ªªªªÝÜHä›è‚ªªªªÝÜ@A$ä›è‚ªªªªÝÜ‚ ‚$ä›è‚ªªªªÝÜH€ä›è‚ªªªªÝÜ@€ä›è‚ªªªªÝÜH @€ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜ@€Aä›è‚ªªªªÝ›j…“E‹ ÝÜ	@€$ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ Aä›è‚ªªªªÝÜH$A‚ä›è‚ªªªªßÜm–¦m×ä›è‚ªªªªäÞî�Ô6me“E‹XX÷õäâC$	˜€¥‹¥ŠªªªªäÞP­9uÜº…“E‹¥-ŠªäßIÛÓ6@e“E‹€€WUåáD‰vìØe‹%ƒ¸¨äß³S;m×e“E‹ÿåÝ¶ÝþÒ9…“%‹*
--ÞÜ$É�d�ä›è‚ªªªªßÝI’„I�…“E‹€âÞŽm›”@A…“E‹€¨þþâÞ¤9�-9…“E‹
/-+ßÞI’$H�…“e‹ ßÞI� I…“e‹
ßÜkº­Ý¶Ä›ƒªªªªßÜIÛ†­Æ›ƒªªªªÝÜ‚’ä›è‚ªªªªÝÜä›è‚ªªªªÞÜ É„!É„ä›è‚ªªªªÝÜA‚$@ä›è‚ªªªªÞÜdB’!Áä›è‚ªªªªáÝ1mÛ
Ñ…“E‹**ãÞñOöà
…“E‹xxxzæâIl‡"
�E‹%ƒ
¥åâÛ2¬Ã†aE‹%ƒ*ªªäáI·¶e‹E‹âëUUå»E‹Æj@â$ý#>À
@e‹è9W~à¬'É›üOþærè9ÕUW\å?SÉ›${ç9-ÕUæ_�
%ƒ'J
åä ’E‹%ƒÿ¾¾êæâ‰àP$)’E‹%ƒðà*?åÝ�#:ôÃÛ…“%ƒ-ªæÜ1s7á
…“%ƒààðzæâR,Ø�(ÒE‹%ƒ¯¿«æáÐ¬Ùuâ$E‹%ƒ%ãá@’™0¥‹¥Šªªªªâá’$I’$¥‹ÅŠªªªªâr@E‹GR`ã'O2'
@%ƒè9U^à€œ(Éýÿþ>†Zè9UUU\¦*?ñçI’äÆjè95UUUå7Ðy÷ç%ƒçAµUäCëÍTE‹çA^àä6ÿÿÿsÑ%ƒç9UU^àà/¦ð›ò'E‹ç9-ÕUUä1 ¦�xEƒè9µåÔ	E‹%ƒªêê©åd`E‹'Jp€äEIÒ'˜¨%ƒç9UWxÀ×=ñð¿ÿó${ç9-ÕUUâ* §�xE‹è9µäßÛ¶vÚHE‹%ƒ
åã$C‚!@E‹%ƒ
¨¨¨äám²6ØE‹ƒ¢äâIE‹ƒ€ ªªåäA’$I’ E‹%ƒ¾ªªþæäI!Ã„E‹%ƒþþþëæä I�$€f‹¢zªªªªæåI‚$ f‹¢zªªªªæä$2Ã�†‹‚zªªªªæäI2$“$E‹%ƒÿÿÿëå>â¬%ƒB\àá;I’$|5%ƒç9UUVx\
cÁºþýä(Jè9=ýÿÿä7ð
¹—ü%ƒç9
µUäCâ¨P%ƒÇ9xàä?Iò$sõ%‹ç9UU^xÒC–Iœ$åzç9‹%ÕUÂDO'sjÆrç9U\`‰ÞCù�„Iò$%ƒç9-ÕUUåC&È]“'%ƒç9€À{UdR¸“çtNçAÇ9TUUUé^É—)`{Ç9•%
éx(ƒçA€`Ü]hÂ$O’ÄÅrÇ9\VUÕè]ù ƒç9%
é–(ƒFR€`ç]`²'N’$åzÇ9XVWUè^‰‘@ƒç95%	èç�$�F‹‚jªªªªèçI�f‹bjªªªªèç@€ @�f‹‚rªªªªèæ$A†f‹bjªªªªéç$È€!†f‹brªªªªéæØ²µ[»6f‹bjªªªªçå$	�&%ƒä‚ªªª*æå@€I’$f‹¢zªªªªæã‚!Û†
E‹%ƒ¿¿¿ÿåÝtÎš’$H…“%‹
ªýUæâ1M%IE‹ƒ¨ªªåã! E‹%ƒ(+ªªåá‰�¢Ae‹%ƒ  ªªåä�$I’$E‹%ƒªªªªåä�I�$E‹%ƒªªªªåµ %‹Æj@æZ’ðœ%ƒ'J•æH@0Ø³'%ƒç9p`xVMH’ mmë8(BF1ªªªªMH´mmkÇ(BF1ªªªªåHI’äÉ—E‹ç9UU•5æNŸ3À%ƒç9yÂ×KI’$N'{ç9UUW\®KI�$I’$¦jç9UUUæK€<@�%ƒÇ9À	%áOîärùE‹BUW\pK)fCÈ„L¨è9Ç9(ªªªßñŸ…“(B
5ÕäB{=€@E‹çAVX`€X:ÉmÛ¶
ÛBÈ9ÿÿÿüÞ&ÿð‡ÿÿÿe‹è9%•UUäEe‹È9€	á
I²$à�ýe‹BUVXX5
1po¾í$Bè9øø¢ø£?ýÿ¿	J*ªªªªÅÉŸüùûårBUUÕ5à9±p…“È9-äÜ0Im›ÿ…“E‹WW€ä*À`e‹HJ`€ßIòäò
Ùe“:UU^xAÉm»	h)Bè9ªÿýÕC©ðnnÛ¶Bè9ºþþÿã
ð?ñ‡E‹è9	%•äßI—´©de“E‹ààZVâßØ¶uh²d…“E‹ÿë‹«äáÛ2l6¬†“ÃzªªªªäÜ~L›£´	…“E‹‚{_äáE[,
†“Ãzªªªªäáé–-°e‹E‹XXZ_äáíÐØ¬¥‹¥Šªªªªäá[³µ–e‹E‹-µ^^äáé�e‹E‹X^UUäâ À0†“Ãzªªªªäâ@À�†“£rªªªªäâÀ�†“Ãzªªªªäã� †“£rªªªªäáÛŠ
k×te‹E‹ýUëâäák `e‹E‹?ÕÕUãß	áPŽIK…“E‹bââúäá[³¡iÓ&e‹E‹5—êªá: @ƒ&E‹Ç9€Àp\…(ðÿ'Oò$&RÇ9TUUUD'Ä�·�$BÇ9õ¿¯¯â(ù“üÉ—E‹è9UU•%â0e“B	ãá“0¥‹¥Šªªªªâá	 I‚$e‹E‹

âá@I�e‹E‹Š€€€äá]»5@Û5¥‹¥Šªªªªäã@$E‹%ƒ¨ª*äß˜5›¶­…“E‹¥µÝÕßÝ$ÉH&…“e“bà‚¡âÝÐU±g»e“E‹UWÀŠäâaHH E‹ƒª¾¾¾ãÝ&hdÛÄe“E‹UU½áÞM“$	�e“E‹«¢XXä�€e“ær@  äI²?˜Ì%ƒBUVXp7ÉŸ¸ÿÀBÇ9 àê>¶o?¢ÑBÇ9ª
+¯á	ñ›e“B
5ÕãÝµ]·µ
e“%‹ úZäÞé–N®`e“%ƒøøúzäß±äN¨E‹%ƒ */áÞ-°KÛ4…“E‹úú¢¢áÞMš¤Iš…“e‹‚‚€àãÞÓ8€´…“E‹¯%%¥àÝ]Û¶M‚5…“E‹
ßÜÍÐí¶mÄ›ƒªªªªßÞI’I’$Æ›ƒªªªªßÝA’$IÆ›ƒªªªªãÞ‰C©C…“E‹øXXXãÞÉæt¶ÔB…“E‹ ¢úZäÝOþ»?e…“E‹€pZäÞvÚ–“@…“E‹ŠªÕUäà@±‹e“E‹UWZZä7€@'E‹èAÀp\œ3xò$ÉŸü†bè9TUUU9,líä²IBE1ªªªªÚ*Ižÿÿû{è9UUÕ5çD±`%ƒè9
çådH’@%ƒäzª èâ£3ÖX
±E‹ƒ/æâvl›‚$HE‹ƒþþæX€@%ƒ'J`€å=Éÿüò�ý%ƒç9UUVX?2ø�ÿÊ/“éA2ªªªªD2ùñÿÿïÿBè9?ÿÿÿã2Ãò&I’$E‹èAb]UU52M×
Û°
éA2ªªªªä6Iž\¹pE‹BU•%	æ8€&E‹BÀp\•6H’$I’$†bè9TUUUÔ6I’$Iœ%ƒè9UUÕ5ä8±`0Eƒè9
€`ã9X²$I’$%ƒè9XVUUd:I’$I’GJÈ1ÿÿÿ?ã:‰ %ƒè95
ä@,E‹è9€`ã/Ø³'O’$Eƒè9XVUUA’DN	eBç9ÿêàú=:I’$Iƒ¶éA2ªªªª;:I’ H$éA2ªªªªF:p’$I’?Jè9þÿÿÿä:¹�	‘E‹èA%55%äã	’@†“ÃzªªªªäãI’ 	’ †“Ãzªªªªäã	‚ @‚†“ÃzªªªªäãH‚’†“ÃzªªªªäãI‚$H’†“Ãzªªªªçã&‰�$E‹ƒøðèä A±�˜E‹ƒÿÿøðèæA$Áf‹brªªªªéå�1€,È%ƒäz***ªèà	g¬@Je‹ƒ ðúúèåi³¡ÃŠ5%‹ƒºÿÿ/çã´™˜6eE‹ƒ‚€àðèãš³Õ’IE‹ƒ/ÿÿéã1åNä°mE‹ƒxøÿÿéç$I’!Á€f‹bjªªªªèå0Ã†5f‹‚rªªªªç]j9À€%‹Ç9^x`Àà!6a~ì'Eƒè9%•ÕUç|%ƒgZâØ0€
@e‹(BX`ÀÕI‘|Éíü%ƒB5•UWâFö1E‹'J‚yÕr‚&ýÿÿ&ƒè9\\WUtÿÿ'öÓgZ:UUU%žI˜ž(ÚÆj:Õ-ëZ°>=Û¹�»†bÇ9pVUÕè\I’œñ@ƒÇ9UÕ-ç[ €>ƒÇ9Àxæ[?'Ožü{Ç9à\UUs[qé’$IçAÇ9UUU•è]I’¼ñPƒÇ9UÕ-éz¡ ƒJ
èç@f‹bjªªªªèç	 	$f‹‚rªªªªèçA$’ f‹‚rªªªªèçI H� f‹‚rªªªªéçL’f‹brªªªªéç!’$C†f‹bjªªªªèçH’$f‹‚rªªªªèçI’	€ f‹‚rªªªªèæ	aHf‹‚rªªªªè¼(ƒ¥j`èfÌêã$ƒÇ9à\Wª_ðÿ?OòfZÇ9TUU5è^IœS ƒÇ9ÕµéÂƒ¥j	è€5ƒ'J€xéc€õt’$ƒÇ9€xWU°[{’$I’†bÇ9VUU5è\Ižwž ƒÇ9UµèDÀ,>%ƒçAà^ç^Ð¼þÿŸÿƒÇ9è^UUlgÐ´µk¢ÚBE!ªªªªégI’ä¹g
åzÇ9UUµéay×ƒç9µèà!Érä4
E‹ƒ‚òúèåÖaØ0f‹‚rªªªªéç	$HF‹‚jªªªªéèI�	�ƒäzêêêêéè@ƒäz«ÿÿÿéè€ƒäzª¯¿ÿéè	�ƒäzêêêÿéçI0 0ƒäzªª««èå°
0,ƒäz€èa@=?ƒÇ9€à^äbXÏÿÉŸüƒÇ9xWUUèmI’äyg
åzÇ9UUµén9UäzçA5èçH$H‚ f‹brªªªªèçI€ $f‹brªªªªéç!$@ƒäzêêêêéè@€Eƒcrªªªªéç@2	�ƒäz+«««èärÙ�E‹ƒ¯ÿÿéæI“mÛ°m%ƒƒªªªúéæmº
Û¶
f‹brªªªªèæa€f‹brªªªªéãN\·Û&	E‹ƒªÿÿèãNbÛ’HE‹ƒ*ÿÿçãv’Ø6!E‹ƒ€ðúçãNl'’
�E‹ƒ¯çãNÛ”
ˆE‹ƒ¯çãqlGE‹ƒ¨ÿÿçãd9�#ÚE‹ƒäÞšƒ5`­Ù…“E‹----ÞÜ`H’	�ä›è‚ªªªªÝÜ@€@ä›è‚ªªªªÝÜ‚@ä›è‚ªªªªÝÜä›è‚ªªªªÝÜä›è‚ªªªªÝÜ‚ Iä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ� € ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ	’$ä›è‚ªªªªÝÜ‚ €ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜ€ ä›è‚ªªªªÝÜH€ 	‚ä›è‚ªªªªÝÜä›è‚ªªªªÝÜAä›è‚ªªªªÝÜHH ä›è‚ªªªªÝÜ’ @ä›è‚ªªªªÝÜ€@ä›è‚ªªªªÝÜI�@�ä›è‚ªªªªÝÜH€$ä›è‚ªªªªÝÜ A‚$ä›è‚ªªªªÝÜ ä›ƒªªªªÞÜ$&“ä›è‚ªªªªàÜ¶Ú6
˜…“E‹
æÝ®KñàN…“ƒúøxèçáÉ�£$e‹äzààêþçÝ�õ�ƒÕ…“ƒ---­àÞ	Ã„LÀ…“e‹

êêãÝvL:
°…“E‹
%%àÝiÛnm×…“e‹€ÀåÜvÜúR-Ô…“%‹
/%ÞÝ@ Æ›ƒªªªªâÞ$‘„Iœ$…“E‹ê€çÞ0IvûÄ…“ƒWþ¨çÞ‰RM:e“ƒÕµ/
ßÜkŠ¶kš$…“E‹ÝÜ€ä›è‚ªªªªÝÜHä›è‚ªªªªÝÜ H�ä›è‚ªªªªÝÜ@ ä›è‚ªªªªÝÜA�@€ ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ$A€ä›è‚ªªªªÝÜ@’ ä›è‚ªªªªÝÜ@‚’ä›è‚ªªªªÝÜ @ä›è‚ªªªªÝÜ@$$ä›è‚ªªªªÝÜ$€ä›è‚ªªªªÝÜ@€ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ$Hä›è‚ªªªªÝÜ	€ä›è‚ªªªªÝÜ Aä›è‚ªªªªÞÜ$A’!I†ä›è‚ªªªªÞÜ	2I�ä›è‚ªªªªÞÜ@$’Ä›ƒªªªªãÞN·)K…“E‹ XXãÞv’´¶`…“E‹ ZXäÞ©�
�·–…“E‹XXâëæâ$@d
E‹%ƒ*—ÖxæÝ}Ì¶’H…“%ƒªÿÕåá¶C‘’Ie‹%ƒ*ªªäÝNNÛÛ$…“E‹ªUUäÝIâ¶Ú…“E‹ªUUäÞIì¶“…“E‹€ªUUäáY:€e‹E‹¼UUUäßk‚µ�…“E‹¥UUäáiS`e‹E‹,×UUäÞñØn’@…“E‹ ZUUäÝOì›þÔ…“E‹¢zZäái;e‹E‹¨WUUäám``e‹E‹?ÕUUæÞRÛ›D…“%ƒªÿ_æÞùT
e“ƒàx_UæÞ
9�£õ…“ƒ---+àÝmÛ$m±n…“e‹€ÀçÜÿcûÜ6@…“ƒ¾×çÝñp¶Ps…“%ƒppxúçßj.µ‚$Ie“%ƒ­õUæâ¦CÒ’‰E‹ƒ(*ªäÞŽÍ¶Ò…“E‹‚ªUUäâIB†“Ãzªªªªäâd†“£rªªªªäã@E‹%ƒ
ªªªäã	†“£rªªªªäã	†“£rªªªªäã†“£rªªªªäâ	�†“Ãzªªªªäã	†“£rªªªªäÞŽ[·š	…“E‹¢ªUUäßñd@e“E‹xXUUäßX¢¹îde“E‹­zZäâ!H€†“ÃzªªªªäáM’4m·e‹E‹¢z_åá1R”$e‹%ƒ  ªªäák²&X´e‹E‹%¥ãÞ­£ÕÚ6…“E‹
«ï_åá±
’e“%ƒúúÿ÷åä@‚	 E‹%ƒªªªªåâ:¬†-E‹%ƒ****âà @e‹E‹¢úúäáM’´éÐe‹E‹àzzäãI†“£rªªªªåâMÒ5Û¶
E‹ƒ€æãÙ6Å¶
E‹%ƒ¨þþÿåá 9 Ùe‹%ƒ



äáé–n	¶e‹E‹XX\WäáMÚd-e‹%ƒ ªäà‚	Ù$í$e‹E‹·%+äámšt	�e‹E‹ŠàX\åâi·mX³¦E‹ƒåã$I$H$E‹%ƒªªª
åß’iÒ:6e‹E‹UUµäÜ$Ilëü…“%ƒ_ÿªäÜÂ¬õõ“ü…“%ƒ­/ßÜÖ¶mÛ´…“E‹ßÜXÚ¤MÚ´ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ‚ H�ä›è‚ªªªªÝÜI€A’ä›è‚ªªªªÝÜä›è‚ªªªªÝÜä›è‚ªªªªÝÜ$	€ ä›è‚ªªªªÝÜ‚	�ä›è‚ªªªªÝÜ@H’ ä›è‚ªªªªÝÜ	@ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ’ä›è‚ªªªªÝÜ’	€ ä›è‚ªªªªÝÜAHä›è‚ªªªªÝÜHI‚ä›è‚ªªªªÝÜ ’ä›è‚ªªªªÝÜ€ ä›è‚ªªªªÝÜ� ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜI� ä›è‚ªªªªÝÜ@� � ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ€ ä›è‚ªªªªÝÜ‚ Aä›è‚ªªªªÝÜHä›è‚ªªªªÝÜ�ä›è‚ªªªªàÜvb›¶…“E‹€æÝñðN+5…“%ƒpx¯/æÜ	ùµŸÛe“ƒµ¥*ŠçÜ¦÷ð…“ƒzxxúèà$iÐ,:e‹ƒÕ•5âÜ·š´[Ç…“E‹‰çÝÀ®S…“ƒ÷~xàèÜš�5˜¯9…“ƒ----àÜ¶e[v`G…“E‹€€€€èã4”uE‹ƒÖVVøèæ!H$C$f‹brªªªªçäX¬Û²-%ƒäz

" åÝ$IìÛä…“%ƒUÿª‚æä$I’!E‹%ƒÿÿöÖæäI‚$If‹¢zªªªªæåI‚$H$f‹¢zªªªªçäÙÖnÖm%ƒƒ€èæI’!If‹‚rªªªªçæH’H€fƒ‚‚ªªªªèç	�$@ F‹‚jªªªªèæ!@’$H’f‹bjªªªªèæ ’$F‹‚jªªªªèç�$F‹‚jªªªªèæd‚�F‹‚jªªªªèæ!I’$Hf‹bjªªªªèäd,%`&%‹ƒ¯
­çäKÒ5¶%ƒ{ˆ¨çå!’$	�f‹‚rªªªªçãb"Ú)IE‹ƒ¯­ýUçæI’I�f‹‚rªªªªçä@´X‹-%ƒäz



æäI’“E‹%ƒ«ÿ_Wåá¢:�ÑE‹%ƒ
á'€8@,E‹äzððàÀD(±±EƒCjªªªªDC …ƒ£aªªªªDC…ƒ£aªªªªD P5PÑƒäzµµõõ-	•Pä$%ƒäzêêúÿ*'iÛ$M‹4EƒcrªªªªI'±y™»äz¤r€€<4J‚$M’ÜEƒCjªªªª<Z­9š9%ƒäz¯-�$I’$%ƒ{ªY®ñ%ƒÄrzxxxåFÿðÿû?%ƒÄr%5•Õáa…“%ƒ«àÜ’`Ç¶í8…“E‹êáÝ“‰™Ä…“E‹ÿ€€çÞ4I¯›Ä…“ƒWþªæà‚[&e“%ƒUõ¯Žçâ€*ÉS³5e‹ƒ¿¿..ßÜhŠ¶X‚5…“E‹ÝÜ‚$A’ä›è‚ªªªªÝÜ@ ä›è‚ªªªªÝÜ€	$ä›è‚ªªªªÝÜ ä›è‚ªªªªÝR0…“E‹àÝjK…“%‹ÝÜ’A‚ä›è‚ªªªªÝÜ’$ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ€Aä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜA ä›è‚ªªªªÝÜ‚ ä›è‚ªªªªÝÜ	 ä›è‚ªªªªÝÜH ä›è‚ªªªªÝÜ@‚ä›è‚ªªªªÝÜIä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜI$ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ$ä›è‚ªªªªßÜIÐI–vä›è‚ªªªªäâaB0@…“Åzªªªªäã †“£rªªªªäâd€€†“ÃzªªªªäáÐÍÐl¥‹¥Šªªªªäà¶$B�(1e‹E‹Z_µ-âß€
Ð…“E‹ÿûzzãÞs\ÛªƒÕ…“E‹Š+-áÝ-Ð¶í�…“e‹/ßÝI’	É$Ä›ƒªªªªßÞ�H�$…“e‹ªßÞ@ A�…“e‹
€áÞíÐÀŠ5…“E‹èêª*áÝ	Ð¶ã8…“E‹+ßÜ[‹¥mº¤ä›è‚ªªªªÞÜ2dH’ä›è‚ªªªªÝÜ@ ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜAä›è‚ªªªªÞÜ!$Aä›è‚ªªªªßÜk6tÛ°
…“e‹€áÞmÚ¤@3`…“e‹ˆˆ/ÿçÞnçnéä
e“ƒêêxxèß’$hR-9e“ƒÕõ--åß€¤mŽ›Øe“%ƒýï€€äáÀ
´X³5e‹E‹õ¥%%åßR³ÕÜÖe“%‹%¯þzåÞnÂÚH…“%ƒ
Šÿõä[P`E‹'Jx€ãBIÒçXhE‹ç9UWx ºCyñÿÿÓ'Æjç95ÕUWæ0@ñ”¼E‹è9­Õæ¹%ƒÆjæãMl[»¶E‹%ƒÿÿ«æãé6¬ÛÚ­E‹%ƒø¿¿þåá´ÍÄ@E‹%ƒªÿæáIb'«ÕE‹%ƒ
åáIbÛ&)@E‹%ƒ¨¾äái’&ktE‹ƒäáIÚ¤m¬¥“¥zªªªªåâm³5Û6lE‹%ƒ
®®äRX`%ƒBx€ä>IÒ'šˆ%ƒç9UWx€k(mÛ¶­?'Jç9UUõôÍ'ïðßI’${è9-ÕUUä(4ï�¼E‹B€-ÕãDu‚õ6EƒçAWx€Ó2ÿÿÿM‚9&ƒè9UUWxã/�Wþ'E‹è9µÕUæ4SE‹B-ãÝ˜"MÚäME‹%ƒàå/sñ%ƒçA^p€Ô(Iž$ý�ùåzç9UUWXä%‰™ü%ƒç9-ÕUår%‹'J	æäIB†$I€E‹%ƒªúÿÿæãm³µØŠvE‹%ƒª¿¿ÿåä’I‚E‹%ƒþþþÿæäL’�$I�E‹%ƒëÿÿÿæäd’„$††‹‚zªªªªæäaÂ�	†‹‚zªªªªæä’$C�†‹‚zªªªªåã �� 	E‹%ƒë««ÿåä’$I’$E‹%ƒ¿ªª«ä¢€E‹¦j`á
N¢þÀ
@e“BU^`€�6ùŸÿùÿfZç9UUU\ÕCñ�¤I’${ç9-ÕUUäD6§�œ%ƒçA€
•äDN">À@%‹ç9W^à€¢CI‘$I'†bç95UU\ªDh2ì©–œ¦bç9\b­•˜CIžäýõfZç9UUWp‹Pù—ù�ß&JÇ9•UUé^�sƒçAµé]@&{â$åzÇ9pXVWé^É—©`ƒÇ9•5
éÜ$)ƒåzªªªjè\ƒ=rÒ$ƒÇ9pX^Wè]IšXÉƒÇ9Õµ%
èÛ$ƒåz©ªªªèæ	H’f‹bjªªªªèæ@	0f‹‚rªªªªéæØÖµíÚ¤f‹brªªªªèæ!I’	™€f‹brªªªªèæ “�$’f‹brªªªªèæDH&dB’f‹brªªªªçå 2É„%ƒƒ*


æåH‚$I� †‹‚zªªªªæäd˜„L%‹%ƒ«ªªÿåäH$†“‚rªªªªåä@ @‚†“‚rªªªªåä�†“£rªªªªåäA A E‹%ƒªªªªäã†“£rªªªªäã€†“£rªªªªäE€0(E‹çA`pp`IE$aI¤:(BF1ªªªªRFøÿÿÿŸäBÈ9þÿÿÿIG AL&(BF1ªªªªIG 	$d2(BF1ªªªª±GÉ‘$I’$¦jç9UUUåI0�%ƒç9	%åJ�À%ƒÈ1pÀØJI’$N'{ç9UUW\­II�$I’$¦jç9UUUåI€<@!�%ƒÈ9À	%ä@Iâ$p9ƒç9UW\pD5Î
èAç9ªÿÿÿäD	‘„E‹çA
5ÕäDz=€@E‹çAVX`€X$lÂ&d’BÇ9««¯þá÷ð¿~â?e‹èA%ÕUU«ðã?ùŸÛ¦jè9\WUU$
OòäM
R	J*ªªªª¨
IþçÿoærBUUUä+±pe‹B%	ßÜhŠ¶Ø
…“E‹¢ßÜmÛ6iŠµ…“E‹äÜ¹ýÛ·ô
…“E‹`XäO€@e“gR`€ä)ÿïÿê4%ƒè9UW\p:@¶”lBç9ªú  -Ø­Þ|J{)Bè9ïïëûä49‘¿E‹è9
5ÕäÜ¬Ä	@e“%ƒ êº½äÝP-þ}î¿…“E‹¥	€äà6’He‹E‹ ¨ÖWäá-�íÖae‹E‹^XÚßäÞ õ�…“E‹UUZPääI’$I’$†“£rªªªªäã †“£rªªªªäâ"0e‹E‹ÕÕÕ5áÜè6;s]·…“e“áÜ`oqÛn…“E‹ø  áÞk›¤	Ð…“E‹‚€àºâÝ0IíàT…“E‹ÿêâàäáÉ–
0e‹E‹x^WUääI’$I’$†“£rªªªªäâ$�	0†“Ãzªªªªä: &E‹çAÀp\vˆ›¸¶]Û‡bÇ9TUUUC(â9’/ýÇ9†1


ã'I’$ÿ÷%ƒç9UU•%â.0e‹è9	áÝNlÓ¶h…“E‹ àâß°
Û–e“E‹õõÿúâáI�$	’e‹E‹€€äáIÒ6Åºme‹E‹ªWWâÞ€ I 	Å…“E‹õÿí­äáÀ:4]³5¥“¥zªªªªâá	�$I¥‹ÅŠªªªªãÝl*Ú�Õ…“E‹«­%µãÞ“=µ©e“%ƒ®®øøäÞˆP5e“%ƒ×¿/-äÜÍ_»öô
e“%ƒ€ðxäÝ¹ïÖÓe“%ƒ ªÿUäßñ` e“%ƒxz_Uä—%ƒ†Z@âÂ'àô%ƒè9UW\pD4ßc`,Àç9Ç9(((?&�ýÓÿBÇ9ÿ¿ªªã	‘„%ƒè9	%•äà‰�`E‹%ƒààøøäßP%XÙe“%ƒ­-­­âÞ±dB‚%…“E‹øþ¯/äÞ6aq»…“E‹zz  äß€H€-9e“E‹UU%%âÞ�
Ø¶'…“E‹-­
áÞ@´M’$…“E‹//
ÞÞI’$I’$Æ›ƒªªªªßÞI‚$I$…“E‹
äÞé–N©…“E‹XXXXäà	åP@e“E‹PZUUäÞ¶`sNØ˜…“E‹Zz¢¢äâ†“£rªªªªä?À�#'%ƒè9Àp\t,¸mÛöã?'Rè9\UõýN.ÄI9—»èAÇ9þþêªä1Iò$ÿùE‹è9UUÕ5å8)PE‹èA
æâ¶í8 ÙE‹%ƒçâ®�N¶k»E‹ƒðàèåÛÒ¡]Ó6f‹‚zªªªªäâ 2`‚†“ÃzªªªªäâÁ�	Ã�¥‹¥ŠªªªªæPÀ`%‹Ç9`€ä2ÉÿüL&%ƒè9UUVXI2MÂ>@#4BÇ9ª«¯¯42	0!I’éA2ªªªªã3Iž\	‘\E‹è9Uµ5µä9€&E‹çAÀp\£6ðc?öc?fZç9TUUUÕ6I’$Iœ%ƒè9UUÕ5ã7±`,E‹è9
€`ã8XÂ$I’$Eƒè9XVUUc9I’$I’GJÈ1ÿÿÿ?ä9‰ %ƒè95
ä]0E‹Ç9€`â:X²'ÿoûE‹ç9XVUUV:Iþ¤NÚBè9ÿÿÿ?èF‰y ƒçAÕ%	å:O²'X‚&%ƒè9WVX\;:H$I’ éA2ªªªª;:I’$I‚$éA2ªªªªä:1�É—äE‹è9
-•Õä:ÐH'E‹È9 ^äOE‹B	äã	’$I‚$†“ÃzªªªªäãIH †“Ãzªªªªäã$A€$†“ÃzªªªªäãI�$’$†“Ãzªªªªäã	�$	�†“ÃzªªªªèãžO±ëÄE‹ƒxð€éæÀ¬Öf‹bjªªªªèä	åP¢	‘E‹ƒðú¯¯èàR�=Z"õe“ƒ­

¯èâî�Rq—E‹ƒðð€€èåZ¬Ú6fƒ‚‚ªªªªçäÉ�É–lE‹ƒúðððéä›Ô
±�E‹ƒ_zpèãš­9˜9E‹ƒ¯çÞ’"AÐ	E‹ƒ~¾øpçÍ/ÿØ0ƒè9W\X`æ'�yõ›ƒè9	%5ÕæÖ�E‹{ª ¢è.K&@0%ƒè9^Xp`“4ñ“$I’‡bè9}UUâ!þwE‹è9Õµã7�È�ƒ&Eƒè9‹Àp\W0Èû¿ÿñ'JÈ9üÿ¿ÿèPye0ˆƒçAµ
ÂèZñkò$ƒç9€`^U�YH’$I’$FRÇ9TUUUÜ]I’$IšårÇ9UUÕ-èc‰÷
ƒÇ9µ
èã‘I‚ H$ƒåz«ªªªèç€$’f‹‚rªªªªèç@€H� f‹‚rªªªªèçI$	�f‹bjªªªªéç	‚!‚f‹bjªªªªéçdÂ0HH2f‹brªªªªéçA€!É�f‹bjªªªªéç É„$	†f‹bjªªªªèçIf‹‚rªªªªèçA’$f‹‚rªªªªèl€*>ƒÇ9àXèhPÃ'I’$ƒÇ9x^UUéhI’äyå{Ç9UUµ	ékñ@ƒÇ9-é©,ƒFZ`èfÌêó$ƒÇ9à^Uµ^hò$IžœfbÇ9\UU•ègI’¼ï0{Ç9UÕ-çR¦ €ˆ9%ƒB
€xçW€(úþŸÿƒÇ9àxWUEh²þc;’çAÇ9ôõUUÝ^ùŸÿÿûåzÇ9UUÕ-ékÉù
ƒÇ9Õ-éÓƒÅr©ªªªéç 2ƒäz¾««ªçäÍ�ÉÐE‹ƒúúúûéç	†!‘�f‹bjªªªªéèH‚$ƒäzºª®ªéèI’ 	 ƒäzêêúþéèEƒcrªªªªéè	 Eƒcrªªªªéè€ Hƒäzÿ¯««éåH� ƒäz««ªªèa€5jÂ$ƒç9Àp\WÚaO’$IšåzÇ9UUÕ5éb‰y
ƒç9Õ-é×ƒÅr©ªªªéç@	0ƒäz¿««ªèçH’$f‹brªªªªèç$@€f‹brªªªªéè	�I€ ƒäzêêêêéè€Eƒcrªªªªéç’0ƒäz««««èç�€f‹brªªªªéè	�	$f‹bjªªªªéè�IF‹‚jªªªªéèH’$H’$f‹brªªªªèç f‹brªªªªéå�$I’äØ%ƒäzªªªèæ$f‹brªªªªéçI&dB$f‹brªªªªèæI$H†f‹brªªªªèãP�ÕÐ
-E‹ƒ¯/ÿ¿äáÀ0lØÐ´†“ÃzªªªªäÞX£ÕÚ¸­…“E‹-¥•¿ßÜmÒ6h‹¥…“E‹ÝÜ € ä›è‚ªªªªÝÜIä›è‚ªªªªÝÜ�	ä›è‚ªªªªÝÜ	 €&›$„ªªªªÝÜ�ä›è‚ªªªªÝÜH$ä›è‚ªªªªÝÜIä›è‚ªªªªÝÜ‚ ä›è‚ªªªªÝÜHHä›è‚ªªªªÝÜ€@ ä›è‚ªªªªÝÜI€  ä›è‚ªªªªÝÜ‚€ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ‚ @ä›è‚ªªªªÝÜ’ä›è‚ªªªªÝÜ‚ @’$ä›è‚ªªªªÝÜA€ä›è‚ªªªªÝÜ‚€ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ€A$ä›è‚ªªªªÝÜ	ä›è‚ªªªªâÝ‰wñC…“E‹€àðXäÜRµ´íø…“E‹¥
äÜÂ&ÙîW…“E‹å…ŠÀçã„d�DAE‹ƒþüüþçâÐ`&ÍE‹ƒ/¿¿/àÝh‡¶k³¤…“e‹««àÞ“$	2…“e‹

áÞI‘m–d…“e‹ÀÀÀ€åÝBõP³9…“%‹%%%/ßÝ$I�$	2Æ›ƒªªªªßÝ$I!É„Æ›ƒªªªªßÝ!™$$A’Æ›ƒªªªªàÝCÓ6ÛÒ¶…“e‹
ÝÜA ä›è‚ªªªªÝÜ@�ä›è‚ªªªªÝÜH$ä›è‚ªªªªÝÜ@$ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜI€ ä›è‚ªªªªÝÜA‚ä›è‚ªªªªÝÜ‚@€$ä›è‚ªªªªÝÜH$ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ@@ä›è‚ªªªªÝÜ€@ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜä›è‚ªªªªÝÜä›è‚ªªªªÝÜIä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ‚ Aä›è‚ªªªªÝÜ‚ ä›è‚ªªªªÝÜ€‚ ä›è‚ªªªªÝÜH Aä›è‚ªªªªÞÝÆ›ƒªªªªÞÜ	I†$Hä›è‚ªªªªßÜé�dm±…“e‹ àÜ$AGr,I…“e‹à æà”HAñ�
e“%ƒÿÞxzæá±`’ ME‹%ƒ``zªæå @ E‹%ƒ½õõ÷åäI’$H‚$E‹%ƒ**ªªääI’$I’$†“£rªªªªäãE‹%ƒªªªªäã†“£rªªªªäã †“£rªªªªäâÀ†“ÃrªªªªääI’$I’$†“Ãrªªªªäã†“Ãrªªªªäâ!†“Ãrªªªªäã †“Ãrªªªªäâ H’†“Ãzªªªªæàö$°me‹%ƒ``xªæä€H"%‹ƒ•¸ãß"dŽ)Ç…“E‹_Zâ‹äÝNZ›$`…“%‹‚ª××æßDa®ðTe“%ƒ×ßzàæÞÎÉ¶’$…“ƒ‚ªÿ_æäH€$E‹%ƒÖÖõ­åä’ @‚$E‹%ƒ«ªªªääI’$I’$†“£rªªªªäã€†“£rªªªªäã $†“£rªªªªäã†“£rªªªªäà€¶Ce‹E‹UUPPäÞhP;:…“E‹UU¥-äß€»¶é”
e“E‹¥­xXäß’«Å��9e“E‹¥äá0�†“ÃzªªªªäàPÅe‹E‹UUäã$†“£rªªªªäã†“£rªªªªäã€†“£rªªªªåâk²µÛ6E‹%ƒªêæâE‘�#8E‹ƒ¨(
ãâH‚$I’$¥“Å‚ªªªªæâ	¡E‹%ƒà``pèæaB$$“$fƒ‚‚ªªªªæä`È$$	E‹%ƒ««ÿÿåâXƒ%X»¦E‹ƒäáMÛ¦C³ue‹E‹¢ªõõåá‰í˜”$@E‹%ƒ¨¾åä	$E‹%ƒªªªªæâ1•¤@E‹ƒ€€ èçå!† I&Æ‹âyªªªªæä �AE‹%ƒ«ÿÿÿæä!I�$	’E‹%ƒªÿÿ¯æâ
À€(E‹%ƒ*??/ßÜØ€h‡¦…“e‹‚âßP�®e“E‹^þþ¨ãàÀ°
Û�¤e‹E‹ïêêåÜRõP¯9…“%‹­--ßÜÀÚ¦iÛ´…“E‹ÝÜ@‚ 	 &›$„ªªªªÝÜä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ	� ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ	 ‚ä›è‚ªªªªÝÜ	 A€ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜä›è‚ªªªªÝÜH‚$Aä›è‚ªªªªÝÜHä›è‚ªªªªÝÜA ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ@�I ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜHHä›è‚ªªªªÝÜH$Iä›è‚ªªªªÝÜä›è‚ªªªªÝÜH’ä›è‚ªªªªÝÜA ä›è‚ªªªªÝÜ �ä›è‚ªªªªÝÜ$@ä›è‚ªªªªÝÜ	’$ä›è‚ªªªªÝÜA‚ H€ä›è‚ªªªªÝÜ  ä›è‚ªªªªÝÜH ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜ 	ä›è‚ªªªªàÜ±a[±a…“E‹€€€€æÜ€ô@#±…“%ƒ'%%¯çÝ±›S1áe“ƒ èø~çá-AE‹{
//¿âÜc[Ûj‘…“E‹
©ßÜM›¶M…“E‹
àÜ¶à˜ŽE[…“E‹à€€€äÜš¯5
¨…“%ƒ./§ßÜM›6i³
…“e‹¢èÜo™›ïV
…“ƒ¨ øzçå@€f‹‚rªªªªçÞ&©ª/>…“ƒß¿++àÝKÐdIºm…“E‹‚‚ªæÝ4i¶m?…“%ƒWÿª
æÝ°I®�—…“%ƒU_zàæãÀ`Û�$E‹%ƒÕUÿçã¤$JSE‹ƒúþÿèèåÃ6lÝÖ¦f‹‚rªªªªèåk·­–f‹‚rªªªªèædH0 	�f‹bjªªªªèæ$ÈF‹‚jªªªªèåíÖµÚ-%ƒƒªªººçáÀIÉä”E‹äzÿª €çäÀ°
í�E‹ƒÿÿúúèæ$H€F‹‚jªªªªçà�I’­=E‹ƒý¯çä°a,%ƒäzªª((çá¤IÉ”LE‹ƒýÿðàçæI$I’ f‹‚rªªªªçæ	�I’$f‹‚rªªªªçäX·u[²6%ƒƒªªª*æäI’$	&%ƒƒ
åã$’$I’E‹%ƒ½ýýÿä; @E‹äzÀ€ŠŠK(9—S9Oäz¤r€€DCäzÄzªDC äzÄz
D-€
ˆ�­&%ƒcjªªªª:'¶´AÀ,9EƒCjªªªª-'pÛslgEƒcrªªªª4'ï÷@úEƒcrªªªª=($ER$EƒCjªªªªJ�9š#>%ƒÄz--I’$I’$†‹‚zªªªªYññ%ƒÄrxxxxZC  äz¤r****ÜðÏñ\…“ƒ	-==ÝÜH€ ä›ƒªªªªÞÜ	$	Ã0ä›è‚ªªªªÞÜA2	™�ä›è‚ªªªªáÜÒänåT…“E‹Š€€€æáB=ÔCÛ:E‹%ƒäÜµ/þ�#õ…“E‹
ÝÜ ä›è‚ªªªªÝÜ  ä›è‚ªªªªÝÜ@H$ä›è‚ªªªªÝ@,…“E‹`ÝÐƒ&}’$…“%ƒpX^W&‰�$I’$E‹%ƒ/ÿÿÿÝ�TI’$…“%ƒ-ÕUÝ î�ä…“%ƒõÝs�	…“e‹ÝÜ	ä›è‚ªªªªÝÜ€A ä›è‚ªªªªÝÜH’ä›è‚ªªªªÝÜ‚ ä›è‚ªªªªÝÜI  ä›è‚ªªªªÝÜ	€ ä›è‚ªªªªÝÜ€@ ä›è‚ªªªªÝÜä›è‚ªªªªÝÜA’$ä›è‚ªªªªÝÜA ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜä›è‚ªªªªßÜmÑvmš¶ä›è‚ªªªªäÜ0¥�N…“E‹UWXpäã�$†“Ãzªªªªäà	‘�-&…“E‹Õõõ­âà @’ �e“E‹ÿÿÿzäáMÒ¦k‹µe‹E‹
Š¯µäái×mÝ¶ae‹E‹øþþUãàÛ2¬6¬e“E‹µÕUUâÝ¶Öjš�:…“E‹ ª+ßÜë†mÚ&ä›è‚ªªªªßÜÛ¶aíÖ¦Ä›ƒªªªªÞÜ	† 	ä›è‚ªªªªßÝI�DB2…“e‹ßÜÛ°mÛ†-Æ›ƒªªªªÞÜ 	2I‚ä›è‚ªªªªÝÜ	$ä›è‚ªªªªÞÜd’$ä›è‚ªªªªÝÜ@’ ä›è‚ªªªªÝÜH€ä›è‚ªªªªßÜÙÖn)ÖvÄ›ƒªªªªßÞI�$I’ &›$„ªªªªåÞ÷7K…“%ƒøxxøçâ±`OîTOE‹ƒàðððæâPÚ¢-ÛE‹ƒåá¤%H¢íÄe‹%ƒŠª
äáX,¶me‹E‹%5Õ×åß)‘íÀRe“%‹xxzzæäd& I‚E‹%ƒ¯¯ÿþæák¬µÐ&iE‹%ƒ
+¯åâÙ¶
Ý°mE‹%ƒèèêªå@¢ˆ%‹B^àä/Éÿüëõ%ƒç9UU^päC'�TIš$ƒç9	5ÕUå›%‹†bæä!‘€I E‹$ƒêúþ¾æâ‚$A¢è8E‹$ƒÿÿªæã[‹mØÖ´E‹%ƒ¯ÿÿ¨åã €H&E‹%ƒ¿¿¿
ääI’$I’$E‹%ƒªªªªäâ@’E‹ƒŠ
äßÀµ�Åe“E‹UU¥¥äâ@E‹ƒ((¨¨äák³¦ØE‹ƒ
ä(â¨E‹B^àâ'Iò$ë­EƒèAUU^àN'IòÛäIBÇ9ªªÿþâ/§�˜ÿÿ?Eƒè9µUUä2€(ž�tEƒè9€µäDN":À
%ƒç9W^à¯0ú'Ï�þ¦bè9•UWXá>É›$E‹ç9-ÕUå_E‹'J-ä\À@E‹gR`äÉMß
`Eƒè9U^x€ÌE9‘ÄIâ$åzç95ÕUWåJ@©�œ%ƒçA-•æÙ IE‹ƒêêª©åã�H2E‹%ƒÿ¿¿ªåà°IÉE‹%ƒÿª àæä!!HE‹$ƒêúúúæäI2C2E‹$ƒÿ¿ªªåâÀ0)�E‹%ƒÿÿøàæå		’$f‹¢zªªªªæäIÂ0$�E‹%ƒ«¿¿ÿåã$C’$IE‹%ƒ*ªªëæß	yã$Ie“%ƒúz_åD˜ˆ%ƒç9xÀåCIò$kñƒç9UU^`KCÿÓöRðç9Ç9

äD�SIš$%ƒç9%ÕUæG˜ˆp
%ƒçAx€
ºDIâ$x‚'¦jç9UWTTäDž‰•¤{Ç9‹
5Õç_~‚5&ƒÇ9Wx€Ü`Iž$N>ÅrÇ9UUWXç^Iž„I‘åzÇ9U•5%èÃƒ¥jèYìÐ£&ƒç9À`X\åYÿÿßÉ—ƒÇ9UU•5è’0ƒ&RèæH†™0f‹‚rªªªªèæ$‘0$2fƒ‚‚ªªªªèæ!I2I�f‹brªªªªçæ$@ fƒb‚ªªªªèæ$€$“�f‹‚rªªªªèæ 	†$I†fƒ‚‚ªªªªçæ‚ H‚$fƒ‚‚ªªªªæäÁ„IÂ$E‹%ƒÿ«ªªæãÛÐnm×6E‹%ƒÿªªªæä 2a’$E‹%ƒÿªªªæä A’$“$E‹%ƒÿªªªåãA†E‹%ƒªªªªåä€H’$E‹%ƒªªªªåäA$I’$E‹%ƒªªªªä§ E‹¦j@äDâôÄ%‹è9*ÕäDìØÃ'E‹çAÀ`XWDC	(Bf1ªªªªEC$@dH’(Bf1ªªªª±DI’äI�„¦jç9UÕ•åHç3èE‹B]b€ÇDI’$O‚'årç9UUUT°DI�$I’$¦jç9UUUåD0�%ƒè9	%åJ€È%ƒÈ1pÀØDI’$N'{ç9UUW\­DI�$I’$¦jç9UUUåD€<@!�%ƒÈ9À	%äDIâ$r9%ƒç9UW\pDDI’$I’$(Bf1ªªªªäD	‘„E‹çA
5ÕäDz==E‹ç9VXpxD6Pè9ç9«ÿÿÿD6±è9ç9ªÿÿÿŠ¶_ûõSÇjè9UUÕäÉe‹B%	äß[ƒ9ö”e“E‹--zPäÞñVn‹9…“E‹xz­%âÜP5£Ã¶…“E‹

äÝ÷ñð
…“E‹XXXXäáÀº.e‹E‹UUÕ?äc€e“‡bBâÉßÿàðe‹BUW\p8¤@
¶ùÄ)Bè9ûªD$hÓì:Bç9ÿ¿®*ãð‰•ÄE‹B
5ÕäÊš°…“%ƒàððûäâ	@�†“Ãzªªªªäâ€	À„†“ÃzªªªªäßÉP…“E‹PZUUäâ@†“ÃzªªªªääI’$I’$†“£rªªªªäÞP9šƒµ…“E‹%­âÝÉæj’$L…“E‹ ¨ÿ¯äÝ9çÜHö…“E‹pZ÷¯ãÜP­9´ïÿ…“E‹-
áÝI˜D	‘P…“E‹€€à äáÃ64Ö…“Åzªªªªäã	’†“Ãzªªªªä8€&E‹è9€`X‘,øŸüÉŸü¦bè9TUUU4'¨Éœ|Ø¿ç9¦1    Ü*ò'ÿùåzÇ9UUÕ5ä-!@%ƒçA
ãß"#Š Be“E‹+ÿ__äÞNÙr“$	…“E‹àúUUäÞñ”¥FŠ…“E‹xX^×áÞëÐt…“E‹ÿëâ¢âà @‚$˜e‹E‹ê ª°âÞb,:bÆ…“E‹����ãá0C�¥“¥zªªªªãàmÛµÀ64e‹E‹ª¯õ
äàtB’DAE‹%ƒº¸äßé´nÛ0AE‹%ƒ€€àêäáÀ`°
E‹%ƒ/¿ÿÿäß‰à0e“%ƒzzääI’$I’$f‹¢zªªªªäßl˜ÕE‹ƒ¿+äà	•HHˆE‹%ƒ  ¸.àl€@e‹‡Z@ã ÿßÿh9%ƒç9UW\pB "	lÓßæBÇ9ÿÿ¯¯D.¶#€Dè9Ç9ªÿþþä)ÿð%ƒç9	%•äâ€B€E‹ƒ+?/*âÞrâØŒ@…“E‹¢zzäÞ1U
4m…“E‹xZUÕäß�
a®–¬e“E‹ÕUZðàÝk·®h»¦…“E‹ßÝI’$™„Æ›ƒªªªªßÞI€I…“E‹€€ªâÞ�#%v’Ø…“E‹//
 äÞö�©�…“E‹XXXXäß¨�%…“E‹UÕ¥%äÝ5e±ð
…“E‹zZXXäBèÐ£'E‹è9€àxVc<øó?ÿÿÿ'JÈ1üÿÿÿB1O™¤ éA2ªªªªã2Iò$øe“è9UUÕ5ä=!@E‹B
äâ`H†	†“ÃzªªªªåâØ¶mÛ†-E‹%ƒªª*
åâÛÐí�E‹%ƒªàà€æäH‚$À$E‹%ƒ×ßÿªåá$ A-9e‹%ƒúº*
åà°BõæØe‹%ƒú åá@&SE‹%ƒðð ä6€E‹èA`Àà3I’$L&e“è9UUW\52iºµÃ¶µéA2ªªªª\2É‘üÉŸü'JÈ9?ÿÿÿ‡8H’$I’$gZè9TUUUÕ6I’$Iœƒè9UUÕ5ã5±`,E‹è9
€`â6XÂ$I’$Eƒè9XVUUb7I’$I’'JÈ1ÿÿÿ?ä:‰ %ƒè95
ä9,E‹è9€`ã:X¾$I’$Eƒè9XVUUc:Æ�·Ÿ¤BÇ9Õÿÿ*ä:É• E‹B•%	èc @ƒ&ƒÇ9Àp\’:ðÓúmÝ¶FRÇ9TUUUo:I’$OâƒGRè9UUU…;:@$I’ éA2ªªªª;:H$A‚éA2ªªªª;:I�$	 éA2ªªªªã:‰�É�E‹è9%%%äãH� 	� †“ÃzªªªªäãI’$I�$†“ÃzªªªªäãA’H†“Ãzªªªªäã	‚$I’†“Ãzªªªªäã	’A†“ÃzªªªªäãH€I†“ÃzªªªªéæÐa–mf‹bjªªªªéçC2Â„f‹brªªªªéäNëJ› %‹ƒºú_Wéä‰[o’IE‹ƒðûÿÕèäN’$¢E‹ƒÿÿèãñæª’
¨E‹ƒðº¿õéà¶�Oé¼e‹ƒPpÀ€éã˜ƒÕ;±E‹ƒ--÷÷èã±à
¶foE‹ƒðøððèƒ€`Ie“FZjªÝ¶[Ûû&f‹è9UWVXç;à·”ü%ƒè9	
õèPþ|ž$ƒBP\VUã4	‘PhE‹èA%
ƒã8È˜Ó'E‹è9€àxW©7L’$Iž¦bè9VUÕ%f7IœÄOŒÄ'JÈ9ÿÿÿü·UŸÿùŸÿ†bÇ9sUUUxZÿó?ÿc&JÇ9UUU•çYI’˜©0ƒÇ9U•-è’! ƒFR	èç�f‹‚rªªªªèçI ‚f‹‚rªªªªèç$H’$f‹‚rªªªªèçI�I€ f‹‚rªªªªèçI‚€f‹‚rªªªªéç$!’F‹‚jªªªªéç$€H˜$f‹bjªªªªèçH$	’ f‹‚rªªªªèç	’ �f‹‚rªªªªè¥(ƒfZ`è`ñsò$ƒÇ9€`^UÃ_ÌŸüÉ�¥jÇ9WUU5éjÉƒÇ9Õ-éË(ƒÅj`é`hXß'{Ç9€xWØ`˜ß?I’äÅrÇ9xWUUç`I’ÄyÕƒÇ9UÕµèe1AÌƒÇ9-
àébÑt’$ƒÇ9€x^U�XpòÿÿÿÿFRÇ9\UUUÉ]ÉŸüÉ�¥jÇ9UUU5éeISƒÇ9Õµéµƒ†b	éç	�$ÉF‹‚jªªªªéçdB&`BF‹‚jªªªªéç$$@ƒäzªêêêéçIH‚ƒäzªªª¯éç	I’	F‹‚jªªªªéè@$	 ƒäzª¯ÿêéèA$$ƒäzªª«¯éè@�$ƒäzþ¾®¯éç$È„ƒäzÿªªªéè€I’$ƒäz¯ªªªéaÈ9åzÇ9€À`xÍ`O’$IšÅjÇ9UUÕ5èe©PƒçA
éç @‚$‚ƒäzêêêªééI’$I’$ƒäz¿¿¿þéç$C�ƒäzªªª¯èçA‚Hf‹brªªªªèçHH€f‹brªªªªéè� ƒäzêªªªéè	� ƒäzÿêêêéç��ƒäz««««éç!˜�$I’f‹brªªªªéèI’$@$F‹‚jªªªªéèI‚$I’$f‹brªªªªéèI’$A’$f‹brªªªªéå,)’,É%ƒäz****âÜØD§sŠM…“E‹«ëèâ¦JádJE‹äzø àøèä I´Ã8%‹ƒÿÿèãÐªÙµc'E‹ƒ¯æÞ#9mYN…“ƒ%/ªêäÝ¿ÿ'«Ð…“E‹%ÞÜ@’I’ä›è‚ªªªªÞÜ$É�$C�ä›è‚ªªªªÝÜ‚@‚ä›è‚ªªªªÞÜI�ä›è‚ªªªªÞÜ	É�$À…“E‹ ððßÝIB&$H�…“E‹
+¯ßÜm²mÃ¶mÄ›ƒªªªªßÜmÚ5ºmÄ›ƒªªªªÝÜ€ä›è‚ªªªªÞÜ!™�C�ä›è‚ªªªªÝÜ’	ä›è‚ªªªªÝÜ€€ä›è‚ªªªªÝÜH€ä›è‚ªªªªÝÜI�ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ$ ä›è‚ªªªªÝÜ	� ä›è‚ªªªªÝÜIA ä›è‚ªªªªÝÜ� ä›è‚ªªªªÝÜ€� ä›è‚ªªªªÝÜA$	ä›è‚ªªªªÝÜ@�ä›è‚ªªªªÝÜ‚A€ä›è‚ªªªªÝÜ�$ä›è‚ªªªªäÜ/ð
÷¼…“E‹XXà€ãÝM2;P-Ô…“E‹%%åÝñ¹™˜…“%ƒðð€€çå@E‹ƒÿÿþþçß’#9�
©e“ƒ--½½àÜŒES )‘…“e‹€€ª«ãÝB-5¤i›…“E‹%%Š€åÝnß“$H…“%‹¨××äÞ­c×.Ô
…“E‹
 ZZàÝm³¦h‹¶…“e‹ÞÜ€0Ä›ƒªªªªßÝ ’	™$Ä›ƒªªªªßÜ[‹-[Ó¦Ä›ƒªªªªÞÜ$2 I$ä›è‚ªªªªÝÜ‚	€$ä›è‚ªªªªÞÜ!†$ä›è‚ªªªªßÜmÓ´M
¬…“E‹ÝÜ€ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ@‚� ä›è‚ªªªªÝÜH€$ä›è‚ªªªªÝÜ@Iä›è‚ªªªªÝÜä›è‚ªªªªÝÜ	�ä›è‚ªªªªÝÜ€‚ä›è‚ªªªªÝÜ @’ä›è‚ªªªªÝÜI�ä›è‚ªªªªÝÜ	‚’ä›è‚ªªªªÝÜä›è‚ªªªªÝÜI@ä›è‚ªªªªÝÜA 	‚ ä›è‚ªªªªÝÜ‚’ä›è‚ªªªªÝÜ� ä›è‚ªªªªÞÜ$2D’ä›è‚ªªªªáÝ¡m›¶m…“e‹àáÝŒmÇ¶
Ù…“e‹åÞ17“…“%‹øXXøåÞ6eýéÄ…“E‹ZZâ‚æä	 @E‹%ƒš•VVæàvÚ¸Ú…“%ƒªªÿUçäÙÚu]‹uE‹ƒ¾¾¿¿åäH‚$@$E‹%ƒªªªªääI’$I’$†“£rªªªªäâ$’†“Ãzªªªªäâ@I˜$¥“¥zªªªªäâ	 €E‹%ƒ****äàŽàP$	™e“E‹Zzýõäã†“Ãrªªªªäâ€ †“Ãrªªªªäß°	¶�e“E‹UUZPäá
 `†“Ãzªªªªäßö�É`…“E‹ZpZZåàš#9’Ô	e“E‹µµUUæá±@e“%ƒzzßÕåßX¢ÕìFn…“%‹-­ûûàÝÖ´X‡¶…“e‹ºàÝ+°¶kÒ&…“e‹àæÜ&pO·m?…“%ƒxðæÝP)Öîÿ?…“%ƒ­åÝÄI·�?…“%‹Wÿ¨äÝ°î�S…“E‹UUZpåß’mX3:e“E‹UU%-äÝ@©ùõÿ?…“E‹¥­
äÝÀm¶�ä…“E‹UW¨äÜ$imí'…“E‹UÕ*àÝhÛtM›$…“e‹ƒ€äÜ Iný<…“E‹WWäÜP­µõ�¿…“E‹%-äÞié¶”@Me“E‹€€WVäã †“£rªªªªäÞ«Ùtâ$…“E‹¥­
äÝ‚°In�<…“E‹UWªäÝ0mn�;…“E‹UUªåÝ0Iµ›»…“%ƒ_ÿ€€æá@#m“4iE‹%ƒ
/¾¾äâI’„LÈ¥‹¥Šªªªªçâ±ÔJ•$HE‹ƒàðþÿçæ	’$	’ fƒ‚‚ªªªªæä$H"$2E‹ƒ«+++ãá ‰0$I2¥“Å‚ªªªªåá¶m›±de‹%ƒ àåäIHE‹%ƒªªªªåâ¬XŠµE‹%ƒª*

æâ¦äH&D@E‹ƒàààèæä$	 $%‹%ƒÿ¿¿ÿæå	�@$†‹‚zªªªªåã@$�E‹%ƒ+/åá#1¤ìˆe‹%ƒ*
  ßÜh»¦h‹4ä›è‚ªªªªßÜÖ¶iÛ¤ä›è‚ªªªªßÜÛÐ&m›µä›è‚ªªªªßÜX“&MÓ¦ä›è‚ªªªªÝÜä›ƒªªªªÝÜ €&›$„ªªªªÝÜ ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ$€ä›è‚ªªªªÝÜ Aä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ’ä›è‚ªªªªÝÜ@ 	ä›è‚ªªªªÝÜ€ ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜA’  ä›è‚ªªªªÝÜ‚Aä›è‚ªªªªÝÜ� ä›è‚ªªªªÝÜ$€ä›è‚ªªªªÝÜI@ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜA’ä›è‚ªªªªÝÜ€$A$ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ@	ä›è‚ªªªªÝÜä›è‚ªªªªÝÜIä›è‚ªªªªÝÜ	$Aä›è‚ªªªªÝÜ@€Aä›è‚ªªªªÝÜ@€$@€ä›è‚ªªªªÝÜ@ ‚ ä›è‚ªªªªÝÜ €ä›è‚ªªªªÝÜä›è‚ªªªªæÜyS÷p…“%ƒ àppçân›N®àVE‹ƒàpp`èä1%�”d’%ƒÄzþ×W_çæH%ƒäzª««¯çã$
	
&E‹ƒ*ÿ¯æßc¬4He‹ƒ
-÷ÿçÜ~\»Ú …“ƒ‚ÿ_çá!mjš$E‹ƒ(¸þÿçÞŽÛV›$@e“ƒ êWçå!É%ƒäz ªª€èæ!’$I’f‹‚rªªªªçâ˜´À@E‹äz«ªºæäIH‚E‹%ƒªUUýæÝšÕ‚A…“%ƒ/¥ÕÕàÜ&åØt	…“E‹€ëåÞÿÿ?7…“%ƒª¨ÿWæß±—»ä�9e“%ƒè¨¯-æÜ9¤CÚ…“ƒ¥/
*èÜ¥S¹ûä…“ƒzà€çÜ m­ûÄ…“ƒUÿª€èã’4I…”¶E‹ƒÿÿ÷ªèä’@’‚%ƒäzªªª çáb,ÆeE‹ƒàpçäP€5%ƒäz¨¨ª
èåÝ¶m–´%ƒä‚ªªª¨çàà�åX®åe‹ƒ



çå€€%ƒäz(¨¨¨çå	I�$I’%ƒäz ªªªçæI’I’$f‹bjªªªªææI’$I’$F‹‚jªªªªæä 	2%ƒƒ+¯ÿÿæä 2`2f‹bjªªªªäã€%ƒƒªÿÿäâ%ƒƒªÿ¿âAM¢'h‚%ƒ¤rþü\XDCÄr¤jD8 ,äz¤rªª¯¯4'¨ÍÿLÞüEƒCjªªªª-'Ç¶mÛEƒcrªªªª-'¶‘¶i»Eƒcrªªªª;
�ùÛÆ	%ƒäz%¥ÿP
ñpO›¯9%ƒÄrøø¯/P˜£9öc?%ƒÄrI’$I’$†‹¢zªªªªZññ”“%ƒÄrxøøðY&�µï$%ƒÄrÕÿªÝÏñ9�…“ƒ=-ÝÜA‚ ä›ƒªªªªÝÜ€$ä›ƒªªªªÞÜ!C&ä›ƒªªªªßÜMÛ¶ÝŠaÄ›ƒªªªªßÜ–ÙÖm…“E‹¨ßÜÃÚ´MÚ´…“E‹ÝÜA Aä›è‚ªªªªÝ–0…“e“@Ý`ß'…“%ƒà^½àó$I’$e“%ƒxWUUI’$I’$†‹‚zªªªªI’$I’$†‹‚zªªªªI’$I’$†‹‚zªªªªI’$I’$†‹‚zªªªª¤¹‘$I’$e“%ƒ=UUUÝ�RIž$…“%ƒ)ÕUÝ�¤…“%ƒ½Ýž�…“E‹ÝÜ@$�ä›è‚ªªªªÝÜ€$ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ@’ ä›è‚ªªªªÝÜH$A€ä›è‚ªªªªÝÜI€ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜH@€ä›è‚ªªªªÝÜI	ä›è‚ªªªªÝÜä›è‚ªªªªßÜéÐ¤m›¶ä›è‚ªªªªßÜÐ4iÚ¶ä›è‚ªªªªßÜÖ¤í�…“E‹€€äÞ1‘Ä�…“E‹xXW×äÜ€$M´Ù§…“E‹Uu‚€çà“6aÛ5E‹ƒþ¾.äÞ˜8²´í8…“E‹Õ½ªÞÜƒ0`�…“E‹áÜ±§Næ…“e“@äÜ�Ý¶’h…“%‹¨¿µßÜÛ¶mØŠ%…“E‹ÞÜÄ›ƒªªªªÞÜ€„Ä›ƒªªªªÞÜÉ$@ä›è‚ªªªªßÜmÛ$h³µä›è‚ªªªªßÝ	’!˜�Ä›ƒªªªªÞÜ$‰„ I’ä›è‚ªªªªÝÜ€  ä›è‚ªªªªÞÜd@’É„ä›è‚ªªªªßÞA�$	’$&›$„ªªªªãÞé�Lñw…“E‹Xxø æß¥àn¾ýØe“ƒzú€€æâ�#1¡i›E‹%ƒ	€åáv"Ñ‚‰e‹%ƒ
®«ãàÛ¶µÀŠ5e‹E‹ª
-âß°kº¥e“E‹ë‹ŠæãÖmÝš¶E‹%ƒþþ¬¨æãÃº­[Ó6E‹%ƒ¯«**äÞÀ¤‘µ»¸e“E‹U}â¢åã’!†E‹%ƒ¾ª¨¨äŠ€@E‹fZ`€ã4ÿßÿê=e‹ç9UW^xå4ð
ÿ�|%ƒè9	
%µåÜ$iR-:…“%ƒ×¿/áÜØ6ÛµÇ…“E‹«äÜ%Oyûü…“%ƒúà äÝX)Úþ�¸…“E‹õ­Šàäâ$E‹ƒ((¨¨äâÁE‹ƒ€ ªäá@¬E‹ƒ
ªäãE‹%ƒªªªªäâ@�E‹ƒ
ªäãE‹%ƒªªªªäÒ"€@E‹{@äFtñE‹Ç9^ø€Þ3ò'ôõ%ƒç9UUWxT›°�Z-:BÇ9¿¿¯+äàNÿ›äE‹BµÕUä3À@�%ƒB`-ä1B'`%ƒè9U^ø€�¶áçÉ½»Çjè95ÕU^ä4à	÷ä%ƒè9µUåƒ�E‹fZ	äIjÌE‹ç9^à€á4ÿÿ'|‚9E‹ç9UUWxä?�SIš$%ƒç9%ÕUåX�
%‹J-æãI×mVlE‹%ƒêÿÿÿæä!	‚A’f‹¢zªªªªæäd’E‹%ƒ¿ÿÿÿåß,7¶Xµe“%ƒê«¯­æãÝVlV`E‹%ƒÿþþþæá�&iZ£ÅE‹ƒ¿ª

åà�°	ñ`OE‹%ƒëêà æä$A$™„E‹%ƒÿÿÿêæäC�$™0E‹%ƒÿÿÿ¿åÁ€%‹årjåDM">€
%ƒç9Wxà«CI’$O'¦bç9UUU\®D	‘äI’$¦jç95UUUvDøÿüÉŸüJÇ9\___²KI’$R0¦bÇ9UU]cçR�
‰—äƒÇ9-µUèe Ô	{Ç9`ÀØY‰‘„NÂ$ÅrÇ95•WVçZ`”;ƒÇ9€ã}¨YHò$IžfZÇ9TWÕçY)`ƒÇ9
çæ’fƒ‚‚ªªªªçæ fƒ‚‚ªªªªçæ@€ fƒ‚‚ªªªªçæ Hfƒ‚‚ªªªªèæ$I†d’fƒ‚‚ªªªªèæ$2 H&f‹‚rªªªªçæ fƒ‚‚ªªªªçå 	2 C0Æ‹âyªªªªåäH’$I’$E‹%ƒªªªªäã@†“£rªªªªääI’$I’$†“£rªªªªäã †“£rªªªªäã†“£rªªªªäã@†“£rªªªªääI’$I’$†“£rªªªªäC€,ÀèE‹ç9```@DC@(Bf1ªªªªDC€(Bf1ªªªªDC€(Bf1ªªªªtCI’$I"GRç9UUUIDC�@(Bf1ªªªªäD�I‘¤%‹ç9
5ÕäDÐèE‹BX`€ÆCI’$O‚'årç9UUUT­CI�$I’$¦jç9UUUäC0�E‹è9	%äD€È%ƒÈ1pÀÙDI’$N'{ç9UUW\«CI�$I’$¦jç9UUUäDL@�%ƒÈ9À	%äCIâ$r9%ƒç9UW\pDC (Bf1ªªªª�Ch’$I’$fZç9\UUUDC€(Bf1ªªªªmÛÚõS§bè9UUUâ5e‹B%
âÞ‰�˜¶ …“E‹  zzäÞ±P“ I…“E‹XZUUäß@
Ì�£&…“E‹µµ¥­ãßt,’@€e“E‹ªÿU×ãÜÀIµm?…“E‹^ºàÜ�HÛŽí˜…“e“äÜÿýÛñd
…“E‹pXãse“§b@ÝIÂ$`0¥“(BUW\pÓ”dI”)BBwêjjDqç	6`Bç9¨úþþä!p‰•ä%‹è9
µÕäÅE‹%ƒª €�äß˜�9Ðh…“E‹¥¥µÕäâ’I˜$¥‹¥Šªªªªäá¬ÀŠ5e‹E‹UÕµ%äáÐ)Ðe‹E‹_ZX^äÝíÖŽ`?>…“E‹úú-	àÜ IÇ¶CR…“E‹ßÜÃš´mŠmÄ›ƒªªªªàÜIlÓ¦D…“E‹ ¨äÜ¿ÛöÔ
…“E‹`XäÞé�
…“E‹XXUUä-€ÀŽ%E‹è9€`X¥,xâ'ÿÿÿ¦jè9TUUUD vÛÚZ
9è9ç9 ªª+Ó%I’$IšÅrÇ9UUÕ5ä-)`{Ç9
äáéÖn[‹¥E‹äz«¯¯+äß«£ÆÒ*Ae“E‹©-ÕUâßÐmI×…“E‹ÿêâúäá@»6mšte‹E‹µ-ŠàäÜ¤­5’õ…“E‹
-%ãÜ®pwûü…“E‹xp€ãÝP«‘¦…“E‹­µZxâáA’$H‚$e‹E‹¬¨««âÜ«5b-Ö…“E‹-äÝ.S1…“%ƒúøxxäáC‹5@‹µE‹%ƒ*äámÓ6Û2lE‹%ƒ¾¾äßµ±Ð
E‹ƒààààääI’$I’$f‹¢zªªªªäáÀ
¶.E‹%ƒ¯ÿ¿*äÞ-¶íSE‹%ƒ€€äâ!A!‘�E‹%ƒ¨þøøä_€@%ƒGJ@ä Éïüò9{è9UW\pD m´í'BÇ9ÿÿ*D9úö“$BÇ9/+ãð¹�[E‹B	%•áÝ2I:´‰…“E‹¢«àÝ–4I’n…“E‹ªßÜØÖ6iŠ­Ä›ƒªªªªÞÜ’!�ä›è‚ªªªªßÜi×tël…“E‹
ãß(ˆq;e“E‹××âÞ¶dC‰™Ä…“E‹úú €äßñ` e“E‹PZWUäß˜ƒµÀme“E‹¥UUä;èÐ£'E‹B€`XVX;¸mÛ¶�$BÈ9üÿÿÿB)IX»>Bè9ÿÿÿ¿â/ÿÿÿÿ™E‹è9UUÕ%äC!@e‹B
åá–DIše‹%ƒ¨¨¨åß’ MZË&…“E‹UUå�åâ[‚%Ã–E‹%ƒ

ª¨äáI×´[‹µe‹E‹àªµµäâ$™0	HE‹ƒ ãàØº6ÛŠµe‹E‹+
++âßm‘tÛl…“E‹êêúÿâá	�A�e‹E‹è ¨¨âá	€¥“Å‚ªªªªã3@ E‹BpÀÞ3I’$M‚&E‹è9UUW\931S¡à
éA2ªªªª99I’$I’$éA2ªªªªã8±�±–<E‹è9
	�uâ5X²$ÿÿÿEƒç9XVUUX,¶mûµSGJÈ1ÿÿÿ?â.‰ e“è9µ
ä:,E‹è9€`ä9X²$I’$Eƒè9XVUUJ9ÿÿÿÉŸBè9ÿÿÿ?ä:É• E‹B•%	äD €ƒ&E‹ç9Àp\‘XøŸÿùÿÿFRÇ9TUUUã`I’$Iš{Ç9UUÕ5è[1V%ƒç9�ç:O2'à/û%ƒç9U^\VL:Iò$M‚>è9Ç9ªªªª;:I$A’$éA2ªªªªä:)�É—äE‹èA
%•Uä:Hòÿ$E‹è9 ÞUä;E‹È9	äãI’	†“ÃzªªªªäãH’$‚$†“ÃzªªªªäãI’$I�$†“Ãzªªªªèãvì¸qE‹ƒ€ððèä H¢-'E‹ƒÿÿ¯éå%R–R%ƒƒªªêêéè @Â‰¦{ÿÿÿÿéè€ Â‰¦{ÿÿÿÿéèH @ F‹‚jªªªªèæ ‚ %ƒƒªªºúèßu¼º’Ae“ƒ‚‹ýUèÝ‚6±cÏ>…“ƒ÷¯+
çÞœTJ±”…“ƒ~zxpçÞ¢ƒõ›(Ae“ƒ-¿ßáPè…“(Jp`€„’$O‚$ÇjBUUUT*É›öû¤HJB•uUU‹.�ÿù
gZè9àWUV7I’dI„Ä'JÈ9ÿ¿?üá!'0€BS'%ƒB
ÂpWn0øíßùŸÿ'JÈ9üÿÿÿb7À	ïè9Ç9WzzèeyåƒÇ9µ	èç€A‚ f‹‚rªªªªèçH€$A‚f‹‚rªªªªèç� f‹‚rªªªªèçA€A‚ f‹‚rªªªªèçA�I�f‹‚rªªªªèç	‚ I’f‹‚rªªªªéçLH†$AF‹‚jªªªªéç$	&�F‹‚jªªªªèçI€$$f‹‚rªªªªèç@€$	’$f‹‚rªªªªè`@À¬&ƒÇ9à^ã_˜Ã'I’${Ç9xWUUè_I’Ä9U{Ç9UÕ%èq©0ƒçA
è`@='ƒÇ9€à^å`O'I’$ƒÇ9x^UUè`I’$‰y
$ƒÇ9UUõ-è`¹g
€ƒÇ9µ€èa¨âã$ƒÇ9àZWÇaàã$I’$¥jÇ9XWUU¡aÉŸüIžFRÇ9UUU5édI’›¦ ƒÇ9Uµ-é�¡ ƒFR-éç$È� 	F‹‚jªªªªéèƒäzªªº¾èçH€f‹bjªªªªêè$C’DÈ�ƒäzºþÿ¿éç$@’$É„ƒäzêêªªéè‚$@‚ ƒäz¯««ªéç$I†$A’f‹bjªªªªéèH�$ F‹‚jªªªªéè€I$ƒäzÿþ¯¯éè@$A€ƒäz«¯¿þé×’ ƒÅr ªªjén`PÏ'ƒÇA€xWÝahÒ'òäÅrÇ9\WUUèa	!@ƒÇ9%-
éç!I‚$If‹bjªªªªéèI’$�ƒäzªªªêéèHƒäzþ®«ªéç	€B0ƒäz«ªªªéèI’I’$f‹bjªªªªèèI’$I’$f‹bjªªªªéèI’$I�$f‹bjªªªªéèI�$ƒäzêªªªéç B�@’F‹‚jªªªªéèI$	�F‹‚jªªªªéè� H$F‹‚jªªªªêèI’!‘„ƒäzªêêªêèI’ƒäzªÿÿªêç]³­X»µƒäzª««ªêæN,@’$H%ƒäz‚þþþêçi»®Ø†mƒäzª««¿éæM»m`F‹‚jªªªªéäm‚ÙÒ&E‹ƒÿýUéäéVi�$IE‹ƒþÿÿýèàZ#©’IE‹ƒ/¿ÿåÜÎ_;£5…“%ƒ
ÝÜI‚ä›è‚ªªªªÝÜH�$ä›è‚ªªªªÞÜdH2aBä›è‚ªªªªßÝI’$$	€…“E‹ààèúÞÞI’$I’$…“E‹¯¯­¯ßÜÃ¶­Ûº6Æ›ƒªªªªÞÜ É�IH2ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜH Aä›è‚ªªªªÝÜ@ ä›è‚ªªªªÝÜH�ä›è‚ªªªªÝÜ @€ä›è‚ªªªªÝÜ@’€$ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ$A$ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ@�ä›è‚ªªªªÝÜ€@€ ä›è‚ªªªªÝÜA€ ä›è‚ªªªªÝÜ 	�ä›è‚ªªªªÝÜH ä›è‚ªªªªÝÜ@	ä›è‚ªªªªàÜ’íØ1…“E‹ åÝñô
%Iº…“%ƒðxª
çã E‹ƒÿÿþøçÞR�5�9…“ƒ----ßÝ$É�$A’Æ›ƒªªªªßÞI’$I’ &›$„ªªªªàÝ�´mÛ¶…“e‹ºàÝÐ¶MÒl…“e‹ àÝ[»uM—…“e‹€€ãÞIR;@4…“E‹
%%ÞÜ$I†$H’ä›è‚ªªªªßÜiÓ´éÐvä›è‚ªªªªßÜi»¶Û6lä›è‚ªªªªßÜiÛ¶ÃºmÄ›ƒªªªªàÝi‘ui›´…“e‹€€ãÜ@4­Ýº…“E‹%

ÞÜ!I†Hä›è‚ªªªªÞÜ$†!ä›è‚ªªªªÞÜ	2 ä›è‚ªªªªàÜ‰mÛ$I…“e‹ ÞÜ$C’d‚�ä›è‚ªªªªßÝI’$dB�Ä›ƒªªªªÞÜ$Ã�!‰�ä›è‚ªªªªÝÜ$$ä›è‚ªªªªÝÜ $ä›è‚ªªªªÝÜA$ä›è‚ªªªªÝÜ $ä›è‚ªªªªÝÜ’ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ’�ä›è‚ªªªªÝÜ	 �ä›è‚ªªªªÝÜä›è‚ªªªªÝÜä›è‚ªªªªäÝ±¹÷ß…“E‹XXà€åÞâ9�Cµ…“%ƒ/-/¯àÞ	†I…“e‹ €ËæÞIüš“$…“%ƒ€ªÿWæä@E‹%ƒVVUUçæA‚$H‚Æƒâ�ªªªªæå$@f‹¢zªªªªåâÀ¶mX‹5E‹%ƒª


åâÃ¶m[³%E‹%ƒªª
åá’‰’M&e‹%ƒªª
åãLH’’E‹%ƒ€ªª¨äßhÚ¬:e“E‹UU½-âÝ’°nµÛ…“E‹ïªäÝÀm¶ùÄ…“E‹UW €äâ€†“ÃzªªªªäÞñP
›4Ie“E‹PZUUäâ�†“ÃrªªªªäÝ“ˆ¯9…“E‹U•%-âÜãÐtv˜r…“E‹ê€€€æãP�vE‹ƒþüü€æÞR
9P5…“ƒ+---ßÝ I’	™�Æ›ƒªªªªÞÜ$C† 	’ä›è‚ªªªªàÜ¶Û¦)	…“e‹ ßÝ$I’$‰�Æ›ƒªªªªÞÝIÆ›ƒªªªªãÞIœÄñ…“E‹xxäßI¯›‹%…“E‹øx­­ãÝµÍÚ�3±…“E‹

/ÞÜ$@I’Ä›ƒªªªªÞÜ`$@’ä›è‚ªªªªÞÜ$††ä›è‚ªªªªÞÜ!I’$Iä›è‚ªªªªÞÜ I’`$ä›è‚ªªªªàÜ”›‰i›…“e“@äÝFA¦�…“E‹UWZøßÜK‹6h»´…“E‹ÞÜdH’!ä›è‚ªªªªßÝ!’$H’Æ›ƒªªªªäÝ?1g“…“E‹ppàêæáÂºÕnl'E‹%ƒ
æáö”
®àE‹%ƒà`ppçäÛ¶
¶&E‹ƒÿÿÿŠçæ	 fƒ‚‚ªªªªçâÚ,µZ�%E‹ƒ//åáŽM›¦`	E‹ƒ€€æâ±a” E‹ƒ€ øþæä$C�$È0%‹%ƒ¯ÿÿ«æä$C$E‹%ƒª__zæå	 $Æ‹âyªªªªæåH$H$E‹%ƒÿÿÿ¯æåA	$%‹%ƒÿÿÿ¾æâ
9’-ÚE‹%ƒ
	
åá¶C2(Ée‹%ƒ**àÜrÌ$p,Ç…“E‹ÞÜdB’d˜ä›è‚ªªªªåÞÉ·æd
…“E‹ ø^VãÜÎßçãƒù…“E‹
ÝÜ ä›ƒªªªªÝÜ$&›$„ªªªªÝÜ€ä›è‚ªªªªÝÜ	€ä›è‚ªªªªÝÜ’ ä›è‚ªªªªÝÜ	€$ä›è‚ªªªªÝÜ	$ä›è‚ªªªªÝÜ� ä›è‚ªªªªÝÜ@A€ä›è‚ªªªªÝÜA‚ä›è‚ªªªªÝÜA ä›è‚ªªªªÝÜ @€ ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜAä›è‚ªªªªÝÜ�$ä›è‚ªªªªÝÜ€	 ä›è‚ªªªªÝÜ€€ä›è‚ªªªªÝÜ	€ ä›è‚ªªªªÝÜä›è‚ªªªªÝÜH€ä›è‚ªªªªÝÜ’ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ	$$ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜH ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ@‚ä›è‚ªªªªÝÜ‚A$ä›è‚ªªªªÝÜ�@ä›è‚ªªªªÝÜH$ä›è‚ªªªªÝÜ’ € ä›è‚ªªªªåÜ¯ðJéôN…“%‹pppðãá$À� C€E‹%ƒ`€àðåÞ“Pr?™”%ƒäzþø  çâ°m®í¸E‹äz¿«

çâ˜³5®Ó¶E‹ƒåâÝ–¬Ù°aE‹ƒ  çà�àrm[?e“ƒ^úª*èÞ´M¶ûä…“ƒUÿ¢çã�$‰JE‹ƒÿÿþøçäÉ�lí¶µE‹ƒúúêïçæ f‹‚rªªªªèæ2$C2f‹‚rªªªªæåI$@€$f‹¢zªªªªæå ’$Æ‹âyªªªªæâL@E‹%ƒ‚ÿæä!C’	’f‹¢zªªªªæß˜£Ù‚&e‹%ƒõUåà®³Õ�£Åe‹%ƒ
éÜNRÛÜ8`…“ƒª¿×ßÜmÛ¶H‹¤…“E‹àÜ‚`Ç¶cÇ…“E‹îèÜ¥ðé�…“ƒZxxxéäõ†µÚº.%ƒäz¢ª**çÜXúìß?…“ƒ­
åÜ­Wq›ß…“%ƒzà€çàØÃÝæwE‹ƒ
è çå‚‚%ƒäz¨¨ª¨çå$	’É�fƒ‚‚ªªªªçæI’$I‚f‹bjªªªªçæI’$H‚$f‹bjªªªªæãØ¶µÃ
,E‹ƒUÕµ¿åß4JöäpE‹ƒÕÿà äã%ƒƒú åâÛ²­Û¶%ƒƒº:  åCP4€E‹ÄrxpêêGC¶mÇv’DŠkÿÿÿÿD-�ù�äzÄr¿¯¯ª?'OR?˜ƒ9äzÄrª*
('äz¤r
)'$Á!EƒCrªªªª6+ñðNïôNEƒCjªªªª;-PNR$ÃáEƒCjªªªª@�9õã$%ƒäz--
I’$I’$†‹¢zªªªª±�»y›»%ƒ{ J
O’$IžEƒ%ƒUUUÝ
@ …“%ƒÝÜ@ ä›ƒªªªªÝÜ€$@€ä›ƒªªªªàÜ¶mÇN$…“E‹ˆåÞIâ?›´…“%ƒ/§æÝÏ·¥8a…“%ƒ úßÝHóÓ$…“%ƒþWÜ€ÙO’$…“%ƒè_UÉ˜ó$I’ä…“%ƒø_UUEI’ßwW
%ƒäzè~ZIbÛÛ&@%ƒ¤r¾ÿEIâ?«�õ%ƒäz+-IR·f‹¢zªªªª
IR?�9†‹‚zªªªªI’$I’$†‹‚zªªªªI’$I’$†‹‚zªªªªI’$I’$†‹‚zªªªªI�$I’$†‹‚zªªªª“q‘$I’$e“%ƒ­UUUÝðNIž$…“%ƒ+ÕUÝ�¼…“%ƒµÝÁ�ä›è‚ªªªªÝÜ	�$ä›è‚ªªªªÝÜH‚‚ ä›è‚ªªªªÝÝI’$I’$ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ@Aä›è‚ªªªªÝÜIä›è‚ªªªªÝÜ €ä›è‚ªªªªÝÜ@’$ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ@‚$ä›è‚ªªªªäÜný·ñô
…“E‹ppäÜÎ]ß�´…“%‹�­çßíÓù“D	e‹ƒ¾^çÝÿcÛ
±…“ƒ¯­ßÝD& ’…“E‹âÜî�N.Û8…“E‹ààãÜ=úöŸü…“E‹%ÞÜd†$ä›è‚ªªªªÞÜ$I†I‚ä›è‚ªªªªÞÜ$C2	†ä›è‚ªªªªÞÜ I„$É„ä›è‚ªªªªÞÜ$É!�ä›è‚ªªªªßÞI’ 	’ &›$„ªªªªßÜkºµX;´Ä›ƒªªªªÝÜ @ä›è‚ªªªªÞÜa˜0$C€ä›è‚ªªªªÞÜ@’ä›è‚ªªªªàÝé�té�t…“e‹€€À€æáñäIÃÚ9E‹%ƒ ø.æÞiZ]?…“%ƒÕõ¯
äÞ»&±“8…“E‹¥áÞm›¤I‘…“E‹ª€à ãàYÚm¶e‹E‹¨×þäßÐMs<'…“E‹W«‹åâÛ¶aÖmE‹%ƒªª¨(åátÑ�HIe‹%ƒ*ªªäái×¶E‹ƒªäÞ5À@…“E‹µ5ÕUßè
@…“(Jp`Àmÿ•äI‚'§bB•UUTÞÐ9•»…“BµUá›�…“†b	ÝÜA€$ä›ƒªªªªäÜñK©p…“%‹ðpppäã @E‹%‹¨ªª¨äã†“£rªªªªäã $E‹ƒ****äá�íÐE‹ƒ€€äáÐE‹ƒª äáÀ€k»fE‹ƒªäãE‹%ƒªªª¨ääI’$I’$E‹%ƒªªªªä¯ÀE‹Æj`äô£9€e‹BWz ´¹�»¾¶{è9UUWx‰;‰ñÿÿŸ<gZç95UUUäP
¶é'E‹B-•Uä;¢h
…“Bxà‚«ä?Iâ$¢ˆ%ƒç9UWzàÅB1‘ÄIò$ÆrÇ9-ÕUUäD@ñ”Ä%ƒÇ9
-Õå˜ÀP%ƒ†b`	åDO2'`%ƒç9U^`€µ?I‘äIÂ'¦jç95UUVåGPñ�¼%ƒç9-ÕæÌ%ƒåræâ¢‘9E‹%ƒÿÿÿ/åã �E‹%ƒ¯ÿÿøæäI2$B’f‹¢zªªªªåá #Å�
%E‹%ƒåã!C H€E‹%ƒª¾¾¾åäI�$I’$E‹%ƒêªªªåãH’$I2E‹%ƒ¿ªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäRP`€%ƒBx€ÀvCI²$Hò$'Rç9UVTWFD!�$I’$(BF1ªªªªäDI•Äƒç9Ã
5ÕÑVO²'xâ$årÇ9UV\WžY1•$IRˆFRÇ9-UUƒŒYp’ÿIî$&JÇ9\UUW_Y‰“$s2¸ç9Ç9¯¯¨"çYI@ƒÇ95
	èædÂ$$Ifƒ‚‚ªªªªçæA€Hfƒ‚‚ªªªªèæ!É�!Af‹‚rªªªªèçI’$@f‹‚rªªªªèæ	@‚$0f‹‚rªªªªèæ$$“0%ƒäzªª**èßX+þìßÇe‹ƒ
çäÅ%‹ƒþüüüçå$†$C&%‹ƒ¿¯//åäH’$I’$E‹%ƒªªªªäã†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäã†“£rªªªªä« E‹¦j€@äD	ü�$E‹ç9(ßUäC
ìÚó'E‹çAÀ`ZUDC(Bf1ªªªªDC (Bf1ªªªª‘CI’¤I�ägZç9UÕÕäP:0E‹çAÉäCIÒ$h4%ƒç9UW\pDC‚ @(Bf1ªªªªäD�I‘¤%‹ç9
5ÕäDÐèE‹BX`€ÆCI’$O‚'årç9UUUT­CI�äI’$¦jç9UUUäD0�E‹è9	%äD�È%ƒÈ1pÀÙ6ÿÿÿþ?{ç9UUW\«
naÛÿÿ$¦jèAUUUä8`™š<E‹BÀ‚ÉUD
0®�SBÇ9ÿúè DA è9ç9ÿÿÿ¾ƒ:ÿÿÿÿ“gZç9UUUä8I‘E‹èA5
äàb%R$e“E‹­¥äàdB$(@e“E‹/%UUäÝum?Úƒ9…“E‹ª

ßÜC×$i“¶…“E‹ÞÜ@2LÂ�ä›è‚ªªªªÞÜdB†$ä›è‚ªªªªßÜi—m1…“E‹€äáZ`ÃPe‹E‹Ü×WVäÜ³Cûšõ…“E‹
Ýz…“Çj@ÝIÎä`ðf‹BUVX`D2fìè9ç9¾¾¾ª>Z�=âOÿBç9+
ä
�ÿõç%ƒè9
5Õä¾E‹{äã@†“£rªªªªäâ`„†“Ãzªªªªäâ 0e‹E‹×ÕÕ5âÜ£Û¸-G
…“E‹ êäßiç�°	e“E‹x^^WäàtÐ-še‹E‹¥¥­äái3¬Ãe‹E‹*µUUäà±@	…“E‹^WUUä(`À=E‹B€`Xª(xò$ÉŸü¦jè9TWUUD-±ð
“&¬è9ç9êªªªÉ~â'ÿý{è9UUÕ5ä ±`{è9
äákÚ¤E‹ƒÕý«Šãá ƒ$ 2E‹%ƒ-+¯¯äá-�nIš&¥“¥zªªªªäáÛ6éÐ†“ÃzªªªªäßíÐíOe“E‹__zäÜPõP­…“E‹%%%µßÜiÛ¦m:,ä›ƒªªªªãÜ7õNñpO…“E‹ppxpâà$I’ 	0e‹E‹ª*+.âÜX=:µÍ¶…“E‹"äÜ©pO¹íÿ…“%ƒxð âÝ�¤mµ�Ø…“%‹ýÿª âÝÐn¶];…“E‹UUª
äÝ0	.—»e“%ƒ_ÿú äâ˜E‹%ƒ¿¿ÿøäÝµ_?àƒõ…“%ƒ«/½àÜ6eGq$	…“E‹ê€€êäÞ lS³5e“%ƒßÿ¯¯ãÝ@
µí$e“%ƒú ä=€`e“GRj€ÝIò$z=…“(BUUVXI’$Iò
iJg)ªªªªZ9‘s1wsBÇ90ððøäCp¹�XE‹çA	%•äßIKöe“E‹pPPPäÝš5�ƒ9…“E‹-%%%ßÜm—m×…“E‹€€âÞ€
Øq’$…“E‹¯¯
ãÞ‚&In�$…“E‹××ªäÞNê˜1aS…“E‹‚¢xxäã  †“ÃzªªªªãèÐ¯çe“(B€`XVJ. c:iiBç9¬®þþD.I’$ÛF
BÇ9ªªªúã O’'ÿ÷Eƒè9UU•%Þ!@…“è9	àÜ"›qH	…“e“@åÞ¹Ÿû”8a…“%‹¨¨ÿ×àÝk’¤kŠ5…“E‹
åÜ�àJö–·…“%‹Zøà åá´�˜±
e‹%ƒ€ àæãÝR Øº®E‹%ƒº¾¿ªãá$2 ’e‹E‹+++«äáIÒ¶éÐne‹E‹èXþäáIÛ¦XÓµe‹E‹ «¥¯ââI’$I’$¥“Å‚ªªªªãáA¥‹¥Šªªªªã2@ E‹èApÀÛ4I’$M‚&Eƒè9UUW\;9I’$I’éA2ªªªªA6~àþ
`éA2ªªªªf6\ß>’'JÈ9ÿÿÿ?å7‰%ƒè95
çI,%ƒÈ9€`ã9X²$I’$%ƒè9XVUUJ9I’$I’Bè9ÿÿÿ?ä9É• E‹B•%	ã: @ƒ&E‹è9Àp\Ž;pë¶›»FRÇ9TUUUâ`I’$Iš{Ç9UUÕ5èb)PƒÇ9
è;ìX²$%ƒç9€`XVh;�´Iï�è9Ç9W_zzŠ¬=úã3Â‡bç9UUUÅ;/0‘dIéA2ªªªª:9I’$éA2ªªªª:9I’$éA2ªªªªä91!pE‹è9

	æâ¶d$éØE‹ƒððäã@€H’$†“Ãzªªªªäã	�$†“Ãzªªªªçã1S‰�$E‹ƒððåã`B&L’E‹%ƒ éãæ�ñdOE‹ƒ|xxpéçI$F‹‚jªªªªéç$™„F‹‚jªªªªéä€m��9E‹ƒÕõ­-èæ�$‚%ƒƒ¯®ªªèåØ²-ÛŠ¡fƒ‚‚ªªªªäÝsNÿÚ†I…“E‹ýUçÞ±ð%·‘e“ƒxxêªèä�,�¦“E‹ƒ¿ÿþèçÞNRÛ’$…“ƒªÿUèrþP
¬%ƒB\XXpÊIúvÑº&ƒèAÕ55Õâ]msò$E‹ç9 ^UÏ8K&“ãíåzè9V\ziD0uÒ–m%éA2ªªªªâ6Iò¿÷Ð%ƒç9UÕ%Ï7ùýßü�Þ{Ç9UWV\èbù�TI˜ä{Ç9%5•UèÍƒÅjèçA€$f‹‚rªªªªéçL2!C�f‹‚rªªªªéçI˜�	AƒäzªªªêéçaB’ ƒäzªªªÿéçdH’ ƒäzªªªÿéè@$ƒäzªªª«éç€™�F‹‚jªªªªè�0ƒ&J`èb€5|’$ƒÇ9€xVUÓaN’$Iœ¥jÇ9WUÕ%èaÉù
ƒç9•-èj€(:ƒç9 xèaÀª>N’$ƒÇ9à^WUÔ`O’$ÉÅrÇ9UUÕ-èaÉ›@ƒÇ9Õ-èb`PÏ'ƒç9€xWÞbXÓ'I’$åzÇ9xWUU�aÉ“?ùŸ&JÇ9UUU•èbI’¤1EƒÇ9UÕ-émñ0ƒÇ9-éè	HƒäzªªººêèI’	‘„ƒäzêêêêêèd��ƒäzªÿÿÿêéI$H’$ƒäz¿¿¿¯éèI‚$I�F‹‚jªªªªéèH$H ƒäz¯¯¾¿èçH€ F‹‚jªªªªéç$‚$I’F‹‚jªªªªéè	’$I’$f‹bjªªªªéèA’$@‚$F‹‚jªªªªéæÃ†m€!ƒäzª®¿þég@Àª>{ç9à^égÐ¼>O’$åzÇ9à^UUåiI’$Éù
ƒÇ9UUÕ-éh‰w
ƒÇ9µ/èá$ƒåz«ªªªéèI’$I’ f‹bjªªªªéè	’ I’$F‹‚jªªªªéè’IƒäzêêªªéèA‚$H’$ƒäz«ªªªéèI’$AƒäzªªªúéèI$@$ƒäzªªª«éè	�	’$F‹‚jªªªªéè@$I’ F‹‚jªªªªéè$IF‹‚jªªªªéèH� I’F‹‚jªªªªéèI’$@ F‹‚jªªªªéèI’$F‹‚jªªªªéè I’$F‹‚jªªªªéèI’@$F‹‚jªªªªêéA$	�ƒäzþþþêêé	’$’$ƒäz¿¿¿¿éèH�Â‰¦{ÿÿÿÿéè	@Â‰¦{ÿÿÿÿéèI’$I� F‹‚jªªªªèçHf‹bjªªªªéÝZƒõX�Ñ…“ƒ---­ßÜMÚ¶hƒm…“E‹ÞÜI$I†ä›è‚ªªªªßÜÍÐi›¶ä›è‚ªªªªàÞ$d˜$…“E‹þþøèÞÜ†HH2…“E‹%%-/ÝÜ@€ Ä›ƒªªªªÝÜ	$ä›ƒªªªªÝÜ€$@�ä›è‚ªªªªÝÜ‚$@€ä›è‚ªªªªÝÜ@�ä›è‚ªªªªÝÜ $ä›è‚ªªªªÝÜ €ä›è‚ªªªªÝÜ€A€ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ€H$ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ€ ä›è‚ªªªªÝÜ€@‚ä›è‚ªªªªÝÜ@H€$ä›è‚ªªªªÝÜ‚$@ä›è‚ªªªªÝÜH€$� ä›è‚ªªªªÞÜ$I2Iä›è‚ªªªªäÝ±1ðN…“E‹PXXXæÝýãÜöÖ
…“%ƒðZçÝîS¾Ëß…“ƒxà€çÝ�ÕÂ8@…“ƒ
/¿×àÞI’$ƒ�…“e‹äÝùŸ×·ô
…“E‹ XXàÞIÂ„H†…“e“äÞ¶”Bq['…“E‹XX 
æÝýï»7…“%ƒ ðpåÞâÛ‚€…“%ƒ ÿýßÜMÒ&h‹6…“E‹ÞÜ!†	’ä›è‚ªªªªÞÜ˜�!C2ä›è‚ªªªªÞÜ$!Cä›è‚ªªªªßÜÛÐÙÐm…“e‹€€äÞR#Ôµ›Ä…“E‹%%Š€ãÞI\Û@4…“E‹
%%ßÜM·®Û¶
Ä›ƒªªªªßÝI˜„$A…“e‹€€äß±æbR#%…“E‹X^µ%àÜ²
Û²Ñ…“e‹
ßÝ$‚	2Æ›ƒªªªªÞÜ L’ä›è‚ªªªªÝÜ‚	�ä›è‚ªªªªÝÜAä›è‚ªªªªÝÜ@’ ä›è‚ªªªªÝÜ@� ä›è‚ªªªªÝÜ@ ä›è‚ªªªªÝÜ@‚ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ@€$$ä›è‚ªªªªÝÜ’$ä›è‚ªªªªÞÜ$I†$Iä›è‚ªªªªßÝ$I’a’…“e‹ æÝî”
±”J…“%ƒúxððåÞÚ�Ýtî›…“%‹­­‹âæäH E‹ƒüü¼¾æá ¶älE‹ƒÿúà€æã°-ÐtE‹%ƒÕßz æä	™A�E‹%ƒêêÿ¯åä@ �E‹%ƒªªªªåâ[‚%[lE‹%ƒ
ªªåÞìß>"±…“E‹¯-¥µäß�±äB…“E‹W^ZZäÞ˜£ÑíÆr…“E‹-­zzäÞ1é²£5…“E‹ ¸-%äÝÏý›9u…“E‹€€`XäáV`
,e‹E‹××Õ5âÝÐBv[Ç…“E‹Zº"ãÝ$`oŽm'…“E‹Z âÝªm×®”…“E‹
"¸ØãÝñ®PO…“E‹ðPppáÜØ°x³;§…“E‹ê‚äÞ@#8[MÑ…“%‹%//¯ÞÝ ‚Ä›ƒªªªªßÜm›¶m·ä›è‚ªªªªãÝ¦`Jví$…“E‹XØ ßÜh‡vm—¤ä›è‚ªªªªßÝ$I‚$™�Æ›ƒªªªªßÝ$@’$Á€…“e‹ ßÝI2$C&…“e‹
ãÝ¥–
)`k…“E‹øXXðßÜèŠnèº´…“E‹ÝÜ‚	 ä›è‚ªªªªÞÜD�I„ä›è‚ªªªªßÝ	™$LH…“E‹¨ßÝLB&L2…“E‹ßÜm×tmÛ…“E‹ ßÝ!��a’„…“E‹ ßÝIÈ�I‚$ä›è‚ªªªªÞÜA!ä›è‚ªªªªäÝÿ�»9…“E‹€ pXäà-Ù#Ñe“E‹÷µµµáÞÀŠ¶MÖv…“E‹«Š‚€æá™æi4E‹%ƒ°¸ÜVæßNìäÚ
`…“%ƒ‚‚ÿÕçÝÀMýíü…“ƒWþ‚çáX»µ­»E‹ƒ
äáÀlmÓ&…“Åzªªªªåá I4éØE‹ƒª(åá)Å´mÛE‹%ƒ
æá��NöäJE‹ƒààààæâ�$‰�#:E‹ƒ¯+æâMÛv’$E‹%ƒåâV`-–.E‹%ƒª¨  äÞ0JµÙ˜…“E‹U_ª‚äÞÚ¶Í@#5…“E‹Õ½%%ÞÜ É0$‰ä›è‚ªªªªâÜ±Û–Û4…“E‹€ê~æàádJ0IE‹%ƒ àøúæÜ ƒ9˜ƒù…“%ƒ


ÝÜ’ä›ƒªªªªÝÜH&›$„ªªªªÝÜA	 ä›è‚ªªªªÝÜ	 €ä›è‚ªªªªÝÜ�I’ ä›è‚ªªªªÝÜH  ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜHä›è‚ªªªªÝÜ€A$ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ$H€ ä›è‚ªªªªÝÜ‚ä›è‚ªªªªÝÜH$�ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ @ ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ@€$	ä›è‚ªªªªÝÜ@@ä›è‚ªªªªÝÜ€ ä›è‚ªªªªÝÜ@ ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜA$Iä›è‚ªªªªÝÜ‚ ’ä›è‚ªªªªÝÜ@€$ä›è‚ªªªªÝÜ€@ä›è‚ªªªªÝÜ‚ ä›è‚ªªªªÝÜ 	ä›è‚ªªªªÝÜ@ ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ€$ ä›è‚ªªªªÝÜ @ä›è‚ªªªªäÝ9—Sñ…“E‹``PXåá’,À¢c;E‹%ƒX^ð âÞŽà	aE‹ƒZzxzæà¥ÀM¬ËÆe‹ƒÿï	
çåI0%ƒäz¨(æã@ƒ5ë¶E‹%ƒ--úZäß[²ÅÚ	e“E‹

uUåÝí¿9�­…“%ƒ
/­çß¯O¹ô
…“ƒzxxzæå@$@ Æƒâ�ªªªªçå$$I&Æƒâ�ªªªªçæ‚ A f‹‚rªªªªæåI’ H€$Æ‹âyªªªªæåH’$@$Æ‹âyªªªªæä$	‚H„f‹¢zªªªªæäDHA’%ƒå‚€æâÉ1E‹ƒ¿¿//âÜ I›µM'…“E‹É‚‚èÜF�nýç…“ƒ×¿ª€àÜp,ÛN(…“E‹‚~ãÜÏo?\9…“E‹%%çÜ)ð©p…“ƒxxxèèä�,)„HÉ%ƒäz****àÜp'ˆ-Û…“E‹ÝÜ€&›$„ªªªªáÜë`»NjÛ…“e‹ú€æÝP¯Se“ƒ^zxàçäM—tÃš$E‹ƒúúÿªçá’0Mlë$E‹ƒÿÿªæá �OE‹ƒÿÿú æâ	‘¢,1E‹%ƒ¿¿¿/âÜ mlÙ8…“E‹]ýäÝ@
7•”…“%ƒþø æàÂ¶ml'e‹%ƒUÿªåÑ`’$Me‹ƒÿªà5ÿßÿð&E‹ÄrÕüðJ9Û
©€äzÄrªªª J(}Ò?¢
‘äz¤rI'IbÛÜ(@äz¤r(2'Ïí¿³EƒCjªªªªC,¹›»¿w%ƒcjªªªªW41íª:Íäz¤r ªº*J‚$H¢$%ƒäz
I’$I’%ƒäz HÉŸ»yç%ƒÄz à~æ
Iø_6á
E‹¤r**¿µçÛùßþc±…“ƒ
­µÞÜd’$	…“E‹+èÜÏÿŸ9u…“{€èxèâvÌ•‚@E‹ƒ®÷Õæâ€	¤IÇE‹%ƒ÷‚çS €,%ƒäz(ªhp]KÒÛä¶	%ƒÄrêÿ_IbÛÛ%ƒÄrªÿb
¹ër“%ƒÄr êÿÕ]?)7I’Häz¤r€ªªª[W¡L‘¤@Ê%{#rªªªªZšƒ9˜ƒ9%ƒÄr//// É$LÒ$†‹‚zªªªª“$I’$†‹¢zªªªªI’$I’$†‹¢zªªªªI’$I’$†‹¢zªªªªI’$I’$†‹¢zªªªªI’$I’$†‹¢zªªªªI’$I’$†‹‚zªªªªI’$I’$†‹¢zªªªªI’$I’$†‹‚zªªªª¸Ï�$I’$e“%ƒ/ÕUUÜ`	‘…“%ƒ-
ÝÜ@ Aä›è‚ªªªªÝÜ@‚ä›è‚ªªªªÝÜ  ä›è‚ªªªªÝÜ’@ ä›è‚ªªªªÝÜ@$ä›è‚ªªªªÝÜ€$Iä›è‚ªªªªÝÜ€€ä›è‚ªªªªÝÜ$ä›è‚ªªªªßÜiÛ¦m—…“e‹€€ãÜùmÛ[-�…“E‹¯µäÞ1årÜ6H…“E‹x~õUåÞãC¶¤0	…“%ƒ+«ÿçÞ®àrb«>…“ƒzê¯çÝP-úöóç…“ƒ-ßÞA’$I’$&›$„ªªªªäÜÏï×6ÇA…“E‹à^äÝIüÛ$`…“E‹ ¿UàÞI&d&…“e‹ßÜÃ†m[×&Ä›ƒªªªªÞÜ 	’ ’ä›è‚ªªªªÞÜ$†I2ä›è‚ªªªªÞÜdH†$@ä›è‚ªªªªÞÜÉ„$C’ä›è‚ªªªªßÜÃÚ6íÚ
ä›è‚ªªªªÝÜ€ ä›è‚ªªªªÞÜ€$Ä›ƒªªªªßÜm‘mš´ä›è‚ªªªªßÝ$@€$’&›$„ªªªªáÞC›6I“$…“e‹®ßÞ@’ I$…“e‹
ßÞI’$I’ Æ›ƒªªªªßÞI� I…“e‹€
àÞÀ0IH’…“e‹ª*äÞmZ–éd…“E‹ŠªXXäáÃº5m²6e‹E‹µ%âÞ€ Q’#:…“E‹û++äÝ4I¿ý$…“E‹UWªäÜ$IuùÜ…“%‹Õÿ€äÜ}ÎÖ’&H…“E‹*ÕÕà˜ˆ…“(JXàß¹ýÛ¢
ˆ…“BUU^àÄ(ïðÇÿãÿFƒè9-ÕUUÝ0ïð¼…“(B-Õã¯ ’”I…“&{ €äß �e“E‹UUWVäã†“£rªªªªäãE‹%ƒªªªªäáéÖE‹ƒ  äâ	E‹ƒ€€ ªäã @E‹%ƒ*ªª*äâ�	�E‹ƒ€€€€ääI’$I’$E‹%‹ªªª*äâ	0B€E‹ƒ
 äà€LAŽ˜He‹E‹•×ÐÐä�@e“†bp€€€ä(Ï¿>`e‹è9U^ày~ò$I‚&ÇjBUUU\µ9‘›¹›»‡bè9/×WWäDÐ9•äƒç9µUäDë¬D{ç9^àäCI’$tÑƒÇ9UU^xÜD¯�œI’$%ƒÇ9-ÕUUåD ¦�˜%‹ç9/µä5à¨ %ƒè9xÀäAI’$sõ%‹ç9UU^xå?�WIž$ƒç9µUUå5e‹B-åÝ¦”J©O…“%ƒzxxøåã$€� E‹%ƒÿ««êåßb,:R‹•e“%ƒ¯¯¯¯åâÁ–m¶mE‹%ƒ¾¾¾¾ääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäã€†“£rªªªªäFÀ4`¢'%ƒç9`pXVyDI’$þ'JÇ9ÿÿõ5äDIò>Ä.`ƒç9U_b€rCIžäIŽç'Jç9UUUT¸QIždI‘K¥jÇ9U•5¥æZ$M|œ$ƒç9(×UæPëõRo?ƒÇ9^pz]æPÿûŸ¿•{Ç9Õ•5%çØƒåzçæ@€fƒ‚‚ªªªªèæ$I’dHfƒ‚‚ªªªªèç$A’$f‹brªªªªèæ@’f‹‚rªªªªèæ@‚$’f‹‚rªªªªèß’&­R9e“ƒÕµ%-àÝh±I‘…“E‹‚€€€çäÅ`V`%‹ƒüüüüæä 0$2E‹%ƒ­­¯«äã@@†“£rªªªªääI’$I’$†“£rªªªªäã †“£rªªªªääI’$I’$†“£rªªªªäã E‹%ƒªªªªäq 
E‹GR@@À`CI’$I‚$'Jç9UUUTDC(Bf1ªªªªDC€(Bf1ªªªª–DI’$Iã†Zç9UUUMDC(Bf1ªªªªäD�I–$E‹ç9	%•Uä�@E‹GR@äCIÒ$h4%ƒç9UW\pDC	(Bf1ªªªªäD�I‘¤%‹ç9
5ÕäDÐèE‹BX`€ÆCI’$O‚'årç9UUUT­CI�$I’$¦jç9UUUäD0�E‹è9	%ä6�èe‹è9pÀÒ
O’$N'F‹BUUW\
H’@ 	J*ªªªª$
y‘¤Iž$	J*ªªªª~
%ë¶w›GJè9×ÿÿ?ä$I‘%‹B5
äßh’
9e“E‹UU%%äà€$‰�Pe“E‹UUXxäß@‹Å�Ùe“E‹¥¥äÜP/5R¯5…“E‹ÝÜH€ä›è‚ªªªªÝÜ’ €ä›è‚ªªªªãÜ÷ô
)T…“E‹ðPPXáß 	‚HÈ„…“e‹ÿÿƒƒäâ	@€†“ÃzªªªªäÝ˜ÙÚ8B…“E‹%�_áÜv\Ûu‚¶…“e“ä " …“Æj@ €€ãÿ³?Ø,E‹è9UVX`D~þÜ?u)BÇ9ŠªêúD"q~Û›�õBç9ªª«¯â(ðÉ•äe“B	%•UäÆE‹æzäã€$†“£rªªªªäÞP�%b²Æ…“E‹¥
	Šäà1a@…“E‹ZVWWäáØŠ5k²&e‹E‹µ-âáH�Ie‹E‹Š€ªäá¶¡m›$e‹E‹U×ªãD@€9E‹È9€àpÀ ðÓ?þã?Ærè9\WUU4ÛÐRI•Bç9ªª  Ä,ò'ÿýærè9UUÕ5â)¹pe‹è9-ãá!™$I˜%ƒ{  äáIÒ$k¬E‹ƒ­­ãáa’�$E‹%ƒªªúúäáI’4m×aE‹%ƒ
¢ªâá	�$¥‹¥ŠªªªªäÝ6‘Oy—w…“E‹xpðpäáÀ¶mm›6¥“¥zªªªªãÝ˜Õš6I…“E‹
%ß×àÜ&a›t$…“E‹€€€¢ãáC0C0e‹E‹6§¦¶ãàéÚ°­e‹E‹ Úš+ßÜk‹¤H³6…“e‹ãÜ÷O¹ù›…“%‹xxààäÜ’Í‚&@…“%ƒ/½÷×àÜ‰eÇ´
I…“E‹ ©äÜž�
¯Ð…“%ƒ~xx~äãH E‹%ƒ¯ÿ¿¿ãßI´c;e‹%ƒª«ãÞÖ
Žë¤e“E‹UUjêãÝ«£µP-Õe“E‹-%55ßÝ!C I‚Æ›äzªªªªß#À`e“HJ`€âÉÿßòýE‹BUUVXDhR½9BÇ9ÿÿ¯/i$Ñ¶ÿ�äHJè9Õÿÿä+`)�E‹è9
5äÝ�9˜9…“E‹%%%%ßÝ!’@’Æ›ƒªªªªßÞI‚$I‚$…“E‹
ßÞI’$I$Æ›ƒªªªªàÞ‘„L�„…“E‹ €€€ä)è�#?E‹B€`XT*HÚÄMîÛ(JBTUUUDÄm·›Ü)BÇ9ÿþª¢â ÉŸüÿwE‹èAUU•%äJ0E‹è9	ãÝNjwõ`…“E‹€ppäái»amÛ¶e‹E‹üWªªäá@³µmÓ$e‹E‹õ­
äÝâ#ÕœÆA…“E‹-¥×_ßÜíÖë…“e‹€‚äà@@&Se‹%ƒ¨¨åâÖnÉ–6E‹ƒ ãá`H†`È�e‹E‹‹ËËªåß£#9’&…“%ƒ//ÿ_æßÉ›ÔÛ‰…“%ƒ ¨ÿõâá¥“Å‚ªªªªãá$H€¥‹¥Šªªªªãâ$A€¥‹¥Šªªªªã9@¨E‹è9pÀ×9I’$N'%ƒè9UUW\^LgC€D@ç9Ç9¾¾þ~7Oà'õÏúgZç9UUUèMP!–÷%ƒç9�uç!Ø3'¶oÛƒç9XVUUK1±Û´MBè9ÿÿÿ?ä9É• E‹B•%	ä: @ƒ&E‹è9Àp\€:H’$Iò'gZè9TUUUÜ:Iž$Iš%ƒè9UUÕ5ç\)`%‹Ç9
æ:,X²$E‹è9€`XVD:H’$Iò$Bè9þÿÿÿã:É�üI–%ƒè9UU•%çf!F€%ƒÇ1‰€¼9N‚$Jò$Æjè9WTTU99I’$I’$éA2ªªªª99I’$I’$éA2ªªªªã9”ÓI’$%ƒè9	íUUÈ9+‘ÄÉŸüæzè9.ÕUUän0E‹'JäãA’$I‚$†“ÃzªªªªäãA’$I’†“Ãzªªªªæâ&@4i'E‹ƒððèâ­Ðu—¤E‹ƒððÀéãP©Ù’Ã1E‹ƒ½-//èáÀmm›»E‹ƒÿÿéãX-ÚulÇE‹ƒ-€èæ!�!H‚f‹‚rªªªªèåÛŠ­Ø²!fƒ‚‚ªªªªäà!Ae‹E‹}ybbèäfBÙ¤H€E‹ƒ¯ÿÿåÝÐÙØ/>…“%ƒ­
èÜÀm¯�Û…“ƒWþç�€€’$Ie“EZjêË­]ÛL‚&&ƒè9UWV\_!´AñBÇ9ÕßzzèA9›tq%ƒç9íµ5%ÛAÒ?û�ÚÅrÇ9UWV\ékP%ƒÇ9	-éb`4€`%ƒÇ9Xpà€{g¹}·n‹¶çAÇ9UUUVéo¹�{Ç9	%5éè@ƒäzªúÿ_éèH$$ƒÄzª«ÿýéèA ƒäzª¯ÿÿéè@ƒäzª¯ÿÿéè�Â‰¦{ÿÿÿÿéá€I’$)$ƒåz«ªªêèb`?'ƒÇ9€p^ÚbàÓ$I’äårÇ9XWUUèbI’¼ñ@$ƒÇ9UÕ-è€! 5ƒJ	€xèb€†õ}’$ƒÇ9€xWU¸b|’$Iž†bÇ9VUU5èbIžW ƒÇ9UµèbÀª>ƒçAà^çb='O’$åzÇ9à^UUjbŽ�ØÉŸèA¥)ªªªªèbI’ä‰g
åzÇ9UUµècy×ƒçAµéã‘ I‚$I$ƒåz«ªªªéèI’ A’$f‹bjªªªªéèƒäzªªúúéèAƒäzêêº¿êè’dÈ$ƒäzÿúªªéãmÉ&E‹äzÿ¯«éæÃ0lP,ƒäzªêº*éç$™�ƒäz¿ªªªéèA�$@$F‹‚jªªªªéèI’ I’$f‹bjªªªªèèI’$I’$f‹bjªªªªéw†9ƒÇ9€xèg€(:N’$ƒÇ9àzWUÑfN’äIœ¥jÇ9WUÕ-èlISƒÇ9Õ-éÆƒ…b	éè	$I’$f‹bjªªªªéèA’$	’f‹bjªªªªéè	ƒäzªªúþêè	É�$��ƒäzªêú¯êè$I&ƒäzþÿÿªéè@ ƒäzª«¯®éè€ �ƒäzþþúêêèC$I‚ƒäzªúÿÿêèd&dB&ƒäzª«««éèI€ƒäzªþªªéèI€ƒäzººªªéèA’$	‚ F‹‚jªªªªêèÉ�a†ƒäzªúêêêç]‹5X³5ƒäzª«««êåÛænÎd%ƒäzªª àéâZ«Õš�5E‹äz«/êß‚À	÷”Se“äzÿþøàêé’$I’ƒäz¿¾¾þéèA‚$H ƒäzªªª«éèI’	� F‹‚jªªªªéèI’$IƒäzªªªêéèA’$H$ƒäzªªª«èä�€€E‹{/¿¿¿âßËºlK‚¤…“E‹ªº¢«àÜŠCÛt‘…“E‹
ßÜi—´]´ä›è‚ªªªªáÜ­í¶©àj…“%ƒ àðpß»@€¤>…“%ƒ*+/ÕÝº�s…“F‹µÝÛA‚ ’ä›è‚ªªªªÝÜH $ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ	$€ ä›è‚ªªªªÝÜ$H$ä›è‚ªªªªÝÜä›è‚ªªªªÝÜA€ä›è‚ªªªªÝÜ �ä›è‚ªªªªÝÜ	‚ä›è‚ªªªªÝÜ‚$	$ä›è‚ªªªªÝÜ@‚@ä›è‚ªªªªÝÜHä›è‚ªªªªÝÜ‚$ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ@H€ä›è‚ªªªªÝÜ	�Hä›è‚ªªªªÝÜ	H€ä›è‚ªªªªßÜm×MÚ¶ä›è‚ªªªªáÜ‚l[]Ç…“E‹ª
çÜ0	o›ü…“ƒ^þæÜ�Ùµýç…“%ƒ

çÞ‚D‰¶›Ä…“ƒ×¾¨äÜõÍúP#õ…“E‹àÜ&’I’…“e‹ àÞ‘I’$…“e‹€€äÜP#ùµëÛ…“E‹%%
åÜ©ðJvi»…“%ƒpð €äÞlK;B-5…“E‹«%%ßÜX‚¶m²¶ä›è‚ªªªªÞÜ$$“�ä›è‚ªªªªÝÜ�A�ä›è‚ªªªªßÜÛ¶aÝÖ¦ä›è‚ªªªªÞÝ@$H$ä›è‚ªªªªãÝ®ë–¦
…“E‹ XXàÞ Ã0`†…“e“àÞI˜$I$…“e“ßÝ$’!	0…“e‹àÞ‘a˜$…“e‹Š€ãÞP-4µ'…“E‹%%
ßÝ$C I2Æ›ƒªªªªÝÜ	�ä›è‚ªªªªÞÜL˜�Iä›è‚ªªªªÞÝA’$H’$ä›è‚ªªªªÝÜä›è‚ªªªªÝÜA H ä›è‚ªªªªÝÜ‚@ä›è‚ªªªªÝÜ@€Hä›è‚ªªªªÝÜ€ ä›è‚ªªªªÝÜ	�� ä›è‚ªªªªÞÜ†ä›è‚ªªªªßÝa!I’Æ›ƒªªªªãÝ&`1“…“E‹XX  åÞ·po‰›¸…“E‹ZZààçàIyO¥È�e“%ƒâzß×æà mMÒ$…“%ƒUÿªªåà�$I±”he“E‹UUXXåá�-Ú6E‹%ƒ
€àæâ”C16I
E‹%ƒ
 âåâé�Û¶aE‹%ƒ  ªªåä	 †“£rªªªªåâ[‚%[Ò$E‹%ƒ


åâÙÖ¶mE‹%ƒ ¨¨*äàb&e“E‹­¥UUäâ!C€€†“Ãzªªªªäà±@
$@e‹E‹pZZräß�ƒ9�e“E‹%%UUäÝl»“�…“E‹€ªÕÕäÝ¤³Õìd…“E‹
¯zZäÝñfŽ
Õ…“E‹Øº­¥âÝ6PCŽÝÖ…“E‹pà
äÝNü¼å…“E‹‚€`xçâ^=¡’:5E‹ƒ(>>/áÝŒÍ˜´E…“e‹‚ÂæÞIn×“$H…“ƒ¨þ÷åÝÒú�-Ù…“%‹
­­äÝy~·“0A…“E‹ªWWãÝq\;’
Ù…“E‹

ßÝIÈ�!	�…“E‹
ßÝ`H& C’Æ›ƒªªªªßÝH2$I’…“E‹ ÞÜ$À$Aä›è‚ªªªªáÜ¶Ý:À´…“E‹//ÝÜ@€ä›è‚ªªªªäÝåfépo…“E‹z^XxäÞc‚5€¨i…“E‹
%ÕÕâÝ)àu;Û…“E‹øø¢äÝÎï»÷…“E‹¢xXäÞIÒ¶Ó…“E‹ªUUäÝIîÖ’…“E‹ªUUäÞ±P
…“E‹XZUUäà9-Ñ…“E‹µµµõäÞIçRäÄ
…“E‹`jzçã†$Ñ’#&E‹%ƒÖ·/æâ&h‹Ž;E‹ƒ0 ãÞŽ[Oš$A…“E‹¢ú_Uãàé�nÝ¶.e“E‹zzßµãß@Q&‘Xe“E‹Uz`çâIlÛ›$AE‹ƒþþåá´I™%9E‹ƒçäí6`–6E‹ƒþÿÿ(æÝÀ±cÏ>…“%ƒõ­
âÜ€ ImëØ…“E‹WªãÝ¤‰¶�$…“E‹×ªâÜíPSvi;…“%‹à ãÜ€º�¶�ü…“E‹µªßÜKÑ¤K—¶ä›è‚ªªªªâÜ0	mk;…“E‹~ªæÜ@N¶�ÿ…“%ƒ_úæÜ�/ú¶“ÿ…“%ƒ
ÝÜ	ä›ƒªªªªÝÜ€€&›$„ªªªªÝÜ@€$ä›è‚ªªªªÝÜ€$	 ä›è‚ªªªªÝÜ€$Hä›è‚ªªªªÝÜA€	€ä›è‚ªªªªÝÜ	€ä›è‚ªªªªÝÜA ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ@ 	 ä›è‚ªªªªÝÜAH� ä›è‚ªªªªÝÜ@€$‚ ä›è‚ªªªªÝÜI @‚ä›è‚ªªªªÝÜ�	�ä›è‚ªªªªÝÜ	$$ä›è‚ªªªªÝÜA ’ ä›è‚ªªªªÝÜ‚ ä›è‚ªªªªÝÜH� ä›è‚ªªªªÝÜ@€ä›è‚ªªªªÝÜ	$ä›è‚ªªªªÝÜA €ä›è‚ªªªªÝÜ@ ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ 	 ä›è‚ªªªªÝÜ$Aä›è‚ªªªªÝÜ@@ä›è‚ªªªªÝÜ€€ä›è‚ªªªªÝÜä›è‚ªªªªÝÜä›è‚ªªªªÝÜ@ä›è‚ªªªªäÜ©�
¯ðJ…“E‹XXXxäák³6ÍÖE‹äz  àèãàI±mÛ†%ƒäz¨ªª«çäI—
éš4E‹ƒ¯õõ­æä„%‹ƒÿàçå!H�0%ƒäz (*
çã6iK¶ÛE‹ƒ ðð€çäIÛÃ0E‹ƒ úÿÿçäéE‹ƒúÿÿÿçå$H’$I&%‹ƒÿýý­çå C&dH2Æ‹âyªªªªçä¶m[›¶%‹ƒÿÿ¯ çâÚ†uª½5E‹%ƒUõåâ0IÚ¶E‹%ƒÕÿæâ’IÚ	E‹%ƒ¯ªàxçåI†L‚%ƒƒ è¨êçäÛ²¡6%ƒƒ*ªªªçÜNÞ? ù…“ƒ-àÜ±&eŠ…“e‹``  åÞ‚4·›ä…“%ƒWUªæÝ’ƒ9mò$…“%ƒ%-+€çÜy™›ñð
…“ƒ  xXèÜ6ŒP�9e“ƒ×·-
ãÜMR×¯ô…“E‹¢XXßÜMÛ¶H‚¶…“e‹ÝÜ$&›$„ªªªªßÜ)–¶MÛ¤…“e‹àßÜÐ¶mÛ$…“e“UßÜÃ–¤mÒ¤…“e‹ªäÜ­pw¿™Ä…“%‹zà€€åá#1c2E‹%ƒ+
(ÞÜ 	2`ˆ�…“e‹ÞÜ!A’$C&…“e‹€ÞÜ@’!É„…“e‹ªÞÜ@†!2…“e‹ªÞÐ,
@…“%ƒX`ÀJ®9ÅS%ƒÄzzxðxKA˜=�¶äzÄr
ªªþKC“"é€æüäzÄr**ª«D-ÿÆnX�=äz¤r
N1·p¹—¿äz¤r€€€€SÚ¨ÑP9ƒÄr»«-%H²$Mò$%ƒäz¢¢ªªI”I�%ƒäzªêêêg4éT	–PÄz¤røWvVå`±�`%‹¤r­

	çàRð
0E‹äz**//âÞ’:tâ8e“E‹µµÝûèÝïðñðe‹äzðxppèæ 0%ƒäz¯¯­¿äâ&É�E‹%ƒ‚«¯ä4@�=h‚'E‹Ärúx^^bQŸPß’Är¤r€VWWcZ’ Iv›ç{bªªªªdZ&M¶ù¤{bªªªªfYë£ÕÓ:`Är¤r¯ÕU^SÜ¾) Är¤r*»¿J˜#>âƒÕ%ƒÄr+­
O’$I;%ƒ{
I’$I’$f‹¢zªªªªI’$I’$†‹‚zªªªªI’$I’$†‹‚zªªªªI’$I’$†‹‚zªªªªI’$I’$†‹‚zªªªªI’$I’$†‹‚zªªªªI’$I’$†‹‚zªªªªI’$I’$†‹‚zªªªª5I’$I’†‹‚zªªªªÝ9p …“%ƒ
ÝÜ€A&›$„ªªªªÝÚl0,&›$„ªªªªÝ¼0>…“FƒzÝ½�s…“Fƒ­ÝÛ	‚Æ›ƒªªªªÝÜ@€Æ›ƒªªªªÝÜ‚ €Æ›ƒªªªªÝÜ$Aä›è‚ªªªªßÜiÑéÐ…“E‹€€€äáEÒ5iš&e‹E‹.ˆæà­Pn\MÆe“%ƒúú¯ªãÞØ†%š9…“E‹­-/%àÝXÛ&m»m…“E‹ŠáÜ�íÖm
A…“E‹ªèÞOžÜ9•…“ƒ€àpèãéf	“¤iE‹{¨þþ¿èâÓ¸AåæpE‹ƒ¿ÿúàæÞó/>Pù…“%ƒ--ÞÜ$	†$ä›è‚ªªªªßÝ!	‚I‚…“e‹ ßÜk³¶K,…“E‹ÞÜI0$ä›è‚ªªªªÝÜ	$	ä›è‚ªªªªÞÜÀ$I&ä›è‚ªªªªÝÜ@€ ä›è‚ªªªªÝÜ	€$ä›è‚ªªªªÝÜ� ä›è‚ªªªªÞÜH	I’ä›è‚ªªªªßÞI’$I’&›$„ªªªªßÞI‚$A‚ &›$„ªªªªàÞIHIH†…“E‹€€€€ãÝR+´›³±…“E‹¯¥¯âÞ‚$PqbÛ…“E‹¯¯ãÞ“Ônñä…“E‹zjhxäáX4@´e‹E‹%55µãß$C’$E
e‹E‹ ààäÜ´£Ñ‚…“E‹-ÕUãÜÏû{í4…“%‹€úäÞ;Ù�´…“E‹õ¥%µäßÓ61”
…“E‹WU^^äÛ	$Gre“%ƒ~ë‚‚ä;ëÍ%ƒç9^àáâ?«­ƒè9UU^øÙ§�˜ÿÿÿf‹è9µUUä@ �wE‹ç9µäÞ€E‹%ƒªªª©äã� E‹%ƒªªª äá-ÐíÐE‹ƒ€€€€äã†“£rªªªªäâ@$€E‹ƒ
*äÞ°I¶Ë¤…“E‹UUê«äá�µE‹ƒ**¨äÜ I«9…“E‹U]¥
äÝ´iî…“%ƒÿÿøøäÝÎË¿›`…“E‹âëÕÕãÜ€£ùì_ß…“E‹%å"Zhe“HRx€€å¹ÝÛ
`%ƒè9UWx€smÛÚu‚&'JÈ9ÿÿÿüÓ7ï�¿ùŸÿåzç9-ÕUUåD4ï�¼ƒç9€-õåD}õ&%ƒçAWx€ÔDI’$}‚õ{ç9UUWxäC�wIž$%ƒç9µUUäH�S%ƒçA€5äCN">À@E‹ç9W^à€�)¿å?¶�Ú¦jç95UU^ßàyõÄe‹B5Õå¨ E‹ær	åÝR+Õ’�9…“%ƒ­­-
äÜ0InÛ…“%ƒ×ÿäÞ� ¦…“%‹UWZxäã†“£rªªªªåã$I$’E‹%ƒªêêêåG€€4%ƒÇ9€àp†DÈÿüI’$fZç9TUUUåGÉ—±ð%ƒç9•5
	åz(%ƒ'J€@·Fx¢$O’¤¥jç9TVUÕçRéü5D/ìåzçAmyr`bY[-Õ@4èA¥)ªªªªy4¤O>ìÃGRÇ9UÕÕç=)ð ƒè9
çæf‹‚rªªªªçæ€ fƒ‚‚ªªªªéæMÛm×nf‹‚rªªªªèæ I2 I2f‹‚rªªªªçæ@ fƒ‚‚ªªªªèæ$È�dH’f‹brªªªªèÞ˜ÕÐ&…“ƒ-¥õUçÝÏmß¢�µ…“%ƒ€€¯­çäÅ–­Öm%‹ƒü¼¼¬æä`Â$IÂ$E‹%ƒ«ªªªäã€†“£rªªªªäã€†“£rªªªªääI’$I’$†“£rªªªªäâ E‹ƒ€€äD«'Mâ$E‹ç9ø^WWäCóI’$%ƒç9‚íUUTCøÿÿùÿÿBÇ9üÿÿÿDDI’$I’$(Bf1ªªªªJCÿÿÿõüèAç9ÿ¿¿ÿäL8�E‹çA‰	äDIÂ$`0%ƒç9UVX`DDI’$I’$(Bf1ªªªªäD�I–$E‹ç9	%•Uä�€@E‹GR@äCIÒ$h4%ƒç9UW\pDC(Bf1ªªªªäD�I‘¤%‹ç9
5ÕäDÐèE‹BX`€ÆCI’$O‚'årç9UUUTª7ÿñ?ÿó?Æjç9UUUá0š8…“BÉuÞ
hÂ$I’$…“B\WUU
	€$A	J*ªªªªN
I’$I’hZBUUUä
I‘ e‹B5
äß’ÅZ¬Åe“E‹¥
äâ@†“ÃzªªªªäÞ)Õ�ƒµ…“E‹­¥%­äß6`©–¶e“E‹ÕWXøâÝª3·«à
…“E‹
¢úúàÜ±m'´
Ñ…“e‹áÜvgW±…“E‹€€ààäàD�b"9…“E‹WU¥¥äàvLÛMˆe“E‹«ÿõÕäá)–éÐme‹E‹^XX^äâ	‘	�¥‹¥ŠªªªªäÞZ±P�%…“E‹­µ%
äà1e
!�e“E‹Z^^VäšH�…“ærJ
ä É¿ÿØìE‹èAUVX`C'�Õ‚$HBç9¯¯ÿÿD(9å@Bç9êúÿÿä+ðÉ•äE‹èA	%•UãÐA@e“ƒª*ª©äÞ¶�åD
…“E‹¢èZ^äâ	�d0¥“¥zªªªªäá[‹µ@¬e‹E‹­¥%µäâ!!�†“Ãzªªªªä?@4E‹è9ÀpÔ2èßÿÉŸü%ƒè9\WUUD&˜Õ€BÇ9«¯¿ÿ®Éýÿ~î{è9UUÕ5äC¹�e‹B%	äáM³´Ø
E‹%ƒàêäái‘í°%ƒäz ¸¸¸äâ€@0%ƒƒ			äáMš¦X´E‹%ƒª«¥õäã  E‹%ƒ®¯·µâÝ�mX­9…“E‹ÿ«¯âÜ.�Jn§…“E‹xp€€äáMÒ&kZ¬¥‹ÅŠªªªªãá	C&0¥‹¥ŠªªªªãàMÑíÖµe‹E‹ ^úªâá@€I’$¥‹ÅŠªªªªãÞ€
4š$…“E‹%¥]UäÜ~îÖ’$@…“%ƒ ÿ_ãÝñàNd«Õ…“%‹xz¯¯äÞ0mvêÄ…“%ƒUÿª¨äáÝ6Ö¡E‹%ƒªÿ¸¨äß iMb'e‹ƒúªäÞ mm�Øe“%ƒUÿª äÝÒ$æKe“%ƒÿúøãÞ˜Ùs²Úe“%‹­­«âÞ#8¶�$e“%‹%/
ßÞI’$H’$Æ›äzªªªªßÞ�$I’…“e‹ªªªªß1À`…“(J`€Þ
ÿã'{‚=…“BUUVX
ùû¤OÐ	J*ªªªª{y‘Û÷c?'Jè9?ÿÿÿâP¯�e“B
5ßÝ$	0…“E‹€€
âÝ‚-4mâ$…“E‹//
ÞÝ€I’$ä›è‚ªªªªßÀ@ƒ&…“BÀp\ZXß:öó$'Jé9üÿÿÿ)7y›ü)Bè9úúúªÜIžÄÉ¥›BUU•-äK0E‹B	äâ †“ÃzªªªªáÝ´ÅÄL†…“E‹€
äâ!I€AH’¥“¥zªªªªåáNBÛ¤H	e‹%‹ªúþåá±h’"
Ðe‹%ƒ  
âàL�$�e“E‹«ÿÿýæáñ”
ñKE‹%ƒ ``àçßâ¯=Ð(i…“%ƒ/-õÕãá!’L’e‹E‹¨¨ªûæáî”öToE‹%ƒàà  æáP£ÕX­ÕE‹ƒ
âá ¥“Å‚ªªªªãá$!‚¥‹¥Šªªªªãâ$¥‹¥Šªªªªäâ	A‚¥‹¥ŠªªªªäC�ÈE‹È9pÀÑ>·ÿÿýƒ&ÅrÇ9UUW\[6€ˆRO>è9Ç9¿¿¯ªW7%po¿�$BÇ9ÿþúªR9kë$O’Bè9ýÿÿ?å:É• E‹B•%	åXÀ@ƒþ%‹Ç9Àp\Aˆ›—-I’gZÇ9TUUUØ%öo?vje‹ç9UUÕ5ä;)`E‹è9
ä:,X²$E‹è9€`XV@:HìÄ¶ãÄBè9þÿÿÿã:I’$I˜%ƒè9UU•%ä;!@`E‹È9	€ä:À‚%K’$E‹è9`XVU;9dB& IéA2ªªªªØ9I’$ñcè%ƒè9UU}ã;9I’$$	éA2ªªªª;9I’$$	�éA2ªªªª�9ÉŸäI�ÄgZè9UÕÕä;0€¨=E‹èAàZä:�E‹B5äãH�$	$†“ÃzªªªªäÝX-öš9…“E‹¥--%ßÜØ°vK—…“e“@æá”aÞêµE‹%ƒœ¸ èßÿ”OñàJe“ƒzpxZèæ$C’$	f‹brªªªªèçH’$	f‹brªªªªèä‚É�#9E‹ƒÿÿ//äâ A†“ÃzªªªªèåÒ-Öµfƒ‚‚ªªªªæÜôCÛÐH…“%ƒýõèÝ1÷ e“ƒàx^Wèäv,‚$	E‹{ªÿÿÿçJØð€
`%ƒçAXpà€€K¹Ûmµ¶JÇ9_•Wèz!0pƒJ	è\Ø0€€%ƒç9XpÀ€è
íPWÿû$ƒè95•ÕWé†“Ie“¥jêªäXü/ÿØ4E‹Ç9W^XpÂX·ñ¿ÿŸüebÇ9ÕUUéh �ÄrÆ9	éè€@‚äz¤r-5-êè$É�$	�Eƒcrªªªªéè	Eƒcrªªªªé‡1ƒJ€xéb€Š9M’$ƒÇ9àxWUßbO’$IåzÇ9UUÕ-èd‰w¨ƒç9µ	àécÌëó$ƒÇ9à^U¹chò$I’|†bÇ9\UU•ècI’œ¯0ƒÇ9UÕ-ès§ €ˆ9ƒçA-€xèc€(:N’$ƒÇ9 xWU€cH’$I’$JÇ9VUUUßcI’$Éû{Ç9UUÕ-édÉùƒç9Õ-éÔƒÅr	èèI’$I’$f‹bjªªªªèèI’$I’$f‹bjªªªªéè	��ƒäzªªêªêè!A†!I†ƒäzêêººêèI’L’$ƒäzÿªªªéæ
¬Û²mƒäzº**ªéß|ìÜ47e“ƒŠ‚z_éáR/=R­e“ƒ¥%¥µéß%à±`e“ƒ^ZXXéèI’$	’ f‹bjªªªªè�1ƒFR€xècÑt’$ƒÇ9€x^U³fòÿ?IžfbÇ9VUU5éfIžtž {Ç9Uµêž! {FR	êèd&dB&ƒäz««««éèH’@€ƒäzªªª®éèI’$H$F‹‚jªªªªêèI˜d˜$ƒäzªêêªêé€$IEƒcrªªªªéè‚$H‚$ƒäz««««èá‡µØ�åE‹ƒýéç€€ƒäzªª®¸êè	‘	™ƒäzêêêêêé�	$Eƒcrªªªªéè@$@$ƒäz««««êè	$Á„ƒäzêúþþêè$C’I ƒäz¿¿¿¿êè	™„	‘ƒäzªêêêêè$A$A†ƒäzúÿÿ¯êçX³µ[·uƒäz«««ªêçéÐm[±mƒäzêêúþêâ’ƒ5š¯±E‹äz////êßùt­À	e“äzðøúþêéII’$ƒäzþþÿ¯êè I’$Ã�ƒäz««««éè	€Â‰¦{ÿÿÿÿéè@ H’$ƒäzêªªªéè@$I’$ƒäz«ªªªèæ€B’f‹brªªªªåâM²vè¶-E‹ƒãÞš5P­9…“E‹+---ÞÇ(…“f‹âÜLÑêÓ'e“‡Z à\V Lë'I’$ærgR¨ÿõõŸLå�ÜI’${§Z*ÕUUÝL`
y•¼…“§b5ÕÝÆ…“F‹ÝÜ	$	€ä›è‚ªªªªÝÜAä›è‚ªªªªÝÜ I ä›è‚ªªªªÝÜ€@ä›è‚ªªªªÝÜ@ ä›è‚ªªªªÝÜH @ä›è‚ªªªªÝÜ€ ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ€ H€ä›è‚ªªªªÝÜH€ ä›è‚ªªªªÝÜI€$Iä›è‚ªªªªÝÜA€ä›è‚ªªªªÝÜ€$$ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ Iä›è‚ªªªªÝÜ@$ä›è‚ªªªªÝÜ’  ä›è‚ªªªªßÜéÐnm›¶ä›è‚ªªªªÞÜ`�LÈ$ä›è‚ªªªªÞÜ!@2 C†ä›è‚ªªªªßÜÀš¤m›¤ä›è‚ªªªªÞÝ	�$I�ä›è‚ªªªªßÜÖuk·fÄ›ƒªªªªßÞ	�A…“e‹€€çÞOn»œDA…“%ƒªÿWæÝ­ßþ¢ƒ9…“%ƒ


åÜâ·¯Ð	…“%‹€x^åÜîº‚…“%‹ªUUåÜIÒºI…“%‹*ÕÕàÜ‰I“Q…“e‹çÝÿcÛ7e
…“%ƒ øZåÝ‰]»�A…“%ƒÿýåÞIl»h…“%‹€ªÕÕãÝ@	p¢É¤…“E‹¥¥‹åÝ[ôB#9…“%‹/%%/ßÞI� I�…“e‹€€äÝÉcçZ�µ…“E‹¥¥ãÝnÒ6#Ð…“E‹
%%ÞÜ$I’L‚$ä›è‚ªªªªÝÜä›è‚ªªªªÞÜA�$Ä›ƒªªªªÞÜ	L@2ä›è‚ªªªªÞÜ@2d�ä›è‚ªªªªÞÜLH’@ä›è‚ªªªªÞÜ	C2	†ä›è‚ªªªªÝÜ@ @ä›è‚ªªªªÝÜH�ä›è‚ªªªªÞÜ$A‚a˜�ä›è‚ªªªªÞÜ@Àä›è‚ªªªªãÝ¦Ð6›”…“E‹XX  æÞ9u±tS…“%ƒðpxøæã-�Iš$E‹ƒðàæäa@%‹ƒ_WWæákÙ€e‹ƒ

ýÕæãÙ0E‹%ƒxVWUæåI@f‹¢zªªªªåä€ A€†“£rªªªªåã 2HE‹%ƒ**ªªåàÎdOÒhe‹%ƒ€ ª«äá@tÛ–e‹E‹õõ_päã†“£rªªªªäál@»¥e‹E‹UÕµ�äáMÚ¶Ã6`e‹E‹ÂêWUäã†“£rªªªªäß˜ƒ9Ð
`e“E‹%%ÕUäÞ±¶PN…“E‹XXZZäâ € †“Ãzªªªªãß€@NÂ$e“E‹ÕU‚‚çá1•
éOE‹ƒààààçßR#9Ø/µe“ƒ-

­æÝÿ[Ç›µ…“%ƒ-äßÀ*9vb{…“E‹µ%ŠêäÝ­ï>“
Ì…“%‹

/µâÝí–´.d…“E‹¨ øøàÝX×vk»4…“e‹Š€ãÝ-Œœ”B…“E‹/§ZXáÝ¶mÛŒ&…“E‹
âÜeë’¦�
…“E‹ ððàÝmÚ4m‚m…“e‹+ßÜ[Ó4mƒ­Ä›ƒªªªªâÜqì’&ÄA…“E‹€øúàÜ”ÑrÌØ…“e‹*
ßÜÐfMÚ´…“E‹€âÝ­Ó¶.K…“E‹
ªøðäÝ·ÿpO…“E‹XXZzäà@9e‹E‹UUääI’$I’$†“£rªªªªäã †“£rªªªªäàNìØ"
9…“E‹êêõµåá‰›±Ke‹%ƒ€€  æâ‚#Ù´M'E‹ƒ
ãâA’	� ¥‹¥ŠªªªªãâI  ¥‹¥Šªªªªãß9¢e“E‹--õUãÞ‰g{Û$…“E‹àªÿUçãhÉ¡l‹E‹ƒ¾<8¸áÜX7;s¬¹…“E‹àÜ;v,Ù…“E‹ªÞÜ’d2ä›è‚ªªªªÝÜ€	‚ä›è‚ªªªªÝÜ�$@ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜ€Aä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ @€ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ Iä›è‚ªªªªÝÜAä›ƒªªªªÝÜ€ …“e“PÝÜ@	ä›è‚ªªªªÝÜ$‚ä›è‚ªªªªÝÜ ‚ ä›è‚ªªªªÝÜ	€ A€ä›è‚ªªªªÝÜ‚ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ’ ä›è‚ªªªªÝÜ@�	ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜI ä›è‚ªªªªÝÜ‚$ ä›è‚ªªªªÝÜ @ä›è‚ªªªªÝÜA  ä›è‚ªªªªÝÜ@$ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ‚Aä›è‚ªªªªÝÜ�€ä›è‚ªªªªÝÜ‚�ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜä›è‚ªªªªÝÜA’ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ@A‚ ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ	‚ä›è‚ªªªªÝÜ €ä›è‚ªªªªÝÜ‚ ä›è‚ªªªªÞÜ!™�	ä›è‚ªªªªàÜ¶`[qD’…“e‹À€€åâÝ0�E‹äzxxxxæäLHÉ„EƒCrªªªªæä$0CE‹ƒ--­­æàåp›€�e‹ƒ€€ê¯æãÀ
$@“¶E‹%ƒ%

ãß	Å’e“E‹í�uUçäP`Z`E‹ƒþþ¾¿çß‚$iýÛç…“ƒUÿª‚æá˜�%‚:¨E‹%ƒ		76æàDA­�e“%ƒ×ßzxçâI•t�IE‹ƒ àúÿæä!É�d†E‹%ƒªê««çäiºmÛÖ
E‹ƒªÿÿþçäi·mE‹ƒúÿÿÿçå$I’H fƒ‚‚ªªªªçâ°É�HE‹ƒÿÿòòèÞ˜9˜/:…“ƒ---/ßÝ$I2`B&Æ›ƒªªªªÞÜ$È�dH&ä›è‚ªªªªÞÜ†	I2Æ›ƒªªªªçÜ±p©ð
…“ƒxxxxèÜ˜ƒ5˜Õ…“ƒ


-åÜû·±ô…“%ƒ  øXßÜm»¶hƒ¶…“e‹‚‚ÝÜ	…“E‹þ_W^ÝÜ e“E‹¯ÿUUÝÜ€ …“E‹ÿÿUÝÜ€@$…“E‹ÿÿUÞÜ$A2I˜0…“E‹€ÿÿUãÜ&”J¹�çe‹ƒðð ªßÜh³¶mÛ¦…“E‹ýUUÝÜ‚…“E‹ÿUUÝÜ@�$ …“E‹ÿõUßÜm›¶mÚ…“E‹ÿUåÜùs·�De“äzªþ_âÌ­Þ@ÀE‹Är|\zj</àÆ?þ“äCŠkÿÿÿÿ7/€ô<Iž$äzÄrªªÿ¯5.Ø“äþýßäzÄrªªª
91)á’ææmäzÄrªþþªRãCÖ›¶{¤r/ß_-Iò$M‚>ƒäzª««­I”Ið%ƒäzëëê‚ÀL±Û±Äz¤rWWÖè¬0E‹Äz©«çßP4
ˆe‹ƒ--%µâÞIœÄ¶-
e“E‹«ª‚}èÝ¹ð
®ÄIe“äzxøøúèãÐ¶­¶ã$E‹äzÿ¿ªä¡@ E‹%ƒ­«‚@²5HÞäNž$ƒÄrüþêª\KP
äz¤rUWþè\[	€ A’Är¤rÿªf[Ïý»1÷Är¤rÿê  g^TI½Ý'Är¤rÿþb^2R$`BÄr¤r»ªc:c€`äz¤r/µ¿¿D}2?âƒ9%ƒäz-I’$I†‹‚zªªªªI’$I†‹¢zªªªªI’$I9†‹¢zªªªªI’$I’$†‹¢zªªªªI’$I’$†‹‚zªªªªI’$I’$†‹¢zªªªªI’$I’$†‹¢zªªªªI’$I’$†‹¢zªªªªÜÉ—)P…“%ƒµ%ÝÙ�$	€	ä›è‚ªªªªÝÇ(…“F‹ÀÝL€ÑêÓ'…“§b€à^W Lë'I’${§bøUUU Lå�ÜI’${§b/UUUÜL`
y•¼…“§b+µÕÝÇ…“F‹ÝÜ�$Ä›ƒªªªªÞÜ™0$Iä›è‚ªªªªßÜi�fm»a…“E‹€ãÞP-Ù±O…“E‹¥/¨xæß¿S¦ÀAe“%ƒ¨èzçß¢#Ù+‘e“ƒ-­¯ãÞkºÙšƒÍ…“E‹ª¯--æÝ’8Hv�ü…“%ƒ÷÷¨çÜ­`s¾ý?…“ƒxàçÝDa®“…“ƒÕßø äÝãPW�é¼…“%‹zâ‚‚æÞPõÂ*h…“%ƒ--·÷áÜŽÛ¶km…“E‹€‹æÞ¹ùR¦PJ…“%ƒàø~þèÞ¬#Ñ€(@e“ƒ
/õWãÜÏïÚÛ@…“E‹½ÕáÜ‰c;³
5…“E‹
ÞÜ!’@ä›è‚ªªªªÞÜ	’HÈ�ä›è‚ªªªªÞÜdH’!ä›è‚ªªªªßÜIÛn°mÄ›ƒªªªªâÝ‰ëº“4H…“E‹ ¾ÞßÞI’$H‚$…“e‹ßÞA$A…“e‹*âÞŽ™„‰á…“E‹€€ààåÞ“&hRM>…“%‹÷×¥/ãÞ‚$í”x…“E‹ÕUzàäá)ÐÃ¶%e‹E‹P_õäà" A€,1e“E‹UUÕµäß›ÐI—t…“E‹__úøäáÐE‹ƒª €€äáÀ4e‹%ƒê«++äß�6Iµ�¤…“%ƒÿÿª¢äßH’Ý&…“E‹UUõ­äÞ’hR»5…“E‹UUµ%äß ©�
e‹%‹ÿúààäÀ€%‹år`ä=}‚õ€%ƒç9Wx€ÏAIž$}‚9åzç9UUWxä=SIœ$E‹ç9µÕUäLSE‹B-äß«°mk\Çe“E‹UU­­äá0`)�bE‹ƒª äá€am›$E‹ƒªäáëº¡m›$¥“¥zªªªªãÞµí8�¶…“E‹ª"ÿ_áÜ«]»�‹M…“E‹ëäÝ±`
 …“%‹x~_Wäà€(€e‹%ƒ+++¿äÝOü¼?g…“E‹€rZäâ!@E‹%ƒà¨  åä’I�$%‹%ƒ¯ªêªå:¢ˆ%ƒè9xàäAIò$ë¬{ç9UU^àOCÿÿçÿ�ÿç9Ç9ÿVäD¦�˜I’$%ƒÇ9µUUåD€(ž�w%ƒçAÀµäDN">€
%ƒç9W^à·CIš$O>¦jç9ÕUWXäDÉ›$%ƒç9-ÕUäI˜€ð%ƒçAx€-ä7IâÿêÌ%ƒç9UW\àåC©�xI’$ƒç9
µUUäDE‹B5äÝ9éj@…“%‹øÚ×UåÞ?õOùä…“%ƒðúúzåãI$A‚E‹%ƒªêê¿å© E‹Ær@åDØ#'M’$ƒç9X\WUÝDI’ÄI–ƒç9UÕ•5æ–0%ƒfZåDƒ=rÂ$%ƒç9pX\VåFÉ—±ðƒç9•5
	ç½`ƒ…j@€ÌSþƒ>ðÃ?¥jÇ9W\\WæE¿õ±ð{ç9•5
	èæ$Aäz¤r ¨¨øèæ`’H€äz¤r
ª¯çæ$AƒÄz*/¿ýèæ!@’I&f‹brªªªªèædH’!È�f‹‚rªªªªéçL’€	“0f‹‚rªªªªèæ@2I’f‹‚rªªªªçæ@ @ fƒ‚‚ªªªªçàØ&X¢&e‹ƒ			æä�0E‹%ƒ¶¦®®åã I’dB’E‹%ƒªªªªäã†“£rªªªªääI’$I’$†“£rªªªªäK4E‹çA€päD¤�|E‹B/•äCM²'h¢'E‹ç9WV\VDC@(Bf1ªªªªDDI’$I’$(Bf1ªªªªÙCI’$É�ƒç9UUõ-uCI’$I‚$GRç9UUUTäCÉ�dI’$%ƒç9%•UUäH�E‹È9€	äCIÂ$`0%ƒç9UVX`DC$(Bf1ªªªªäC�I–$E‹ç9	%•Uä€@E‹GR@äCIÒ$h4%ƒç9UW\pDC (Bf1ªªªªäD�I‘¤%‹ç9
5ÕäDÐèE‹BX`€Ç6ÿó?ÿ?åzç9UUUT$
LÊ¤LŽ>	J*ªªªª,
€8ö“$Bè9//
6
I’$I’HRBUUUÞ
‰ e“B5
ßÜÛ°¶[²
…“E‹€€äÝö›»ñà
…“E‹Š xZäß$aP5e“E‹UÕ%%ãÞ«`‰›Ä…“E‹zz âÞ
9tœX…“E‹­-Š äÞ‰»Ó$…“E‹€ªWUäÝ£39ØƒÕ…“E‹%äÝù›»9aO…“E‹€ pXäáÅ:lÀ†%e‹E‹÷Uõäâ	$@�†“Ãzªªªªäâ$0€†“Ãzªªªªäà ˆ$I;e“E‹UUý«äÞc²º$U
…“E‹	«^äâ!@	�†“ÃzªªªªäâdB†“ÃzªªªªäºE‹ær@ã4O¢'�ÈE‹è9UVxàD>bÀ4Ùè9ç9¾¾¾ªD-Oe @è9ç9ªêê¾âà~ñÇe‹è9
5ÕäØ@
%…“E‹XPPZäáíÐlX‹µ¥“¥zªªªªäâ@&†“Ãzªªªªä>
8E‹è9ÀpÛ>hÒ$I’$ƒç9\WUUD?É @è9ç9êÿÿþ¹CI’$IžÆjç9UUÕäDÉðe“B%	äÜ©�
©ôJ…“E‹PPPPäß´	NWwe“%ƒzzzääI’$I’$ƒäzº¾¾¾ääI’$I’$%ƒƒ	­­	äã@%ƒƒªª¨äâ €E‹ƒ¿¿¿¿áÜ²³Ø«ƒÙ…“E‹	äÜù]»’H…“E‹ªÕUäà¦K¤DŠe‹E‹XX[_âá@�$H‚¥‹ÅŠªªªªäáIÓ¶Ý6¥“¥zªªªªäáIÚ&[‹¦¥“¥zªªªªäáÛŠ-Öm†“ÃrªªªªäáÙÖb[;´E‹%ƒð **âàd‚	€†“Ãzªªªªäà	I	HÊE‹%ƒ€ø¾*äÜ‚$‘´í$…“%ƒýÿ«ãÜ4@­ûÇ…“%‹Õ×ê€äßIkK6ie‹%ƒ °¾þäÝ·àSÏë¿e“%ƒxò‚Šäáh¬PE‹%ƒ*¿þþäÝOÎÿšÙe“%ƒ
/-ßÞI�$I’Æ›äzªªªªßÞ	’$H …“e‹ªªªªàÞI’$I˜…“e“€@@â7À€e‹è9`€Þ
Iò$üþf‹BUUVX9ï·TBBç9¨¨ ºbOðäOò$‡ZBUUUá@)�e“B
5ÞÜ$I’Aä›è‚ªªªªá
 &e“BÀp\ZHò$òÿ‡ZBTUUU’$Oâ
)BBªªªßI’Ä‰ñe‹BUÕ5
ß; …“hRäÜ©�
·à
…“E‹PXXXääI’$I’$†“£rªªªªäßh%Xµ…“E‹
¥¥¥äâ†“Ãrªªªªäá@‹µXƒ5e‹E‹õ¥%%åá‚DI¶�$e‹%‹ÿúªäáX4íšne‹E‹%µßXæá‰OöoE‹%ƒàà €åâlKš$E‹ƒ/*åá6eK¦àPE‹%ƒ€  €æäIÈ€"E‹%ƒªº¾ºäà€(‘	™�e“%‹µ¯¢âãá!É�$¥“Å‚ªªªªãâI¥‹¥Šªªªªãâ€I� ¥‹¥Šªªªªäâ!’!†“ÃzªªªªäãA�I’ †“Ãzªªªªæ9ÐèE‹BX`€³6I’$O‚'Æjè9UUW\c8I’ß9÷
èAÇ9ªêú^‚9Ið¿mK’gZç9ÕUUç_@ a“$%ƒÇ9ÂyU•bH’$I’$FRÇ9TUUUãbI’$Iš{Ç9UUÕ5èd1PƒÇ9
å:,X²$E‹è9€`XV>:°ã$I’$Bè9þÿÿÿã:I’$I˜%ƒè9UU•%ä:!@`E‹È9	€ã:À‚%K’$E‹è9`XVU;:‚$H’ éA2ªªªªä:Iœ1`%ƒè9Õ5
æJèÐ#'%‹ç9€àXVF:òÜKˆyè9ç9ªªª«Q:Ib?€4è9Ç9ªª¯¯;:H’H’éA2ªªªªM:h’$I’$BÈ9øÿÿÿ×:I”„I–%ƒè9•••5æãIš´)�E‹%ƒ€ XXæÜ�5b­µ…“%ƒ---¯èÜÏÿ—ñT…“ƒ øZåâi›vë†E‹%ƒ€€ªëèå)°
Ý–n%ƒäz ªª èæI�Éf‹bjªªªªèæ$A‚$2f‹bjªªªªèä-Ñ’#9E‹ƒýý­­äã@€IE‹%ƒ‚‚ªªçâR+5P#ÕE‹ƒ¯///äâÁLE‹%ƒŠ€ªªèæ!A’%ƒƒªªþþèçI$@’f‹bjªªªªèä’‚ƒåzêªªªç_M"'X4ƒÇ9W^Xpç_!�I‘œ{Ç9	%5•èØÐ��E‹ƒ
½ÕåM"'Ø4%ƒBW\XpÞ�	‘\…“(B	
%•âeÀ€e“'J`À€Á<¹�üMçÆrÇ9UUV\èJ±�¹õ¿¤r§1
%µÕêÞƒÄz½¿¯©êÝ äzÅrÀêpˆ˜Ã'äzÇ9€xWÑlèã$I’¤¥jÇ9\WUÕècI’x§ `ƒÇ9Uµ
‚écˆXÓ'ƒÇ9€xW×c˜ã$I’äÅrÇ9xWUUècI’Ä9ÕƒÇ9UÕµèi1AÌ{Ç9-àècñt’$ƒÇ9€x^U¢cp’$I’$FZÇ9\UUUÈcI’$Iœ¥jÇ9UUÕ5ècISƒÇ9Õ½è¸ƒ†b	èèI’$I’$f‹bjªªªªéèI’I’$f‹bjªªªªèèI’$I’$f‹bjªªªªéèI’ A�$f‹bjªªªªéèI’$If‹bjªªªªêè!“�$€ƒäzªªº¾éèI‚$	$f‹bjªªªªêè$€$I’ƒäzª¾þþéçƒäzªêúºêæ
R�('%ƒäz«¯«
é°,ƒfZ`èj¬âã$ƒÇ9à^WÈcèó$I’¼¥jÇ9\UUÕèdI’¼ï0åzÇ9UÕ-ê|©0{çA-éè@$@‚F‹‚jªªªªéèH�$ƒäzþþ®®éè@’$@‚ ƒäz¯¯¯¯éè @ƒäz®®®¾éèI’$H�F‹‚jªªªªéèI�$	�ƒäzªªªêêéIAƒäzþþÿÿêèH2`Â0ƒäz««««èßPµ˜-&e‹ƒ¥¥
	éã@E‹äzþþþøêèI!’ƒäzêêúÿêéH$A$EƒcrªªªªêèLB2`B&ƒäz««««éè� I�$ƒäzúªªªêç¶nmÛ$ƒäz¿ªªªêçÝÐní–tƒäzêêêªêè$&L&ƒäz«««ªêè’$A’ƒäzªêúªêè	’$I’ƒäz¿¿¿ºéçdB’$@’F‹‚jªªªªêçé¶mk±mƒäzèêúªêè C&d&ƒäz«««ªéè$ƒäz®®ªªéèI’$F‹‚jªªªªéèH�I’$f‹bjªªªªéç$B2$AF‹‚jªªªªèåI—v+`%ƒäz  ªªåâëŠ6h³.E‹ƒáÞh»dMÖv…“e‹‹‚‚ââT€Ì5E‹‡Z€ÀàpdLxâ$Iò$§bGRøúúþML’$I$‡Z&R

+/MLI’$�$§b‡ZÿÿÿÿeLI�äI’$ÇjˆZ?ÿÿÿÝSà'�
…“§b	
ÝÜ@€$H’ä›è‚ªªªªÝÜH Hä›è‚ªªªªÝÜ‚‚$ä›è‚ªªªªÝÜA I€ ä›è‚ªªªªÝÜ€’ ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ 	ä›è‚ªªªªÝÜA€ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜH$ä›è‚ªªªªÝÜ@€ä›ƒªªªªÝÜ@ä›è‚ªªªªÝÜ €$ä›ƒªªªªÝÜ@H’ä›è‚ªªªªÝÜ€ ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ Iä›è‚ªªªªÝÜ€Iä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜI ä›è‚ªªªªÝÜIä›è‚ªªªªÞÜ@’!A2ä›è‚ªªªªßÜMÛvÛ¶
Ä›ƒªªªªàÞa&I0…“e‹
æÞ§K±�
…“ƒøøxxæÝôÍÆ¢ƒ9…“%ƒ

äÞÂ*Õ­'…“E‹µ%*áÝéØ‰íØ…“E‹ªáÞÀš´I’¤…“e‹¿æÞÏ�»1…“%ƒ€ øxçã¡H�LŠE‹ƒ¸¾¿ºåÞôïüþÆBe“%ƒ
¢úàÞ�$ ƒ$…“e‹¿ßÜK¶¤[³…“E‹ àÜe‘&ÍØ…“e‹
àÜ"EJ4…“e“@@äÞmb;@5…“E‹

%%ßÝ™�$A2…“e‹ÞÝH$I’$ä›è‚ªªªªÝÜ€ @ä›è‚ªªªªÞÜ$I€$‘ä›è‚ªªªªÞÜÉ��ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ	�‚$ä›è‚ªªªªÝÜä›è‚ªªªªÞÜ� 	2ä›è‚ªªªªÞÜ I0!C&ä›è‚ªªªªÞÜ$’	Éä›è‚ªªªªÞÜ	Ã$�ä›è‚ªªªªæÝ1—J©ÐN…“%ƒððxøçÞÏ[·›´	…“ƒ€ªÿ_çã¶CÅR&E‹%ƒ


æå%ƒä‚¨¨¨¨ææI’$I’$%ƒƒ**ªªçæI’$H’$Æƒâ�ªªªªæä 	’	2%‹%ƒýÿÿ¿åã$	 	 E‹%ƒªªª*åá I¶™˜e‹%ƒúªåâ: : E‹%ƒ****äÞ5åP¤´	e“E‹``[_äá[»5[ƒ¥e‹E‹µ%%õäáIš¶Ý6e‹E‹‚èWUäáC‹µX‹¥¥‹¥Šªªªªäâ@@B&†“Ãzªªªªäâ€H †“ÃzªªªªãÞ�­u’8…“E‹u­äÞ´±�L…“E‹UWXpäâ!€†“Ãzªªªªäâ	@�†“Ãzªªªªçå!&%ƒä‚
ªªªçâÒ
MP"%E‹ƒ/¯çäM;lÅ¶mE‹ƒªÿþþæâˆ€E‹%ƒ/µõõæÝÎ_ÛšA…“%ƒÿUæÜ~bÛ“…“%ƒÿÕâÝqe[õ …“E‹ €â[åÜš#Õ“&A…“%‹/ÿßàÜ±`‡´)Ç…“e‹€ãÝ0I%é8…“E‹WWªãÝX+µl’Ä…“E‹­­
âÜÕdS¶…“E‹/
ÞÜ$C&$	’ä›è‚ªªªªßÜ-�íº5…“E‹  ßÜÛ°¦iÚ¶ä›è‚ªªªªäÝ¿›»ñp…“E‹  xXäã	 †“£rªªªªäàHR"Æ…“E‹UU¥­äã†“£rªªªªäßXƒ9˜£%…“E‹¥%%­æà.™vîäe“%ƒêêúúæâ¤Ð€
PE‹ƒ
¯æâql›„€E‹ƒ¾¿åà€¬Úº6E‹%ƒ
ãß€ I´”He“E‹U_zpæâ&1hÂE‹ƒàð° æÝ$iµëÄ…“ƒ×ÿ‚äßs¢¹Ð…“E‹	­WWäÞZÐ;‰…“E‹%%µÕÞÜ!C2`†ä›è‚ªªªªÝÜA$@ä›è‚ªªªªÝÜ H�ä›è‚ªªªªÝÜ‚’ä›è‚ªªªªÝÜ@ @ä›è‚ªªªªÝÜAä›è‚ªªªªÝÜ	�ä›è‚ªªªªÝÜ‚ä›è‚ªªªªÝÜA� ä›è‚ªªªªÝÜH @€ä›è‚ªªªªÝÜ ’…“E‹øü^^ÝÜI€€…“E‹ÝÜ@ ä›è‚ªªªªÝÜ@‚ä›è‚ªªªªÝÜ’€ä›è‚ªªªªÝÜ’ €ä›è‚ªªªªÝÜ	 ä›è‚ªªªªÝÜ	 ä›è‚ªªªªÝÜ	’$@€ä›è‚ªªªªÝÜ	� ä›è‚ªªªªÝÜH ä›è‚ªªªªÝÜ@Aä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ  ä›è‚ªªªªÝÜ@ ä›è‚ªªªªÝÜ@‚ H�ä›è‚ªªªªÝÜA‚ ä›è‚ªªªªÝÜ€ ä›è‚ªªªªÝÜ	Hä›è‚ªªªªÝÜ�  ä›è‚ªªªªÝÜ@�$@� ä›è‚ªªªªÝÜ@‚ ä›è‚ªªªªÝÜI€ä›è‚ªªªªÝÜ	€Iä›è‚ªªªªÝÜ€$Iä›è‚ªªªªÝÜ	 	ä›è‚ªªªªÝÜH�ä›è‚ªªªªÝÜI€ä›è‚ªªªªàÜ6`¶m;…“e‹  ÞÜ$A$I†ä›è‚ªªªªâÜB+Ô¤m;…“E‹
æÝ®ô±…“äzxxxxæãkº&mÛb%ƒÄz¯¯¿¿æá“°IÉdE‹ƒõÿââæÜ
ù��9…“%ƒ-


åÜ­±S…“%‹zxxðæâ¶I[±`CE‹ƒ€ààçä6ÃÐ6%‹ƒþÿÿçßb.¹�4	e‹ƒ
ý~çà“3ùÒe“ƒ/¯õUçß¹ð
’…“ƒxz_Uçæ  fƒ‚‚ªªªªæä@’ 0E‹%ƒ­½½µæá°	‰`e‹ƒúààçäÃ: E‹ƒÿÿÿ¿çÞ$Iµíäe“ƒUÿª‚çÝ�¶]?e“ƒUÕ+
âÝ˜Ý8±�l…“E‹	 ÞÜ$’!	&ä›è‚ªªªªÝÜA€$A€ä›ƒªªªªÞÜI	†ä›ƒªªªªèÝñpS¿›¿…“ƒxø  èä�#ÀDÑE‹ƒ/ÿÿ¿åÞ6@j¯=…“%ƒZû­-ßÜH»¶MÛ&…“e‹ÝÜ	 …“E‹\xðàÝÜH$A†“ÃrªªªªÝÜ	@…“ÅrªªªªÝÜ$	€ e‹E‹UUÿ ÝÜ’e‹E‹UUÿ
ÝÜAH e‹E‹UUÿÝÜ@e‹E‹UUÿÝÜ$A‚e‹E‹UUÿÝÜ� e‹E‹UUÿ ßÜm�m‘fe“%ƒÿêª‚æâI1’E‹äz×ÿú¨ã…E‹äzkªª
â/IÒ$p=E‹ÄrUÿþð/.@’$I’$äzÄrª
0-i×vm×{äzUý€62–`
†AEƒCjªªªªF57ñ|–„äzÄr Yš5�/ù%ƒÄr/-//#Iô_¶Ñ%ƒäz€€ÀÀèP¹•ùƒ¤r—·'/éâ =ÚõïÇE‹ƒ­¯èåÃ2ÝÖnf‹‚rªªªªéå‰MA&i“%ƒ{êªªèã’¨’£9E‹ƒÿµ/äâ`B2d&¥‹¥Šªªªªã5
È@5E‹äzÀà`p?5~|ßÏ•EƒCrªªªª`=ñO�@	äz¤r  ¨ªh[ùí–”FÄr¤r¨¨h^0I¬ë$Är¤r¨ªg^ /õµ�ßÄr¤r
c_±`¦dJd{„iªªªªeX’")’" äz¤r¿¿¿¿Pâ#>âƒ9%ƒÄz+++-±-@�$AÆƒâ�ªªªªv,	$IÆƒâ�ªªªª¢9�9f‹¢zªªªªI’$I’$†‹‚zªªªªI’$I’$†‹‚zªªªªI’$I’$†‹‚zªªªªI’$I’$†‹‚zªªªªÜIžœI‘…“%ƒÕµ%
ÝËä›è‚ªªªªÝÜ	€	 ä›è‚ªªªªÝSÌ5…“§b€à`pdLxâ$I’$çj§bVUUUML�I�¨b§bþúêêML	’$I$¨b§bºªª¯dLÉ‘ÄI’$çj§b•UUUÝSà'�
…“§b	
ßÜmÛ&M×ä›è‚ªªªªæÜ1÷¦À…“%ƒàøx^åàM»nRµE‹%ƒæàñD
Û6�E‹ƒ€à€çã¤
&bB&E‹ƒ
åâmÓ´ÐE‹%ƒ  ãá$C22e‹E‹/?=;ßÞH‚$H …“e‹ßÝ$�$I‚&›$„ªªªªâÝ1`K©K…“E‹pðððáÞM×mÖ¤…“e‹ÂÂ‚èàƒFI¥·e‹ƒ÷Vø æÜP
Õ Í:…“%ƒ/-
àÜ¢ ›Œé8…“E‹ªæÜ`j¶ý'…“%ƒ_úäÜ�¤mný'…“E‹UÿäÜP/õ­óÿ…“E‹ßÜÝÖ¬I34ä›è‚ªªªªÝÜ@ Aä›è‚ªªªªßÝ!™�!‘0ä›è‚ªªªªÞÜ ��d&ä›è‚ªªªªâÝ”J©W…“E‹øøð ßÞH€@$…“e‹‚‚áÞ6`i“$…“E‹®®*ßÞI’$H’$…“e‹€àÞ`’0	Ã$…“E‹
ßÞ	�$H’$…“E‹€áÞ]›¶é�…“E‹ª€ èäà¶’&A
e‹E‹ xxæà)W
“$me“%ƒú~_ÿäã‚E‹%ƒª««ªäá
`
,E‹ƒ
**
äßÉjK±à
e“E‹ZZZ_äÜôKßš5…“%ƒ‚äÝRÍ±÷…“%‹¯ïøpäá°
E‹%ƒ ¨ªªääI’$I’$†“£rªªªªäã E‹%ƒªªªªä‹ÀE‹†b`ã/O²>À
@E‹è9W^àª,ÿù'þú¦jç9•UU\ãp
‰™ÜE‹B-ÕUäm�
E‹GR-äáIº¶ØE‹ƒªäáIÒ&[‹µE‹ƒäá)ÐÅ¶­E‹ƒ€€ äâLB@E‹ƒªªäãE‹%ƒªªªªäâ€€E‹ƒ*** äÞÎ`6US…“E‹Zzz{äãE‹%ƒªª*(äâ$E‹%ƒúz``äâ$À%ƒÄzèx~~ä×äzÄr@ªªúäDtÑÄz§9^ø€ßCI’$|õÄrÇ9UUWx[CI�$I’$BÇ9?ÿÿÿäC�SIœ$E‹ç9µÕUäO
@O%ƒç9à-äDIB'`%ƒÇ9U^ø€›C‰‘$I"'†bç95UU^ä9ä	y÷ä%ƒç9µUäC}‚9€Ø%‹ç9WxàÁCIš$O‚&Årç9ÕUW\åDp
‰—ä%ƒçA
µUå��%‹fZ	åÜ¤imÝ?…“%ƒÕÿ"á€ðØ/ç…“BàpX\`4i›¶i›Bç9WWWäD¹ %ƒÇ9-	åD¨=%ƒÇ9€À`xÚCO’ÄÉ—ƒç9UÕ•5æ�0%ƒfZçaè@&ƒÇ9€`pXã]I’ÄÉ—åzÇ9UÕ•5ç› ƒfZèæ$‘$Àäz¤røè èæ 	’I†ƒÄrýÿªªèæ!A’$É�ƒÄz¿¿+çæHfƒ‚‚ªªªªèæ$I	Áf‹‚rªªªªèæ$I$2f‹‚jªªªªçæ€	f‹‚rªªªªçà€�’ƒ9e‹ƒ¿¯âÞ å„Ž%	…“E‹‹‚€êæãÅÚ­YÛ´E‹%ƒ®¨¨¨äã†“£rªªªªäã†“£rªªªªäãE‹%ƒªªªªäCX&X<%ƒç9XXXpLCÿñÿÿÿ?çAç9¿ÿÿÿWCH’$I’$BÇ9üÿÿÿDC(Bf1ªªªªDC�@(Bf1ªªªªäC!�É•äE‹ç9
-•UäDp8,%ƒÇ9\pÀqCI’$I‚$GJç9UUUTäCÉ�dI’$%ƒç9%•UUäF�E‹È9€	äCIÂ$`0%ƒç9UVX`DDI’$I’$(Bf1ªªªªäD�I–$E‹ç9	%•Uä�@E‹GR@ãDIÒ$h4%ƒç9UW\pD;€�%è9ç9ÿÿÿ«äA�I—$E‹ç9
µUäAhÂ'I’$%ƒç9\VUUD
âƒ9˜ƒ9BÇ9

I’$I’(JBUUUÞ
É•0…“(B•%	ßÞI’$H�Æ›ƒªªªªäÞ1å
©�
…“E‹xXXXäßH�‹%e“E‹UU¥
äáÀ ÃÚµe‹E‹ÕÕ¾âÞqÂØ´d…“E‹¢úúäÞÉî`…“E‹xXZzääI’$I’$†“£rªªªªäâ@†“£rªªªªäâL�†“Ãzªªªªäà 
9€e“E‹¥¥UUäÞS+ÙXÕe“E‹¥¥äàD@&Je‹E‹UV\XâÞ '`š…“E‹«äÞö�JÔ&ˆ…“E‹XX÷Õäá0�e‹E‹UU^Xäá€mK»´¥‹¥ŠªªªªäáX²µíÖe‹E‹%µÞ^ãÐ"	�e‹ƒ@â3N"'@ E‹è9W\pÀD!&¨5Bç9¿¿¯¯D¾ý”	uBÇ9¢ ààä/�Oñ‡E‹è9
5•ãß)šP8…“E‹ý­-¥â
4e‹BÀpÙèßäIž$e‹B\WUU8(mgß€o>Bè9ÿÿÿ¿œ(·ýÛù�†bè9UUUäDÉE‹ç9%	äÝ˜ñÀ@…“E‹%ÕUäÜ©ð­DJ…“E‹Ppbzäâ!„E‹ƒpzxèäál@³¶%ƒäz¾¾ªªäá@»µí�%ƒƒ	 èääI’$I’$%ƒƒ¨¨¨ªäã %ƒä‚



äÞ˜ÑÚ$…“%ƒ/­ÿÿäáÛŠ6m’&E‹ƒâá�$I’¥‹ÅŠªªªªâá	’$I¥‹ÅŠªªªªäá-–vI›$¥“¥zªªªªãá`B†IÂ�¥‹ÅŠªªªªâá�$I�¥‹ÅŠªªªªäáíÖ[»5E‹%ƒàà*
äáÀ¶a–nE‹%ƒ¿¿¸°ßÜÀ°&H‹-…“E‹«	ÞÜ`2$I2…“e“ÝÜ …“e“€äÝ®pO¹�ß…“%ƒ~øà€äàb,�¦`E‹%ƒªèøäã$E‹%ƒþÿÿ¯äÞX
5Xƒ5e“%ƒ---/ßÞI$I‚$Æ›äzªªªªßÞI’$H�$…“e‹ªªªªàÝmÑ]Ñd…“e“@@@@äÞš3Õ‚6H…“%‹/·÷÷ä @ e‹(BpÀÞ.É“?ü>E‹è9UUW\
H‚?xŽ?	J*ªªªªrI�$I’$§bBUUUÝ@h÷“$f“B‚}U øó$I’$ærBTUUU	ÿó¿ÿñ	J*ªªªªÔÉ�›wñ{{BUÕ•äpE‹gRàÝË°+…“E‹ ¢¢ªäÞ©à
©�…“E‹XXXXääI’$I’$†“£rªªªªäâ	 	&†“Ãzªªªªäâ€$I&†“ÃzªªªªäáX4ºe‹E‹%µÕWâáH�$H‚$e‹E‹äáé�né–ne‹E‹XXXXäáÍÐvM›$e‹E‹Zz¢ãá ’$’e‹E‹«ªªèãá	A’$I’¥“Å‚ªªªªåá&d¶é$e‹%ƒ¨ €åã$	’E‹%ƒ¢¿®¨æäI’$�0E‹%ƒªþþªæâ�#ÚtâØE‹ƒ
ãâ¥‹¥Šªªªªãâ†“ÃzªªªªäãA$I‚$†“ÃzªªªªäâLˆ„C2¥‹¥Šªªªªè:XìE‹è9X`€·Pùÿÿþ�ÿ†bÇ9UUUTcb’èA¥)ªªªªdZ` èA¥)ªªªªã;¶ýÿOš%ƒÇ9UUÕ5éc)PƒÇ9
é;èØ£'ƒç9€`XVG:H²'~ž$éA2ªªªªã:I’$I˜%ƒè9UU•%ä:!@`E‹È9	€ã:À‚%K’$E‹è9`XVU;:	$IéA2ªªªªã:Iœ1`%ƒè9Õ5
ãX(Ð£äE‹çA€`XVj*`¢%ÐHè9Ç9õUç=òÿ·e$ƒç9UU•%ä:I²'X‚%%ƒç9U^XX;:I$I’$è9ç9ªªÿÿ;:A’I€$è9ç9ªªÿÿã:¹�KÉŸ$e‹ç9%¥UUÖ3 é$I’${ç9¸WUUå#`)E‹è9

é<ëüƒç9øWæ)¥ðx%ƒè95èÜ$`O¿ûÜ…“ƒZz €èä6–IE‹ƒ{z^^èå[º%[Û%ƒäz

ªªèäE�’&E‹ƒ÷÷­-äãH€@�E‹%ƒªªªªçâR-5R-¬E‹ƒ///¯åâI×dm¶
E‹%ƒªªªêèæ!’f‹brªªªªèç‚I‚$F‹‚jªªªªèçI‚	’$F‹‚jªªªªè‚À€ƒ&J`ÀÐ]Iü$L'ÅrÇ9ÕUW\èSPƒÇ9	
è/À€e“gZjÊ

±I˜$M'&ƒBÕUW\à@�e“B
åZ`õÀ€%ƒÇ9Xp`Àrbù}ÿ¤�ÕÇ9†1

**é[ðéö?ƒç9	­ué[À*úþŸÿäzÇ9à\WUåpI’$‰÷
ÅrÇ9UUµ
éo9QAÀ¼>åzÇ9%à^ècPÏ'Oò$$ƒÇ9xWUUècI’$‰y
ƒÇ9UUµ-édIç	ˆ{Ç9µ€èc¨âã$ƒÇ9à^WÆcàó$I’$¥jÇ9\UUU¥cI’$I’FZÇ9UUU5ècI’˜¦ ƒÇ9Uµ+è’¡ ƒ&J	éèI€$A’$f‹bjªªªªéèI’$I’ f‹bjªªªªéèI’$I$f‹bjªªªªéè	’ I’$f‹bjªªªªèèI’$I’$f‹bjªªªªéè’ I‚$f‹bjªªªªêè		™�ƒäzªêêêêè€	€ƒäz¿¿¿¿èäP�	9%‹ƒ}ý­
éç@$ƒäz¾ªª¨éÌ(ƒåzªªªjæ`XÏçE‹(J€xWÛOXßÿùŸßåzÇ9xWUUècI’äy×ƒÇ9UUµéf1EƒÇ9­éç$A$I2F‹‚jªªªªéä‚ 	’´:%ƒäzúªª
éä�$I®E‹äzÿÿúèêéII’$ƒäzþÿÿúêè!I’	2ƒäz¿¿¿¿éè‚$	’F‹‚jªªªªéèI�	�F‹‚jªªªªêè	™I�0ƒäzêêêªêéI�	� EƒcrªªªªéæÀ¬,%ƒäz¯¯++åÜX­ú´ßç…“%ƒ
éÜ®¯p…“ƒxxXxêè$@†d&ƒäzþ®«ªêè@’	™$ƒäzÿêªªêèdB2$Iƒäz«¯ÿþéèH’@$ƒäzªªª¯éåb"&’$%‹äz+«¿ÿèåé�ëE‹ƒzúÿýéèA’$I’$f‹bjªªªªéèI’ I‚$f‹bjªªªªéèA’ I‚$F‹‚jªªªªéèI‚$I’$f‹bjªªªªéèI‚$I’$f‹bjªªªªéèI’$@F‹‚jªªªªéèA$I’F‹‚jªªªªèèI’$I’$f‹bjªªªªèèI’$I’$f‹bjªªªªéçC2dB�f‹bjªªªªéæíÒ­Û¶
F‹‚jªªªªèâtÃ:b­E‹ƒ-äßNW�e“E‹pZUUäO�ƒ9�9E‹GRxxxxPL¢
Ù¢-2‡Z&R¯¯

ML‚$A$‡ZFR+
ML	’$I’¨b‡ZÿÿÿÿMLA’�¨b§Z¯¯¯¯ÝM±ñ¥“‡b----ÝÜ$@ä›è‚ªªªªÝÜ‚$	’ä›è‚ªªªªÝÜ‚ä›è‚ªªªªÝÜH‚  ä›è‚ªªªªÝÜH€ä›è‚ªªªªÝÜ A�ä›è‚ªªªªÝÜAä›è‚ªªªªÝÜ€$ä›è‚ªªªªÝÜ@A ä›è‚ªªªªÝÜH‚ä›è‚ªªªªÝÜHA’ ä›è‚ªªªªÝÜ€$ ä›ƒªªªªÝÜ 	ä›ƒªªªªÝÜ�$A ä›ƒªªªªÝÜHä›ƒªªªªÝÜ@�$	ä›è‚ªªªªÝÜ‚@�$ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ@$ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜ‚ € ä›è‚ªªªªÝÜ‚$	 ä›è‚ªªªªàÜ¡d¶i;…“e‹€€äÝ@/õ¶Ÿß…“E‹%%
æÞ±�où}?…“%ƒxø 
âÞpÌÄN’$…“E‹ßÞII’$&›$„ªªªªáÞI’¤Iš…“e‹€ÀÀåÞr?š8…“%‹*/%åÞ©�J1�…“%‹XXXXæÞ$PO�M×…“ƒzâ‚ªçà¶�É�¿e‹äzºªæÞ~ÒÚ’H…“ƒªÿ÷çÞ1YJ Ie“ƒ ø_ÿæÜNBß˜‹µ…“%ƒ�¯äÞIÜÚB#5…“E‹€*%%àÜ€LÇt"I…“e‹*ßÜÝÒ´íº
ä›è‚ªªªªÝÜ€€ä›è‚ªªªªÝÜI@ä›è‚ªªªªÝÜ$ä›è‚ªªªªÞÜLH†A‚ä›è‚ªªªªÞÜ	I’ä›è‚ªªªªÞÜ A’dH’ä›è‚ªªªªÞÜÀ$™ä›è‚ªªªªÞÜI2 	ä›è‚ªªªªÝÜH @ä›è‚ªªªªßÜiÛ&íÚbä›è‚ªªªªßÜkÑMÚ6ä›è‚ªªªªãÝÀÐ¥›¸…“E‹µ%Š€æà©oe[Úe“%ƒzø®®çãbBÚ”h�E‹%ƒ
¯öÞæä@��E‹ƒþÿÿ¢çæI’ I$%ƒƒªçæI’ I$Æ‹âyªªªªæä� 2E‹%ƒý½¯¯åã C’$I’E‹%ƒ***
äà‰à"He“E‹PZUUåãB0$C&E‹%ƒ***äáí°nk‹%e‹E‹Z{­
äâI!Ã$†“Ãzªªªªäá€mMš¤e‹E‹U]‚€äáX;$Ýº¥‹¥ŠªªªªäâI’$È$†“Ãzªªªªäâ0	“�¥‹¥ŠªªªªáÞ	Ðk‚&…“e‹ðòâÝö`OÎÔJ…“E‹`ààèäáÖm]Û&e‹E‹UW¯æâ¤I’¡dBE‹ƒààæâ)Ù€-'E‹ƒçäÝÚmštE‹ƒ¯ÿþøçã‚$IeSE‹ƒÿÿðàçå$I’&Æ‹âyªªªªæå€€Æ‹âyªªªªçã‚$Q’-ÆE‹%ƒÕý

æäII’E‹ƒ¢ÿþþæâ”È�ÈE‹ƒ*/++ßÜH‚tH‡v…“E‹äÜÿãº“4	…“E‹WWäÝyn›ÓH…“E‹¨UUäßéVI’le“E‹øWUUäÝu.¶Ò@…“E‹
­ÕUâÜR
Õ£-6…“E‹

ßÜ@¬m’¶…“E‹

äÝé�ïp…“E‹XXXXäâ €†“£rªªªªäßíà¶dke“E‹zPPZäà$‰�e‹E‹UUPPåÞ~^»ã$	…“E‹ŠªUUæâ!i’	‘E‹ƒ€¨ªªçå$‚!†%ƒƒªªª(çâÐ¬6sRÇE‹ƒ/ãß�&`Ñ…“E‹­-­­äÞ1åRä¶A…“E‹xz^WåÝ‚­š/>…“%ƒ·¿áÝNì˜±…“E‹€ààâÞ	%P"Ú…“E‹¯
ãá 0e‹E‹><<<ßÜK²&h‹¥…“E‹ÝÜ$ä›è‚ªªªªÝÜH�Hä›è‚ªªªªÝÜä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ�$� ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ€A$ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ‚	€e“E‹^^^^ÝÜA$…“E‹ÝÜ€Aä›è‚ªªªªÝÜ€ ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ‚@ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ@‚€ä›è‚ªªªªÝÜH€@ ä›è‚ªªªªÝÜ Iä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ€‚ä›è‚ªªªªÝÜ@€ ä›è‚ªªªªÝÜH�$ä›è‚ªªªªÝÜ@’‚ ä›è‚ªªªªÝÜ@H$ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜ	 A�ä›è‚ªªªªÝÜ‚ ä›è‚ªªªªÝÜ	€ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ Iä›è‚ªªªªÝÜ‚ ä›è‚ªªªªÝÜA€@ä›è‚ªªªªÝÜ  ä›è‚ªªªªÝÜ@€ä›è‚ªªªªÞÜd’	Iä›è‚ªªªªáÜv’Ø¶½	…“e‹øàÜ¶m;Ž
I…“E‹ªàÜ¶ã8¶Ù…“e‹çÜòßÿv…“ƒàpçÞñäNÚ‘…“äzxz~ÿæãl[‹%ƒäzýõµ5çå	I’I€%ƒƒ¢ªªªæÝ�9�£9…“ƒ


çÜ¹û—9u…“ƒ€€àpçäé’-Û¬E‹ƒ¸>?¿áÝ É$L’…“E‹«+çÝ¥s¹›û…“ƒzà€çÞ€0­�
…“ƒU_zxèåíº¶Ã2 fƒ‚‚ªªªªçâ 	É`E‹ä‚ÿúààçå$&$	%‹ƒ¯¯ÿÿæá$i��%e“ƒÿÿ­
çå$‚!&%‹ƒ¿¾þ,åÞNÞß�ƒ9…“%ƒÂ«­-ãÝ°cm·…“%ƒ-/* äÝ±pC¿û´…“E‹XX ààÜ°#Û´
…“E‹ºÝÜ$A ä›ƒªªªªÝÜ@‚ ä›ƒªªªªçÜ÷ð
÷K…“ƒðxøøçÝ
:ôã'…“ƒ­/
ßÜ@“´iÛ´…“E‹
ÝÜIä›ƒªªªªáÜvl§¶g…“E‹€€€àäÜOÒúRøe“%ƒªª/%ÝÜ€A�…“E‹ÿ¯ÝÜA$	�$…“E‹ÿÝÜI€ 	…“E‹ÿÝÜ …“E‹ÿÝÜ	€@$…“E‹ÿÝÜ€…“E‹ÿÞÜIH2d…“e‹ª äÜÉ}w·`…“%ƒ€€ðxæâ‘c:¦D
E‹%ƒ¶.úÚãádB’	0¥“¥zªªªªâG€@E‹äzàß.I’$|‚=E‹{UU^x3.‰—¸‰g{äz€€€ 63`ÖmEƒCjªªªªC5Ï—\I”EƒCjªªªªZ
š#9�9%ƒÄr//--$~æGöa%ƒ{‚‚ÂÂèP!�`ƒÄr//+*äâ``…“ÅzªªªªçæA$fƒ‚‚ªªªªçæHf‹brªªªªçâPÕ˜9E‹ƒãâ@�H¥‹¥Šªªªªã4Ø&p¢'E‹äzpX\ü@4ÿñÿ›üEƒCrªªªª]5@ï�säz¤rª¨ €gSÀIä–$Äz¤rþúªaT�„I’ô$äz¤r«ªªª`U �ÿäz¤rªªªªbW�Ääz¤rÿÿúªoa7÷
±�
Är¤r¨¨¨¨ošÕÐH%ƒ¤r-­õUcIbÛÛ%ƒÄrªÿUcIâ?ãÕ%ƒÄr
/­%õS?õƒ9%ƒäz
I’$I‚$†‹‚zªªªªI’$I’$†‹‚zªªªªI’$I’$†‹‚zªªªªÛI’Ä‰…“%ƒUÕ5Ý)!0…“E‹	ÝÜ‚ @ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝM�ƒ9˜9…“‡bpxxpML@ I‚$¨b§bï¾ª«MLI’$I�¨b§bªªêúMLI’$A’ ¨b§bªª®ºMLH‚$I�$¨b§b««êªÝL±ñ…“§b
--
àÜ±åŽáX…“E‹€€€€çã¦d€„M9E‹ƒü¾.äáh³6m³u¥‹¥Šªªªªèâés¶V
E‹ƒ ððøèáõ]û›�9E‹ƒãÞ4muç¤…“E‹Uÿª‚æà±m·Ü:¬…“%ƒªª¿·àÞÃ$L&…“e‹ßÞA’$A$&›$„ªªªªáÝ1`C6iÓ…“E‹ð  ÞÜ†$C’ä›è‚ªªªªßÜÖ¤iÓ¶…“E‹ ßÜÀÒ´iÛvä›è‚ªªªªÞÜ!À�$†ä›è‚ªªªªÝÜ	 €ä›è‚ªªªªÝÜ ä›è‚ªªªªÞÜ$Á$Aä›è‚ªªªªáÝ¤8€#1…“E‹

ÝÜH@‚ä›è‚ªªªªÝÜ	€ä›è‚ªªªªÝÜ‚ä›è‚ªªªªßÜ-Ö¶m›&ä›è‚ªªªªßÜëÖ]—nÄ›ƒªªªªßÞ	’$I’$Æ›ƒªªªªÞÞI’$I’$Æ›ƒªªªªÞÞI’$I’$Æ›ƒªªªªßÞA‚I€$Æ›ƒªªªªäßvëvÝ�…“E‹êþ^^æá‰k§Ý6AE‹ƒ€¨åâX³%Ø¶mE‹ƒ
"‚äà¤EÚ Øe‹%ƒ€
äàP"9„De‹%ƒ

ªêäâ!@E‹ƒ ¨ªªäÜPÑ€@…“E‹%5ÕUäÝ±¶àJ…“E‹XXZ^äá€mkÛ$E‹ƒªäá0m›¤E‹ƒªäáÀº6m’&E‹ƒâá@’$I’$¥‹ÅŠªªªªäáÝ�)�E‹ƒ€€äc`E‹GRx€â'ÉOÿ
`E‹è9U^x€°DI‘äIÂ'¦jç95UUVäDÐy•ä%ƒçAµUä˜�E‹fZ	äßk¼&Z
l…“E‹­¯õÕäà&S¶`e‹%ƒ€€ èäá@¬6E‹%ƒ

ªêåâéšlÝ6E‹%ƒ  ªÿåá	EŠ	IE‹%ƒ ª«äâ!�	Á¥“¥zªªªªääI’$I’$E‹%ƒàª**äâ$ÀE‹äz^ú €ääI’$I’$%ƒÄzUø ääI’$I’$ƒ¤rÿ¿ª
äµ€%‹¥j{**åCN":€%‹ç9Wz ÄCI’$N:ÆrÇ9UUWx„>¿ñÿÿŸ$GRç95UUUä/`
¿ù'%ƒçA-ÕUåDXh�
E‹çAx€äöO?˜ˆ%ƒè9UWx€Ì÷�»¹ýÛÆrè9-ÕUWäFOAñ�¼%ƒçA`‚-ÕßDIÒ$˜#¨ƒç9UWxÂà2¯ðŸò'E‹ç9-ÕUUß `�l;…“èA‚ëU{HîäIžäÇjBTWUUä4ù™W±%ƒç9•5%	å‘ %ƒfZ€@ÜDh²$N’Ä{Ç9\VWÕåD¹ %ƒçA%	æx@(%‹GR€À`ÏVpÂ$O’ÄÅjÇ9\VUÕç]±� ƒÇ9-	èædH’˜f‹brªªªªçæ€ f‹‚rªªªªçæH$fƒ‚‚ªªªªçæ@‚€$fƒ‚‚ªªªªçæA’fƒ‚‚ªªªªèæ!@!I’fƒ‚‚ªªªªçæfƒ‚‚ªªªªçæfƒ‚‚ªªªªçä[E‹ƒ¯ÿÿÿçäI²­Ø²µE‹ƒ
¿¯¯åD€9E‹È9 xäDu—$%‹ç9¿Uäa@l E‹B€ÀCÌCXç$I’$åzç9¸WUUäD‚béù“$E‹çA`iUUDCA(Bf1ªªªªDC(Bf1ªªªªºCI’ÄI�DÆjç9UÕäDI²'ÐèE‹çAUVX`DC@(Bf1ªªªªäD�É•äE‹çA	%•UäDp8,%ƒÈ9\pÀpCI’$I‚$'Jç9UUUTäCÉ�dI’$%ƒç9%•UUäD�E‹È9€	äCIÂ$`0%ƒç9UVX`DC (Bf1ªªªªäD�I–$E‹ç9	%•Uä�@E‹GR@äÂ'h8%ƒè9UW\pD7`èAç9þþþþDC(Bf1ªªªªD
˜ƒ9˜ƒùBÇ9à
I–0e“B•%	àÞL&		†…“e‹€ŠäÞ‰ãº“4…“E‹ªWWäÞñTj’A…“E‹XZUUàÝX»¶h³n…“e‹¢äÝný»1w…“E‹ª pZãÞ±S;š9…“E‹ 
--áÞI‘¤iÚ¦…“E‹ €€€äâ@’†“ÃzªªªªääI’$I’$†“£rªªªªäßÚ´º˜9e“E‹}­%%äÞ@)ÐNe“E‹UWXxäâ€€†“£rªªªªäáéÐÍÐne‹E‹XZZzäáMÛ¬¥“¥zªªªªäà"e‹E‹ÕU_päáÉ°†“ÃzªªªªäãH†“£rªªªªäã�†“£rªªªªäáÛ†
kº¶¥‹¥ŠªªªªäÞ@E‹%ƒ`ª(ã%}‚&Ð&%ƒèAW\PXD ±PN+±èAç9êêª¯C-€(‰ÿóÿBÇ9¿¿ªªã*ð	‰�ü%ƒè9	õUã
`²?öoû%‹èA\VUU®û$ô�I)BBÿ«ýU†¿�Ûy{GRè9ÿÿâ'	e‹B5
äÞP)s…“E‹W^xèäã ’ †“£rªªªªäâH	Á†“Ãzªªªªäß˜-5ÀE‹%ƒ

âêäáiš¶Û¶%ƒäz¨ª¨äâF‹‚jªªªªäâ`$%ƒƒªäãf‹¢zªªªªäã�E‹%ƒ¯¯¯¯ááI’$I’$¥‹ÅŠªªªªãá!!“$e‹E‹^^º*äßÐ*­[ëÄe‹E‹µµ®ãáI’!�e‹E‹êú^`äâ’ 2†“ÃrªªªªäáMÒ¶À¶­¥“¥zªªªªâá@’$@€¥“¥zªªªªäß�°AR4e‹%ƒúú¯/ãÜ��9­ãç…“%‹--+
äÜy~Û·t…“%ƒ øxãÝIb»¤…“%ƒªÿßâÝvêv€Ae“E‹ÀzUUäÝ0I¾ýØe“%ƒ_ÿª€äß�½µîE‹%ƒ€àäÞR-5X5e“%ƒ///-ßÞI’$	�…“E‹ªªªêàÝÛÖ.mƒµ…“e‹ªª*/ßÜØ°MÛ¶…“e‹Â€ãÞB;µ®O…“E‹õõ~xäÞX,9˜£±…“E‹¥%%­ã5@ e‹è9pÀÒOò$M'f‹BUUW\°m¶�ü)BBÿÿªªÐ¸iïo)BBÿÿþú
öàSŽë¼)BBúúêê’°±¤Mæ)BBÿÿÿ¯Dÿ›¼1BÇ9€€ àäð?ñ‡E‹èA	%•ãÞØ
h®K…“E‹µµÚXäßÉÉ`…“E‹XZZZäÝhX�=…“E‹UU%äÝ¦Aï…“E‹UUXPäÝìVŽZ>…“E‹Zú-
äÝ¤àÿ…“E‹ZXXPâáH‚$H€e‹E‹äáÉ�nIÛ¶e‹E‹Xø ªâáI‚$	’$e‹E‹æáq—NñäE‹%ƒ€àààæá›£5R5E‹%ƒ
âáI�$I’$e‹E‹€âá�$H‚e‹E‹þãá’	’e‹E‹ÿ¨¨¨ãá@�¥‹¥Šªªªªãâ		’ ¥‹¥Šªªªªäâ$A’!I&¥‹¥Šªªªªäâ$	C&†“Ãzªªªªäâ`È„dB‚¥‹¥Šªªªªèâé”Néä
E‹ƒððððèbX0ƒÇ9X`€¯bI’$I‚$fbÇ9UUUTdY àèA¥)ªªªª¾:ÏñäOò$ærè95UUUå:6,ç“$E‹è9€b[UH:˜“$I"Iè9ç9ªªªÿå:I’$I˜ƒè9UU•%è;!@`%ƒè9	€ä:À‚%K’$E‹è9`XVU;:€$A’$éA2ªªªªä:Iœ1`%ƒè9Õ5
ä:èÐ£'E‹B€`XVd:ô�sù�$BÇ9|þúªã;¶ýßÉ•e“ç9UU•%èa €À&%ƒÇ9	‚`X¯:Hò$Oò$¦jç9TUUUO:I’$I’BÇ9ÿÿÿ;:I’$I(Bf1ªªªª;:II’$(Bf1ªªªªj:Iž›ñ�çAÇ9ÿ_?âJ)jñäÓ?åzÇ9Íy_Wa¶ðOù»BÇ9Zzúúc:Ú€¶›ÄBÇ9•ÕÿÿáO�ù�D…“Ç9-•çâàiÓªÕE‹ƒøø®.èã«oNš$E‹ƒzúªèã�£Ùuì¸E‹ƒ-¯ª¨çãqlš E‹ƒ€ªÿÿèâƒ&iR5E‹ƒ÷÷­-çâ$Img§E‹ƒÿÿª€èæ$@!F‹‚jªªªªèçA‚ 	� F‹‚jªªªªèä€$Id;%ƒäzªªªèåÛ`ØÐl%ƒäzªªª è=˜4À %ƒç9Xpà€Û>ñ|Iœ$E‹B5•ÕUár…“ÇjÝ`9À€…“(BXp`ÀÞÉ�XI˜Ä…“B%µÕUçg@m'%ƒçA€€x_•mH‚ÿÿÿÿB§1üüÿÿ¸[âÿöïeZÇ9UUU5ÙbÉ›õÅrÇ9Õ%‹xÞpƒ:N’$¥r§9‚xWUÞlO’$ÉÅrÇ9UUÕ-éfÉûN@ƒÇ9Õ-€èd`XÏ'ƒçA€xWác˜Ó'I’$åzÇ9xWUUcI’$I’&JÇ9UUU•ècI’¼1E{Ç9UÕ-èqñ0ƒçA-èèI’$I’$f‹bjªªªªéèI’$I‚$f‹bjªªªªéèA’$I’$f‹bjªªªªéè H’$f‹bjªªªªéèI’$	�$f‹bjªªªªèèI’$I’$f‹bjªªªªèèI’$I’$f‹bjªªªªéèI’$I‚ f‹bjªªªªêè	’	™ƒäzêêêêêè$H� È$ƒäz¿¿¿¯éår"&)Ò%‹äz««êèm@À¼>ƒÇ9à^åÐºúõS?{è9à^UUãOžÄ‰÷
E‹BUUÕ-éWyç	ƒÇ9µ/éá‘H’ I$ƒåz­ªªªéç �$H&F‹‚jªªªªèæ�„%ƒ{ªªª çß¢¯>P	me‹ƒ­éâ)uN”0E‹äzøèúÿêçíÐmíº5ƒäzúúþ«êà‘ ÍæE‹Äzÿ¯éæÃ¶mÁPF‹‚jªªªªêè	“0	ƒäzªªêêêèIÈ$d&ƒ{ªªª«êè!H’$H’ƒäzþþþúêåÐ"ÍØ,-%ƒÄz++++àÜ°
Û²;…“E‹åÜ÷pw·ûÇ…“%ƒpàèß0	®�
e“ƒU_xxèå€uX‚µ%ƒäzªª

êçÝÐi‘nƒäzúúúúêè`B$Á�ƒäzÿÿÿûêè$I  H’ƒäzþÿÿêéèI‚$@$ƒäzªª««éèI’$I’ f‹bjªªªªéèI$ƒäzªªªúéèI’$F‹‚jªªªªéèA’$A$F‹‚jªªªªéèI�$Iƒäzªªª®êè$I2I’ƒäz®þ¿¯éèH 	� F‹‚jªªªªéè’�F‹‚jªªªªéè@$ƒäzª®««êèd�$É�ƒäzªÿ¾ªéç$ I†ƒäzºªªªèä€Q9E‹ƒýý//çã :v;E‹ƒäVPðÀˆE‹gZp`à€gLò'~‚'¨bgZµµµµMLH$$èbRªªªªMLA$I$¨b§ZªªÿÿeLI’$Ižçj¨bUUU•ÝT©p@…“§b
	ÝÜH‚ä›è‚ªªªªÝÜ@@€ä›è‚ªªªªÝÜ€$ä›è‚ªªªªÝÜI‚ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜ‚€ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ	Hä›è‚ªªªªÝÜ Aä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ@�$@ä›è‚ªªªªÝÜI  ä›ƒªªªªÝÜ	’ $ä›ƒªªªªÝÜ I ä›ƒªªªªÞÜ!C2$Cä›è‚ªªªªÞÜ$’	ƒ0ä›è‚ªªªªÝÜ@ ä›è‚ªªªªÝÜ H€ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ€ ä›è‚ªªªªáÜiåŽg{…“e‹€À€æÞ›#ô6…“%ƒ/§×_áÞMÒ¤K‡u…“E‹‚‹äÞIR;R#¬…“E‹*%µáÞI�¤m:l…“E‹€€€ªåÞ€³=vb?…“%‹%/**æÝ¯ðNyë¶…“%ƒxð€ æß�4m¿Ÿä…“ƒÿÿª åÞ�¾í'…“%ƒªçÝ=úöó?…“ƒ­áÝ’@Û±mÛ…“E‹ªàÝØ–nm×…“E‹Š€€€çßIþ¿Ô$Ae“ƒ€þWçáÝ:ŒP‚9E‹ƒ(?æÞNÂú“h…“%ƒ*ÿõÞÜI2	’ä›è‚ªªªªÝÜ$�$ä›è‚ªªªªÝÜ‚ä›è‚ªªªªÝÜ ä›è‚ªªªªÞÜLÂ0@B�ä›è‚ªªªªÞÝI�€Ä›ƒªªªªÞÜ$	2ä›è‚ªªªªÞÜI0’ä›è‚ªªªªÞÜ$�$	’ä›è‚ªªªªßÜÃÖvMÛ6ä›è‚ªªªªÞÜ!C’$Iä›è‚ªªªªäÝyžÛ·v…“E‹ XXåÞî¿TK…“E‹^XZZåßÀj5ë´…“%ƒßûª¢äÞìàP•t…“E‹Zb``æä@E‹%ƒWWWVæå  Æ‹âyªªªªæäC2`Â$E‹%ƒ¯«««äâ &†“Ãzªªªªäâ`„H†“ÃzªªªªäãA †“Ãzªªªªäá[²¶[‡
e‹E‹
­õUãâA@ ¥‹¥Šªªªªãá	Á�e‹E‹àðÿÿãâ�¥‹¥Šªªªªãá€	‘e‹E‹ÿÿððäáëÖ¡Ûº¦¥‹¥ŠªªªªãàMÒ¶Øe“E‹ŠëUUãß”I�#%e“E‹~õ

ãà¶mí�ne“E‹UW^^æâ1dƒ¶h‹E‹%ƒ°00 áÜè6;‹�­…“E‹

æÜ&pS¹mÿ…“%ƒxðæÝ 	ns…“%ƒUèàæã6Ö6E‹ƒÿþþ
æä I$É�E‹ƒÿÿÿªæå	HÆ‹âyªªªªæå@ I$Æ‹âyªªªªæâ#Ñ€,‰E‹%ƒ//¯«äÜ}Ìþš­…“E‹

%äÜ�à
©TJ…“E‹ZXXXäÜ©µôÝä…“E‹¥­äÜ0I¶™ß…“E‹UW¨äà &Û…“E‹UUWúãÜ˜�õëã'…“E‹

àÜmÛ‰i…“E‹ äÝñ÷à
…“E‹XXXZääI’$I’$†“£rªªªªäá[¬:`†“Ãzªªªªäß ­”le“E‹UUZðåß’0RNjÛe“E‹UU‚‚æãÀ:lÅ–mE‹%ƒ¯®®¨çä[Ò%[Û
E‹ƒ

þþçâj­9šÍE‹ƒ
/âà€	‚e“E‹õ_úúåÞÀ	.™¸…“%‹__úªãÜ˜�ùìSÿ…“E‹
	ßÜéÐ¦MÚ¶ä›è‚ªªªªßÜØÖdMÖfÄ›ƒªªªªãÞ6©Sí9…“E‹×·/
ÞÜ`‚�$™�ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜH€ ä›è‚ªªªªÝÜ	I$ä›è‚ªªªªÝÜH ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜH‚Hä›è‚ªªªªÝÜ’ä›è‚ªªªªÝÜ	€ &›$„ªªªªÝÜ€ H …“E‹þþþþÝÜ€…“E‹ÝÜ€ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ@$@ä›è‚ªªªªÝÜ €ä›è‚ªªªªÝÜä›è‚ªªªªÝÜHä›è‚ªªªªÝÜ�€ä›è‚ªªªªÝÜ�‚ä›è‚ªªªªÝÜH$ä›è‚ªªªªÝÜ€	ä›è‚ªªªªÝÜA€ ä›è‚ªªªªÝÜ	€ @ä›è‚ªªªªÝÜ  ä›è‚ªªªªÝÜ	‚@ä›è‚ªªªªÝÜ	‚$ä›è‚ªªªªÝÜ ‚ ä›è‚ªªªªÝÜ@ @ä›è‚ªªªªÝÜ@€ä›è‚ªªªªÝÜAä›è‚ªªªªÝÜ€@ä›è‚ªªªªÝÜI‚ä›è‚ªªªªÝÜ€Hä›è‚ªªªªÝÜ		ä›è‚ªªªªÝÜHä›è‚ªªªªæÝIš—ñ�O…“%ƒ€pðçâé6H E‹ƒ þÿÿçäI`E‹ƒÿÿÿçÜ›ƒõ€@…“ƒ-½ÕçÜñpöÐ…“ƒpppzçãb,Ù’(
%ƒäzêêúxçãb"ÚbÅƒÄr////çäÝ2,PlE‹ƒ¿¿ÿÿçÜôÏ:šõ…“ƒ-çÝññ�s…“ƒpppàçå$I� C€fƒ‚‚ªªªªæßÛ
©£¿&…“%ƒÿõ¯ßÝ‰�$I…“e‹°çÜ¯pOéÜ…“ƒxà€èã$h•šjE‹ƒÿÿÿøèâÜDJö�E‹ƒÿÿððèçH$I f‹‚rªªªªçàØÙÐ$qe“ƒ
­õýæàR4€¨‰e“%ƒ¯/µ¿àÝÀÚ$KÒ$…“E‹äÝ7ù·…“E‹XXXðçÞ?u¿”oe“ƒðppàçß’(A¬�Oe‹ƒ¿ÿðàæÜ~ÎÚ@…“%ƒ«ÕÕãÜùc»š	…“E‹‚UUçÝ1db&ˆ…“ƒøúß¿àÜˆ;r¬˜…“E‹àÜNl;±M…“E‹ªâÜv§±9…“E‹€jçÝ1e$e“ƒàøÞ×æÜ¢3ÚíD…“%ƒ«úZäÜÏïÖ’I…“E‹ªUUãÜÿcÛÚH…“E‹ªýUãÜOn×Û	…“E‹€ÿUæÝIbÿ)H…“%ƒ
¯õåÜyÒºÒH…“%ƒ
¯õäÜbÛÛI…“E‹€ÿUãÝ)WJ…“E‹ø~_UäáéÐ
ÝÚµ¥“¥zªªªªæâ H&ÛE‹ƒþ¾ãâH€¥“¥zªªªªãâ$A’ ¥“¥zªªªªãCÀ`E‹äzà€á0Iò$r8E‹äzUW^p95±IJ’$EƒCjªªªªF6OôÿñEƒCjªªªª_�9�¯ù%ƒÄr--­¯¥IþÇÿ÷E‹äzêë¯¿é¹  %ƒ{¾¼¼¼äâ `€E‹%ƒ‚ƒèæa2�fƒ‚‚ªªªªèæ	É�	I�f‹brªªªªèãª£9Ò
`E‹ƒ/¿õä‘@
 E‹%ƒÀB 4Hâ$I’$%ƒäzüÿÿÿ74i»ní6`EƒCrªªªª@5ù�üÿÿÿEƒCrªªªªA6�üOþÿEƒCrªªªªI6$™ßù{EƒCjªªªª`?ÏŸüÝ&äzÄr¨þaCIšÄÛäzÄrªÿna‰±�'Är¤r¨¨(ha`ÏßÎ“üÄr¤r
ca$I“$d{„iªªªªcO˜ äz¤r+ÿÿÿc£õ€`%ƒÄr+-½ÕOâ$K‚ÿ%ƒäzI’$I@†‹‚zªªªªÜI’¤‰•
…“%ƒÕ•5Ýe …“E‹ÝÜ  ä›è‚ªªªªÝÜ@ ä›è‚ªªªªÝÜä›è‚ªªªªÝTPðÀ€…“§bp`à€dLI’$N‚'çj¨bUUUVMLI$A�$¨b§bª®îªMLA$H’$¨b§bî®«ªdLI’$Iœçj§bUUU•ÝR©p@…“§b
	ßÜMÑMÖ…“E‹€€€€çãVb’–dE‹ƒ¬üüçãd,ÆRÚE‹ƒ
éæÙV`–¡%ƒ{¨ª¨ªèßPƒ9c=²e“ƒ--+«ãÞIšdöÔ
…“E‹€àjzæÞ‚(±cÏ&…“%ƒµ·/
ßÞH‚$	’…“e‹âÝnâº¶ä	…“E‹¨øàÝm×®k‚¦…“e‹ßÝL’„	™ä›è‚ªªªªßÜMº¶h³5ä›è‚ªªªªÝÜ@‚ä›è‚ªªªªÝÜ @ ä›è‚ªªªªÝÜHä›è‚ªªªªÝÜ$ä›è‚ªªªªÞÜ$A&d˜�ä›è‚ªªªªÞÜ˜0!É�ä›è‚ªªªªÝÜ@@€ä›è‚ªªªªÝÜ’A ä›è‚ªªªªÝÜ	$ ä›è‚ªªªªÝÜ ä›è‚ªªªªÞÜ!@!ÀÄ›ƒªªªªßÞ	$I€Æ›ƒªªªªßÞI�$	’Æ›ƒªªªªßÞI�$	$Æ›ƒªªªªßÞHI’$Æ›ƒªªªªäÞá1—´…“E‹Xxè åá@¶“E‹ƒ¨ åá)Æv’Äe‹%ƒªäâB€‚E‹%ƒ
ªª(äáÐIÛ´E‹ƒ€ääI’$I’$E‹%ƒªªªªäáÀ‚­E‹ƒ
ªäà±D e‹%ƒ ¨ªÿäáIÒ¶ØE‹ƒªäáMÒ¶E‹ƒªäáI’¶lE‹ƒ
äáIÒ&h:¬¥“¥zªªªªäáIÛf0E‹ƒ äá@,`e‹%ƒ**ª«äßI•T­ e‹E‹ÀÀp^äJšˆ%ƒBxÀä'ÿßÿ¢¨E‹è9UW~àÑîð›ÉýÜårè9-ÕUWäD0ñ�¼E‹çA
-ÕäÁE‹år	åäI�$I’%‹%ƒêêêþæäH€$™�†‹‚zªªªªåäI‚$I‚$%‹%ƒ««««äã E‹%ƒªªªªåäI’I’$E‹%ƒªªªªæäI’I‚E‹%ƒ ª¾¾åäI‚$H‚$E‹%ƒzªªªåäI’$I’E‹%ƒÕªªªåÜ’ MR
5e“%ƒýÿ+åÜP«ùõŸ?…“%ƒ-å†#@ …“†bx   ä/O²>Ð@%ƒçAU^à¤öo?õþ†bBUUU\±9‘»¹›Û‡bè9/×WWã@v÷çe“è9µÕßP{­äe“çA^àäJIò$ëÌ%ƒÇ9UU^àÖM§�˜I’üårÇ9µUUÐCjðôXåzç9^`‹µÌöS?ôõårè9UUWø
I�DIðDiJg)ªªªªå#`1•¿%‹è9½ÕåKÀ9hÂ'%ƒç9`p\WåHI˜TùƒÇ9•5-	æâ”‰)1†‹‚zªªªªåL@ƒ=rÂ$%ƒÇ9pX\WçUI˜¹ƒÇ9•5%	çæH f‹brªªªªèæ$A’$É0f‹brªªªªçæ€ Ifƒ‚‚ªªªªçæ€ fƒ‚‚ªªªªçæ€	€fƒ‚‚ªªªªçæ€fƒ‚‚ªªªªçæfƒ‚‚ªªªªçæ€ fƒ‚‚ªªªªçæfƒ‚‚ªªªªçæ’$$fƒ‚‚ªªªªæC@€=%ƒçA€`PÆCxâ$I’$ærç9TWUUDC (Bf1ªªªªÞD)štIš$%ƒç9ÍµÕU’CIò$xB'gZç9UWT^DC(Bf1ªªªªDC(Bf1ªªªªXDI’$I(BÇ9ÿÿÿÃFDI�$I’$èAç9¿ÿÿÿäC”É�dE‹ç9‚	%•äDO¢'ÐèE‹çAUVX`DC€€(Bf1ªªªªäD�É•äE‹çA	%•UäCp8,%ƒè9\pÀoCI’$I‚$'Jç9UUUTäCÉ�dI’$%ƒç9%•UUäD�E‹Ç9€	äDIÂ$`0%ƒç9UVX`DCA€(Bf1ªªªªäC�É™$E‹ç9	%ÕUä:Ð£'N’$E‹ç9XVWUDBè9ç9þÿÿÿDC (Bf1ªªªªäø0E‹èA•%
äâaH†“ÃzªªªªäÞ›5P
´…“E‹-%¥¥äß1e“E‹XXWUäâ€€†“£rªªªªãÞõPu<;…“E‹zz‚ªäß4@©oe“E‹UUXøàÞ`Â„LÂ„…“E‹
äÞI’¤ñ…“E‹ xXäß±íØÓe“E‹€€UUäâ$†“Ãzªªªªäâ	€��†“Ãzªªªªäàd:¤D
e“E‹­¥]_äáÐé¶b†“Ãzªªªªãß´M‡ŽH…“E‹««úZãÞ@-9m;W…“E‹%/ªêäÞ1s“$…“E‹hxWUäã$†“£rªªªªäâ$I"$	€†“Ãzªªªªäß®�ŽPe“E‹ZPPZäÞ€hP‹9…“E‹UU¥-ä1€ƒ%E‹è9€`X�øÿßÉ�Ø¦bèATUUUC/Ã&lšÝÇéA2ªªªªD<Ï?†pè9ç9ªþþþD<·  è9ç9ª¿¿¿5'(ÍçüVBè9ÿ«ëÿc$Éý»¶oGRè9ÿW×=ä6I‘ E‹è95
äâC’$’¥‹¥ŠªªªªäßÉVCe“E‹pZUUäà‰`ˆe‹E‹PPUÕãß
Åb"Úe“E‹¥
	«äá[³-ÃE‹%ƒ¨èäß±� 	E‹ƒppx~ääI’$I’$Â‰¦{ÿÿÿÿäã$%ƒƒ¯¯
äáØŠ5X‹5E‹%ƒ-


äâ	‘�E‹%ƒ¨¨®ªäáIÒ&X‹u¥“¥zªªªªãÞÛºÕP9…“E‹ÿ½%-ßÝ™$I’$ä›è‚ªªªªáÜÛP{‰›¸…“E‹ê€äà€@!še‹E‹UV¨¬äâI’$ B‚E‹ƒ(ãáI˜�!AE‹ƒ€  äÜ9¢¯ö…“%ƒ-///ÞÜ I$Á…“e“€À@äÝñp&h…“%ƒx~ß×äÝ�¤�¾ß?…“%ƒÕÿ«
ßÜ¶6M›&…“E‹«áÜ­±g»…“E‹xhà€äâ@’E‹%ƒúþþüäÞP5P£9e“%ƒ---/äÞ1®”e“%ƒøxxxäÞ£Õ€@e“%ƒ/-½õßÜm»è¶®…“e‹€‚ãÝqi·î–…“E‹¨¨øXâÞ$N,“…“E‹~x¢«ãß‰Ž;e“E‹ÕÕß�È…“	BpÀÇI’$N'F‹BUUW\.àoÉ�$)BBúúªªÞI’Ä1Qe“BUÕ-ÞIÒ$h4…“BUW\pD¯ð
ñ”s)BÇ9úúøèD˜­9ãC?(BÇ9/+
ãð¹�Xe‹(B	%•äÞµ`K¶�P…“E‹ZZZpäÝ˜Õ€@…“E‹%ÕUäÜ±pO¾ÛÜ…“E‹PààÝX³&KÚ&…“E‹äÜ·K·”
…“E‹PPPPäáMÚ´m·ae‹E‹‚âz_åãIB‚$™�E‹%ƒ(ª âá‚$‚$e‹E‹æáñ”îwE‹%ƒàà €åá0�#:E‹%ƒ
âáI$I “„ªªªªâáI’Ae‹E‹€€èæá‰ãº�6hE‹ƒ ªäâ	É„L’¥‹¥Šªªªªãâ� 	�¥‹¥Šªªªªãâ�@ ¥‹¥Šªªªªãâ€@¥‹¥ŠªªªªçâñæJ®`OE‹ƒ ððàèãñT› IE‹ƒðúÿÿèæ A�H2f‹‚rªªªªèb`0ƒç9\pÀ£N¶mÛ¶�'fZÇ9UUUTc:âÕ€&‘ç9Ç9-ý¯c:9ç
 ç9Ç9àxWèXIòÿÿù{Ç9UU•5èX!@`ƒÇ1	€è:ÀŽùûó'{Ç9`XVUD:H¢$Nž$(Bf1ªªªªä:Iœ1`%ƒè9Õ5
ä9èÐ£'E‹B€`XVP9Hò$I’$BÈ9üÿÿÿã9I’äÉ•e“èAUU•%äD `ƒ%E‹ç9	‚`X©Gˆ�Û·ÿû¦jÇ9TUUUÃ:Oò$Oþårç9UUUä:¹ôaÂ‚%E‹çA¥‰bXK:HÎ$Ï“$BÇ9üþÿÿ;:I’�$(Bf1ªªªª`%uR'íVè9Ç9Š
ú^R3&—%àsè9Ç9¾ªúúC/v9’ Ù$è9ç9êÿÿªD-$Gr$ñ§èAç9ÿÿÿëh"%QŽM:(JÇ9—WÕõäP›Ü%‹è9ýUäE�E‹çA5æã)�i»&E‹ƒøø¨*çã4i›¶E‹ƒªªúøçã€#9vâ8E‹ƒ//*åâIÖvm›E‹ƒ€€€ èÞh
9e“ƒUÕ¥%èÜ¶�vŸ?…“ƒUÿªâÜ7ÛŽcÇ…“E‹ýçÜ�pOy—¼…“ƒzø €èÔ€@$HE‹ƒu•—·ßM¢'`9e‹(BWVXpÝ	‘|e“(B	
%•ÝÄ…“F‹@ÑN¢'p²'e“BWV\Vèw›—y—
ƒè9UUµ-épÉë€E‹ÆAÕ­€æ%“­³ýØƒç9«x\W½cóÿÿIž…bÇ9VUU5émIžw @{Ç9Uµêd@Ð<'{Ç9à^éc½>I’$åzÇ9à^UUic²m'vlèA¥)ªªªªècI’äIç	åzÇ9UUµéc9ÕƒçAµéæÙ°mÃlf‹bjªªªªéèH‚I’$f‹bjªªªªéèI’ I’$f‹bjªªªªêèI˜�	‘ƒäzªêêêêè$C�	�ƒäzªÿÿÿêéI I$ƒäzªÿÿÿêéII‚$ƒäzªÿÿÿêè$I’€ƒäzª¿¿¿èèI’$I’$f‹bjªªªªêè	“�	‘�ƒäzªêêªêèaH‚$Iƒäzúÿÿÿêg€ˆ5{Ç9€xæK€(úÎŸüƒÇ9àxWUÖeþ“ÿÉ¥jÇ9WUÕ-é.~ÜN%ƒçAÕ-è§ e“åzéðúÿêéI’$	�ƒäz®þþþêèLB&$I�ƒäzª¯¿ÿéá-õP1E‹äz++//åÜ¤`w¶ëä…“%ƒú åÜ�°Q¶›»…“E‹U€€éßÀm¶m;e‹äzÿªéÝÐ8Òþÿ$…“ƒõ¯æÝ¬k¿…“%ƒŠ€àpéæÁlÐF‹‚jªªªªéè€ƒäzúúêêêèLB&d‚$ƒäz««««êè$‘�L’$ƒäzêªªªéà€©Rƒ9e“Äz¿¿//áÜ‹=Ûs¬…“E‹*âÝIš¤Iê…“E‹€àéàédJ•4E‹ƒðx^WèåØthŠ5E‹ƒÿý­­éæ°a�%ƒäzúúª¨éèI’$	�F‹‚jªªªªéèI�$@$F‹‚jªªªªéè@‚ ƒäz«®®þéè	�ƒäzªªººéè’‚ƒäzªªêªéèH‚$@$ƒäzªªª¯éèI‚$I’$F‹‚jªªªªéè�$ƒäzªª®¾éè$I‚$F‹‚jªªªªéèA’$I�$f‹bjªªªªéèI�$H’$F‹‚jªªªªéè@$€F‹‚jªªªªéçH&$I‚F‹‚jªªªªèç’	€f‹brªªªªèâ‚I5E‹ƒÿÿ/çÞ)±[ß>e“ƒ­­

ãÌH’¤m…“%ƒªÞL|¢>
`e“‡ZW~à€ LI’$~‚±{‡ZUU_¨ŸLI’$É]{§ZUUÕ*ÜLÉ›W¦ …“§bÕµÝÆ …“F‹ÝÜ�ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ’I€ ä›è‚ªªªªÝÜ@€ä›è‚ªªªªÝÜI	’ä›è‚ªªªªÝÜ@Aä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ’$� ä›è‚ªªªªÝÜ@‚Aä›è‚ªªªªÝÜA ä›è‚ªªªªÝÜ�ä›ƒªªªªÝÜ	ä›ƒªªªªÝÜ@ä›ƒªªªªÞÜ$™„d@†ä›è‚ªªªªâÝñæJ­ä
…“E‹¨øøøßÜkŠ´kº­…“E‹ÝÜ‚ä›è‚ªªªªÝÜA€ €ä›è‚ªªªªÝÜAä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜA€@ ä›è‚ªªªªÝÜ@‚ä›è‚ªªªªÞÜA2$I’ä›è‚ªªªªæÜ¦p¹ûÿ…“%ƒxðåÞØ�9õ“<…“%ƒ-/
èÞ7ñpS…“ƒúxxxèåMlØÚ¡%ƒäzªªªæß`ŽµìðPe‹äz
«úúæßÔ
ˆPƒùE‹äz(®­¯çß9u±ôJE‹Äz€àðúåÝšùëÓÿ…“ƒ+-)«áÝ¶›‰‘X…“E‹ `jäÞIÜÆ�Õ…“%ƒ«¥µäÞIØºR)l…“E‹€ª¥uçäP`0`E‹äz¾¾®¾çå C€€%ƒäzªªªçß’õÐ(ie“ƒ/-½•àÜNb;²
Û…“E‹ÝÜ	 @ä›è‚ªªªªÞÜ$I†$Iä›è‚ªªªªÞÜdB’$	’ä›è‚ªªªªÞÜd‚$ä›è‚ªªªªÞÜ’€ä›è‚ªªªªÞÜdH’Cä›è‚ªªªªÞÜC†$’ä›è‚ªªªªÞÜaÈHÄ›ƒªªªªßÜÛPlmÛ4Ä›ƒªªªªßÝ$I’!’Æ›ƒªªªªåÝ©�
·pK…“%ƒppøøæá›6IñdE‹ƒ ªààæÞNË²ÚH…“%ƒ¢ªÿõæÝÏk¿	I…“%ƒ€‚ïõæä†E‹%ƒVVV¯æå  Æ‹âyªªªªæãXŠµ[»­E‹%ƒ««+¯äßªƒ%Ú…“E‹¥¥UUäáé�0`e‹E‹\\WUäâ@	“�†“Ãzªªªªäà$
	Ke‹E‹U_ppäâ I€$@&†“Ãzªªªªãâ$�$¥‹¥Šªªªªãâ	‚ H¥‹¥Šªªªªãá‚¥‹¥ŠªªªªãàmÛ´Íºbe‹E‹ °ãß�DIŽ›e“E‹Uÿ¢¢ãáI€	��e‹E‹¯þððãâ	€¥‹¥ŠªªªªæáñO®ÔnE‹%ƒààà æâr™€M2E‹%ƒ
-ªåÝÚÙÒ6’…“%ƒ/¿«æßédíäre“%ƒø~~zæß˜�=`K¶…“%ƒ­-íÿäáÝ�vC;lE‹ƒ
æâD‰‰i‡E‹ƒþ¨æä$’$E‹%ƒÿÿþúåã ‚$I†E‹%ƒ«ªªªäâ@†“£rªªªªäâ$ ‚†“ÃzªªªªáÜ³='k‚m…“E‹*ßÜm–¶M…“E‹¨ßÜÝÖ¶M
l…“E‹ÝÜ$Aä›è‚ªªªªäÜñ”
¯O…“E‹pPPpäâ!&†“ÃzªªªªäÞ Mµë$…“E‹UUªäÞ4iv�$…“E‹UÕªàÝë°dMÖ¤…“e‹â‚€äáÝ:`�ae‹E‹þWW\æâ‰”	‘PE‹%ƒààààèä´d
1eJE‹ƒþþúúçã’‰
ÆE‹ƒ¿¿/åá´#2€"1E‹%ƒ
ßÜØ°6kºt…“E‹ßÜmÚ¦[4ä›è‚ªªªªÝÜIä›è‚ªªªªÝÜ�ä›è‚ªªªªÞÜ’0dÈ�ä›è‚ªªªªÝÜ� ä›è‚ªªªªÝÜ’	‚ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ	Aä›è‚ªªªªÝÜ@€ä›è‚ªªªªÝÜ@€	ä›è‚ªªªªÝÜ@€ @’ä›è‚ªªªªÝÜA@$ä›è‚ªªªªÝÜA€Iä›è‚ªªªªÝÜ	&›$„ªªªªÝÜA…“E‹üüøøÝÜ…“E‹ÝÜ$ä›è‚ªªªªÝÜ 	 ä›è‚ªªªªÝÜ@Hä›è‚ªªªªÝÜ@$ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜH @$ä›è‚ªªªªÝÜHä›è‚ªªªªÝÜ‚$ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜ H ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜA ‚ä›è‚ªªªªÝÜ’@ä›è‚ªªªªÝÜä›è‚ªªªªÝÜA€ä›è‚ªªªªÝÜä›è‚ªªªªÝÜHä›è‚ªªªªÝÜ$‚ ä›è‚ªªªªÝÜ€$@€$ä›è‚ªªªªÝÜ @€ ä›è‚ªªªªÝÜI$ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ€ ä›è‚ªªªªáÜi{qf{…“E‹À€€€çä�a�mE‹ƒþüüüçæ@fƒ‚‚ªªªªçæ@fƒ‚‚ªªªªçß’©R#Ùe“ƒÿ½--çÝ$`S�k»e“äzzxààçã`,%dbÆƒÄz-//çå!�$†fƒ‚‚ªªªªçÝ˜ƒ9�ù…“ƒ



áÜva{I¼µ…“E‹ÀæÝ0I·}?…“ƒWþåÜP¯9­ó?…“%ƒ
äÜ¯ðJqûÿ…“E‹XX ßÜh·¶KÛ¦…“E‹çÝ&S¹�$…“ƒxàèÝš°M¶›ä…“ƒ_ÿ€éÜ$iZÝ:…“ƒUõ/
äÝÉ:ÿ“$…“%‹­ßÜÐ¶mÛ6…“E‹*ÝÜ@ä›è‚ªªªªÞÜ�„!I2ä›ƒªªªªßÜ-Ð¦mÚ´…“e‹ àÜ´àÄ±m;…“E‹ àÜdÇvlÛ…“E‹ªàÜ"‡¶é$…“E‹‚ãÜÂÊùõÿ$…“E‹µßÜmÐmÚ¶…“e‹€€€€çß“D©tJe‹ƒþ^ððçà“IªOçE‹ƒêÿèåÛº­Ù’¡%ƒäz**((æà0	”Le‹ƒzúððäà€K	•e‹E‹Uy``äâC�$’†“ÃrªªªªãßR:€(…“E‹¥¥UUäâ$’!™�…“ÅrªªªªæãÙ�I×vE‹%ƒ^xàêèãk¬ÕÓ6HE‹ƒ¯ÿÿçâS#Í€@E‹ƒ
/¿ÿçâqR»­Ô	E‹ƒ€àúèâ¶Ó¶ÛE‹{ªÿçâ±]Û’
9E‹ƒ/ãâI$¥“¥zªªªªãâ 	�$¥“¥zªªªªäƒE‹ƒ@ä8I²'� E‹äzUVxÀ@,Û¶­ÛŒ-{äzÿÿ??CP=úýÿä%ƒäz¥¯ªà
‰•	e“%ƒ•µ¥�éæ¬Á¬%ƒäz¼¼¬®åãH’LÈE‹%ƒƒƒ‚‚éæiÛmP%ƒäz¨ªªªéç	F‹‚jªªªªéæ[³-Ã,%ƒäz**ªªä9€(À8E‹äzÀ``p96IÛmEƒCrªªªª97dH†EƒCrªªªª97$’EƒCrªªªª97$É�EƒCrªªªª^89±“äz¤r€   bA°	¶�täz¤rúêà cX’$�$äz¤rÿÿÿªcX �¤äz¤rÿÿÿªc`@´Ãšµd{„iªªªªbaH’’$d{„iªªªªba	$’$d{„iªªªªbL�")�)äzÄr????[
Nâ$NâE‹ƒýýý=Þ
I’ …“%ƒU•ß} …“E‹ßÜI»¶Ã°aÄ›ƒªªªªÞÜdH†0ä›è‚ªªªªÝÜ’ €ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÈ@…“f‹ÀÝL}¢>
`…“§bW\à€ŸLI’$~‚±&{§bUUUøŸLI’$É]&{§bUUU/ÜLÉ›W¦0…“§bÕ5ÝÆ …“F‹ßÜiÑIÑf…“E‹€€€€èä�’E‹ƒüüüüæârH›´`E‹ƒ€àðèåVÉ–´E‹ƒ÷ÿúúèâÚ‰-6E‹ƒ¿¿/çàvÝ²ÿ�E‹ƒààæÞ}N»’$	…“%ƒªU]æÞÉã?˜5…“ƒ
+-âÝàI›Ø…“E‹ø¨ àÞHB&	™…“e‹€€âÞ‰c'’#8…“E‹
*/ÞÜ	�`È0ä›è‚ªªªªÝÜ@€ä›è‚ªªªªÝÜ@$ä›è‚ªªªªÞÜd’�`H&ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜA 	ä›è‚ªªªªÝÜ€ ä›è‚ªªªªÝÜ�$ä›è‚ªªªªÝÜ€ ä›è‚ªªªªÝÜH@€ä›è‚ªªªªÝÜH�ä›è‚ªªªªÝÜ €ä›è‚ªªªªßÝ‚Æ›ƒªªªªßÞI’$A’$Æ›ƒªªªªßÞH’$I‚$Æ›ƒªªªªßÞ	‚$I‚$Æ›ƒªªªªàÞ	†	C…“e‹€€€ªãá	™�!™e‹E‹ø¨è|æâIÇ”IE‹%ƒú_æáv\×Ó$E‹%ƒÿUæâ‰S@E‹%ƒ€àÿUæäIB2$HE‹%ƒªÿÿßæäIB2ÀE‹%ƒªÿWæäI†E‹%ƒªÿUUçäI’4]‹­E‹%ƒªÿÿUæâ$)‘#ÚE‹%ƒª¯//åâ[³%é–E‹%ƒ

 àåâI›n°E‹%ƒ úÿåâí–n`E‹%ƒ àÿÿåá
ÆRÑE‹%ƒ
åâÝÖ
É�nE‹%ƒ¨èààåäI’$ E‹%ƒªªÿÿåÛE‹%ƒjª¿¿äDsÍE‹ç9^à€åCI’$tÑ{ç9UU^àà0¦ð›ò'E‹ç9-µUUæ; ž�w%‹ç9µæÜ %ƒæråã C’ 	’%‹%ƒ««««ääI’$I’$E‹%ƒªªªªæäI†!2%‹%ƒª®î®æädÈ� I2E‹%ƒªª¿ªåäH’$H‚$E‹%ƒªªª
åäI�I�$E‹%ƒªªªªåÜP#±�$Ie“%ƒ//ÿÿæÜÏoÿ£ù…“%ƒ-æÜ÷p·…“%ƒxxxxåã`@&E‹%ƒëÿÿ«åKP`%ƒ'Jx€ßÉß'Xˆe‹BUWx€@ö“ü9‰JhRè9ÿÿ_\Êñ�¤Iò$&ƒB-ÕUUç4ñ�»ƒè9€-Õã[|‚5Ve‹çAWx€Ø9þ'õ�õ%ƒç9UUWx¾Ftšü{Ç9-ÕUçìˆP%‹(J^à	æ$ùíßZ
ˆƒç9UWxàNOò„ÿñ¿'JÇ9W•Õç„@@%ƒ&R	æSÈƒ=%ƒç9€À`XÖLOžÄÉ™ÅrÇ9UÕ•5ç†@ƒ&Jçæ@ f‹brªªªªçæ�Af‹brªªªªèæa’�	If‹‚rªªªªçæ@ Hfƒ‚‚ªªªªçæ$fƒ‚‚ªªªªççI’$I’$fƒ‚‚ªªªªçæA€fƒ‚‚ªªªªçæfƒ‚‚ªªªªç]0ƒÇ9€`çN@mÿ$%ƒç9€UÊCpâ$I’$ærç9\WUUDDI’$I’$(Bf1ªªªªDC@(Bf1ªªªªDDI’$I’$(Bf1ªªªªDC(Bf1ªªªªDC(Bf1ªªªªDC (Bf1ªªªªäC—žAÉ�dE‹çAi‰%•äCIò$z=E‹ç9UUVXDC@(Bf1ªªªªäD”É�dE‹ç9‚	%•äDO¢'ÐèE‹çAUVX`DC‚(Bf1ªªªªäC�É•äE‹çA	%•UäCp8,%ƒè9\pÀnCI’$I‚$'Jç9UUUTäCÉ�dI’$%ƒç9%•UUäD�E‹È9€	äDIÂ$`0%ƒç9UVXpDC$(Bf1ªªªªDCH€(Bf1ªªªªDDI’$I’$(Bf1ªªªªäCI˜!@E‹çAÕ5
äãE‹%ƒªªªªääI’$I’$†“£rªªªªäã@†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäÞÚ@P«9…“E‹UU¥-ãÞP#9vœ8…“E‹­-
ßÞA�	’Æ›ƒªªªªäÞö�
±K…“E‹XXXXäà1˜@e‹E‹UUÐÐäßªÓ$Içe“E‹
pZäßmÜ:Ò&A…“E‹ª¯ÕUäßÐ
©P…“E‹^^ZZäãI$†“£rªªªªäá€mK“¶e‹E‹UU++äÞ¹‘ŽÝ¤…“E‹õ­‚‚äá0é–¶e‹E‹UW\¸äà�
&rœ˜e“E‹¥¥íêäá0`@3´†“Ãzªªªªäâ H	‘€†“ÃzªªªªãD`À‚=e‹çA€`X°/xâ'ÿÿÿÆrè9TWUUD1é< èAç9º¿ÿÿÙÉŸüÿûE‹è9UUÕ5ãAIR'
E‹è9U_àu/¶mÛ¿�ØgZè9UUUT]-µÝÖíS'Jè9ÿÿÿ?ä,‰ E‹è95
äÞ¤3:’@…“E‹+/•UäÝ7—wÿ`…“E‹x`pZäã†“£rªªªªäá@‹5@ƒ5e‹E‹µ%%%äái×)�e‹E‹xXXXäã E‹%ƒêêêªäá°
í�E‹ƒ~~~xäã Â‰¦{ÿÿÿÿäák»t†E‹ƒ¯¯ýõäáC24XƒµE‹%ƒ
­äÞ¶O‰E‹%ƒ €äá-ÖléÐE‹ƒ€€äÝä³>Ø9…“E‹

-%ÝÜ	I’ä›ƒªªªªÞÜ!Aa@†ä›ƒªªªªãÜ‚4qµùÇ…“E‹×ÿˆäà €i&e‹%ƒ¾ª*ãàë¶®–ne‹%ƒ  ° âÝš³¶-´Ae“E‹%½[_ßÝI˜„LÀ…“E‹€‚‚âäáE›¶IštE‹%ƒ.€äÜšõRù…“%ƒ/---ÝÜ &›$„ªªªªÞÜL@’$I’…“e“À€€€ãß”Š±e“E‹UW^VâÝP­Ös²Öe“E‹%-­äÝîñpe“%ƒxxxxäâ€E‹%ƒ/¯¯¯äÜÍ³Ú’@…“E‹«UUãÝ©�M9Û…“E‹XxÂ‹äâHH@E‹%ƒª¨¨äâa€"†“ÃzªªªªßÜXŠ¶hŠ´…“E‹Ý�¨…“	BpÀÝIš#…“BÕ5
ÝÖ’Aä›è‚ªªªªÝU€@…“‡Z@ÜIÞ$p5f‹BUW\pØ“$IÂ')BB¯ªª«$y‘$I’$(JBUUUàðù�\…“(J	%•äß4©�
…“E‹UWZXäÝ~R;šƒÕ…“E‹
-¥ãÝI’ØîV…“E‹ðZäÜ©ä
­À
…“E‹PXXzåá”#2’,€e‹%ƒ

**åÞ·”O	U…“E‹ZXPZåáNB'¢Ùe‹%ƒ
âá$ e‹E‹è(*âá’$I’$e‹E‹+äáI’¦í�ne‹E‹èXxæáñæ›0E‹%ƒ€àø~æä$H $€E‹ƒ¾¿¿¿äâLÂ„‰„¥‹¥Šªªªªãâ 	¥‹¥Šªªªªãâ I’¥‹¥ŠªªªªãâI€$$¥‹¥ŠªªªªåâMÑ¶I›¦E‹ƒ€çâÐIvÇE‹ƒÿþçâÀªÕ­íØE‹ƒ¯/çã&dS‰“8E‹ƒúø¨ä`4
E‹B\pÀuäïþy‹´gRç9UUWTcÀ	÷�BÇ9W_zzâMñŸÿÿ'{Ç95ÕUUèRÀŽ=ý“<åzÇ9`XWUL:àÃ$ÌÃ'ç9§9ã:Iœ1`%ƒÈ9Õ5
ã:èÐ£'E‹B€`XVM9H’$I’$BÇ9üÿÿÿã7I’äÉ•e“ç9UU•%ä8 `À‚%E‹èA	‚`X§7¸�×y›·Æjç9TUUUÀ,‰�Øþ]årç9UUUãFÉpaÂ‚%E‹çA%‰bX¼:xò?¶ïÚærÇ9TUUUD9ÿßÿú�$(Bf1ªªªªB9ÿ}»þ‘œ(Bf1ªªªª`:±èŠæç9Ç9°¸þøXÎïÜì¤BÇ9ªªÿ_çI’œ¶`ƒè9U•%	çâ'óƒùåzBUUVXÀš$OÒ$	J*ªªªªXñO¹�$BÇ9xø ¥$Ñ–ÿ�ägZè9UUäDàr’'%ƒç9­UUçE ¦�¼%ƒç9/Õä£�E‹†b	èãv©�
E‹ƒèxxxèÜPƒ9˜�ù…“ƒ%---ÝÜ€ 	&›$„ªªªªÝÜ@’ &›$„ªªªªãÜyúœ¿—…“E‹ÀÀÀxèßT3õ“4Ae‹ƒ..÷WèÀ¨e“GR`ÀªªÀIú'ôú¦bB•UWTÝD¨¯óÿ…“B€â}UØN’¤Éõ…“BWÕ•5èp ’$ñe“Æj© `è€9sþä%ƒBÀxVUdñð
”0BÇ9x^WWèc§ð©˜?ƒç9
	íUècÀª>O’$ƒÇ9à^UUrcHþäIžüçAÇ9VUUUßcI’$ÉûåzÇ9UUÕ-èc‰y
ƒÇ9µ-é×ƒåz©ªªªéèI’$I’f‹bjªªªªéè	’$I’$f‹bjªªªªéèI’ 	’f‹bjªªªªéèI$I’$f‹bjªªªªêè	™I��ƒäzêêêêêé	 IEƒcrªªªªêé	$IEƒcrªªªªêéA 	’EƒcrªªªªêèI�$‚ƒäz¿¿¿¿éè	�	�ƒäzªªêªé‘1ƒ&R€xépñ|’$ƒÇ9€xWU·hóó?ÿÿebÇ9VUU5é\Iþw {Ç9Uµê¢! @D‹eb­ª**éà IþëÇe“äzÿÿ‚‚êçm7lÁ–uƒäzªþþøêé	 $Eƒcrªªªªêã‚��=E‹Äzÿ¿/+éâX3ö.éJE‹ƒ-/ú~èÜÏSûŒ…“ƒ¯µèÝ¹ûsÿp…“ƒ àpxéã%3­Zƒ5E‹ƒ>¿=-áÜ³­Øk…“%ƒªèÝñô
¯P…“ƒxXXZéèI’$	� F‹‚jªªªªêè	’!Á0ƒäzêêúªêèd&`B&ƒäz«««ªéèI’$A’$f‹bjªªªªéâš•'AE‹ƒ
½ýÿéàl£­ÒIE‹ƒ
/ÿéßyç…“ÄzàúÿÿéèI’$€F‹‚jªªªªéæX¬À².%ƒäz*ª«ªéã®Ôí�PE‹ƒ^zzðéèA’	’ ƒäzªªªúéèI‚ƒäzªªê«êè"$’ƒäz¾¿¿¾éè’	$ƒäzêêªªéè$H’$F‹‚jªªªªéè$A$F‹‚jªªªªéèI’$I$F‹‚jªªªªêè’!†ƒäz¾ºªªéèI�I‚$F‹‚jªªªªèèI’$I’$f‹bjªªªªéèI’$F‹‚jªªªªéè€I‚ƒäzºªªªéè	�$I’$F‹‚jªªªªèç H’$f‹brªªªªèâP£5X£5E‹ƒàÞ ƒ$H‚0…“e‹ßÜkÚ¶Í¶
ä›è‚ªªªªßÚ’"m’&¨Ä›ƒªªªªÝ¼ê@…“FƒøÝ¾y'…“F‹½ÝÙ‘�	ä›ƒªªªªÝÜI$ä›è‚ªªªªÝÜ		$ä›è‚ªªªªÝÜ@‚ $ä›è‚ªªªªÝÜ	$ä›è‚ªªªªÝÜH@€ä›è‚ªªªªÝÝI’$I’$ä›è‚ªªªªÝÜ�$‚ä›è‚ªªªªÝÜAä›è‚ªªªªÝÜ€$ä›è‚ªªªªÝÜ@€	 ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ €ä›ƒªªªªÝÜ€$@� ä›ƒªªªªÝÜHA’ä›ƒªªªªÝÜ ä›ƒªªªªßÜÍÖnÝÐ…“E‹€€€ãß	KH�e“E‹X^ÞÞáÜP�5«]Û…“E‹ÝÜ@@� ä›ƒªªªªÝÜ@ä›ƒªªªªÝÜä›ƒªªªªÝÜ�€ä›ƒªªªªÝÜ	 ä›ƒªªªªÝÜH‚ä›ƒªªªªÝÜ@€@ä›ƒªªªªÝÜ @ ä›ƒªªªªÞÜH†$’…“e“€€áÜö�znçNe“E‹p`~^èÝ6�¯ÿ'E‹äzþ¾áÝ¢@šŽCIE‹%ƒûæÞ­KÉi—E‹Äzúà€€çÞ$ˆ-9e‹äzß¿/àÞH‚„L�e‹%ƒçÞÉoÛ”De“ƒ ªWWèß~r?[me‹ƒ¯ýèà9wK›$AE‹ƒÀðþÿçá I$×ÄE‹ƒÿÿ‚èæ!C’f‹‚rªªªªçä
¬[ƒ5E‹ƒ¿¿//åÝM2'šƒ9…“%‹

ÞÜ$™@‚ä›è‚ªªªªßÝ	I$˜Æ›ƒªªªªßÝ`’I�Æ›ƒªªªªßÝÉ„I�Æ›ƒªªªªÞÜC’	€Æ›ƒªªªªÞÝI�I�ä›è‚ªªªªßÝ$I’ I&Æ›ƒªªªªßÝ@	™�…“e“ààÀ€ÞÜ`…“e‹



áÝ±mÚ4i…“E‹  àhçÝ1gs”&@e“ƒ ¨þ×æá“P¶OE‹%ƒzZpðæãÀ0í�E‹%ƒõ_Zpæà€IX�%e‹%ƒUõ
	æá�
%‚fAe‹%ƒ

·ÞæßÀiµíÄe“%ƒWÿª‚æä 	�0E‹ƒ¯¯¾¼äá0
�e‹E‹UURZåá’$
‰�PE‹ƒ€à€æãI»uØ¶mE‹%ƒ ªÿWæßl+Ö˜ƒ9e“%ƒ«¯-­ãß€$‰¦Je“E‹UU^^ãß$A¶äHe‹E‹þîððãâ $¥“¥zªªªªãâH �¥“¥zªªªªãâ@@€¥“¥zªªªªãá!	I�¥“¥zªªªªãâ	� I’¥“¥zªªªªãáI’$ 	e‹E‹‚‚êUäâ@!@E‹ƒ   €æáökÉE‹%ƒðPÞ—àÜ")ÇŠ
R…“E‹ý©ƒëæÞ9™“æÄ	E‹ƒ àø~æà‰�´ÜIE‹{ ªúÿæàÉ–LœE‹Äz êþÿæä$2$He‹ÄzªªÿÿæãÍ�ëºmE‹äz ª¿ÿåäI’$H‚$E‹ƒ«ýäãE‹%ƒªªªUäã E‹%ƒªªªÕãÞ³;'e“E‹UUëíäáÛ:Ã�E‹%ƒªª~åá$#É’
ÑE‹%ƒ

½ãÜ~Nû�£ù…“%ƒ/ßÜÝÐ4M›¶…“E‹€àÜdÛŽãØ…“e‹ªªäÜv}··”
…“%ƒðXàÜ$I›²Û…“E‹*ýÞÜI†d2…“e‹ªåÜ­ôN¯�…“ƒ¨àøZæàÎd$he“ƒøzUçå$@!‘�fƒ‚‚ªªªªçâš�9˜+ÙE‹äz+®ÿæámÓÖ“$	E‹äzªÿUçÝOnÛÛ…“ÄzªÿUæÜ¤Cú˜Ð…“äz

-ÞÜ$™0$‰�Ä›ƒªªªªÝÜ€ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ@  ä›è‚ªªªªÝÜH ä›è‚ªªªªÝÜ‚ 	 ä›è‚ªªªªÝÜ�$A ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ@	$ä›è‚ªªªªÝÜ�$Hä›è‚ªªªªÝÜH&›$„ªªªªÝÜ$@ …“E‹ø¸ ÝÜ…“e“ÝÜ	 A€ä›è‚ªªªªÝÜ@ @ ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ�@ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ� ä›è‚ªªªªÝÜ€ $ä›è‚ªªªªÝÜ	  ä›è‚ªªªªÝÜH‚ä›è‚ªªªªÝÜ@‚ @€ä›è‚ªªªªÝÜ‚$I€ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ H€ ä›è‚ªªªªÝÜ’€ä›è‚ªªªªÝÜ@A‚ä›è‚ªªªªÝÜ€@ä›è‚ªªªªÝÜIä›è‚ªªªªÝÜA ä›è‚ªªªªÝÜ‚ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ’’ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ�ä›è‚ªªªªßÜMÐm×…“E‹€€€€çä�`E‹ƒüüüüçæ$€$fƒ‚‚ªªªªçæ€fƒ‚‚ªªªªçåd€%ƒäzªªªçá«Õ-¶%ƒäz€ªª åâ]ÒlíÐa%ƒäz/®¿¯äâ$��ÉE‹ƒ
çÞÒ£µ’$e“ƒ¯ÿWæá]2¬¶IE‹%ƒ.µºäÝì3þà½Þ…“E‹
		©äÜÎþRõ…“E‹
%ÝÜ@ ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ	 ä›è‚ªªªªÞÜd��a&ä›è‚ªªªªßÜ@›¶i›¤ä›è‚ªªªªÝÜ@’I$ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜ	 ä›è‚ªªªªÝÜA€Aä›è‚ªªªªÝÜ€ Aä›ƒªªªªÝÜ@ @€ä›ƒªªªªÝÜ@‚@ ä›ƒªªªªÝÜ€$ä›ƒªªªªÝÜä›ƒªªªªàÜ¶eŽe…“E‹€€€€èãTI•4@%‹ƒüÖÖVèãŽ»J›$E‹ƒ¢úÿUèåÉÚ®+6¬%ƒÄz  ª*äâ€ 	’E‹ƒäáé0`�v¦“£zªªªªæâ¶mšM&E‹%ƒ*%
ãâ …“ÅrªªªªäâL@A…“Årªªªªèåi[Ý–f‹‚rªªªªèæ$I€ "f‹bjªªªªèæ H�“0f‹brªªªªçä€
Mš$E‹{ÿëªªèæ$I$À0f‹bjªªªªèâZƒÕX½ÕE‹ƒ////ãâ@A…“ÅrªªªªãâA�…“Årªªªªäâ$™�!’…“Årªªªªäß’"	�$I†“Ãrªªªªä,ò0E‹äzÞàÝI’$Lñ…“%ƒUUWàà)p@…“%ƒ�‹ƒ‚éæÁ¬Á¬%ƒäz¬¬¬¬åãALÈ„E‹ƒ‚‚‚‚éç�€F‹‚jªªªªéèÂ‰¦{ÿÿÿÿéä€Í’9E‹ƒõõ==ä9X‚&z²'E‹äzX\\^;:@’$	’EƒCjªªªª;9	H’A’EƒCjªªªª;9dB‚$A‚EƒCjªªªª;:	 A’$EƒCjªªªªB:©�äO’<EƒCjªªªªD:ö�$ÏŸ$EƒCjªªªªD:ð<I’$EƒCjªªªªM:$‘„I˜„%ƒcjªªªªb90hS½9äz¤rþª

b9°M¶›ääz¤rÿªcQ$H”äz¤rÿþþªæLÿóÿ¿g
ƒ¤rÿÿ¿è$ùD…“ƒ-«ÿUèÞObÿ£Õ…“ƒ­áÞI“¤I2l…“e‹ÿáÞIš$I2l…“e‹ÿáÝ¶cÛ¶
…“e‹ÿàÜ‰CÇ´
Ø…“E‹
ßÜm’¶iÓä›è‚ªªªªÞÜ	I’aH"ä›è‚ªªªªÝÛ C$I€ä›è‚ªªªªÝ½ë…“F‹zÝ½y…“F‹­ÝÙ 	€	ä›è‚ªªªªÝÜAä›è‚ªªªªßÜi‘I–…“E‹€€çâfié”nE‹ƒüüððçâö`KNë¸E‹ƒðàèä$ÑI’$E‹ƒÿÿåâX³6M³5E‹%ƒåà­Ý:¶Ce“E‹¿¯Z^ãÝäàtMÛ˜…“E‹j€‚‚çÞP#õÛ±…“ƒ-/ª®àÝIÛtëŠ¶…“e‹ßÞA�I�…“e‹€€âÝB­Õ¶»…“E‹/*ÞÜ 	2 I2ä›è‚ªªªªÝÜ�@‚ ä›è‚ªªªªÝÜH $ä›è‚ªªªªÞÜd2	0ä›è‚ªªªªÝÜ 	ä›è‚ªªªªÞÜ	Ã$’ä›è‚ªªªªÞÜ$C�`È�ä›è‚ªªªªÝÜ€ �ä›è‚ªªªªÝÜ�H ä›è‚ªªªªÝÜ@€ 	 ä›è‚ªªªªÝÜA	ä›è‚ªªªªÞÜdH$I†ä›è‚ªªªªßÝ!I$’&›$„ªªªªÞÞI’$I’$&›$„ªªªªßÞI�$I�$&›$„ªªªªßÞI�I’…“e‹€€€€ãài×
Ð
e‹E‹ü|èæâ	A
 E‹%ƒàxWWæãl@‹&E‹%ƒWõ­çå$I’$‚Æƒâ�ªªªªçå$B’$C’Æƒâ�ªªªªæÞ’¤iP
5…“%ƒßÿ­-æÞ¤`±`
…“%ƒzx~æáh˜ƒÙE‹%ƒUõ

çå$C’!’f‹¢zªªªªæãÍÚ¬[Š¦E‹%ƒºú¯
æâ‰cÛ¢DHE‹%ƒÿ÷æâv˜˜’AE‹%ƒ€€ÿWæã[³%†mE‹%ƒ//ÿýæâvBÛ’(
E‹%ƒÿÿæáñÐI“ E‹%ƒpx_Uçåd˜$I�Æ‹âyªªªªçåI2dB�f‹¢zªªªªæãM²%Ã
E‹%ƒ
¯õUæÅ€E‹århªªªå'ôƒõ%ƒBWx€Ë¹›ÜÍ�ÕFƒè9UUWxæApSü'%ƒç9µÕUä<O%ƒè9-äáÀŠ5E‹ƒª
äá°­i›¤E‹%ƒ®
åá¶`›‰�$e‹%‹úª äáÀ†¶m’$e‹%ƒ
äá°mÚ¶¥‹¥Šªªªªæâ¤hŠ±SE‹%ƒúúððåÝÐù�/µ…“%ƒ---­åÞ±ðJ�0…“%ƒx~_WæßlNÿ)HE‹ƒ*¾æáC3-îÜnE‹%ƒ..*ºæÚ½Ó¶íF…“%ƒ€ðzå@ëˆE‹è9xàãÒÿ¢
ˆ%ƒèAUU^à]ñhŽ‹‘BÇ9þÿÿüÐïðœ¶mÛ†“è9-õUUâT€:`§šüE‹çAÀ‚íU\-çpœ&`BÇ9øøßÕæ0·�TIœ$%ƒç9-µUUç]
ƒB-çSL‚&Ø0ƒç9W\XpçR�
‰›ä%ƒÇ9-õUÙSh²$NòäåzÇ9\VWUçTù0ƒç9%
çáZ"&'@E‹äz«ÿèåÁPÝ¶­%ƒ{¨¨ªªçæ€H€f‹brªªªªèç$’$f‹bjªªªªçæ@€fƒ‚‚ªªªªçæA fƒ‚‚ªªªªçÖ !$‹åzªªªjçYÀH?ƒç9à^çZ€±N’$ƒÇ9èWUÖ(˜]ÿ~â'Årç9XWUUXD=Õžs:ç9Ç9
GC°M;¶mÛ(Bf1ªªªª§CI’$Iž¦jç9UUUäDI’>Ã`E‹ç9U]b€KDI’$I‚$çAç9ÿÿÿþDDI’$I’$(Bf1ªªªªDC(Bf1ªªªªDC€(Bf1ªªªªOCÿñ?ÿÿüBÇ9¿ÿÿÿäCƒžAÉ�dE‹çAb‰%•äDIò$z=E‹ç9UUVXGDI�$I’$(Bf1ªªªªäC”É�dE‹ç9‚	%•äDO¢'ÐèE‹çAUVX`DC@@(Bf1ªªªªäC�É•äE‹çA	%•UäDp8,%ƒÇ9\pÀnCI’$I‚$'Jç9UUUTäCÉ�dI’$%ƒç9%•UUäC@£&N’$%ƒç9p\WUDC@$è9ç9ÿÿÿ¿D?�Hè9ç9ÿÿÿêäCIš)PE‹ç9Õ5
äãE‹%ƒªªªªäã@€†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäã@†“£rªªªªäã†“£rªªªªäÞµS'˜#:…“E‹

--ÞÞI’$I’$Æ›ƒªªªªßÝ‰„LB2Ä›ƒªªªªäÝït‰™¸…“E‹Xx  äá†Ã°5e‹E‹UUU7äÞ$‰µãÄ…“E‹UÕ*‚äÞíñ`n…“E‹ZXXzäâ$‚†“£rªªªªäâ`B†™„¥‹¥ŠªªªªäáÛ6À†¥†“ÃzªªªªäÝ›LZK>…“E‹UU¥äÞ’#5œd…“E‹%%_ZäÞqçR“…“E‹àxUUäãA†“£rªªªªä/`€=E‹B€`X¼-ðïÿò'Ærè9\WUUD80è9ç9ÿþþêÖCI’$Iœ{ç9UUÕ5äD)P%‹ç9
äãH†“£rªªªªä1h8€E‹è9\p€ã-‰•
E‹è95
äßƒ°Aqç¸e“E‹UWð äà $•�e“E‹UUzäâA†“Ãrªªªªäã†“£rªªªªäá@´e‹E‹%µUUäá)Ð
e‹E‹X^UUäá¬@‹5e‹E‹UÕµ-äßñ�Lí¶mE‹ƒppàøäâ!%ƒäzªªªªäáÃŠ&E‹ƒÕõµ­äâ	�@B0E‹%ƒõõ%'äáÀ¶am›¶E‹%ƒ¯¯äá°mmÚ¦E‹ƒ äÜ�9¢/ú…“E‹%-
ÝÜA ä›ƒªªªªÝÜ� 	ä›ƒªªªªÝÜ€$@�ä›ƒªªªªßÜÛÐ¶m–ä›è‚ªªªªãÞ±Ç›4e“E‹àŠ%•âÜ+1­SÇ…“E‹µ%
äÜö”
·�
…“%ƒøxxxäáÉÐE‹%ƒàúÿÿäÜPõ�õ…“%ƒ----ÝÜ’&›$„ªªªªßÜm×MÑf…“e“À@@ÀãáD�$E‹%ƒ¨¨äÞÛˆ’#Úe“%ƒÿÿ//äÞññ�Le“%ƒxxxðäã†“£rªªªªäàH�#&e‹%ƒ¿¯äÜšÙ’­9…“%‹


äÜ0I®�'…“E‹UWäÜ$i­ýü…“E‹UÕßÜh»´k›¦ä›è‚ªªªªÝÜ	�$ ä›è‚ªªªªÝÜH€ 	ä›è‚ªªªªÝÜA’H‚ä›è‚ªªªªßÜmÚ´m–ä›è‚ªªªªä\€@E‹GR`€äOâÿª
ÕE‹BUUVXDÉoÿ£õ)BÇ9 ª¯¯/I�¤IšÄHJB?ä(`±�[E‹è9%µäÞš6nPƒÕ…“E‹ÝÝ%¥äÜ´imí>…“E‹^ú
áÝ4A‡I˜Ä…“E‹¢‚€åáDI›e‹%ƒ®ªæâ1EQ”$HE‹ƒ€¨¨ªæâ"-‘’9E‹%ƒ*+âá@ @$e‹E‹



âá	’$He‹E‹¨åßuÚÆåÆ	e“E‹‹‹_WçäY‘µm›$E‹ƒüüª æäB2$™$E‹ƒ¿¯ªãâ€H¥‹¥ŠªªªªãâI¥‹¥Šªªªªãâ€	¥‹¥Šªªªªãâ€�$¥‹¥ŠªªªªãâA�$¥‹¥Šªªªªãâ	�$¥‹¥Šªªªªãâ@ 	…“Årªªªªäâ$H’$�†“£rªªªªäãH’$H€†“£rªªªªä/è4
E‹ç9\pÀo9õOînHJÇ9^__\c˜ƒ9Ð(iBÇ9­­õÕY¯Oí6’BÇ9Zxÿÿä:Iœ1%ƒè9Õ5

åKèÐ¯'E‹çA€`XV]9Lb'š9BÇ9üÿýõã9I’äÉ•E‹ç9UU•%ä? `À‚%E‹ç9	‚`Xª7Hòÿ·mÛÆjç9TUUUÊ7¹ýÛ¶kÅjÇ9UUUçD÷`aÂ%%ƒç9%‰bX½EÈŸÜ¿}ÛærÇ9TUUUi@€¬˜£ùç9Ç9Õµ--j9NòÛ1å
ç9Ç9ðxk1ÿÓ:Òˆè9Ç9ª¿ÕÕg·�ùdoBÇ9ZXzúãGòdÉ�E‹ç9U•%	ä·E‹ÆjåBÀà@?%ƒç9`@p\K‚$H¢$	J*ªªªªI’$I’$iJg)ªªªª
¹‘äIž$iJg)ªªªªX¦pO¹™ÄBÇ9~ø €cJœ8€ÍèA¥)ªªªªâ5÷ð¤Oò$%ƒç9-ÕUUè6 '�%ƒB	5èÜXƒõX�ù…“ƒ----ÝÜ	$A€&›$„ªªªªâÜvb»±—…“E‹€ÀxèÞ1ç0e“ƒøz_Wèç	�F‹‚jªªªªèçII‚F‹‚jªªªªèN`ùÀˆƒÇ9\x`À|KIÒ„±çAÇ9ÿ‰XÙN¯@Ò~òÿE‹Ç9
ïUUÀ
˜Ó?¶Ý¶Fƒç9xWUUàIžœï@@E‹BU•-ƒ»_y"'pâ$ÆjÇ9WVTWcbI	BE!ªªªªËbI’$I¥jÇ9UUÕ-écIœSƒÇ9Õ%éºƒ†b	éè	’$I’$f‹bjªªªªéèA’$I’$f‹bjªªªªéèA’$I’$f‹bjªªªªéèI’$I f‹bjªªªªéèI’$I’f‹bjªªªªéèH’$I‚f‹bjªªªªêè	™�	‘ƒäzêêêêêé‚ I$EƒcrªªªªêéA Eƒcrªªªªêé	‚’ Eƒcrªªªªê³0äzfZ`éc¬êã$ƒÇ9à^WÃdàó$I’¼…jÇ9\UUÕêmI’¼ï0åzÇ9UÕ-êˆ©0ƒB-êäîäPaOE‹Äzúêêúêç[³­6lƒäz«¿ÿÿéâlµÐhE‹ƒ­õÕéß0	¤IÇe“äzÿÿª
êæDI†‘ƒäzÿþ¾¸êä˜³9ª£ÚE‹äz/+//éæéÐ
Öm%ƒäzèêªªéå’"É�€%ƒäz*+«®èà¹àS-7re‹ƒpàâ«éäZ²ÕÅ4E‹äz/«þÿêå±[	š A%ƒäz€úþÿêçI‡­Ø¶µƒäz¨«ÿ«éèH$	ƒäzªª¯þéèI€$A$F‹‚jªªªªéèI’$I$f‹bjªªªªèèI’$I’$f‹bjªªªªèèI’$I’$f‹bjªªªªéç A’$É$f‹bjªªªªéç�$’F‹‚jªªªªèå`¶-%ƒ{ªªª*èã«æj­E‹ƒÿúúpèá�÷œk	mE‹ƒÀ€‹ýéçƒäzþ¾ªªéèH‚ H’$f‹bjªªªªêè!™�	’ƒäzêêêêêè$I2 I€ƒäzº¿¿¿éèA’I$f‹bjªªªªéèH‚I’f‹bjªªªªéèI’$I�f‹bjªªªªéèI’$	’$f‹bjªªªªéè	’IF‹‚jªªªªéèI�$H’$f‹bjªªªªéæÛ6lÛ¶6f‹bjªªªªéç$H’$‚ƒäzªªêªéç$	2 F‹‚jªªªªèç‚ 	‚ f‹brªªªªçá"3Ö
­E‹ƒ/àÞHÂ$H‚$…“e‹ÞÝ€I ä›è‚ªªªªÞÜ� C2ä›è‚ªªªªÝÜ ä›ƒªªªªÝÜA@ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ	€$ä›ƒªªªªÝÜ  ä›ƒªªªªÝÜ@ä›ƒªªªªÝÜ@ ä›ƒªªªªÝÜH	 ä›ƒªªªªÝÜ�ä›ƒªªªªÝÜ@$ä›ƒªªªªÝÜ€Aä›ƒªªªªÝÜ€‚ä›ƒªªªªÝÜ€€ä›ƒªªªªÝÜAä›ƒªªªªÝÜH€€ä›è‚ªªªªÝÜ€@ä›è‚ªªªªßÜM×ÝÐnÄ›ƒªªªªßÞI’ I&›$|ªªªªäÞîèn1•…“E‹þøxxæÜþCÿ 
�…“%ƒµãÜynÿ¤õ…“E‹-ÝÜ	ä›ƒªªªªÝÜ@‚€ä›ƒªªªªÝÜ	� A ä›ƒªªªªÝÜ	ä›ƒªªªªÝÜ$A&›$„ªªªªÝÜ�&›$„ªªªªÝÜ	’’&›$„ªªªªÝÜ $ä›è‚ªªªªäÜ©�J›ä…“%ƒXx çÞ~ì»ñô
e“ƒŠêxZèã±-ƒ´®%ƒäz ¨ªèä¶
‘ CÆ%ƒäz€ª

èÝÚƒõÀe“ƒ-­õUçÝÿcÛ“…“ƒªÿUçß©p@e‹ƒxxßÕçß MýÓüe‹ƒõûèß¶�Ïý¿e“ƒÕ¿  çÞÍ]»Ó$h…“ƒ‚‚ÿ÷èâÐIå”´E‹{þøè€èà’&‰ÐL:e‹ƒµ•5áÜ˜½Äµ]Ç…“E‹ÞÜ$Á�!2ä›è‚ªªªªßÝ	˜	™�Ä›ƒªªªªßÞI$I’$&›$„ªªªªßÝ C’$I’Æ›ƒªªªªÞÝ�Æ›ƒªªªªßÝB2$I’Æ›ƒªªªªßÝLÂ$!C‚Ä›ƒªªªªÞÝ	�Æ›ƒªªªªßÝ$I€`B2Æ›ƒªªªªåÝwçN¦”…“%ƒèøøxçáD		eOE‹{¾ê  çäÝ,Û¶m%ƒäz**æá‰`O[§ÕE‹%ƒp`Š
æÝPõR¹�…“%ƒ--½¿åÞ¯�åÔre“%ƒxøêêæáv¼­’E‹%ƒªÿWæãéšbÃ
 E‹%ƒøøŸ•æß›´Iö�we‹%ƒúúà€æãMº&Ã†E‹%ƒŠ¯ýWæäH’Æ‹âyªªªªåâÀŠak·´E‹%ƒ­ÿ‚‚åâÛº­ÛR¬E‹%ƒ ¯..ãâH$I� ¥“¥zªªªªãâ ‚$¥“Åzªªªªãá 	‘�e‹E‹ÿê¨êãâH€$¥“¥zªªªªäâI’I¥“¥zªªªªäáÉÖtÝ6¥“¥rªªªªäâ$IÈ$E‹%ƒªªäãI€H�E‹%ƒ€€ªêæàX£9š¹e“%ƒ­-­­äáIÒC7tE‹%ƒ
åá)9E‹%ƒWÿæãÃÛ�mE‹%ƒUÿþèæå	’ I�$%ƒäzª€æãÀ°m[²%E‹äzÿÿª
æä I†aB&E‹Äzÿÿª*äã€$%ƒÄz«ª¨äâ À�%ƒäzªÿªäâ%ƒäzªÿª¨äÜš
õP¯9E‹äz
/+
åÜ¥ðR·�ÿe“%ƒW_ú
äÜ I­ýüe‹ƒUUªáÝ`Â$vâ$e‹%ƒ«ªÝÜH e‹E‹ªUÿÝÜ	 e‹E‹ÿÿ€äÜ©ôJ¦ôBE‹äzðøø ß³,%ƒR€`ßÑ’$I‘0	E‹äzª©¢æÞysÔ4E‹Äzèú_WæáZ«9˜-ÍƒÄr
«¯¯æâd’¤M&ƒÄzªþÿÿæâ�#Ð‚CÚäz¤r

æâ´e›¶äz¤r€ è çäÃÖ
é�Äz¤r¾¾ú çâÐ * E‹Äz/½½½ßÜHº´K‹&…“e‹ÝÜ	 ä›ƒªªªªÝÜ	ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜ�@ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ‚	€ä›è‚ªªªªÝÜ  ä›è‚ªªªªÝÜA‚$@ä›è‚ªªªªÝÜA€ä›è‚ªªªªÝÜ @ä›è‚ªªªªÝÜ@�ä›è‚ªªªªÝÜ	@�&›$„ªªªªÝÜ$HÆ›ƒªªªªÝÜIä›è‚ªªªªÝÜ @€ ä›è‚ªªªªÝÜä›è‚ªªªªÝÜAä›è‚ªªªªÝÜ’@ ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ H ä›è‚ªªªªÝÜI‚$ä›è‚ªªªªÝÜH’ä›è‚ªªªªÝÜ� @‚ä›è‚ªªªªÝÜ’�$ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ’ ’ä›è‚ªªªªÝÜIAä›è‚ªªªªÝÜ‚$ ä›è‚ªªªªÝÜ@Aä›è‚ªªªªÝÜ	Aä›è‚ªªªªÝÜ@$A�$ä›è‚ªªªªÝÜ‚ 	�ä›è‚ªªªªÝª@(…“Z°`ÝÂ…“¤rÝÜä›è‚ªªªªÝÜ€ ä›è‚ªªªªÝÜHä›è‚ªªªªÝÜH$Aä›è‚ªªªªßÜi�vMÑ…“E‹€€€€çÝ0H[½9…“ƒW÷/çÞ�&M®”S…“ƒõÿzàçæ�fƒ‚‚ªªªªèæ$Ã0$B’fƒ‚‚ªªªªäâ`ˆ0H†E‹ƒzxzzäâ	É„$ÉE‹ƒµ­¯¯çã	J@E‹ƒàúþÿèâÂ*©šª1E‹{¿/++âÞ àHŒÍ$…“E‹[¢¢âÞ¤`S‰�$…“E‹êê ãÝP3:­mÛ…“E‹

ßÜkº­[‹&Ä›ƒªªªªÝÜä›è‚ªªªªÝÜ€ 	€ä›è‚ªªªªÝÜ A�ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ	‚�ä›è‚ªªªªÝÜ� ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ@ H$ä›ƒªªªªÝÜ€$�$ä›ƒªªªªÝÜH ä›ƒªªªªÝÜ@ ä›ƒªªªªÝÜä›ƒªªªªÝÜAä›ƒªªªªàÜ¶ev[…“E‹€€€€èä†@@J%‹ƒVÖÖþèå¶nÍ�nf‹‚rªªªªèãP
9’£ÍE‹ƒ­--­çâ¶S7îÚ¡E‹ƒ ¸ºáÜ[[Ç‹«…“e‹«‚ûáÝ¤äX¶E…“e‹þàêjçâ±íÚS=ÌE‹ƒ.ãá À„…“ÅrªªªªèãñàJ�´iE‹ƒøøÿþèã¶­µíØE‹ƒÿÿ*‚çã¦`±dJE‹ƒúøøúèä$E
¶ä%ƒäz‚ª  çã€
Ù�ÐE‹{¯++¯çâP³­ÝÖAE‹ƒ//øúäâ	I2`‚�…“ÅrªªªªãâI…“Årªªªªäâ!I’$I†“Ãrªªªªäã@’ ’ †“ÃrªªªªäâC2C2†“ÃzªªªªßÐ�I�Iä›è‚ªªªªàØÙÄQÁ…“E‹ÀÀÀÀéæÁ¬Á`%ƒäz¬¬¼¼çãN(‡¢	™E‹ƒ‚Š¯¯éç�$I�f‹bjªªªªéè€@$Â‰¦{ÿÿÿÿéœ@(%ƒäz*ª¯–:H²$Oò$%ƒäzþÿUU;:I’	’EƒCjªªªª;:I’$	�EƒCjªªªª;:	’A$EƒCjªªªª;:I$I’$EƒCjªªªª;:I’I’$EƒCjªªªª;:I$A�$EƒCjªªªª;:I’$H’$EƒCjªªªªD9ÿñðEƒCjªªªªZ9€8€ÔäzÄr



ã8I’$yWE‹äzUU½äB‰w
E‹äzµåÑ™’ E‹ƒ‹èæ$€f‹‚rªªªªèå[2tÀlE‹ƒ¯ÿÿÿçäm3À†m%‹ƒÿÿÿçäI36`%‹ƒÿÿÿçäi%‹ƒÿÿÿçÜ›ƒý˜�µ…“ƒ

­çÝ1iJ0e“ƒ øþWçÝþC×Ú@…“ƒ*¿ÕßÜiÛ$hŠ¶…“E‹ÝÜH Aä›è‚ªªªªÝÜ €ä›è‚ªªªªÝÜ@‚ä›è‚ªªªªÝÜ ä›è‚ªªªªàÜ¶[Žå…“E‹€€€€çã¡h@hAE‹ƒüüü¾èãñ–¶POE‹ƒàððúèãÛm˜�9E‹ƒÿÿ/æâ9$�ÄE‹%ƒ

äá)º­ëÖ¶¥‹¥ŠªªªªãÞ‰çxj
U…“E‹€‚‹¥æÝ‚¬B¯9…“ƒ¿§/
ßÝ 	’‘0…“e‹ßÜÛ†­íš¤Ä›ƒªªªªßÝ		‘Ä›ƒªªªªßÜX³-Û²¦Ä›ƒªªªªÞÜIÈ„Iä›è‚ªªªªÞÜ$C†�ä›è‚ªªªªÝÜ 	ä›è‚ªªªªÝÜ � ä›è‚ªªªªÝÜ	$	€ä›è‚ªªªªÝÜ€Aä›è‚ªªªªÝÜH$ä›è‚ªªªªÞÜI‚$É$ä›è‚ªªªªÝÜ	 ä›è‚ªªªªÝÜ@ @ä›è‚ªªªªÝÜH€$€ ä›è‚ªªªªÞÜ!!@Ä›ƒªªªªßÞH� I’$&›$„ªªªªßÞ	A’$&›$„ªªªªßÞ	H‚$…“e‹€€âÞ’I‘&…“E‹¯ªêèæâ¡K1SE‹ƒøððàçâu\»Û&@E‹ƒÿÿçæI�$A%ƒäz¨ªçå$A’$I†Æƒâ�ªªªªçßÚ£Õ’(@e‹{¯¿æà”@	6—te‹%ƒ^~ €æå@%ƒƒ¨æã€a@‹5E‹ƒÿ¯¯æâ`"™’)ÙE‹%ƒ

æã[2$Ø–¶e‹ƒ¯¯ÿªæâ’D	6E‹%ƒW~zàæâ’-9`":E‹%ƒ/


åâí–¤é�lE‹%ƒ€€ààæã€mX²&E‹%ƒW÷-/æá€4	­»E‹%ƒUÿ€€æå� IÆ‹âyªªªªææI’$I’$Æƒâ�ªªªªæã`X‹5E‹%ƒUu­-çÝˆP?>…“ƒÿ½/æ¢# …“…jp   æ9þ#:À
%ƒçAU^à³ ‰™üþú¦bè9µUWXâ,ðÉ›$E‹B-ÕUâZ�
e‹GR-âáI$e‹E‹ªªâáI�He‹E‹€€‚ªãâI’$¥‹¥Šªªªªæá›Ðm±mÛE‹ƒà äáÀmÛfE‹ƒ
ªæä!C’!H‚E‹%ƒþÿ^Wæä I’@†%ƒå‚€æä		‚ H2%‹%ƒÿÿý¿æãI7`ÖE‹$ƒêÿÿêæä$‚ ’f‹¢zªªªªæÒ’"I�IE‹åzÀ
çItÑ%‹çA^x€âTI’$|õåzÇ9UU^øZ3P�ýØ£>è9Ç9­­­¯\2“Vÿ—$BÇ9×??¿á0OB>Ãê%ƒçAUZâ²37ñßOÎä†bç95UWVäO‚h’Iž${Ç9À¯UU‡VÍúï˜¸FRÇ9W\ÿÕçWIšXÿà
ƒÇ9Õµ%
çâ’@f‹‚rªªªªçæ$f‹brªªªªçæ‚f‹brªªªªèæÉ„$H€f‹brªªªªçæf‹‚rªªªªçæ€fƒ‚‚ªªªªç\4%ƒÇ9€páIÀ,çÏó?e‹ç9à^UUY)°	É�:Ç9ÿÿððZYI�$A’$(B&)ªªªªZF˜H€‰ç9Ç9ª**OCPƒùëÃÿ(Bf1ªªªªDC(Bf1ªªªªäCÉ�‰‘Ä%ƒç9%5ÕäÝE‹%ƒªªª©äDK‚%À`E‹ç9VX`€OCùÿ?Ž?BÇ9ÿÿÿþDC(Bf1ªªªªDC(Bf1ªªªªDC (Bf1ªªªªLCÿñüÿÿÿçAç9¿ÿÿÿäDƒžAÉ�dE‹çAb‰%•äCIò$z=E‹ç9UUVXGC¶a;¶mÇèAç9¿ÿÿÿäD”É�dE‹ç9‚	%•äCO¢'ÐèE‹çAUVX`DDI’$I’$(Bf1ªªªªäD�É•äE‹çA	%•UäDp8,À%ƒÈ9\pÀÀDC€(Bf1ªªªªDCH(Bf1ªªªªD>� Éè9ç9¿¿¿¿ä/É›)`%‹è9Õ5
äáE‹%ƒ«ªªªäã †“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäã†“£rªªªªääI’$I’$†“£rªªªªäâ €†“£rªªªªáÞh³$M²&…“E‹
ßÞI’$A’$Æ›ƒªªªªßÝL2IÆ›ƒªªªªäÜñô
®P…“E‹pXXZãÞZ£Ö“$@e“E‹/+ßUãÝñäNI»…“E‹pp€äßš#9ëä
e“E‹-%_^äß)KÚ
¬e“E‹XXõÕäÝ˜¹ùt^Û…“E‹¥
ªãÝ‚8±­ÓÚ…“E‹µ¯

ßÜ[»´i;…“E‹¨äÜîS·ÐJ…“E‹h`pzäâ@††“ÃzªªªªäD@€=E‹çA€`XÃ/pâ'ÿÿÿÆrè9\WUUC(’/9�£ÕBç9¯¯¯¯À'ùŸüÉ›Ærè9UUÕ5äD±pe‹Ç9-äâ@‚†“ÃzªªªªäâH!�„†“ÃzªªªªäÞ˜9XÕ…“E‹¥äáV�e‹E‹WV\\ãß`%¢
I…“E‹-%­ýäßñ�N.Öm…“E‹XX^ßâÞ Jvè„…“E‹}ë‚‚äâ@€H†“Ãzªªªªäá-�-Ð¥“¥zªªªªäã †“£rªªªªäákÚ¦X´e‹E‹‹‹­¥äãA E‹ƒ|^^zäá6`Ð%ƒäzªªª äßk²ÚÐE‹äz

¯¿äáP@‡eE‹%ƒ÷÷¥­äãA$E‹%ƒ¯¯¯¯äáMÚvÛÖb¥“¥zªªªªãÜ�9˜/Ú…“E‹--
/ÝÜA‚ä›ƒªªªªÝÜ ä›ƒªªªªÝÜIIä›ƒªªªªÞÜ!ÁaH&ä›ƒªªªªäÝƒÈ�÷Ÿ$…“%‹×ßªÞÜ`2$É0…“e“äÜ©ðJùw…“%ƒxøààäã�E‹%ƒÿÿþþäÞ�Ñ€@e“%ƒ-­õÕáÜ±Ý® …“E‹ªZ[ßÜmÖ¶k‹¦…“e“€ãÝ&Oq»…“E‹^Xààäàí@dÒE‹ƒ ¨(àÜ´ X²IÇ…“E‹j¢‚äÜ0A¦�
…“E‹UU^Xãàé�nØ†5e‹E‹rRõ-âÜZƒ5­:…“E‹


ÝÜ H ä›ƒªªªªÝÜ@€ ä›è‚ªªªªßÜI’´m–ä›è‚ªªªªäÜnÛ)h…“E‹®µãÝIÒÖH…“E‹×ÕàÜ¶íØLÚ…“E‹äÜÿ·÷ô
…“E‹€pXäá°
MÛ&e‹E‹WWêäYÀ`e‹B`€Üöã'{‚%…“BUUVXIœÄI–)BBêêêje
y‘—.Y’(Jè9?_Wä?p±�\E‹è9
5âÜ
Ô¢Í¦…“E‹

àÜNh›¤)	…“E‹ªäßén·µ…“E‹ZXúÿæá‚´M¶�ÄE‹ƒª€æáÐ:­[Ý:E‹%ƒ+*
äáMÒ&é–e‹E‹
ªZ\åá1¦`E‹%ƒ€ ààæäI’$	E‹%ƒ¨¾ÿÿåã™� 	‚E‹%ƒ  ª«ãá$@	Á„e‹E‹ëëãæä�E‹ƒêþþ¸çâ«ƒ:µÓ8E‹ƒãâ€H€¥‹¥Šªªªªãá$B  €¥‹¥Šªªªªãá$À�$H¥‹¥Šªªªªãâ@A�$¥‹¥ŠªªªªãâH‚$…“Årªªªªäâ$I’	˜�†“£rªªªªäãA’$I’$†“£rªªªªäãH’$I$†“£rªªªªä:r9€@E‹Ç9\xà€Z:¶�$I‚$'Jç9UUUT=:HÒ¤I“4(Bf1ªªªªº9É�$I’äærç9%UUUSûëÄŒ(BÈ9èëÿõã:òçÉ•E“ç9UU•%ä `À‚=E‹B	‚`X³hë¶y›·¦jÇ9TUUU·l]ßOüsè9UUÕ5ç:·`aÂ=E‹çA%‰bXÁ:xž$I’$Årç9TUUUe;@	ïç9Ç9W~xpcO+h’1èA¥)ªªªªd9›°MµûÄç9Ç9ÿ‚iXÛ\®Õ\(BE!ªªªªçFIògÉ�%ƒç9U•%	åµE‹Æjä9À€ƒ&%‹Ç9Àp\k*°o;¶ÓöGRç9TUUUH¢$J‚$iJg)ªªªªI’$I’$iJg)ªªªªÜI’$I™…“BUUµ
ØIžä}­…“BUUWè`ÓØm©�P(BÇ9÷ÿ^x`5££9˜Õè9Ç9¯¥¥µ�5¹‘»¹û·&Rç9UUUåDP¯ð\e“Ç9
5ßÜiÛ¦mÑ…“e‹€€€çÝñ`@e“ƒøz^^çæ€f‹brªªªªçå€$ %ƒƒúºººèà 	®�”e‹ƒU_zàè`
=Ð4ƒÇ9àXXpÃ`O’Ä‰‘…bÇ9UÕ55çdùÝI€$Úåzç9ÕøÜ^O²'`²9åzÇ9UV\zÒas'I’$årÇ9c]UU…^ùÿÿÿÿJÇ9UUU|bI’$I‚$çAÇ9UUUTèb'¹�ƒÇ9

%5éèA’$	’$f‹bjªªªªéèI’$	’$f‹bjªªªªéè	�$A’$f‹bjªªªªéèI’$H’$f‹bjªªªªéèI’$I�$f‹bjªªªªéèI$A’f‹bjªªªªéèA’I‚$f‹bjªªªªéèI‚$I’ f‹bjªªªªêè™	‘ƒäzêêêêêé’ 	EƒcrªªªªêÒ(äz…jÀép`Xß'äzÇ9€xWßl˜Ó'I’äÅrÇ9xWUUècI’äyÕƒÇ9UUµèg1EƒÇ9-êéAA’ƒäzþþþþêé$H ƒäz¿¿¿¿éç@$ƒäzêêêªêä€$i˜*1%‹äzÿÿ¿/éÝ´�¬ï$…“ƒUý
äÜX§•íýü…“%‹­«éÝÀæ…“äzþøøéåb%€H%‹äz¯¯ÿéç!ƒäzªªþþêèC’H‚ƒäz¿ÿÿÿéäj‚9š
µE‹äzŠ«¯¯êçÙ�é–mƒäzêêêúêæ$‰’"1%ƒäzÿ¿¿¿éÜÀ¤•µëÜ…“ƒõí‚‚êäDMÝ›E‹äzÿþþ¨éæØ¶mÛ�vf‹bjªªªªéè@ I’F‹‚jªªªªêèI’$aH"ƒäzªªª¾éæÀ¶mÛ–l%ƒƒ¿¿¿ªèåXŠ%Ø%ƒÄz

ªªèä(‰1E‹äzÿ¿//æâM;¶#)E‹%ƒ+*èß®�OI——…“ƒZxààéæÀ6�
F‹‚jªªªªêè$’dH€ƒäzª«ªþêèa’$L&ƒäzªªª«êèIÀ�	’ƒäzêêªªêèÃ„d˜$ƒäz¿ºªªèèI’$I’$f‹bjªªªªéè�I’$F‹‚jªªªªéè@$	�$F‹‚jªªªªéèI‚$I$f‹bjªªªªéèI’ I’ f‹bjªªªªéèI’A’ f‹brªªªªéåp"Æ")	%ƒÄz

ªªéç�!I’f‹brªªªªéèI‚ I’$f‹bjªªªªèå¶­[‚5E‹äzÿ»¯¯çäÍšnE‹ƒºúÿÿåÞÍÃ?âƒõ…“E‹-¥ßÝ$C’	’&›$„ªªªªÞÜÉ� 	�ä›è‚ªªªªÝÜ	$�ä›ƒªªªªÝÜ@&›$„ªªªªÝÜ	A�&›$„ªªªªÝÜH&›$„ªªªªÝÜ@ A&›$„ªªªªÝÜÄ›ƒªªªªÝÜA Æ›ƒªªªªÝÜ@‚&›$„ªªªªÝÜ@ �&›$„ªªªªÝÜ	 	&›$„ªªªªÝÜH‚ A &›$„ªªªªÝÜH€ @&›$„ªªªªÝÜH€ @�&›$„ªªªªÝÜH€&›$„ªªªªÝÜ€ @ &›$„ªªªªÞÜ$Ã„!C&›$„ªªªªÞÜI’a…“e‹ªäÝÉ�û1y
…“E‹€ ø^ãÞN’¸öÔ
e“E‹ z_çÞqçR¥À…“ƒèú~_çß’H�+&e‹ƒ÷÷
çÝ˜ƒ9’Cú…“ƒ
ÝÜ@ ä›ƒªªªªÝÜ ä›ƒªªªªÝÜI‚ä›ƒªªªªÝÜ’ä›ƒªªªªÝÜH ’ä›è‚ªªªªÝÜ@‚A&›$„ªªªªÝÜ‚&›$„ªªªªÝÜ@H &›$„ªªªªßÜmÑmÖ¶…“e‹ÀÀªªçÞ4@.”Je‹ƒßßXPèßõë¼w×
E‹äz úèâ”D‘›
Æ%‹äz®ª¯èå6`Ùlƒäzªªª®èäNìÄ"	%ƒä‚‚¢ªªèæ!I‚	�F‹‚jªªªªçßšHP/5E‹ƒ¯½
çáÛ&&–bE‹ƒêÿøðæÞ�=|<›…“ƒ-
ªçÞùý×”4A…“ƒ  þ_åÝö_'˜Ñ…“%ƒ-ÝÜH$	‚ä›è‚ªªªªÝÜH€ä›è‚ªªªªßÜí�i×¶ä›è‚ªªªªàÝ]ÛuM‘t…“e‹€€åÝÒ¶4…“%ƒ
ÿçÞIâö’(h…“ƒ*¿ÕáÞIÒ$K‚$…“E‹ßÞ�$I’$&›$„ªªªªßÞI’	’$&›$„ªªªªàÝ]Ó¶mÑ…“E‹€€çÝñà e“ƒðx~Wçå	I’$	’%ƒäz€*ª*æå �f‹¢zªªªªæßv[ûâÙe‹%ƒ
äßöf×š4e‹E‹°äÞaSä6‰…“E‹zzÕæÞ ¯�…“%ƒU_zxæä ’E‹%ƒ••ÕUæÞŽÛ›’&…“%ƒ¢ªÿUæä%‹%ƒ^^__ææI’$I’$%ƒƒ  æä €Æ‹âyªªªªæãkƒµ[7´E‹$ƒª«¯¯äãI @E‹%ƒªª«åâk»­Û E‹%ƒªªª¿äà’@JŽdE‹ƒ€ € äâH‚$ E‹%ƒ¯ÿäâ!I$I’E‹%ƒþÿÿÿäãI‚$I‚ †‹‚zªªªªäàb"ÙAE‹%ƒ«ÿäâA$’E‹%ƒ~~þ�çã$CÉ‚L‰E‹ƒ¿—¿¿ãÞíÐöTke“E‹_rëûåÝP­ý}ò$…“%‹­åÝÐ	©…“%ƒ~xxpæåHI’$†‹‚zªªªªæåI‚ ‚E‹%ƒ«ÿÿÿæäÃ$H&E‹%ƒª««ªäÜ5Põ…“E‹µ%ßÜ�¦mÐ…“E‹ªåßñ˜ŽF�e‹E‹\ÐÖ–àÜ -Û²M;…“E‹	ÞÜ$2I‚Ä›ƒªªªªßÜMÛvéÐ…“E‹ €€âÜlLÚB
Ô…“E‹*

ÝÜ	H ä›è‚ªªªªã×$I’À!…“Äz `ä² ©ªÿüe‹ÃIàXWÙªhü„OöDE‹ãQÜ••áÜŽåx±ç…“E‹_`ÀàæãÁ�
ÝÖuE‹äzÿþ¨¨æä`B2C&E‹äzõ¿*
åá�#:tâÄE‹äzÿªãáA’$E‹ƒUþ æâ±
ŽmÛE‹äz_úªçâ’0I®¯E‹äzUßº çã,É¤œ�E‹äz­¯* àÜ´-ÛŠ
Ú…“E‹ßÜI×bíÖaÄ›ƒªªªªßÜiÛ6h²¶ä›è‚ªªªªÝÜ@	ä›è‚ªªªªÝÜ@‚$ä›è‚ªªªªÝÜ€ ä›è‚ªªªªÝÜä›è‚ªªªªÝÜH  ä›è‚ªªªªÝÜ’$ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ	�ä›è‚ªªªªÝÜ€�$Æ›ƒªªªªÝÜ€ @$Æ›ƒªªªªÝÜH‚ &›$„ªªªªÝÜ@ä›è‚ªªªªÝÜH€ €ä›è‚ªªªªÝÜ�	�ä›è‚ªªªªÝÜ‚@$ä›è‚ªªªªÝÜ€ A�ä›è‚ªªªªÝÜ‚@ä›è‚ªªªªÝÜI@€ä›è‚ªªªªÝÜ 	ä›è‚ªªªªÝÜ@ @€ä›è‚ªªªªÝÜAä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ@$ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ Aä›è‚ªªªªÝÜ’ä›è‚ªªªªÝÜ’@ä›è‚ªªªªÝ± …“#Z@ÀÝª¹�¤Iâ$…“ãQ%ÕUWÝª ±�d…“ãQ
•ÝÜ ä›è‚ªªªªÝÜ	€$$ä›è‚ªªªªÝÜä›è‚ªªªªßÜm‘vm‘v…“E‹€€€€äÝ€8€#ð…“E‹%%%%âÜé`w±[;…“E‹à€çÞ’@	®Se“ƒW~xàçå 	€$“$E‹ƒÿÿÿªãâ@€HE‹ƒxxðàåâi–tiÚE‹ƒ­­­¯çäP`ÅÒ­%‹ƒþþ¾>çÝ-:õã$…“ƒ-ÞÜH’$Ã„ä›è‚ªªªªßÜ-–lm›6ä›è‚ªªªªßÜÛ¶amÛ6Ä›ƒªªªªÝÜ@ä›è‚ªªªªÝÜ� @ ä›è‚ªªªªÝÜ‚ ä›è‚ªªªªÝÜ’ä›è‚ªªªªÝÜH€€$ä›è‚ªªªªÝÜ�@€ä›è‚ªªªªÝÜ@ ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ�$ä›ƒªªªªÝÜ€@ä›ƒªªªªÝÜ@A’ ä›ƒªªªªÝÜ$ä›ƒªªªªÝÜAä›ƒªªªªÝÜ‚@’$ä›ƒªªªªßÜmÐdm›´ä›ƒªªªªèÝP
¯…“ƒ^zxxèä‰’-†%ƒäzªª
èæ$C‚!@f‹bjªªªªèã’¡�-E‹ƒ¿••=äÝ¶PCNIÿ…“E‹ZZâáÞH†dMšt…“E‹ÃÃ‚àçâƒV©i»E‹ƒ¾¾¨€çÞNÜÛÒ$Ae“ƒ‚ÿ×çã1Š¢-9E‹ƒøø/çãŽ”¶i›E‹ƒòð€¨çäÛl@ƒµ%ƒäz¨ª

èä’ Š¤#&E‹{ÿ¿¯+çäÀ¶aI’$E‹ƒÿÿª¨çä0`É–bE‹ƒÿÿúúäâH2 ‰0…“Årªªªªãâ	�I…“ÅrªªªªäãA’$I’†“ÃrªªªªäãA’	�†“ÃrªªªªäáØŠ-Ã²a†“ÃrªªªªáÜµ]Û‹ƒ9…“%‹àÜNàv�…“E‹ÀÀÀÀéæÁ`–a%ƒäz¼¼¸¸åã`€`€E‹%ƒéÃÃÃéç!H�ƒäzªª®îéèI�H$ƒäzú~_UéX€(@4äz¤rÀ@pPD:x‚?H‚$äz¤rªª««;:I’I’äz¤rªªªª;:	I$äz¤rªªªÿ;:	’$I$äz¤rªªªÿ;:I’ A’äzÄr
«¯>:‰'Iƒ…ƒ£aªªªªs:I’$Ib{äzUUõ?Ø:I’$I<	E‹äzUUÕ*ä9I’¿E‹äzUõ
çfq7E‹äz¥

äÜ‘$H’ H†“ÃzªªªªäãH’$I’ †“Ãzªªªªäã@�A †“Ãzªªªªèæ’!‚f‹‚rªªªªèædH� ’f‹‚rªªªªçæ€fƒ‚‚ªªªªçæ€‚ fƒ‚‚ªªªªçæ fƒ‚‚ªªªªçåd @€E‹ƒ¯ÿÿÿçæfƒ‚‚ªªªªçå E‹ƒ¿¿ÿÿçÜ}ÎÖÐ…“ƒ
ÿUçÜy~ÛÛ…“%ƒÿUçÝIbÛÛ`…“ƒ¿ÕâÜ¶ãÄL6…“E‹ÝÜ$ ä›è‚ªªªªäÜ‰™w7•
…“E‹€€àpæâ‚HÙvb“E‹%ƒ¦
€èã›´	éànE‹ƒÿþøøèâX£ÕX½%E‹ƒãâ  ¥‹¥ŠªªªªâÞ¤EG�
8…“E‹êŠ«+æÞ‚4ivû$…“%ƒ××ªáÜP£¶kÝ®…“E‹ÞÜ 2 I2ä›è‚ªªªªÝÜ$ä›è‚ªªªªÞÜd@†$2ä›è‚ªªªªÝÜ$ä›è‚ªªªªÞÜA’’ä›è‚ªªªªßÝD2`&ä›è‚ªªªªÞÜI‚$Ä›ƒªªªªßÜM»®Ûº¡ä›è‚ªªªªÞÜI&Éä›è‚ªªªªÝÜ@@€ä›è‚ªªªªÞÜ!˜€Iä›è‚ªªªªÞÜ$C2 	 ä›è‚ªªªªÝÜA’’ä›è‚ªªªªßÜM×n–tä›è‚ªªªªÞÜ!’dÈ0ä›è‚ªªªªßÜ–nmš¤ä›è‚ªªªªßÞI’$I�$&›$„ªªªªßÞA‚ I’$&›$„ªªªªßÞI‚$I’$&›$„ªªªªáÞM–´IÚ…“e‹à€€àæánw©à	E‹%ƒ€€``çå@€fƒ‚‚ªªªªçæH€’fƒ‚‚ªªªªèáâÃþõæE‹ƒêðçàƒ8Íšùe‹ƒ¿¿çßö”¹ðJ…“ƒúzxúçå‚f‹‚rªªªªçãRÚ�E‹ƒ¯ÿÿçÞ+±Z�=e“ƒµ­-
ãÞµíÄÛ4…“E‹ë‚ÿWäÞÀm£#:…“E‹U¯-æÞÂ¸±’$…“%ƒõ¿
ãÞ‚°Iñà	…“E‹Wx^çâv›n¶Ô
E‹ƒ ààøçâ±×J$IE‹ƒ êÿÿçå!I’I’%ƒƒªçæI’$I’ %ƒƒ*æß€(­«#>…“%ƒÕµ//áÜ¨='ŽmÇ…“E‹âÜ1—¶g»…“E‹`€€€æâ‚DE‹%ƒ÷VV\çsP@%ƒGRx€æ1B'`%ƒè9U^è€¡0I‘äùMß¦jè95UU^ãLày—äE‹ç9µUã�E‹†Z	ãá$C’$I‚¥“Å‚ªªªªâá ¥‹ÅŠªªªªæáövg§E‹%ƒàà€€æä €%ƒƒ
(äâ ™„L‚„E‹ƒ‚åá	0)™E‹%ƒ/Šæâ&
”HIE‹%ƒøøþ×æâ R¶CÛE‹%ƒõÿåá
É¶ŠE‹%ƒ/+ èâö�Né“E‹ƒxxøèçK€€4ƒçAÀÀ`pP3ðÃäýë{çAè9þþÿÿ€2Iòÿm+ÔJç9UUURÌ3ùðÄbÿæzç9%ÕUU¹9Ìÿß¿g†bÇ9VW•5ægù3i’À›{BU‚¾åWIÂ'Ø£=ƒç9UWXZáX÷�\É•åzÇ9-5µ5çæf‹brªªªªèæI$I’f‹brªªªªçæf‹brªªªªèæI†$	‚f‹bjªªªªçæ	fƒ‚‚ªªªªçY@8ƒÇ9ÀpÕ)èÝÜ¿mÛE‹ç9\WUUZI€åç9Ç9*ªªYJÉ0ç9Ç9€ªª¨ÐYI’$IþåzÇ9UUU-æLò'e %ƒç9UU{ÀIC°½Ø´MÛ(Bf1ªªªªDC(Bf1ªªªªDC€(Bf1ªªªªäC‰‘Ä%ƒç9
5ÕäÞE‹%ƒªªª©äDK‚%À`E‹ç9VX`€MCÿÿÿÏ�çBÇ9ÿÿÿþDC�(Bf1ªªªªDC(Bf1ªªªªDC (Bf1ªªªªIDI�$I’$èAç9¿ÿÿÿäDƒžAÉ�dE‹çAb‰%•äCIò$z=E‹ç9UUVXFCmÑ´mÛ¶(Bf1ªªªªäD”É�dE‹ç9‚	%•äCO¢'ÐèE‹çAUVX`DC(Bf1ªªªªÀDÇ’$I’$Ærç9cUUUDC(Bf1ªªªªDC@(Bf1ªªªªäCIœX¹pE‹È9Õµ-ä×E‹ƒäã†“£rªªªªäã†“£rªªªªäã†“£rªªªªäã†“£rªªªªäã€†“£rªªªªääI’$I’$†“£rªªªªäâ€€†“£rªªªªäÞµSÇ £Õ…“E‹
-%ÞÞI’$I’$Æ›ƒªªªªãÞIœx±K…“E‹€ xxäâ!@@†“ÃzªªªªäßH˜«Å…“E‹UU¥­äÞcŒµƒ&…“E‹
¥UUäàTB%€@e‹E‹ÕÕäáV�´e‹E‹UW^àäâ		  †“ÃzªªªªãÝXµlÂ¶…“E‹-­
ªãß ±�Øe“E‹WW€€äßj5‚$e“E‹-%UUãD@€9e“Ç9€àxÇ¨]ÿ~â'ærè9\WUUD4AñBÇ9ÿúèè°3IžüÿýÆjè9UUÕä=ùðE‹B%	äâ$C	�†“Ãzªªªªäám»&Xle‹E‹ª­õäáIÛ¶Ãe‹E‹àêWUäâ@H	@†“Ãzªªªªäã†“£rªªªªäã‚$†“Ãzªªªªãá$É$dBe‹E‹¢‚ëäà±MRe“E‹êUUääI’$I’$†“£rªªªªäá`@‹5e‹E‹UUµ%äâ C†	‘¥“¥zªªªªäâ`0†“Ãzªªªªäâ$C&�E‹ƒªªúèäÞä´‘˜=&E‹ƒÿ¥äâ@€&%ƒäzªª*äâ!€E‹%ƒëûõõäâ@B$IE‹%ƒªªãÜ&¿™ß…“E‹^p€äà$MŠi:e‹E‹.šæ
ãÝNRÛ›6A…“E‹"ÿ_ßÜm»¶hŠ6ä›ƒªªªªÝÜ@‚‚ä›ƒªªªªÝÜ	€ ä›ƒªªªªÞÜ!ÃdÀ…“e“€À@äÜÉï¶“$…“%ƒªÿWãÝñTB�&i…“E‹X^UUäÞ“@J6é°e“%ƒúêªäÞ4A­e“%ƒÕÿzzäÞµ];)±e“%ƒ¢ª¯¯âÜmÌ¶šM…“E‹
ªUUâÝ±à
[+­…“E‹XZ½ÕãÝlë´îTBe“E‹»¢Z^áÜ­]Ç«ƒÕ…“E‹


)ãÜ/K1õw…“E‹XXx`äÞtbÛÚ&@e“%‹ªÿÕàÜ¤CÛbÒ…“E‹âÜvë’)d
…“E‹ ðøÞÜd2 ’ä›è‚ªªªªÞÜAdH2ä›è‚ªªªªãÜP«Ù¶ÿ?…“E‹¥
áÜÀ¶¶nêØ…“E‹®
áÝ
0¤M‘…“E‹//¨äÝ·pSÉ�$…“E‹XxãÜX«Õõÿç…“E‹%-ÞÜÈ�É„ä›è‚ªªªªÝÀ`…“B`€ÝIž$L&f‹BUUVXDÀM·™Ü)BÇ9ÿþª _5µáöo�¶GJç9UUWÞ4`±ðXe“è9
5äÝÓÄ§…“E‹WWXPäá[ƒ5X´e‹E‹-%%%äáI’téÐe‹E‹€àxXäáX‚5Xƒ5e‹E‹%%%-äá)Ðbi—¶e‹E‹\Xè¨æâ±&aJE‹ƒàà  æå’ 	‚f‹¢zªªªªæä I"C2E‹ƒ¾¿¿¿ãá‰�H†e‹E‹££ƒƒãá@‚!A¥‹¥ŠªªªªãâA€ ¥‹¥Šªªªªãâ@� 	¥‹¥Šªªªªãâ@¥‹¥Šªªªªãâ@H€¥‹¥Šªªªªãâ@�$’¥‹¥Šªªªªãâ	@$…“Årªªªªäâ	™a’…“¥rªªªªäãI�$I$†“£rªªªªäã	 †“£rªªªªäãA	$†“£rªªªªã:z=€`E‹ç9^X`€Q:I’$I‚$BÇ9ÿÿÿü=:I�&I’4(Bf1ªªªªC:@ó„I–$çAç9ÿÿ¿ÿã: `Ä’&E‹çA	‚b]ª@ÈŸ»wë¶¦jÇ9TUUUÌUÉoû¶ÅrÇ9UUUá
¶PaÂŽ%e“B%‰bXÃ:ðs?÷s?Årç9TUUU;:	’I‚$(Bf1ªªªªj:ññSç9Ç9ppppj9š�=˜#:ç9Ç9-


`9Iœœ9ç9Ç9€àðä]y’dù�%ƒÇ9U•%	é¸ ƒÅr ¨¨çCÀ@?%ƒÇ9Àp\}ØF’µï$(JÇ9TUÿ«V&i¶�$BÇ9ÕýªH¢$N’$	J*ªªªªÝI’„	e“BUÕ%	Ým…“§bÝÛ B€&›$„ªªªªßrÐ…“è9^à€áLy’ÿýþE‹Ç9UUW\fQ±Æa“¶mBE!ªªªª_â5>Øƒ9ˆRÇ95õõõÝP)�…“B
%çÝ®S‰™¿e“ƒxàà€çä¶
%ƒäzªª¨¨èä¢"É‚(%ƒäz****àÜ°€$HÛ…“E‹ãâv€ e‹æA`À€ª^I˜$M‚'†bÇ9ÕUWTˆ^x’$I’$&JÇ9TUUUÍ_¯É–¥jÇ9ií¥%ŒaI’äNŒäJÇ9UU×TèaIe
P{Ç95èb|"'Ø5{Ç9V\XpÂcÉ‘¤Iž$¥jÇ9ÕUUéŠ ƒ&R	éèH’$I’$f‹bjªªªªéèI$I‚$f‹bjªªªªéèI’$I�$f‹bjªªªªéèH‚$I�$f‹bjªªªªéèI’$I$f‹bjªªªªéèI$I’$f‹bjªªªªéèI’$	€$f‹bjªªªªêä›4	›´)ƒäzêêêêêp@À¼>äzÇ9à^épM'O’$ÅrÇ9à^UUèpI’$Éù
äzÇ9UUµ-êp‰g
ƒÇ9µ+èà$ƒåz©ªªªéèI’$I‚$f‹bjªªªªêè�$IƒäzþþþþêçÃ
 ‚µƒäz¿¿¿¯éäíàtNìØE‹ƒ{ò‚âéâP/5b£ÕE‹ƒ5-/?èÝOòß?ç
…“ƒàzéÜynÿ¢õ…“ƒ-èÜñp1ww…“ƒppààêè	É„!ƒäzªúúþêèLÈ�Lˆ�ƒäzªªÿÿêè!‚’ƒäzÿÿÿ¯êèHB’I’$ƒäz¯ÿªªéè€I’$ƒäzþ¯ªªéå�"É’"É%ƒäz****âÜsJÛ³�±…“E‹	åÝ%÷›1õ…“%ƒª€àxéã&Nå4AE‹ƒxxêèIL@’ƒäzêúþþêçÛ²!Ûº­ƒäz????èÝ¤Ðn«¿>…“ƒZú+éÝ°	ï�se“ƒU_xàéå")I’�˜%ƒÄzªªª€èåë`0f‹brªªªªèá�9r’E‹äz€‚ëÿéèA$I’$F‹‚jªªªªêèI’!ƒäzþþþêêèd†dB&ƒäz««««éè� ƒäzººªªéèI’$	F‹‚jªªªªêèI†LHƒäzªêêþêè!€$	 ƒäzª¿¿¿êè	™Iƒäzªêêêéè‚‚ƒäzª«««éèA ¦‹ÂiªªªªéèI’ F‹‚jªªªªéè	 	�F‹‚jªªªªéè�$@F‹‚jªªªªéè@I’$F‹‚jªªªªèåÀ´X»&%ƒÄzªª

èæ  I�f‹brªªªªæá«³Ök�ÕE‹%ƒàÝkŠ&h‚¶…“E‹ßÜC3´[³µÄ›ƒªªªªßÜiÓ¶ÝÖ
…“E‹ ÞÜ$I’‰$&›$„ªªªªÝÜ@&›$„ªªªªÝÜ$&›$„ªªªªÝÜä›è‚ªªªªÝÜ ä›ƒªªªªÝÜ@’ä›è‚ªªªªÝÜ  &›$„ªªªªÝÜ‚&›$„ªªªªÝÜ‚$&›$„ªªªªÝÜ	&›$„ªªªªÝÜH��&›$„ªªªªÝÜ@ &›$„ªªªªÝÜ@‚&›$„ªªªªÝÜ$@…“e“€€åÝÉŸ»÷”
…“%ƒ€ èxèáùï¶Ô&E‹ƒ¨þWéây[n›HE‹äz úÿÿèâ�Í¶ÚE‹ƒªÿUèã)æª“ÈE‹ƒØÚßµáÜX�8¨-Ç…“E‹	åÝ¶—¯K…“%ƒ
 xøãÜ~Îþ¢ƒù…“E‹-
ÞÜd’$2ä›è‚ªªªªÝÜ@�ä›è‚ªªªªÝÜ  ä›è‚ªªªªÝÜ€&›$„ªªªªÝÜ ‚&›$„ªªªªÞÜ!Ã„I€…“e“ªÞÜ	’LH…“e“€€úßÜ]¶µm»e“E‹®þ\^äÝîwù�»e‹ƒxà€€èâœÀI¡�N%ƒÄzúþøøèåkºaÃ°mƒäz¯ÿÿÿèæ!	’C0%ƒÄz¯¯¿¿èá´
ÿà”E‹ƒýÿð èä�#Ù‚˜Ø%ƒäz

ªçàÀ(¨�5e‹ƒ¿·--èßîôKù”e“ƒxpxxèä4Á€E‹ƒ+ÿÿÿçá±o“¤E‹ƒ  ûÿçáN�Œ¤Ñe‹ƒ  º/ßÜH»¶h³¦…“E‹ÝÜ@‚ ä›è‚ªªªªÞÜL’0dä›è‚ªªªªÞÜIÄ›ƒªªªªâÝÛ`{vR;…“E‹ê€çÝÄ�öýü…“ƒ×¾àÝh»¶mÛ&…“E‹ßÝ$I’’Æ›ƒªªªªßÞI$I€$&›$„ªªªªáÞM–I�¶…“e‹ÀÀÀÀèä–d‘†ÛE‹äz¾þª¨çä2 –vE‹ƒ¿¿ÿªçáÎ”L#&©e‹ƒððÿ½æÞ€$Iýë¼…“%ƒõÿ‚‚åâk²%[¬E‹ƒæá®Ó®’$HE‹%ƒ(þ§æÞ¹àJÒ¤q…“%ƒxzÿïæä	�$@E‹ƒêúþþæåA%ƒƒ(æáM�
9E‹ƒÿ¯çâ’ MS¢%E‹ƒÿ¯

æä`$@„E‹ƒ¯¯¾®æáZ¢ÅX'mE‹ƒªåá„@HP%E‹%ƒþ®

æä$C€‚E‹ƒ¿þ¨¨æÞ›$A�$EE‹äz ªª:æäL&CE‹%ƒ«¿«þåãdB’ �E‹%ƒªªª«äãIE‹%‹
äã@$	 †“ÃrªªªªäáX»5C†“Ãzªªªªæä"@E‹%ƒ–ž^^æßÏÚ²¢ùe“%ƒ²ª¯­âÜôÈn[
5…“E‹ ¢
åÜ·pK1õV…“%ƒpðààæä ’!2%‹%ƒÿ®ªªæä ‚aB2%‹%ƒ¿ºªªåâ¶mé–¤E‹%ƒªª€äÜPõP¯ù…“E‹
ÝÜ’ä›è‚ªªªªàÜ‚hÆNbÛ…“e‹*ÝÜä›è‚ªªªªßÜm×¦í†­ä›è‚ªªªªÞÜ@‚`H2Ä›ƒªªªªßÜ@³6éÚ.…“E‹
€Þ°ßä…“ÃIàVÝºPÏü¹ûe‹ÃIpVUU³¬¨†ûú­ÜãQÂI¢ÝªI�	‘…“ãQ5%%æÝ1õJ©�N…“%ƒàxxðæåH  Æ‹âyªªªªæãX³­†5E‹%ƒ+»Ÿ/âßÀ€mËÐe“E‹ÿûâúãá!$’e‹E‹èêúúãâ$ ¥‹¥Šªªªªäâ$‘0“$¥‹¥Šªªªªæâ±d1`E‹ƒ°ððøçÜ«3ÖP�…“ƒ
¯­ßÝ!I’ I’…“e‹ÞÜ 	2dB†ä›è‚ªªªªÝÜ’€ä›è‚ªªªªÝÜ@ ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜHAä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ‚ ä›è‚ªªªªÝÜ@€ä›è‚ªªªªÝÜ	 ä›è‚ªªªªÝÜ€@ä›è‚ªªªªÝÜ@ ‚$ä›è‚ªªªªÝÜH€ ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ@€ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜA$ä›è‚ªªªªÝÜ’ ä›è‚ªªªªÝÜA$ä›è‚ªªªªÝÜ A‚ä›è‚ªªªªÝÜ�$ä›è‚ªªªªÝÜA ä›è‚ªªªªÝÜ‚@ä›è‚ªªªªÝÜ@ 	$ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ@‚ä›è‚ªªªªÝÜ€$�ä›è‚ªªªªÝÜ@€ä›è‚ªªªªÝÜAä›è‚ªªªªÝÜ€ @€$ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ	$ä›è‚ªªªªÝªM²$x'…“ãQWVT\«ªA�H� DZAAªªªªÜª�Iž$…“R%UUÝª…“ãQ-ÝÜIä›è‚ªªªªßÜM×tM×…“E‹€€çâi“ª–Z¨E‹ƒ8<<ßÜhŠ´H·t…“E‹çÜ¹ûÛåT…“ƒú^çà›»cÕe‹ƒ€+-äâLB&	C€E‹ƒ €€ æâ1`&`E‹ƒþÞþþæÜ i"-:…“%ƒßÿ+áÜ¨£ÚvlÇ…“e‹ÝÜ@ä›è‚ªªªªÝÜHA$ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ 	 ä›è‚ªªªªÝÜ	 ä›è‚ªªªªÝÜ€$Aä›è‚ªªªªÝÜA ä›è‚ªªªªÝÜH�ä›è‚ªªªªÝÛ 	 ä›è‚ªªªªÝÌ…“äzÝÜ ‚ä›è‚ªªªªÝÜ’ ä›ƒªªªªÝÜH 	ä›ƒªªªªÝÜ@€@’ä›ƒªªªªÝÜH€Iä›ƒªªªªÝÜA�ä›ƒªªªªÝÜHä›ƒªªªªáÜ‰�¶®à…“E‹ððçÝ±p6es…“ƒxðàèèä$H%ƒäz€ ¨ªèä€ J¶˜HE‹ƒWÿúúçß�‹åb.Þ…“ƒ­�‹«çÝœ#Ñ‚$e“ƒ
/÷WçÝ1åe“ƒàx_UèãI\»Ú„iE‹ƒ€ªÿÿçâÒ*5P
ÕE‹ƒ¯//äâA$	0†“Ãrªªªªçâ“ Im·E‹ƒþþ¨€çäÀ¶aé–nE‹ƒÿÿúúçäX²&IÒ$E‹ƒ/ªæâ$CÒE‹%ƒUU**çà¤A±OE‹ƒÿúððäâƒ�H E‹%ƒäâ!I’…“Årªªªªäã	I’$†“Ãrªªªªäã	�$	’$†“Ãrªªªªçã1‰e›E‹ƒøøà€éÜ¢9�ù…“ƒ---àÜ¶‘DŽa…“E‹€€ÀÀéæ–¡Á¬%ƒäz¨¨¬¬åã†`ÀE‹%ƒÃÃ‚‚éç!!’ƒäzþþªªéè�%ƒcjªªªªéË@@ƒÄzß¿¿¿äiN%ƒÄr¿ä?yi%ƒäzU¨ä;I"M%ƒÄrwªä:INi%ƒ¤rÿªä?É-	%ƒ¤r¿
ä]y	e‹äz½ªªªäÁaE‹%ƒ+äâd@’$	�†“ÃzªªªªäãI� ’$†“Ãzªªªªäã@’$H’$†“ÃzªªªªäãA’ A’$†“ÃzªªªªäãA$I‚$†“Ãzªªªªäã’I$†“Ãzªªªªèæ!f‹‚rªªªªèçI$f‹‚rªªªªçæ@fƒ‚‚ªªªªçæ€ fƒ‚‚ªªªªçæ$	 fƒ‚‚ªªªªçæ �fƒ‚‚ªªªªçæ€fƒ‚‚ªªªªçæfƒ‚‚ªªªªçæ	$ fƒ‚‚ªªªªçæ€@ fƒ‚‚ªªªªçå2fƒ‚‚ªªªªçÝ¢ù�/Ñ…“ƒ
-¯áÜNRÛm'…“%ƒªåÜ©`
’h…“%ƒpxÿõæâ 6i;E‹%ƒ__ æâ	Ñ¤c;E‹%ƒ­
äà C:)‘e“E‹¥­õUäâ!2!0¥‹¥ŠªªªªáÞH³¤K²$…“e‹ßÞI’$’$&›$„ªªªªßÝ`B&$C&Ä›ƒªªªªÝÜ@‚�ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ’€ä›è‚ªªªªÝÜ� ä›è‚ªªªªÝÜ’@‚ä›è‚ªªªªÝÜ@� ä›è‚ªªªªßÜÝ�vM›¶ä›è‚ªªªªÞÜ ’	É�ä›è‚ªªªªÞÜ!	I2ä›è‚ªªªªÞÜ 	†$I&ä›è‚ªªªªÝÜ@ä›è‚ªªªªßÜ@Û¶mÛ6ä›è‚ªªªªÝÜH‚$€ä›è‚ªªªªÝÜ€$‚ä›è‚ªªªªÝÜ	€	 ä›è‚ªªªªÝÜä›è‚ªªªªßÝ$I’$�&›$„ªªªªßÞ‚ I‚&›$„ªªªªßÞ‚$H’$&›$„ªªªªâÞ6aS‰•Ø…“E‹èè €äáíÐmi—ve‹%ƒ €çâ0mµ»E‹ƒÿ¾çâ-dKqÛ¶E‹ƒúðçã¶[Iœ„E‹ƒðà€€çå C@E‹ƒ¯ÿÿÿçã¤1�IE‹ƒ
/ÿÿçâžÐvk¢%E‹ƒø çä¶mkº¥%‹ƒÿÿ

çßZ¢%X¢ýe‹ƒçãabÙeE‹ƒ.þþçávÂ²“&e‹ƒªÿÿçá‰Ý–“$e‹ä‚ªÿÿçân<µ’$E‹ƒÿÿçäéÐ%‹ƒúþÿÿçäÃÀ°5E‹ƒÿÿÿ¯çæ@fƒ‚‚ªªªªçå&E‹ƒÿÿÿ¯çã€$HE‹äz
ª¯þæÜÎOÛ
€…“ƒ«½ÞÜdÈ„`2ä›è‚ªªªªæÜ¦pS¹�<…“ƒxàæÜ 	¶™Ç…“%ƒUÿ€æâ�
9‚CÑE‹ƒãBšˆE‹è9x€ã3Iâ$â¨E‹è9UWzàË1ñ�ÄIò${è9-ÕUWæ2@ï�¼%ƒè9-Õä¸E‹æråâI–´	–aE‹%ƒ€ ¸¸çÞ‚´mýÛÇe“%ƒUÿªŠæâ¢1CÑE‹%ƒ+-/®æâq’Ø	M‚E‹%ƒ€ ¨úæà’À
Iç¸E‹%ƒ×ú€€åàh�ÙE‹%ƒ¿­æãÉÐbE7´E‹ƒ êª®æÍA€ E‹åz
jä5Ø#'Lâ$%ƒç9X\VWÙ5É�œ¹—åzç9UÕ•5ã3S#ˆ@e‹çA{‚�%É¶ø½ÄÇbç9UW\\ÍW9—®Ù^ð¥jÇ9¥íiciYÈû'Oò?çAÇ9ÔUUU†YÀ“äùŸÜ&JÇ9PUUUçY¹@ƒç9%
çæ€ f‹brªªªªçæf‹brªªªªçæ$f‹brªªªªçæ€f‹brªªªªçU
,ƒç9À`ÞJèßÿÿŸä{Ç9\WUUZYI’$	‚$(B&)ªªªª¤)uR'­ÝfZç9UUUçJùƒÇ9Õ-çÍƒÅræã†­X‹5E‹ƒ¯//+äCM&€E‹ç9W\`€FmX‚%BÇ9ÿ¯«ªD70pèAç9ÿÿþþDCH(Bf1ªªªªäC‰‘Ä%ƒç9
5ÕäßE‹%ƒªªª©äDK‚%À`E‹ç9VX`€KCÿÿçÿ�<çAç9ÿÿÿþDC@(Bf1ªªªªDC(Bf1ªªªªDC(Bf1ªªªªFCmÑ¦mš¶èAç9¿ÿÿÿäDƒžAÉ�dE‹çAb‰%•äDIò$z=E‹ç9UUVXDC(Bf1ªªªªäD”É�¼E‹ç9‚	%ÕÇCO‚$K’$åzç9UTVUDC(Bf1ªªªªDC(Bf1ªªªªäDIž\¹ðE‹ç9Õ•%	äÆE‹åräã†“£rªªªªääI’$I’$†“£rªªªªäã†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäã€†“£rªªªªäãA †“£rªªªªäÞX#ÚMb;…“E‹%-
ßÞ‚$A$…“e‹
äÞ‰�¸ñä
…“E‹  xZãß6K�
Úe“E‹Xø­­äà1é …“E‹zZWUäã†“£rªªªªäáÀ‚5ëÖe‹E‹55_ZäÞµÉ¤’&A…“E‹‚ªUUãß€-Ä¤		e“E‹¥¥ï}äâ	†“ÃzªªªªäãI†“£rªªªªä@€4E‹BÀpÖ3èßÿùŸÿ{ç9\WUUD7�è9ç9«ÿÿÿ¨7Éÿÿÿÿ¦jç9UUUä/Épe‹è9%	ãàÀ¬@ƒµe“E‹õõ¥¥äâ@†“Ãrªªªªäâ!@†“ÃzªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäâ	É�€†“ÃzªªªªäámÖ´í°e‹E‹ëâz_äãH†“£rªªªªäâ †“£rªªªªäâ`B&™0¥‹¥ŠªªªªäáX;,ÝÖl¥‹¥Šªªªªäß IÎê´…“E‹UUúêäß A©ä
e“E‹UUXXãàØÚ.kÛ­¥“¥zªªªªäÝ~~ßíÆAE‹%ƒ úäà¡&%’E‹%ƒVZªªäâ$E‹%ƒ%%õõäâ	$E‹ƒ  ªªãÜwÞþšù…“E‹

-ßÜÛÐ¦MÛ¶ä›è‚ªªªªãÝÐi¶�$…“E‹_þ ÞÜ ’$C’ä›ƒªªªªÝÜ @‚ä›ƒªªªªÝÜ Hä›ƒªªªªßÜIÑfMÑv…“e“@@@ÀäÝ’(ÐRCú…“%ƒ÷¿//ãÜ¤àN¾ûÇ…“E‹UZè€äáMš4Û�¶E‹%ƒþ¨äáÉÐ°E‹%ƒðøÿúãÞš­:RM…“%‹­¯ÿýãÞ­³ue“ƒŠªÿÿäâ!€€E‹%ƒªþÿ¿äáIÚ´í–E‹%ƒ€€à äÜš5P¯9…“%ƒ/--äÜÏy—é…“E‹€àXXäâDB0H†E‹ƒªäÝu2ÚÒ(Œ…“%‹¯õõâÞ&d‰6K…“E‹ººúðÞÜ`† ƒ�ä›è‚ªªªªÝÜ	ä›è‚ªªªªßÜmš´I×ä›è‚ªªªªäÜìš“$h…“E‹€×ÕãÝ&hté”…“E‹××‚€ãÝNÌÖÒ(ˆ…“E‹¯·ÞÜ$’ 	’ä›è‚ªªªªßÜiÚ6Mšä›è‚ªªªªßÜmšti7…“E‹€ä€e‹	B`€áIþäûþ%ƒBUUVXD-PH”ÝæèAç9þþ®ªUâ1>ã?þˆRè95õõõä(`!�E‹B
5äáX4À6le‹E‹%µUUäá)Ð`e‹E‹X^UUäákÓ6À†me‹E‹«UUâá’¥“Å‚ªªªªåâÉ�ÝÖmE‹%ƒ  ¨¨åáI-%E‹%ƒêª
åá$Š¤“8E‹%ƒ¿*âáI€I�e‹E‹ƒ‚‚€ãá$I’@’¥“Å‚ªªªªãâI	‚ ¥‹¥Šªªªªãâ$@‚ ¥‹¥Šªªªªãâ@A$¥‹¥Šªªªªãâ@€$	‚¥‹¥Šªªªªãâ	’¥“¥zªªªªãâH‚H$…“ÅrªªªªäâI@	Á�…“¥rªªªªäã	€I�$†“£rªªªªäãA’’ †“£rªªªªäãH$I’ †“£rªªªªäãH‚ H$†“£rªªªªã:{'h&E‹ç9V\\\;:A’$I’$(Bf1ªªªª::I’$I’$(Bf1ªªªª;XŠÅÐBÇ9««ïÿÃ:o{Ûù�ærÇ9UUU5è<®`AÂŽ%%ƒç9%‰bXÆpRÿ­í¶Årç9TUUU`:•CÕ€(‰è9Ç9®¿×ÿB:yÞ<J‚$(Bf1ªªªª[:±o¹�$ç9Ç9ð O9àÓ<Oò<ç9§9è9É�{ù�ƒç9U•%	å»E‹År©‚‚è8 €'ƒÇ9Àp\i°Ý'õS?HJè9üýýýð“$I’$	J*ªªªªI’$I’$	J*ªªªªÝI’dù�…“BU•%	Ý™…“ærÝÜ� &›$„ªªªªÝÜ@I &›$„ªªªªÞÜd2$†…“e“€€å\€e‹æApÀæYI’$L&$‹Ç9UUW\`˜õ€`BÇ9%µÕÕÀÉ‘¤Oò$FƒBÕUUà=e“hRèÞÀ	¶e“ƒUW^Xèã,©�*-%ƒäz****ãÜýßä½[…“E‹ƒã{èÝÉû—Ü$e“ƒ€êWUç`r‚=Pì{Ç9\Xp`˜]I’$I˜&RÇ9UU•è_	ñ
{Ç9%
èbK"'Ø4åzÇ9V\Xpèc�
ù�XåzÇ9	
%5étÀ ƒçA`À€­cI’$M‚$fZÇ9UUWTèd!I‘|ƒÇ9
-5•éèH’$H�$f‹bjªªªªéèI’$I‚$f‹bjªªªªéè	’$A�$f‹bjªªªªéèH’$I’f‹bjªªªªéèI$A’f‹bjªªªªéèI� A’$f‹bjªªªªéi€¨9ƒÇ9€xèd€(úNžä$ƒÇ9à^WUÚpO’$I¥rÇ9UUÕ-êpÉäzÇ9Õ-êÏäz¥jêè I€ B’ƒäz¿¿¿¿éèI’H‚$f‹bjªªªªèèI’$I’$f‹bjªªªªêéA� Iƒäzþþþþêæ’"1	‰ƒäz¯««¯éäÎä� I%‹äzàúúÿéæÀ 2¬%ƒäzª¯¯ªéã	QOíTNE‹ƒpzzzéá�#Ñ’&Ie‹ƒ-µõUéÝÏ[›Û…“ƒ€ª}UêçÁ–uí¶µƒäzþþ®ªéè$@$ƒäz¯«¯¯éèI$@ ƒäzªªª¯éèI$	�ƒäzªªªêéèI’@$ƒäzªªª«éç ƒäzª®þªéâãÑÀHE‹äz/ïÿéâyWR›IE‹äzàøÿÿéèI’$A‚ F‹‚jªªªªêè!I€!A€ƒäzþþþþêçØ:¬Ãº!ƒäz????åÜ˜#öX-ö…“%‹

-)àÜ¡;vœØ…“E‹ æÝî�—¹ýÿ…“%ƒxà€éÞ°m·›ä…“ƒUÿª€éã’4H”–E‹ƒÿÿÿøéæÛ°m–lf‹bjªªªªéè	�	’ ƒäzêªªªéè@I’$ƒäz«ªªªéè	€	’F‹‚jªªªªéèI€$@ƒäzªªªêêè!!’ƒäzþþþÿêèH’$‰�ƒäz¿¿¿«éèI’ ƒäzêªªªéè@	�ƒäz«ªªªéè$H’$F‹‚jªªªªéèI’$I$f‹bjªªªªéè@$I’$F‹‚jªªªªéèI�A’$f‹brªªªªéã� ‘Z£1E‹äzÿ»//èÞ€°Mµëä…“ƒUÿªèá´AÞ”rE‹{ÿþøàèâb5P#5E‹ƒßÜØ†µh»6…“E‹ÞÜC !AÄ›ƒªªªªßÜíÐ®iÚ¤…“e‹ ÝÜ@ @ &›$„ªªªªÝÜA$	‚&›$„ªªªªÝÜH &›$„ªªªªÝÜ�� ä›è‚ªªªªÝÜ€ ä›ƒªªªªÝÜ ‚Ä›ƒªªªªÝÜA�$Ä›ƒªªªªÝÜ A�Ä›ƒªªªªÝÜ$&›$„ªªªªÝÜ	&›$„ªªªªÝÜ$€&›$„ªªªªÝÜ€	&›$„ªªªªÝÜ�A�&›$„ªªªªÝÜ@€A‚ &›$„ªªªªèÜïpéð…“ƒxxxxéç2%ƒÄzþÿÿªéçH�„ƒäz¿ÿÿªéæÃÐ¤ƒäzªÿÿ‚éâX9�#1E‹äz////àÜ²#ÇtB…“e‹òàÜ1e‡¶	™…“e‹ø€¯èÜ÷s×åÆ…“ƒ ú^èÜÿSûŒ…“ƒ
¯µàÜŽC'²Ò…“e‹ÝÜA	€Ä›ƒªªªªÝÜ€$ä›è‚ªªªªÞÜLÈ�…“e“€ €áÞi“$Iš…“e‹ªªŠúæÞy}KTJ…“%ƒ ú^þåÞOÒ?êƒÕe“%‹ªª«­èÞ¹ys¦Ðe“ƒèz^^èæ!I	%ƒäzþªªªèçH’ƒäzÿúªªèçI’ 	’ƒäz¯«ªªèß£�5Ò(Ie‹ƒ
¿ÿäÝ6•x5µ…“%‹êàê{èä–cÈ”,‰%ƒäz(((*èà‰�K�TOE‹ƒààààèåØº!ØÖ¦f‹‚rªªªªçá¶àTk¬ÙE‹ƒà€æÝP9’#Õ…“ƒ--/ÞÜdH†!Éä›è‚ªªªªÞÝI�Æ›ƒªªªªßÞA’ I’$&›$„ªªªªßÞ‚$I’ &›$„ªªªªàÞI’�IÈ…“e‹€€åÞIb»ƒ H…“%‹ªWWäÝÒ>PÔ…“%‹
--àÝIÛtk¬…“e‹/ßÝ H’!É�Æ›ƒªªªªäÞNl·¶C…“E‹€¨XXåßq�ØÉ–
e“E‹ª ZZåÞ~ùœÿÐ…“%ƒêàzúçá›39Àºae‹ƒ¿ºçß.e
¹ðPe“ƒêzxpèãk²ÙÚ,¡E‹ƒ/?¿åÝÐª5ôÓÛ…“%ƒ­âÝ«{ñÐ…“E‹Š€`jçá0�[B&e‹äzþª

çÝˆS-9e“ƒÕ¿/çÞšÔ
±pO…“ƒÿzxèçÝ€lP�9…“ƒÿý-çßP;Ú1O…“%ƒ­¯øøåÞ”@ŽP¯=…“%‹_ÿ--åÞ’´	¯”O…“%‹U_zøæÞ‚¤mµíü…“%ƒWÿª‚å³ÔR#5E‹ãI à``æ½�%‹ãQ	æãh²%[‹5E‹%ƒ«åà lX9e“%‹Uõ--åà’´	±We“E‹UUZZåäI’$I‚ E‹%ƒªªªªçã¦`J‰`KE‹%ƒ^Zppæã@`ØlE‹%ƒ-½½½åÝÚÙ)‰…“%‹
­­õãÞžÐu«³Æ…“E‹zî‹
åà’0A�”
e‹%ƒþêà åß HX;&e“%‹Uõ­äÜ	ÕR¿9…“E‹¥%%àÜMÚ±'…“E‹
ÝÜIä›è‚ªªªªÝÜ	‚ä›è‚ªªªªÞÜ$AÁÄ›ƒªªªªÞÜ	0`$Ä›ƒªªªªÞ­€º&…“RÀ^Þ«À>ÿ¹�Û…“ÃIà^UUÀ¬ñpŽû¸ãQÃIxx¢¢Ä¯¶�¶ï'ãQÃIUÕªªÁ­ÎãÛ÷fBãQÃI
ªú^Ý«9'p…“ãQ
	æÝw™·1u…“%ƒ€ xxèåY[lÛ¶µ%ƒäz¨ª
èàÚ£ù’@e‹äz

¯¿äáMÒ¦k‹¶e‹E‹ þýýäâ	L†¥‹¥Šªªªªåâ@ƒµkÚµE‹%ƒ

çâ¶í´veE‹ƒ€àðçå!A€I2%‹ƒþÿÿ¿æß�õêÃ>e“ƒ­­+
áÞMÓ&I‚%…“e‹ÞÜ I& 	†ä›è‚ªªªªÝÜ @$ä›è‚ªªªªÝÜA@�ä›è‚ªªªªÝÜ‚ä›è‚ªªªªÝÜ � ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜAA$ä›è‚ªªªªÝÜ€€ ä›è‚ªªªªÝÜ@€ @€ ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ Iä›è‚ªªªªÝÜ� Iä›è‚ªªªªÝÜ@� ä›è‚ªªªªÝÜ	 €ä›è‚ªªªªÝÜ� ä›è‚ªªªªÝÜIä›è‚ªªªªÝÜä›è‚ªªªªÝÜ@‚@ä›è‚ªªªªÝÜ@�ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ�Iä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ‚€ ä›è‚ªªªªÝÜHIä›è‚ªªªªÝÜ@‚ä›è‚ªªªªÝÜA€ä›è‚ªªªªÝÜA’ ä›è‚ªªªªÝÜH$@ ä›è‚ªªªªÝª`%@8…“ãQXXPp«ª@�DZAAªªªª«ªAI�DZAAªªªªÄªÉ‘$I’$¤rãQUUUÝªÉ—$…“ãQ	µUà¯‚ …“#Z-çãlÈ–L(E‹ƒ<<<>ßÜh�h�…“E‹‚‚‚‚èãäiYí:E‹ƒüü,çâ˜­Õµ]§E‹ƒçäi3`Ö­%‹ƒºþ¾¾æâ¦`
´å„E‹ƒúú¢€èÝØƒõÂ(`…“ƒ
-¿×àÜvB'r‚$…“E‹ÝÜ$�$ä›è‚ªªªªÝÜ@‚ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ€€ä›è‚ªªªªÝÜä›è‚ªªªªÝÜA’ ä›è‚ªªªªÝÜAä›è‚ªªªªÝÜH‚ ä›è‚ªªªªÝª(@ƒ%…“RÀ@pXÝÂpp…“„jÝÜ$‚ä›è‚ªªªªÝÜ@ ä›è‚ªªªªÝÜ�@ä›ƒªªªªÝÜ�@ä›ƒªªªªÝÜIä›ƒªªªªÝÜ$@€ä›ƒªªªªÝÜ 	€ä›ƒªªªªßÜéÐtm—…“e‹ €€ äÝœÀM÷›ß…“%‹þ€€èâƒDA¦�RE‹ƒ×þøøèä‰D” H%‹ƒúz×èä¤
‰’CÚ%ƒäz*
çäÐ[´%ƒäz €
èã€ iS½9E‹{ÿ¿¯+èâX+²&—NE‹ƒ¯¯úðçãvlÇ’
‘E‹ƒ‚�¯èã›³Õ›6	E‹ƒ
¯ÿÿèãqçJ“ IE‹{ úþÿèæ!I’@‚f‹bjªªªªèæIB‚$I€f‹brªªªªèæI’$É�f‹‚rªªªªèåÍºmÖ-f‹‚rªªªªçã #:Nâ$E‹ƒãâH…“ÅrªªªªäãA’$H$†“ÃrªªªªäãI 	’$†“Ãrªªªªåã	†I˜�E‹%ƒÀ€€€çÜ@5€õ…“ƒ----àÜ¶¶a[…“E‹ÀÀ€€éæÁ¬Á¬%ƒäz¨¨¨¨èãŽk{vUE‹ƒ€Àðòéè	’ƒäzúúúúéè€ €%ƒcrªªªªéæÀ¬Ã‚-%ƒÄz¿¿¿¯äãH@‚$†‹‚zªªªªäãI$’$†‹‚zªªªªäãHA‚$%ƒƒ  äã I‚$fƒ‚‚ªªªªäã$I�$%ƒƒ



äã’I$E‹%ƒ

++äãI$H †“ÃzªªªªäãI’$I�$†“Ãzªªªªäã‚$I’$†“Ãzªªªªäã	$I’$†“Ãzªªªªäã	’$	’†“ÃzªªªªäãI’I‚$†“ÃzªªªªäãH�I�†“Ãzªªªªèæ’f‹‚rªªªªèçII€f‹‚rªªªªèãš$­˜£9E‹ƒÿÿ//çã@	¡
E‹ƒÿÿøøçå	€0fƒ‚‚ªªªªçâ­`ovÝ$E‹ƒúàçâ I®í$E‹ƒÿÿçâ� M¶ÛE‹ƒÿÿ€çäÛ�­%‹ƒÿÿÿªçåA€À�f‹‚zªªªªçã�9�HQE‹ƒ//ÿÿçã6B’HÉE‹ƒ ø¿¿çá'	¶E‹äz€ª  çâš�ÙZÙE‹ƒãâ	‚$¥‹¥Šªªªªãâ¥‹¥ŠªªªªãâI$I¥‹¥Šªªªªäâ$B2 C0¦‹£ŠªªªªàÞH†L&…“e‹ßÞI’$I$&›$„ªªªªßÝDB$d&Ä›ƒªªªªÝÜ@@ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ	@ ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ Aä›è‚ªªªªÝÜ@€€ä›è‚ªªªªßÜ6¬Ýš6ä›è‚ªªªªÝÜI €ä›è‚ªªªªÝÜ’Hä›è‚ªªªªßÜm›víÖä›è‚ªªªªÞÜd’`0ä›è‚ªªªªÝÜ�Hä›è‚ªªªªÝÜ@@ä›è‚ªªªªÝÜ‚ä›è‚ªªªªÝÜHä›è‚ªªªªÝÜ$@�ä›è‚ªªªªÞÜ!Á�ä›è‚ªªªªßÞI�$	’$&›$„ªªªªßÞI’ I€$&›$„ªªªªßÞ	’$I$&›$„ªªªªãÞ®ñ…“E‹zxxxçâ±Ô
 HE‹ƒðøÿÿèä¢‰b"Æ%‹ƒ¿ÿ�çãŽ@-�E‹ƒðú¯¯çáM’#ÙE‹ƒÿ¯çä@²5ÛR¬E‹ƒ¯/¾¾çâÒÔ	‰�LE‹{ª¨  çå$	‘%ƒäzªª€çâšu�IE‹ƒ¯ÿÿçå@$@’%ƒäz¨¨ª
çæ@A fƒ‚‚ªªªªçæ	Hfƒ‚‚ªªªªçæ€$fƒ‚‚ªªªªçå@�’fƒ‚‚ªªªªçáX"&Ò¶	E‹äz

ªªçå!E‹ƒþþÿÿçáb&'@e‹äz«ÿèáD�Û#&E‹ƒÿÿçã�"Á†dE‹ƒ?¿þþçÜÎß?˜Õ…“ƒ-ßÜm›$M:…“E‹ªáÜq–x¶×
…“E‹€€€êæâ„CÙ#9E‹ƒãÞmšÕ…“E‹Uõ-¥ãÞ²	Îà	…“E‹U_xzã4ë¬E‹èA^àâ4I’$tñ%ƒè9UU^àá4¯�˜I’$Eƒè9
µUUã5 ¦�xE‹è9µçÕÒ&I’	E‹%ƒ
¯úYçã	™PAE‹ƒ¨øøúçå!C’’fƒ‚‚ªªªªæâbÙ€
�E‹ƒ
//¯èãv�¶­E‹ƒèxþ¿èä’ˆ´œ0E‹ƒõÕúºç\èP&E‹çAÀ`pXP7LÜ¤LÈ(Bf1ªªªªèLùp@ƒç9%
	èZ
èÀ9e“çA€êzZàÉ�›vÕåzç9WÕ•5ée#¨äzçArÀßYIò$s‚&åzÇ9UU^\çYIš|I•{Ç9Õ•5%èÚ�‚$‹åz­¯ªªçæf‹brªªªªèæ ’’f‹brªªªªçæH€f‹brªªªªèæ	H’$I&f‹brªªªªçJÐƒ>ûï?$ƒÇ9X\VWY)É�›0r:Ç9ððÿÿ¢TI’$yžfZÇ9UUUçY	ƒÇ9%	çæ€fƒ‚‚ªªªªçæ$‚$fƒ‚‚ªªªªæädB2$ƒ$E‹%ƒ««««ääI’$I’$†“£rªªªªä7{‚ýÀ`E‹ç9VX`€K@iÛÖm‹¶BÇ9ÿÿÿþDC€(Bf1ªªªªDC@@€ (Bf1ªªªªäC‰‘Ä%ƒç9
5ÕäÞE‹%ƒªªª©äDK‚%À`E‹ç9VX`€JCÿÿ?ÿ�çèAç9ÿÿÿþDDI’$I’$(Bf1ªªªªDC(Bf1ªªªªDC (Bf1ªªªªFCiÐ¶mÓ¶èAç9¿ÿÿÿäDƒžAÉ�dE‹çAb‰%•äDIò$z=E‹ç9UUVXDC€(Bf1ªªªªDC(Bf1ªªªªDC€(Bf1ªªªª�CIž„I”†bç9U••ä¹E‹Æjäã@†“£rªªªªäã †“£rªªªªääI’$I’$†“£rªªªªäã†“£rªªªªäã†“£rªªªªäã†“£rªªªªääI’$I’$†“£rªªªªäã€†“£rªªªªäâ †“£rªªªªäÞMÒ˜ÍD
…“E‹‚¢zZäß["¹€e“E‹¥UUäà$€�
%e“E‹WÕ¥äÞíÀn›©Åe“E‹zz¯äâ†“£rªªªªäã †“£rªªªªäáé¶b †“ÃzªªªªäÞ¥`‰äLe“E‹ZPPPäß� I�ÝÄe“E‹UU‚‚äâ�†“£rªªªªäD0E‹BÀpß$hÂ?ÿÿÿ%ƒè9\WUUD,±pK
 è9ç9èªª¿ŒmkÛOþ§jè9UUUä?	E‹è9%	äãA †“£rªªªªäá[´6e‹E‹õUUäâ$@’IÂ$¥‹¥Šªªªªäâ!†“ÃzªªªªääI’$I’$†“£rªªªªäà@�0e“E‹UU•µäßÐI—T…“E‹UZjhäà�‘ˆe‹E‹õ¥%5äß€4uv—te“E‹Uõê`äâ@$H†“Ãzªªªªäà¶IÚ’Ðe“E‹ÿ¿µÕäß�ä	ñ`…“E‹_^XZäáéÖ
`e‹E‹p_UUäâ!@†“ÃrªªªªäáIÚ4ØºnE‹%ƒ€€º°äß›àIÚ¸E‹%ƒzàäãf‹¢zªªªªääI’$I’$E‹%ƒõõõ¥äã E‹%ƒ¯¯ªªâÝ�5šÉ…“E‹/¿ÝÜä›ƒªªªªÝÜ ’ ä›ƒªªªªÝÜä›ƒªªªªÝÜA$ä›ƒªªªªÝÜ€ä›ƒªªªªáÜvjw.�…“E‹€ XXãÞn«±de“E‹þZ^^ßÜmº¶kŠm…“E‹«âÜ-™²¦Ð
…“E‹ú¨XXäÞæ-Gre“%ƒzøúúãàÀŠ­[»5E‹%ƒäß«]ÇíÖAE‹%ƒ °äÝÄmµï$…“%ƒ×ÿªâÝ+d¯Nçze“E‹[òàêäÝ~bû“8Œ…“%ƒ

ÿ÷äÜ¯`kµÝç…“%‹xúªâÜÐ&Ú´Ó²…“E‹¥*áÝI&I“…“E‹/
ßÜÛ�fi‡uÄ›ƒªªªªãÜÎãÖƒ6`…“E‹ÖÖáT,e“GR`à	¼�…“(J
ãÞÐ"Ôä…“E‹%§^zäÞ1gJ M…“E‹øZUUäà	�ˆDAe“E‹ÚZUUãÜNBÛ›$	…“E‹û_ãÜykO­@B…“E‹ àzZâßI·mØ°ve“E‹ªÿÿªäá–°†“Ãzªªªªä)€E‹BpÀã*I’$ü>%ƒè9UUVXB�
ù˜£9)Bè9õµµ½•®aû’ü§bBUUUã0!�e‹B	%äáÀÚ5Iš$e‹E‹µ/âá@€$I$e‹E‹ªâá€€¥“Å‚ªªªªâá@$e‹E‹þ


âáH’$	’$e‹E‹+âáI’$I�$“„ªªªªâáI�I�e‹E‹€€€€ãâI�	�¥“Å‚ªªªªãâ@‚	$¥‹¥Šªªªªãâ$I€ ¥‹¥ŠªªªªãâI� A‚¥‹¥ŠªªªªãâH$€ ¥‹¥Šªªªªãâ@‚ @ ¥“¥zªªªªãâI ‚…“¥rªªªªãâI’	‚…“¥rªªªªäâ$A!†“£rªªªªäãI’$� †“£rªªªªäãI’I †“£rªªªªäãA’$I †“£rªªªªã:`‚%X‚%%ƒç9XXXX;:I‚$I�$(Bf1ªªªª;:I‚I�$(Bf1ªªªª;:@€	€(Bf1ªªªªã:	‘tI’$%ƒç9%µUUÁ9Hò$I’$årç9TUUUD9�üùŸÿè9ç9ÿ¯ÿÿD:ö'Ožäè9ç9ÿªªª<:`˜„d&(Bf1ªªªª;:I‚ ’$(Bf1ªªªªä:I’dÉ�E‹ç9U•%	è´ E‹År¡   ç:À€ƒþ%ƒÇ9Àp\n0øó?ÿcû'Jç9TÕÕU! £>ò#?Bç9
I’$I’$	J*ªªªªÝIž|¹p…“(BU•%	Ý¬…“{ÝÜ@ A‚&›$„ªªªªàÜq‡vd…“E‹€€ÀæÜÿo;[-Ð…“%ƒ
/õÞÜI2!	†…“e“äÜ÷ïp…“%ƒxxxxè`@èƒÇ9p@€’G¶c;µ;&RÇ9UUUTH‚$H‚$(Bè9««««Ý‰�…“B	
%%çÜîp¹›Ü…“ƒxø €èßP#õ“6E‹ƒ-/÷WèÞ9e
e“ƒx^UUèæ!A‚ ‚¦‹Âiªªªªè¡€ƒFZ`ÀÔ]Iî$K'¥jÇ9ÕWV\è_P{Ç9	
ézÀ ƒB`À€±cÉ‘¤M‚'fZÇ9ÕWTé{ �ƒJ	ècr&�ìƒÇ9^Xx`™cI�ÄI’$FRÇ9ÕUUèk0ƒÇ9	èèI’$I’$f‹bjªªªªéè	’$If‹bjªªªªèèI’$I’$f‹bjªªªªé„1ƒ&J€xècõ|’$ƒç9€xWU¸c|’$Iž†bÇ9VUU5êdIœW åzÇ9Uµê¬!äzFZ	êé@’$I�$EƒcrªªªªêéI$€$Eƒcrªªªªêé’$A’ EƒcrªªªªêèdB&$&ƒäz««««èèI’$I’$f‹bjªªªªêè$H’H2ƒäzþþþ¾êèC2L’$ƒäz¿«ªªéèA’$@�ƒäzªªª¾éèI� I’$F‹‚jªªªªéçA‚�F‹‚jªªªªéèI’ 	’F‹‚jªªªªéè�@� ƒäz¾¾ººéèI�I’ƒäzêªªªéèA$I�$ƒäz¯«ªªéèH ƒäz¯ªªúêè	‘!É�ƒäzúúúúêèdH2	0ƒäz¯¯¿ÿéèI’ 	’ƒäzªªªúéèI’ I‚$F‹‚jªªªªéèHH’$F‹‚jªªªªéèI$I’$f‹bjªªªªêè€!2ƒäzþþþ¾êæ�À�,*ƒäz¿¿?>âÜ`­:j­Ú…“E‹	ÞÜ$A’	Iä›è‚ªªªªáÞIÒ¤M7´…“E‹€€ŠæÞIîÖ’4@…“%ƒª××áÝ”à�²MÛ…“E‹ê€èÝÐNÿûÜ…“ƒ^ú€éå’DI%ƒÄzªª¨èêèI’0$2ƒäzªªª«éèI€$I’$f‹bjªªªªéè�� ƒäzêªªªêè$I!‘„ƒäzÿêêªêèC2$I’ƒäz«««ªéèA�I‚f‹brªªªªéèI’$I€$f‹brªªªªèèI’$I’$f‹brªªªªèèI’$I’$f‹brªªªªéèI�$I’$f‹brªªªªéèI’$I’f‹brªªªªéäÒ"È’,aE‹ƒ¿¿ÿÿéÝÏï¿=×…“ƒ€âzèâiévÓ$E‹ƒ€€ÿÿèáR£õñE‹äz
àÜŒ-;²
Ú…“E‹ÞÜ!@’I†ä›è‚ªªªªÞÜ`H’	’&›$„ªªªªÝÜ 	&›$„ªªªªÝÜ@‚$&›$„ªªªªÝÜ€ &›$„ªªªªÝÜ€A�$ä›è‚ªªªªÝÜ	�IÆ›ƒªªªªÝÜ�’&›$„ªªªªÝÜ€$&›$„ªªªªÝÜ€&›$„ªªªªÝÜ @&›$„ªªªªÝÜ€	 &›$„ªªªªÝÜ ‚ä›è‚ªªªªÝÜ� ä›ƒªªªªÝÜ	 ’ä›ƒªªªªÝÜ€ä›ƒªªªªçÜ¯p©”o…“ƒxøððåÜ rµÛ?…“%ƒUÿåÜ´�¶û¼…“%ƒÕÿ€€æàuk§FiE‹ƒ¨¨çàÊ�Nì§e‹ƒ—¾çßIeO[
õ…“%ƒzz¯µåÝ’�ÝõkÇ…“%ƒ­­ŠŠèä‘dH
E‹{þþþøèæ$C’�%ƒäz*ªªªèÞôCÖ�@…“ƒ
«õÕáÜqÛÖªƒ­…“E‹áÜNl§q×	…“E‹€èçÝÉoÛåF…“ƒú^åÝ±ô
£I…“%‹øXÿýãÝtÅ†c‰q…“E‹â‚‹­æÞÀ(Œ›3Ù…“%ƒõ·//èÞ$PrÉ}ûe“ƒ^úèÝ°mö›Ä…“ƒUÿ€èåØ6Å�&E‹ƒÿÿÿ®èäA€dÇE‹{¿¿ÿªçâÔuXÒ&E‹ƒúªèãIÕ�ViE‹ƒàúþÿèæI„$™$fƒ‚‚ªªªªçã¤
:%‘E‹ƒ
ÿÿæàäF¶š
Å…“%ƒÿï­­çåaB!†%‹ƒ®þþ¬çã#��HE‹ƒ/¿ÿÿçÝOR?¢�Õ…“ƒ-àÞI’$IB…“e‹úàÞL’„I0…“e“
àÞI’$a…“e“páÞI›$Iº…“e‹úáÞÛ–4IŠ5…“e‹þàÞ Á„I&…“e‹ËÀ€äÞ�#Ù®“8…“E‹%%*ßÞ	’$I’$&›$„ªªªªãÝ6»¶…“E‹ €€`åÝ¶d’’5…“%ƒøª/
ãÜ¹5¶ý—…“E‹­ åÝ%”)pK…“%ƒØðððäÞõÐT�Ý´…“E‹Rb¢¢çÝ6‰v�Øe“ƒÕ¿ çÞõ¹O…“ƒàpppèÞ¤�9à?Þe“ƒ

èá.N�P@E‹{€èøþèÞâƒåà�Ùe“ƒ



åÞ”üÂ8…“%‹¯%%%åÝ€=Ùnlß…“E‹%…Š
åàÕ*ÌR²9e“%ƒ¾¯/®æàu›ŽXae“%ƒªúþÞäÝ¶PoŽíÛ…“E‹ZZ¢¢äÝ6q‰ù˜…“E‹ZZà å®
ð@8E‹ãIppppæ­·ð¹—»ƒãI•UæàZ,ÆØX‘e‹ƒ

ª©æãm“aÛ¶µE‹%ƒ(üªªæâ¶
&`BÚE‹%ƒ
åäIE‹%ƒªªª®æä	$H’E‹%ƒzúúúæåI’ ’$%‹%ƒ¿¿¿¿åÞ€‰X�9…“%‹Õõ­-åÝuû“?…“E‹¢`pXåÞ­D’Z�9…“%‹Þÿ­-áÜ˜½ÆŽc;…“E‹
ÞÜÈ$$’ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜAHä›è‚ªªªªÝÜ @€ä›è‚ªªªªÞ®9…“ãQ€pßªÀ&’$…“ãQà\UU«ªIDZAAªªªª²ª)�·��äãQÃI Áª÷y—¿ãQÃIxxà€Æ³k"Ù‚ÔãIÃI	õUVÅ¬&ˆP/>ãQÃIWÕµ-ß¹p@…“CbçÞwwñ…“ƒààxxçà’½=ZŽÝe‹ƒçÝ `S9e“ƒ×·/ãÞ0	®w…“E‹U]zèäâIÈ„!C¥“¥zªªªªæãÝ6)–E‹ƒ¾þøøçã•‰`
E‹ƒðððúçå€	€fƒ‚‚ªªªªæâLB›€E‹ƒ‚ÿÿçßã£9R
‘e“ƒ-­­ãÜbÿ£�õ…“E‹
ÝÜ€ä›è‚ªªªªÝÜ	Aä›è‚ªªªªÝÜIä›è‚ªªªªÝÜ�€ä›è‚ªªªªÝÜ	�ä›è‚ªªªªÝÜHä›è‚ªªªªÝÜ€$@€ä›è‚ªªªªÝÜ$€ä›è‚ªªªªÝÜ	‚ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜH‚ ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜA@€ä›è‚ªªªªÝÜ@‚ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ€ ’ä›è‚ªªªªÝÜ@$@ ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ€I$ä›è‚ªªªªÝÜ @ä›è‚ªªªªÝÜA�ä›è‚ªªªªÝÜA	�$ä›è‚ªªªªÝÜH€ ä›è‚ªªªªÝÜ@� ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜH€€$ä›è‚ªªªªÝÜ�€ä›è‚ªªªªÝÜ’Iä›è‚ªªªªÝÜ‚ä›è‚ªªªªÝÜH�ä›è‚ªªªªÝª@0À(…“ãQp``@«ªA’H� DZAAªªªª«ªH’DZAAªªªª«ª’$DZAAªªªª«ªI 	‚ DZAAªªªªÇªI�ÄIœädbÃI?ÿÿç«ÔIöù'e‹ãQ
•Uæ¿Ú$I�…“„j ©æâ¡ÉÄE‹ƒààåâ@tmÚ6E‹ƒæâ‚(9vl:E‹ƒ/
æâ±i“1aE‹ƒ€àðçä2 Ãº-E‹ƒ¿¿¿?àÜŠ-Ûˆ­8…“E‹ÝÜ	‚ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜ	€Hä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ€� ä›è‚ªªªªÝÜ	@$ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝ«@4…“ãQÀpÑªHò$I’$%ƒãQTUUUÝÂp…“ÄrÝÝI’$I’$ä›è‚ªªªªÝÜ@Iä›è‚ªªªªÝÜ@€Aä›ƒªªªªÝÜH@ä›ƒªªªªÝÜ� H ä›ƒªªªªÝÜ	$	ä›ƒªªªªÝÜ	’H ä›ƒªªªªæÝy›s±…“%ƒ ðxxäÞNiOš 	…“E‹ðz]]èâqÙ–œ6E‹ƒ ªÿèáƒ6‘Ú>E‹ƒ×¿
çâ›ÐJië¶E‹ƒúú¨¨èã€´mvl;E‹ƒõÿªªçâP£­®ÔE‹ƒ//úúåâéÐtKº¦E‹%ƒà€èãšTI¶�NE‹ƒÿÿøøèäIP,Ù%ƒäzªª

èã$iS#ÙE‹äzÿªªªèäDJ±‹E‹äzÿªªªçãI´M‡E‹äzÿªªªèä¢-Å”D%ƒäz

ªªèä¢#%”‰E‹ƒ//ÿÿäâ$	†H2…“ÅrªªªªãâH	…“Årªªªªäã	‚$I$†“ÃrªªªªäãA’$I�†“ÃrªªªªäãH�H’$E‹ƒ€€æÞ�õÒªie“ƒ--¯¾ãÜùk¿v7…“E‹€€‚kéåI–lÒ%ƒäz¸¨¨¨èä‰àHŽ�E‹ƒòòòðèç� �f‹bjªªªªèç�$	 ƒäzêêêªèãP
Ù’Ô%ƒäz++
äã	�$I$Æ‹âyªªªªäãA’$A€ E‹ƒÿÿªªäãH�I$E‹ƒÿÿúªäãI�$A’%ƒƒªªªäã	�‚$Eƒƒ¿¿¿¯äãA I’$E‹%ƒ



äãI‚$A †“Ãzªªªªäã‚$@’$†“ÃzªªªªäãA’ I€†“ÃzªªªªäãI’I’ †“ÃzªªªªäãI’ �$†“ÃzªªªªäãH�A’ †“ÃzªªªªäãI€I�†“Ãzªªªªèæ!€!f‹‚rªªªªèç@ f‹‚rªªªªèåXƒmÛÚ¶fƒ‚‚ªªªªçå!�À�f‹‚zªªªªçäº­X³¥E‹ƒÿ¿/‹æâ¶MÆ"
ÙE‹%ƒ
ãâI ¥‹¥Šªªªªãâ@€ ¥‹¥Šªªªªäâ$2!™�¥‹¥Šªªªªäâ$†aB2¥‹¥Šªªªªäâ$‘0$	¥‹¥ŠªªªªæâJ±™8E‹%ƒØ çâÎànN�ØE‹ƒààæâ€
:vb'E‹ƒãâ	‚ ¥‹¥Šªªªªãâ	@¥‹¥ŠªªªªäâI’0$“ ¥‹¥Šªªªªäß‚¶Iõäte“E‹U_zàãÞ’5P#5…“E‹+---ßÞH’$I$&›$„ªªªªßÜÛ2´Û6Æ›ƒªªªªÞÜI2d’ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜ @ ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ@€‚ä›è‚ªªªªÝÜH€A€ä›è‚ªªªªÝÜ@$@ä›è‚ªªªªÝÜH�Aä›è‚ªªªªÞÜ!C’$ä›è‚ªªªªßÝ	‚!I€Æ›ƒªªªªÝÜ€ä›è‚ªªªªÝÜH‚$€ä›è‚ªªªªÝÜ	‚Hä›è‚ªªªªÝÜ@@ä›è‚ªªªªÝÜH€ @€ä›è‚ªªªªÝÜ‚$’ä›è‚ªªªªÞÜdH$I’ä›è‚ªªªªßÝ$A’ ’&›$„ªªªªßÞ�$I�&›$„ªªªªßÞI$I’ &›$„ªªªªãÞñÉ…“E‹xxxxçânw±�E‹ƒ€€ððèã’4HR»ÆE‹ƒÿÿ¯çã€MÅE‹ƒÿÿ¯çå`I%ƒäzª¨¨çæ	€$fƒ‚‚ªªªªçå	 @%ƒäz**ªçáñ`›E‹äz  ªªçâÒ
¹˜
ÅE‹ƒ¯æãÀŠ%[2¤E‹ƒ¯çå@€fƒ‚‚ªªªªçæfƒ‚‚ªªªªçã#9�(ÓE‹ƒ//ÿ«çã¡˜�a
E‹ƒ¸°ðøçáÉä›He‹äzààê¿çä€mÐE‹ƒÿÿÿúçæ�fƒ‚‚ªªªªèß�&‰�9e“ƒõµ--çß0	éOe“ƒW~xøçß�i’­&e“ƒ½ý­çãŽ-dE‹ƒÿþüçäIŠE‹ƒ€ÿÿÿçâZƒ9˜
ÍE‹ƒ/éâ¹s7E‹ƒðøøèâ­­5XÑE‹ƒ/ãâ@�¥‹¥ŠªªªªãÂ€E‹{@ã4}‚õE‹èAWx€×4Iž$M‚9%ƒè9UUWxæ4�SIœ$%ƒè9½ÕUç;OƒÈ1-çß�¤mî�e“ƒõÿzxæàh�#ÚE‹ƒÿ¯æâ€,Ù¶�„E‹ƒ¯*ˆ€è® %‹¥j  ªjÒ¨½Û�û»F‹ç9\^WUæ?É›|qƒÇ9Õ•µ%èÉ ƒÅr)*¢@ä7à/'Lâäåzç9X\VWéVñ@ƒç9%
é…@(ƒFR€À`ÂYpÂ$O’Ä¥jÇ9\WUÕç_)p ƒçA
	çæ€f‹brªªªªçæ @$f‹brªªªªèç@	� F‹‚jªªªªççI’$I’$f‹brªªªªçR €,ƒÇ9€À```D€È’8:ç9Ç9.//
J´Iß˜¯9)BÇ9ªª¯/å6q`e“çAµ%	çä6Å–¥E‹ƒÿÿþ®çæ� fƒ‚‚ªªªªçå 2 C2%‹ƒ¿¿¯/åã 	’$™�E‹%ƒªªª äÞŒƒÑ…“E‹UÕ%%äÝµû»9ç…“E‹‚€pXäC{‚=€@E‹çAVX`€UCÿóüÿ�ÿBÇ9ÿÿÿüDCA(Bf1ªªªªDDI’$I’$(Bf1ªªªªäC‰‘Ä%ƒç9
5ÕäÞE‹%ƒªªª©äCK‚%À`E‹ç9VX`€JCùÿÿÏ�çèAç9ÿÿÿþDDI’$I’$(Bf1ªªªªDC(Bf1ªªªªDDI’$I’$(Bf1ªªªªKCùñÿþççAç9¿ÿÿÿäDó5I’$E‹ç9byUUDmX‚%BÇ9ÿ¯««D80èAç9ÿÿþþDC(Bf1ªªªª±CI”I�¦jç9ääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäã@†“£rªªªªääI’$I’$†“£rªªªªäã†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäã�†“£rªªªªäâ 0†“£rªªªªäß ­�le“E‹UUZpäàPÙLÉe“E‹¥¥ÕÕäßX²¹î”Le“E‹¯zpäßZ"Õ$Me“E‹¥UUäâ@†“ÃrªªªªäàP"Æ$)Be“E‹¥¥ÝUäÞ4A­e“E‹UWZPäÞ±Ä
ä6–e“E‹PZ{íäáM»¢0e‹E‹ ßUUäE0E‹È9€`â7`ÎäÉŸä%ƒè9XVUUD:åè9ç9ÿÿÿ«’:ÿó?ÿó†bç9UUUä$	E‹è9%	äâ	0 †“ÃzªªªªäÞ€¶•Žm§…“E‹Õ­‚‚äá-�
0¬…“ÅzªªªªäâA�L’$¥‹¥ŠªªªªäàA$•�e‹E‹UUêàäâ	$@†“Ãzªªªªäá@4@te‹E‹%%¥õäà±`ˆe“E‹ZWUUäß€i€«%e“E‹ÕÕ¥
äÞñÔ
 e“E‹pZWUäá+°C×¦¥‹¥ŠªªªªäEÀ E‹'J `@ä<�
E‹ç9
äâ&¥“¥zªªªªäàD’RØe“E‹Wß¥¥äà¶é˜” e‹%ƒ€€xzäâ	IE‹%ƒþWUUääI’$I’$Æƒâ�ªªªªäà�Å€E‹%ƒ

¥õäâ@B2E‹ƒ
ªäÝ‚ŒP9…“E‹ÕÕ5%ÞÜ 	2 É„ä›ƒªªªªÝÜ‚ ä›ƒªªªªÝÜ@Iä›ƒªªªªÝÜ€ €$ä›ƒªªªªÝÜ	’ A�ä›ƒªªªªßÜíÐ¬i—6…“E‹ €äÝ÷ôN÷e“%ƒøøxxäà-BE‹%ƒºÿÿäÞIR'“ˆe“%ƒ€*ÿõãÜîpO¾ëü…“%ƒzø¢ãÝP«9u’$…“%ƒ­/
ãÞàIñ–Ôe“%ƒþþ¸ ãÝMl›íÔ…“%‹‚êúZäßm¼ºö�Te‹%ƒ

à ãÜ
5@ùe“%ƒ/
ßÜK×i�v…“e‹€€€€äÝÓ8ˆ[¿=…“E‹×Õ%âÝµÐ
‰k'…“E‹pp€äØ‹±I2…“E‹

Šá(€PÃ?…“è9€xWÏ`ò$Iòäe‹(B\UUUã`e“BßÜÛÐ¶k‹¦…“E‹€âÜK¶µë¤…“E‹¯
äß±”
0e“E‹XXWWäáM»tÃe‹E‹¢ëUUäák4†ae‹E‹/5UUäÞNlÛ’…“E‹‚‚UUäáI“6Ã
`e‹E‹((ÕUãÞMìÄ›…“E‹‚‚zUä@ E‹(BpÀáòÿ´
ÚE‹BUUW\D9çNÛ�BÇ9 ¨ª«Ÿ IðäOò?ÆjBUUUâ'0�e‹B	%âáI$I’$“„ªªªªâá¥“Å‚ªªªªâá  e‹E‹****ááI’$I’$“„ªªªªâáI’$	�$“„ªªªªâáI�$	e‹E‹€€€€ãá$@’$¥‹¥Šªªªªãâ  ¥‹¥Šªªªªãâ’ H¥‹¥ŠªªªªãâI‚$$¥‹¥Šªªªªãâ$¥‹¥Šªªªªãâ$$¥“¥zªªªªãâ	$H …“¥rªªªªãâ�…“¥rªªªªäâ$‚$’†“£rªªªªããI’$I’$†“£rªªªªäãI’$I�†“£rªªªªäãH� @’$†“£rªªªªä:X‚%X‚%E‹ç9XXXX;:I‚$A (Bf1ªªªª;:I’ A‚ (Bf1ªªªª;:I� I’$(Bf1ªªªª;:I�$I� (Bf1ªªªª::I’$I’$(Bf1ªªªª;:I’$’(Bf1ªªªª;:A I� 'Bi1ªªªª;:	’$H’$(Bf1ªªªªä:I’dÉ�E‹ç9U•%	ä´E‹Æjä9À€'%ƒè9Àp\ˆ: ë’w™»&JÇ9TUUUiF$#É:ÉBE!ªªªª,ó#?ò’(BÇ9ªª««ÞIž\¹p…“BU•%	Ý²…“&{ÝÜA@&›$„ªªªªÝÜA	’ &›$„ªªªªèÜÉû—ñð
…“äz€ øxéäÕÒ©ÚŠm%ƒäz(¸ªªæÜÎC?¢ú…“%ƒ-åÜ÷S1õ
…“%ƒxxxxèæ‚‚F‹‚jªªªªçGûƒ>à=ƒÇ9V\\XH‚$H‚$(Bè9««««ÜI‘\I–„…›B5••ÕèÜÿ›—1w…“ƒ€àxXèåÅ¬Š!%ƒäz¨¨**èÞ MµéÄe“ƒUUë‚èæ €!%ƒäzªªª¨èç€	‚$¦‹Âiªªªªè^`9À¨ƒÇ9Xp`Àæ^	‘XI˜ÄårÇ9%5•ÕèÍƒ¥jècr‚=�ì{Ç9\Xp`èc)�I‘|åzÇ9
%5•é˜€€ƒFZ`ÀÌcIò$L'¥jÇ9UUV\éc±�É•¤ƒÇ9-%•Õèä$ƒåzªªª«é©,ƒfZ`èc¬êó$ƒç9à^U½cèó$I’|…bÇ9\UU•ècI’¼ï0ƒç9UÕ-è€©0ƒJ-êè!™�™ƒäzêêêêêé‚EƒcrªªªªêéH I EƒcrªªªªêéA’I’ EƒcrªªªªêèH @2ƒäzÿÿÿ¿êè`2HB&ƒäz«««ªéè	’$�$f‹bjªªªªéè I’$F‹‚jªªªªéèI‚$	$f‹bjªªªªéè’ 	‚ƒäzºªªªéè’@ F‹‚jªªªªéèI’$@$F‹‚jªªªªéèI’ 	’$f‹bjªªªªêéI’$’$ƒäz¾þþ®éèI’$@$ƒäzªªª«êèdH’ƒäzªþþ®êè!	‚H2ƒäzþÿ¿¯êæ’ ‘dB&%ƒäzÿ«

êè �!@ƒäzÿþþþêè$I’I2ƒäzÿÿ¯¯éè@$ƒäz«««ªéèI’$ƒäzªªªúéèI�$ ƒäzªªª¯éè$H$ƒäz®ªªªéæº-²¡F‹‚jªªªªæÞMÒØ¬Ô
…“ƒ¢úzâÞqhGŠ
:…“E‹€‚‚)äÞ€9­“$…“E‹%%
âÞœ8Ib'…“E‹ªßÝ™�$H�Æ›ƒªªªªáÞIÖI‘…“E‹€€ÀÀêå‘dM–PA%ƒäzèèêþêè  ’ƒäz«ÿÿÿêèL2�ƒäzª««¿éç H�$@&F‹‚jªªªªéç$I�™�F‹‚jªªªªéèI�ƒäzªªªêêèdÂ�!I€ƒäzªªªÿéè@‚$@‚$ƒäzªªª«èèI’$I’$f‹brªªªªèèI’$I’$f‹brªªªªéèI’$I’ f‹brªªªªéèI’$H’$f‹brªªªªéæÛ²­Ø¶mf‹brªªªªéã	ÕRÜ$AE‹äzàúïÿéç$I$’f‹brªªªªèâX1Â*iE‹äz/;¿áÜk³Úh‹¶…“e‹#£ÞÜdH’!	’Æ›ƒªªªªÝÜ  &›$„ªªªªÝÜHI &›$„ªªªªÝÜ€AÄ›ƒªªªªÝÜ$ Ä›ƒªªªªÝÜ@Æ›ƒªªªªÝÜA$&›$„ªªªªÝÜ	�$ &›$„ªªªªÝÜ &›$„ªªªªÝÜ �&›$„ªªªªÝÜ ‚ &›$„ªªªªÝÜ‚$&›$„ªªªªÝÜ�€ä›è‚ªªªªÝÜ€$ä›è‚ªªªªÝÜ’ä›è‚ªªªªÝÜ€ä›è‚ªªªªãÜ7pk±dJ…“E‹PððøáÜK¼¸³W…“E‹€ äÝInç’
Ñ…“E‹
%¥âÞ$‘„q(…“E‹ê€€jèä±I	@AE‹ƒèþþÿèædB’H�%ƒäz
ªªªçÝâ9�:…“ƒ

èÝ¦sÉ�$…“ƒxàèà‚$I·�
e‹ƒÿÞððèæB2@f‹‚rªªªªèâNB—’$E‹{êÿéâ¹éNAE‹ƒà~_Uéæéº¡Àl%ƒäz¨ªªªéãMÒÖÒE‹ƒ«ÿUèâNÜ’“E‹ƒ ÿ_èä¦CI�	E‹{ªþÿÿèä±#‰’IE‹{*¿ÿ¯çÞOÊºR	l…“ƒ€Š­õæÞB
9	H…“%ƒ%%µõæßy’?Ü&He“%ƒÿÕæÞî¤$I…“%ƒxxÞßçß mNêÄe“ƒUÿ‚‚çäØ°Å–5E‹ƒÿÿþ®çäh‚%Øš´E‹ƒÿêçà[¾Ù’´	e“ƒ¯ÿçä]’%Û`E‹ƒ?¿çâÔIÉ”TE‹ƒÿøààæáP­E‹ƒÿÿæáñ¶Mš
ÙE‹ƒ€€çÞª#Õ“$	e“ƒ­÷WçÞ1ç
“ e“ƒàz_UçåI€%‹ƒÿÿÿæÞÚù�ƒ9…“ƒ--ßÝ$™�$@’Æ›ƒªªªªßÞI’$I‚$&›$„ªªªªßÝD&$’Æ›ƒªªªªæÝ±`O¶ûû…“%ƒxx æÝP£õm{·…“ƒ
+ª äÜ)ð¶ä
…“E‹XXPXâÜ,¹¤«‰M…“E‹‚«çÝ1éJÄ‰e“ƒ øÞ¾åßÉ1�le“%‹ðPPðæß¹ôL��e“ƒððpàæÞsLçÚÙ…“%ƒ
­èädŠ–cÇE‹ƒþþ®®èßX¢=Z>æe“ƒ


æßZ"üB+le“%ƒ¯§÷æÝš/õ�£ù…“%ƒ
ãÞK‰];…“E‹^X *æÝ­tK±…“%ƒúðppæßëj’`e“%ƒ úßõâÞ‰`ŒCÛ…“E‹pò‚á«€9Àø…“ãIppppÂ¬±±ðOãQÃIxXXxã¿ðI‘Ÿe‹ÃI	5ÕåáIÅ�ÑE‹%ƒ

åäA’ E‹%ƒªªªªåä@†“£rªªªªåäA@�$E‹%ƒêªªªæâ�Q’h3E‹%ƒ¯¯.åÜP­õìÓ?…“%‹-/
åÝïo¹�$…“%‹xø äÜP¯ù¶ÿ?…“%‹-ÝÜ@ä›è‚ªªªªÝÜHä›è‚ªªªªÝÜIä›è‚ªªªªÝÜ	ä›è‚ªªªªÝª4hÒ$…“Rp\WÀªøŸüÉŸü„jãQ\UUU¬ª@È$É$DZAAªªªª«ª@ H’ DZAAªªªª¬ªdH$I†DZAAªªªª¸ª¶mß¿ãQÂI€ Â¯'ðjS­9ãQÃI^Þ¿§Ñ­}þ¤O–{ãQUÕ•æÙqk—­Ô
…“%ƒ ðxçÞ©àJ @e“ƒxzWçå Cf‹‚rªªªªçÞšƒùP
µ…“ƒ/-­­æßIœÄäù…“%ƒ Š¯¥èä!iH–h‘E‹ƒþþþþèæ	I2f‹‚rªªªªçæAfƒ‚‚ªªªªçæ fƒ‚‚ªªªªçã¤@‹¢%E‹ƒúâçâX½9nl×E‹ƒâÝ�5PÙ…“E‹--
+ÞÜ$’$A‚ä›è‚ªªªªÝÜ	‚@$ä›è‚ªªªªÝÜ ‚$ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜIä›è‚ªªªªÝÜä›è‚ªªªªÝÜI$ä›è‚ªªªªÝÜ$@€ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ�@ ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ@€ ’ ä›è‚ªªªªÝÜä›è‚ªªªªÝÜä›è‚ªªªªÝÜ H ä›è‚ªªªªÝÜ@$ä›è‚ªªªªÝÜ�@ ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜH�ä›è‚ªªªªÝÜH ä›è‚ªªªªÝÜ€ @� ä›è‚ªªªªÝÜ‚ ä›è‚ªªªªÝÜ@  ä›è‚ªªªªÝÜH€ä›è‚ªªªªÝÜIAä›è‚ªªªªÝÜ‚ ä›è‚ªªªªÝÜI€$H$ä›è‚ªªªªÝÜAä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ@ ä›è‚ªªªªÝ²À@…“#Z@À€€«ª	H$DZAAªªªª«ª	‚A€$DZAAªªªª«ª’ ‚DZAAªªªª«ª€’$DZAAªªªª²ªyš¿ùõãQ¢I€Å«÷ãúƒ8`ãQ£I*ÿ÷ß«ù�»Ïÿä¤jÃI/W]}ä¸@±�E‹ÃI
•ãâ@�I¥‹¥ŠªªªªåâÀ
´m›6E‹%ƒ

æâ¶
6E‹ƒððð æá¶iÀ²9E‹%ƒš:-
ßÜhº¦k»v…“E‹«ÝÜ’$ä›è‚ªªªªÝÜI‚@€ä›è‚ªªªªÝÜ@HÄ›ƒªªªªÝÜ	€Aä›ƒªªªªÝÜH ä›è‚ªªªªÝÜ�Hä›è‚ªªªªÝ®,…“Z€`Üª`²$I’$e“ãQXVUU«ª�$I€DZAAªªªªÝ´p…“CbÝÜHä›è‚ªªªªÝÜ$A€ ä›è‚ªªªªÝÜ@‚ä›ƒªªªªÝÜI ‚ä›ƒªªªªÝÜ€€ ä›ƒªªªªÝÜHä›ƒªªªªÝÜ	‚ ä›ƒªªªªåÜ1oñô…“%ƒð àpèßOi—›$Ae“ƒâê_Uèæ!€$É$%ƒƒªªþªèâ)HÐ8ÆE‹ƒýÿ­èä”$H‚RE‹ƒÿUWþèâÓ&l»5E‹ƒÿõ­/çã$I&KE‹ƒÿÿúðçà´¹ºà#%e‹ƒª‹

èåYÑÅPf‹‚rªªªªèæC’ €f‹bjªªªªèædB�@‚f‹bjªªªªèæ		$@f‹bjªªªªèæLf‹bjªªªªèçI�$I�$f‹bjªªªªèæ C�$I�f‹bjªªªªçâµ³ÚXÕE‹ƒ/ãâ@¥“¥zªªªªäãI�$A †“ÃzªªªªäãI$I� †“ÃzªªªªäãI‚H†“Ãzªªªªçã	C1`KE‹ƒðððøçá-E,G§E‹ƒàð€èæ ’f‹brªªªªéãÎÖN“ E‹ƒðz__éçIH’F‹‚jªªªªéçL@’ ƒäzªªªªéåˆ’(Š%ƒäz/¯ªªåãLÈ$LE‹%ƒ«ª‚ëçãqbÛ”8E‹ƒ*//äã’$�E‹%ƒªªªªäãI$H’$E‹$ƒúªäã@�$’$E‹%ƒ¯ª

äãH	€ †“ÃzªªªªäãA‚ @‚$†“Ãzªªªªäã	‚$ †“ÃzªªªªäãI‚$I’$†“ÃzªªªªäãI$I‚†“Ãzªªªªäã I‚$†“ÃzªªªªäãH‚$I�$†“Ãzªªªªäã@€A‚†“ÃzªªªªèãÐmvì$E‹ƒÿÿèã‚´­¶�ÄE‹ƒÿÿåâØ¶&mÛ¶E‹%ƒ*äâI†aÂ$¥‹¥Šªªªªæâ¦`¦
E‹ƒàðððæâ�Ñ²-ÛE‹ƒãâH� ¥‹¥Šªªªªäâ$C†$I¥‹¥Šªªªªçã	K” 	E‹ƒàøþþçãb"‘�$E‹ƒ¯ÿÿçäm3l`%‹ƒªÿÿÿçâµ³Ú’IE‹ƒÿÿåâM»¥@´E‹ƒãâIA¥‹¥Šªªªªãâ@�$¥‹¥Šªªªªãâ€�¥‹¥Šªªªªäá²­Ýº
¥‹¥ŠªªªªäÞ¶I§£‹±…“E‹¢Š«­âÞ0�1…“E‹////ÞÞI’$I’$&›$„ªªªªßÞH’$A‚$&›$„ªªªªÞÜ`H2dB’ä›è‚ªªªªÝÜ@Hä›è‚ªªªªÝÜ€@‚ä›è‚ªªªªÝÜHAä›è‚ªªªªÝÜA‚ ä›è‚ªªªªÝÜH�ä›è‚ªªªªÝÜ$@‚ä›è‚ªªªªÝÜH�ä›è‚ªªªªÞÜd@2	I†ä›è‚ªªªªßÜCÛ6iÒ4ä›è‚ªªªªÝÜ@�@ä›è‚ªªªªÝÜH ä›è‚ªªªªÝÜ‚ ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ@�Hä›è‚ªªªªÞÜ$†!I0ä›è‚ªªªªÝÜ@ ‚ä›è‚ªªªªßÜí–míÖaÄ›ƒªªªªßÞI’$@’&›$„ªªªªßÞH�A’&›$„ªªªªâÞ±�H±å8…“E‹xè €çá¥`
!�E‹ƒððððèâ´CÛ¢ÕE‹ƒçâvœtîE‹ƒ€ððèæ!™� Ã0fƒ‚‚ªªªªçäX‹%Ø¶%‹ƒÿúçæIAfƒ‚‚ªªªªçæ	fƒ‚‚ªªªªçàX&RÙe‹äzæã]:¬°mE‹ƒ®þþçäÅ0`Ö6E‹ƒÿÿÿ+çã€$ˆ¤˜ÐE‹ƒ¿¿º âÝX5§²½Æ…“E‹íƒçà”ÐMo™»e‹ƒþþ¨€èåÛÒµÝ–E‹ƒ¿¿ÿþçáÉ”›E‹ƒààúÿèæ	I$’f‹‚rªªªªèä�H%HE‹ƒ/ÿÿÿçäéº!²!E‹ƒ¸???áÝ`ÈDŒA…“E‹ƒ‚‚‚çäPÐE‹ƒüþþþçä6` E‹ƒÿÿ¿¿çß�$i~é˜e“ƒÕÿª¢èâöÐJî”NE‹ƒøøøøèâÐ¸�­5E‹ƒÿÿ/æâ€$@¶�ØE‹ƒ¿¿ãâH$’$¥‹¥Šªªªªãâ$$¥‹¥Šªªªªä™ÀE‹¦b`å4N¢ú€%‹è9W~à­
-çÚý>ærè9ÕUWxæðNÉ›$%ƒB-ÕUæd�
E‹J-åâm·f@,E‹%ƒ‚«¯/è9€
ì�ƒ&%ƒç9àpx\c;ä°MÿûBÇ9_Uÿ?èg±ð0%ƒç9
	çP
ì@ƒ=ƒç9À`pXæ?É›|I‘åzç9Õ•5%é×	‘Ò(mE‹År	


æQ9h²'%ƒÇ9`x\^çYI˜Xù�
{Ç9•5%
çå!‚€f‹brªªªªçæ€f‹brªªªªèæ!I$@f‹brªªªªèç€$I’$f‹brªªªªèæ	’$˜0f‹brªªªªç

ùØ&%ƒBpPXXU�/9‚HABÇ9//·þ²’ÄOæ{BUÕ•æ¤0 e“{¡à ¨æÝP«ÙuÞ»…“%ƒ­‚çäÅlVE‹ƒþüüþæãÀ‚-X¬E‹%ƒ5-­­äàŽ$e“E‹ZZUUäâ@†“£rªªªªäâ†“£rªªªªäã†“£rªªªªäCz=€@E‹çAVX`€OCùÿÿÿ�ÿBÇ9ÿÿÿþDC@ (Bf1ªªªªDC(Bf1ªªªªäD‰‘Ä%ƒç9
5ÕäÞE‹%ƒªªª©äDK‚%À`E‹ç9VX`€KCùÿçÏ�ÿçAç9ÿÿÿþDC	 (Bf1ªªªªDDI’$I’$(Bf1ªªªªDC(Bf1ªªªªDCA(Bf1ªªªªD8XèAç9¯ÿÿÿD@è9ç9þÿÿÿDC(Bf1ªªªª¾CI”I�Æjç9äã†“£rªªªªäã€†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäã†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäß�%�¹…“E‹¥%¥¥äÞ‰ëÖ“&…“E‹ ªWUäÝm]ÿÚ9…“E‹ª

%ßÝ$’!…“e‹ €Šãß¶“8”De“E‹WWäß¶�
Òhe“E‹XXuÕäã  †“ÃzªªªªäÞöà±Ëº…“E‹Zr¢ªäßXŒÙÒ4e“E‹
¥UWäH,E‹è9€`ä6Ø³?ÿ“$%ƒè9XVUUDö�É`OBÇ9êààêˆ"vb'¶ogZè9UUUä49E‹çA5
äâ	†“ÃzªªªªäáÀ´e‹E‹5µUUäàILZ‚@e“E‹êUUäß˜%P+me“E‹¥µÕãáH$C’¥‹¥ŠªªªªäßÎ`î¶M…“E‹ZZzäâ2†“£rªªªªäá€Ð†“ÃzªªªªäßPÙhe“E‹%%UUäÞu\›Ú A…“E‹ŠªUUäâC€@„†“ÃzªªªªãÞõV·š
Å…“E‹êª­
ã£@e“{B‚
ªÊ2ù÷$LŽü{è9•UVTäC`I‘äE‹ç95UäªE‹¦jäâ	E‹%ƒððúúäãÆƒâ�ªªªªäãHÆƒâ�ªªªªäã€f‹¢zªªªªäã†“£rªªªªãÝ€9¢Ã&…“E‹%-ÝÜ  ä›ƒªªªªÝÜ€@ä›ƒªªªªÝÜä›ƒªªªªÝÜ@	ä›ƒªªªªÝÜä›ƒªªªªÝÜ€$ä›è‚ªªªªäÜ©ð
©pK…“%ƒxxxøäá-š¬E‹%ƒÿÿº°äÜ­õôÓç…“%ƒ½/ÞÜ I’!É�…“e“ÝÜ @&›$„ªªªªÞÜ$…“e‹¨ €ÀäÝñôJ0e“%ƒøø÷äÞMJ»Òe“%ƒ¢ªÿõäÝäCÖ‚€…“%ƒ/õõßÜM·¦KŠ´Ä›ƒªªªªáÜB;m-�…“E‹
ªø°âˆ=e“HJÀXÝÀ¬þÉ�Üf‹B`\UU@Ã.4P5Bç9®¯¯¯ÝOøD‰ñ…“BÕ•5%ãÜ/àn¿ýç…“E‹XøßÜh»4[Övä›è‚ªªªªáÝIœ8#0…“E‹

äÝp
÷�s…“E‹V^X`äâ	„†“ÃzªªªªääI’$I’$†“£rªªªªäâÀ À�†“ÃzªªªªäâC&†“Ãzªªªªäâd†@†“Ãzªªªªäã†“£rªªªªäD@ %‹ç9pÀÔ,ò'}‚&{è9UUW\>'›#4@³9Bç9ª¯¯ªª'I�äI’$ærBUUUâ(0�e‹B	%âáA e‹E‹ª¨¨¨âáH’$@e‹E‹


ŠâáI$I€$e‹E‹*âá	’$I’$“„ªªªªâáAe‹E‹ ¨¨ªãáA�¥‹¥Šªªªªãâ ¥‹¥ŠªªªªãâA‚$	$¥‹¥ŠªªªªãâIH‚¥‹¥ŠªªªªãâA�	 ¥‹¥ŠªªªªãâI€ I€…“ÅzªªªªãâA…“¥rªªªªãâI@…“¥rªªªªãâ € …“¥rªªªªäãH’A�$†“£rªªªªããI’$I’$†“£rªªªªäã@� I‚†“£rªªªªã:P%P=E‹ç9XXXP;:$I’$(Bf1ªªªª;:A’I$(Bf1ªªªª;:I’$I‚$(Bf1ªªªª;:I�$’$(Bf1ªªªª;:A$I�$(Bf1ªªªª;:I’$I$(Bf1ªªªª;:I$A‚'Bi1ªªªªä:I’d	E‹ç9U•%
ä²E‹Æjä:À€'%‹è9Àp\n9H’$I’$GRç9TUUUL:y‘„I˜¤ç9Ç9€€€aBR35ƒÚAç9Ç95'×Wå5ÉŸ[¿`%ƒç9U•%	ç¾�H€@e“¥j	*ªªßÜmÓ´h‹u…“e‹ƒáÜ±�º]'…“E‹€êwåÜyÒúR
¨…“%ƒ
/õèÝ±�Oùÿ$…“äzxè èÜ°Iu™¿e“ƒUê€èÞ�õ9‘e“ƒ%¥õõçÞñÔ
Ú$qe‹ƒðøÿ¯èåÀ`�a%ƒäz®®ºèèH�8ØÃ?ƒç9PP\W#K¢'ò?(BÇ9ªªªªƒI”DI”§bBçÝ±©`…“ƒxxx~èåÛ: Ûl%ƒäz**ªªèÞ~\›Óe“ƒ‚ëÿUèåÙl¶m%ƒäz¨¨ªªèä’$@h;%‹äzÿÿÿªçÃ@ƒ¥j@€å^OÒ$z&åzÇ9UWVXè`ð©�{Ç9	
%è›€€ƒFR`€ÏbIú$L'¥jÇ9ÕWV\èc@ƒÇ9
èc`9ÈƒÇ9\x`ÀzcI�äI’$çAÇ9UUUècP`oŸ$ƒÇ9ƒ}UÚc˜ã$I’äÅrÇ9xWUÕècI’Ä1EƒÇ9UÕ½élñ@ƒÇ9-éèI’$A$f‹bjªªªªèèI’$I’$f‹bjªªªªêè	‘�	‘ƒäzêêêêêéA’$’EƒcrªªªªêéH$Eƒcrªªªªêé H$Eƒcrªªªªêè$C2d’ƒäz««¯¿éèI$I’f‹bjªªªªéèI’$I’f‹bjªªªªéèI�$I’f‹bjªªªªéèI’$ƒäzªªª®éè€A‚$ƒäz®®«ªèèI’$I’$F‹‚jªªªªéä’$m’
5%‹ƒÕý-½éä‚´U¶k§%‹ƒÿ€€éæ6`–mF‹‚jªªªªêèd’$&ƒäz®úêêêè$C’ C&ƒäz««¯úéè@$ƒäzªªÿ«êèaHH’ƒäzªþÿ¾êè‰�$Ã$ƒäzþ¿¯ªéè�Iƒäz¯¾ººéè	�	‚ƒäzªêêªéè$�ƒäzúúªªêèI†L’ƒäz¿úêêéèI‚$@$F‹‚jªªªªéæ: ,%ƒäzªº¾*çÝ-PO¾ëä…“ƒzò‚æÞ�/9õ“'…“%ƒ--
ßÞI’$	&›$„ªªªªßÞI’A�&›$„ªªªªßÞI‚I$&›$„ªªªªáÞIÑM�…“E‹ÀÀÀÀêæ–`I‘dAƒäzüüüüêé‚A’$ƒäzÿÿÿúêè	2 Ã0ƒäz¿¿¿ºéÞX�9˜ƒ9…“ƒ­---æÞ¬�”ùŸ<…“%ƒzà€éÞ°
·ûü…“äzþªêä‚°IÝ·E‹äzÿÿþ¨êæ�(HKƒäz«þþ¨éè$$ƒäzª««ªèèI’$I’$f‹brªªªªéè	�$H’$f‹brªªªªéèH�$	�$f‹brªªªªéèI� ’$f‹brªªªªéèI I$f‹brªªªªéèH’$I’$f‹brªªªªéå-1M‘fƒb‚ªªªªäÞL2;¢ƒ9…“E‹+--ÞÜ$’	2ä›è‚ªªªªÝÜ@$ä›è‚ªªªªÝÜ’H�ä›ƒªªªªÝÜä›ƒªªªªÝÜ	ä›ƒªªªªÝÜ‚ä›è‚ªªªªÝÜ’ ä›è‚ªªªªÝÜAä›è‚ªªªªÝÜ�€ä›è‚ªªªªÝÜA� ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜH€$Ä›ƒªªªªÝÜHA ä›è‚ªªªªÝÜ € ä›è‚ªªªªÝÜ	ä›è‚ªªªªßÜi—iÑfä›è‚ªªªªäà&I�”Re“E‹Þ×W~æß	ùK%°‰e“%ƒàøÞÿäßsÚx®`…“E‹«êZZæà“0uX»e‹%ƒ~~èæ$I’�f‹‚rªªªªèå: 2 E‹{¿¿¿¿âÜ˜£Ú‹ÍØ…“E‹	àÜ¶å¶…“E‹€€€€èä¡†dHE‹{øþþþèç$A’$f‹‚rªªªªèæA’ †f‹‚rªªªªéç$@!É„f‹bjªªªªéè	$€ Â‰¦{ÿÿÿÿéå‚�P%%ƒäzªª

èæ@I�f‹‚rªªªªèæ I"f‹brªªªªèãP«Ùu2'E‹ƒ¯çã€DI±“E‹ƒÿÿøðæâ€$I¤éÄE‹ƒÿëæãX$X24E‹%ƒ­
/æãX»µ)�
E‹ƒ

àøçäIZlÛºµE‹ƒ€ÿÿ¿æàP­5Û6J…“%ƒ­­ÿ_åß-�$Ae“%‹úøßÕçÞ›ÐRÍë¼…“ƒ~ê‚‚çâ€$H�
E‹ƒÿÿþøçå	H’E‹ƒúÿÿÿææI’$I’$fƒ‚‚ªªªªçä[ºmØ¶mE‹ƒ¯ÿÿÿçæH fƒ‚‚ªªªªçæ��fƒ‚‚ªªªªçæ  %ƒäz***ªçÞõSÿšƒõ…“ƒ-ßÞ	I’ &›$„ªªªªÞÝ Æ›ƒªªªªßÜ6lÝ–Æ›ƒªªªªåÝ¹Ÿ—±ðK…“%‹ xxæÞÉï»›@J…“%ƒªÿçÞùÔÒ$M…“ƒxzÿÿèã­3¨‚4uE‹ƒ+ÿÿÿçÞuÝ'šù…“ƒ¢+-äÞNÛ±ÔA…“E‹ ¨X^çÞI—tÿô…“ƒààðpåâk²fK†¦E‹%ƒèãqmk“6`E‹ƒ¸øÿÿäÝìK§ 
¾…“E‹‹ƒ‰�æãCS4C3¬E‹ƒ.åÝtL¿’¹…“%‹ŠŠ­­æà\3ÌÃ*Ì…“%ƒ¿···çÞ¹�ù”…“ƒppppçßÒ*Ñ
1e‹ƒ---
åÞ	—ù�…“%ƒðpppä¹€ø€øE‹ÃIpPPPÂ°÷wÿ�LãQÃIúúZZÃ¼œD‘�OÇJ@Iªªªªå¿`±”\E‹ÃI
5æã[»uÙÖ¡E‹%ƒªª¨¾åâ°Š5E‹%ƒªªª
äÝ�P?>…“E‹U•%
áÜÐ¶Ö�m;…“E‹ªÞÜC’$I&ä›è‚ªªªªÝÜ@ ä›è‚ªªªªÞÝ	’$‚$ä›è‚ªªªªÞÜ$I2	�ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÚ†a0 ä›è‚ªªªªÝª
=Jò$…“ãQÀxVW«ª@’$DZAAªªªª­ªI»5Ã
4DZAAªªªª«ªA‚DZAAªªªª«ªI’	’ DZAAªªªª«ªH�$I DZAAªªªªÂªñ1ãQÃIøXXX¹­ ¿ÿûƒ­ãQÂI*«Ý«I”‰‘e“ãQ5%âÝö[I×…“E‹à€€èçå�!†%‹ƒþüü¨çä†mCÓ¦E‹ƒÿÿ¯‹çÞ�$IR+5…“ƒýý¯/æÞP«ÙvœÄ…“%ƒ­¯Š€çäVP%‹ƒüüüüçæ@‚ fƒ‚‚ªªªªçæ ’fƒ‚‚ªªªªçäí�Û€
%‹ƒððÿÿçã’™�@E‹ƒ¯ÿÿçäm3 ÚnE‹ƒ>¿¿ºæß½ï´ÿXc…“%ƒª²úÚßÜK»´hŠ6…“E‹ÝÜ H€ä›è‚ªªªªÝÜ@$ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜ@� ä›è‚ªªªªÝÜ€$Iä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜHä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ‚ä›è‚ªªªªÝÜ‚ Iä›è‚ªªªªÝÜ		ä›è‚ªªªªÝÜ$�ä›è‚ªªªªÝÜA€@€ä›è‚ªªªªÝÜ  ä›è‚ªªªªÝÜ@€‚$ä›è‚ªªªªÝÜ�@ ä›è‚ªªªªÝÜA€’ä›è‚ªªªªÝÜH$$ä›è‚ªªªªÝÜ  ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜ€ ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ@�@ä›è‚ªªªªÝÜ@‚ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ@€ ä›è‚ªªªªÝÜ@$ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ	$Hä›è‚ªªªªÝÜä›è‚ªªªªÝÛ I�ä›è‚ªªªªÖªOÒ$K‚$e‹ãQUWVT«ª	� H€$DZAAªªªª«ª	‚DZAAªªªª«ªH$ADZAAªªªª¯ªv`GNDZAAªªªª¾³Ö­Ý<1ãIÃI÷¾¾7²ªûÁGÌÛÿãQÃI€€Ãª‚6‘ö›ÄãQÃIõõª€ã¼ù•çE‹ÃI
Õãß$‰’&e“%ƒªªª	äà$HÒdÇe“E‹Uµ¯ªâÝZ»:š4…“E‹ûª®-ßÝ	’	‚e‹E‹¾×Ö,ÞÜ €	�…“E‹ÝÜHä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ@A$&›$„ªªªªÝÇ …“Är@ÝªÐ£'N’$e‹ãQPTWU«ªAI�DZAAªªªª«ª$’$DZAAªªªªÝª�…“R	ÝÜ@ ä›è‚ªªªªÝÜ� @ä›è‚ªªªªÝÜ’A$ä›ƒªªªªÝÜ� ‚ä›ƒªªªªÝÜ$ä›ƒªªªªÝÜ�ä›ƒªªªªÝÜ@$ä›è‚ªªªªèÜñ�ép…“ƒxxxxèçI‚$@$f‹bjªªªªçäM’$ØÖE‹ƒªªÿçÞ«³Ú‚e“ƒ+/õUèßy™·“$He“ƒøú_UèãvbÛÒE‹äz
ª¯ÿèã‰»Û$AE‹ƒàêÿUèâ[¢‘ÓhE‹ƒ¯¿ÿÕèä”dI‰�P%ƒä‚ªª¨ èçI$ F‹‚jªªªªèçH‚A‚f‹bjªªªªèç$A€$f‹bjªªªªèçI$f‹bjªªªªèç’H€ f‹bjªªªªèâ’€qZ"ÚE‹äzÿ¯çâPÙS-¬E‹ƒ///äâd˜�!AE‹%ƒªçâqÝº[
´E‹ƒäãI’ I�E‹%ƒ€ èãñäJ�0E‹ƒðøÿÿèÜÒ­�5…“ƒ½­-
áÜ˜°uum;…“E‹ª‚éÝ`ïO…“ƒ^Zxpèç€H’ f‹brªªªªèç$I$f‹brªªªªèæ‚$	0f‹bjªªªªèæ‚H2f‹bjªªªªèæ$I‚’f‹‚jªªªªçã€
8€ÑE‹ƒ/--¯äã@�$I’ E‹%ƒ  ªªäãI‚$A$†“£rªªªªäãI’ I’ †“ÃrªªªªäãH$A�$†“ÃzªªªªäãI€$I’†“ÃzªªªªäãI‚ 	$†“ÃzªªªªäãH€ I’ †“ÃzªªªªäãI’ A’†“ÃzªªªªäãI’ A’$†“ÃzªªªªäãI€I’ †“ÃzªªªªäãI’$I�†“ÃzªªªªäãI’$H‚$†“ÃzªªªªäãH’$I’$†“Ãzªªªªäâ$2 C2†“Ãzªªªªäâ	2d¥‹¥Šªªªªçã	aK–d‰E‹ƒðøþþæâ€I"é$E‹ƒ¿¿äâ`H’C2¥‹¥Šªªªªæâ E‹ƒ¾þøðçäéÐlÛ†mE‹ƒøúÿÿçäÀ€míÖl%‹ƒÿÿððçäÃ°
ÉÐtE‹ƒÿÿúâçã
%bB9E‹ƒ/äâD2L&¥‹¥Šªªªªãâ$I�$¥‹¥Šªªªªãâ$¥‹¥Šªªªªãâ’ ’$¥‹¥Šªªªªäã$I‚†“ÃzªªªªäâdB’C ¦‹£ŠªªªªâÞ€9r"'…“E‹-+

æÞy’×ñ…“%ƒ øXãÞIâÄK‚:…“E‹)ÞÜ`ˆ„$ä›è‚ªªªªÞÜ$‚Ä›ƒªªªªßÜmÒ¶ØºmÄ›ƒªªªªÞÝI’$Iä›è‚ªªªªÞÜ2$Iä›è‚ªªªªÞÜ$C2d�ä›è‚ªªªªÞÜaH2!	ä›è‚ªªªªÝÜIä›è‚ªªªªÞÜ$I2	ä›è‚ªªªªÞÜ&’ä›è‚ªªªªÞÜÉ�Hä›è‚ªªªªÝÜ	$ä›è‚ªªªªÞÜ$C’$Iä›è‚ªªªªÞÜ$É�dB�ä›è‚ªªªªßÜmÚµÛ¶
Ä›ƒªªªªßÝ!’0…“E‹ßÜmÓ¶I×bä›è‚ªªªªßÝ	™� I’Æ›ƒªªªªáÞI’$i’
…“e‹€úâÞI'¢Ð…“E‹
*¯äÞI’¸q×
…“E‹€ h~æáiÕ¹ZÙE‹%ƒ€

çâ@#Ô‚&AE‹ƒ/þþæáu×ÚX9E‹%ƒ€	çã¦Š–DAE‹ƒ¸¸üþçáñdS[ÕE‹ƒààŠçã II:E‹ƒÿÿ¯
çã� I’I9E‹ƒÿÿ¯çàØ£=ZOÚe“ƒ--­¯æáîš¶$@E‹ƒ¾þäÞR;: ©‘e“E‹¥
õõãá"$B e‹E‹Þ<??ßÝ@’ …“e‹‚åÞI™—.W…“%‹øøú~çã¡
„ @E‹ƒøøþÿçæ@$A€fƒ‚‚ªªªªçæ$ƒäzªªªêèæ$C€I�ƒäzªª¿ÿèä’"Ñ@E‹ƒ?¿ÕUçÞOÜÇª
µ…“ƒ€‚«­çäVP%‹ƒüüþþçå€A2%ƒäz**ª
çáŽM²�´‘E‹ƒÿªçã±S¤-ÙE‹ƒðè‹èã˜ƒ5Ò6hE‹ƒ/ÿÿæâ±m’@JE‹ƒÿêæâŽM'�ˆE‹%ƒ	%çâNl×ñæ	E‹ƒàøæãi—¢X$E‹ƒ¨ª«/æâ6h‹	“0E‹%ƒšº  åSP@e“§bp€€ æÉOÛÐ
@%ƒè9U^à€¢4ñ$O®&¦jç95UU^äJàIy›$%ƒç9õU¹8pÂ$N’$Æjç9\VWUã9ø[ù%ƒç9•5%
é—(%‹†b €€@×;è³'N’ÄÅrç9\VWÕæ;©ð %ƒB
	èe€€,%ƒç9€À`¨?ËýÜÉùfZÇ9TWÕçrPƒB	èæI†$@"f‹brªªªªçä0À°¤E‹äzÿÿÿªèæÉ�I2f‹brªªªªçæ‚‚ f‹brªªªªçä
 ²¡E‹äz¿¿¿¿á`‚&`&e“(B\\\\U®±KBÇ9øøøøß¶aOø$ƒè95•Uæ|e“¦jªªçßÚ6Iñe“ƒë~xxçäÃlÛ²-E‹ƒÿ¿??åà´IN•L…“%ƒýÿúúäãA†“£rªªªªäã †“£rªªªªäà ‰�e“E‹UUZZääI’$I’$†“£rªªªªäã †“£rªªªªäC{‚=À`E‹çAVX`€VCI’$I‚$BÇ9ÿÿÿüDDI’$I’$(Bf1ªªªªDC@(Bf1ªªªªäC‰‘Ä%ƒç9
5ÕäÜE‹%ƒªªª©äCK‚%€%‹ç9VX`€DC(Bf1ªªªªDC@(Bf1ªªªªDCI€ (Bf1ªªªªDC	(Bf1ªªªªDDI’$I’$(Bf1ªªªªDC  (Bf1ªªªªDC(Bf1ªªªªÔCI”DI�åzç9ääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäã†“£rªªªªääI’$I’$†“£rªªªªäã€†“£rªªªªäã †“£rªªªªäã†“£rªªªªäã@€†“£rªªªªäã†“£rªªªªäã †“£rªªªªäÝ�­Ùõ_'…“E‹¥­

âÝ‚-Õ¶ã¶…“E‹//àÜ”`“Ž)I…“E‹¨€äÞD�‰cÛ…“E‹U×ãÝPO±Ù¶…“E‹Zz€€äá[ š¢e‹E‹½ÕÜÜä?,e‹çA€`ä4Ø³?ÿ“$%‹è9XVUUDÉ�›BÇ9êêúÿq1Ob'¶m'Jè9ÿÿÿ?ä?I‘ %ƒç95
ääI’$I’$†“£rªªªªäã†“£rªªªªääI’$I’$†“£rªªªªäáÀ
4X‹µe‹E‹µ%¥­äáí–Ã0†“ÃzªªªªäãH†“£rªªªªäãI †“£rªªªªäá@¬í–¥‹¥ŠªªªªäáÉ�e‹E‹X^UUäà`%€€e“E‹¥%ÕUäÞÂÆ‘vé¸…“E‹Õÿê ãàk²$ÝÚae“E‹¯+ßÞâÞbl†6•…“E‹Šâàäâd&DB&¥‹¥Šªªªªä4ð�%À4E‹è9\XPpD4l[²%è9ç9ÿªªªä=±�¤I’$E‹ç9-ÕUUäC�X%ƒç9	µääI’$I’$Æƒâ�ªªªªäãÆƒâ�ªªªªäà‰äE‹%ƒààÿõäál@»$E‹ƒª

ßÜkÓ´M‹­ä›è‚ªªªªÝÜ@ä›ƒªªªªÝÜä›ƒªªªªÝÜ A$ä›ƒªªªªÝÜ@‚$	’$ä›ƒªªªªÝÜ@ä›ƒªªªªÝÜ@€  ä›ƒªªªªãÝ1oéO…“%‹øøxøâÝ-PKZ½:…“%‹Zú¯+ßÜh»4mÛ¦…“e“ÝÜA&›$„ªªªªÝÜ &›$„ªªªªßÜIÑfiÛ¶…“e“@À€äÝ‚Fr7—…“%ƒ÷ÿúðäÝÀ¶‘äKç…“%ƒõÿ¯‹äÝ€(Ð[Ã=…“%ƒ¿¯ÞY,…“‡Z`ß0sò'e“B€pVUPH’$Ižä‡ZBTUUU(¹g¿€
´)BB~õÕ8@+ÙäO>Bç9ª


ß$9`…“B
	ãÜyn×	l…“E‹¯µãÜìÚZ
ù…“E‹
âÜ#�ä…“E‹.øðàÜ¦@›tÈ˜…“e“@äßÐIq·…“E‹UWúªäá¶�le“E‹UUWZäßMRÛ’4e“E‹UUãàI–´h·¥e“E‹èèõ­äâ@€†“Ãzªªªªäâ0@‚†“Ãzªªªªäã �†“£rªªªªä*�èE‹è9pÀ¿'I’$N'ærè9UUW\('@ fII:ÿÿÿÿ²'É‘äI’$ærBUUUâ'0�e‹B	%âá@€@e‹E‹ŠŠŠŠäáX³5MÒ´e‹E‹%%**âáI’e‹E‹€ ¨âá‚¥“Å‚ªªªªäâa˜$aB$¥‹¥ŠªªªªãâAA¥‹¥Šªªªªãâ	’¥‹¥Šªªªªãâ A¥‹¥ŠªªªªãâI$�¥‹¥Šªªªªãâ@’ �…“Årªªªªãâ$@…“¥rªªªªãâA$…“¥rªªªªãâ	$…“¥rªªªªãâ	�	�$…“¥rªªªªãâ€†“£rªªªªäãA’$A$†“£rªªªªä:À<À%%‹çAPPPX;:I$I’$(Bf1ªªªª;:I�$I�$(Bf1ªªªª;:	’ I$(Bf1ªªªª;:A‚$I’$(Bf1ªªªª;:I’$’$(Bf1ªªªª;:I�$H€$(Bf1ªªªª³:IžI–$Æjè9Õ•UäŽE‹fZã9À€'%‹è9Àp\m9H’$I’$GRç9TUUU:9	�I’$(Bf1ªªªªD9IœäI–ç9Ç9€åAù�X·`%‹ç9U•%	èÌ‘@@%ƒÅrèãÞC¶`o%ƒäz    æÞM¾z�@e“%ƒ‚ëUUæáS´@¢ÙE‹ƒ®§
�éä]SÉ\Í%ƒäz(º¾*àÜŒ
'°ƒ8…“E‹àÜ¶[±a›…“E‹ÀÀÀ€çã”C8cÑE‹ƒ¯¯¯®äà€$J’)E‹%ƒ¯ªªïæ>ÐèÝü%ƒÇ9Àp\WdKØÉFnBE!ªªªª[}B?âƒ9BÇ9--›I�DIœäÆjB•UUèHƒçA%èçH€$H’$F‹‚jªªªªèçHH�F‹‚jªªªªèåÛ‚-º!%ƒäzª***âÝhµx²‡	e“%‹ë‚ÃýçäÅ–a0%ƒäz¨¨¨¨è_�0€`ƒÇ9x`à€×`I‘dIü$ÅrÇ95•ÕUè§ƒFZèc`9¨ƒÇ9Xx`Àçb¹�TÉ�${Ç9%5ÕUèbÐ¼>O’$ƒÇ9à^UU�cI’$IòFRÇ9UUU-écI’$¹Ç	ƒÇ9UUµ+écy×ƒÇ9µèàƒåz«ªªªéèI’$F‹‚jªªªªéè@’$I’$F‹‚jªªªªèèI’$I’$F‹‚jªªªªêèI˜	Áƒäzúúêúêé$H‚EƒcrªªªªêéI@�Eƒcrªªªªêé	‚$H EƒcrªªªªêéA 	’$ƒäz¿¿¿¿éèI$I’$f‹bjªªªªèèI’$I’$f‹bjªªªªéè�I‚$F‹‚jªªªªéè	$I�$ƒäz«ªªªéèI’$	’$F‹‚jªªªªéè@€ I’ F‹‚jªªªªéç$C	$F‹‚jªªªªèçI f‹bjªªªªéç!H$‘„F‹‚jªªªªêè$I‚$I2ƒäzº¿¾ªéè�I F‹‚jªªªªéå`,&ES%ƒäz

ª¢êè!2dH ƒäzªª¾þéç$I’ 	„ƒäzªªª«êè!I‚!I’ƒäzºþþþéè	‚@‚$ƒäzªª««éçA$I2ƒäzêªªªéç€$™$ƒäzºªªéçH’ ˜ƒäzªªªèéå’"É(�%ƒäz**ªªçÜýÏÿ˜ƒ9…“%ƒ

ÞÜ A&I’ä›è‚ªªªªßÝ’!	Æ›ƒªªªªßÝH’aÂ$Ä›ƒªªªªßÞH�$I’$&›$„ªªªªáÞM�I�…“E‹ÀÀÀÀêçÙ–mÁšaƒäz¼¼üüéè€ H F‹‚jªªªªêè™„!A2ƒäzêêúªéÞ˜ƒ9�ƒ5…“äz/--/ßÞI’$I &›$„ªªªªßÞI�$	�$…“e“€âÞ`'‰“$…“e‹ÿéÞ.sù�<…“ƒZx éÞ°mþ›ç…“ƒUÿŠéã’4A¶E‹äzÿþþ¨èæ�%ƒÄzªªª éèII’f‹brªªªªéèI’	�F‹‚jªªªªéèI’I’$f‹bjªªªªéè	’$I$f‹brªªªªèç@$f‹brªªªªéÞì³>âƒõ…“ƒ++--ßÜk‚6mÛ6ä›è‚ªªªªÝÜä›ƒªªªªÝÜ‚$I� ä›ƒªªªªÝÜ$ä›è‚ªªªªÝÜ@€ä›è‚ªªªªÝÜ‚@ä›è‚ªªªªÝÜ @ä›è‚ªªªªÝÝI’$I’$ä›è‚ªªªªÝÜ@ 	ä›è‚ªªªªÝÜH �ä›è‚ªªªªÝÜ$$ä›è‚ªªªªÝÜ	€Hä›è‚ªªªªÝÜ	 	$ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜA @ä›è‚ªªªªÝÜ@ ä›è‚ªªªªáÜíWv—v…“E‹à€€åÞ¿5îÿ$…“%‹µ/*çÞ‰›Ÿ9S…“%ƒ àxxèä!IHH�E‹ƒèÿÿÿèà I~Ú¿E‹ƒÿëèå2,ÅÒ¡E‹{¿¿¾¾âÜtÌÄ²�Õ…“E‹	àÜvàD¶IÙ…“E‹€€
èÝ@	¯e“ƒW^xpèçI‚$A’ f‹‚rªªªªèåh²%C·a%ƒäz

ªªèæ!@A’f‹brªªªªèç€I$f‹brªªªªèæ	’É€f‹brªªªªèä’#9-ÒE‹ƒ//ÿÿèãöOöÔJE‹ƒøððúèâbƒÕZ­ÕE‹ƒæã	Ða°aE‹ƒðøþþæâNLÛ@E‹%ƒ‚ÿõæå@�%ƒä‚¨ªª¨çå$	€$C&%‹ƒþÿ¿/æâ
ÙtìÄE‹ƒæã)�t[‹µE‹ƒðà
åâÀ‚­m×nE‹ƒæáNÝIhE‹ƒ°þ¯æà±`hE‹ƒààú/æäE‹ƒÿÿÿøçæI’$$fƒ‚‚ªªªªççI’$I’$fƒ‚‚ªªªªçæA fƒ‚‚ªªªªçäÍÐÛ%‹ƒððÿÿçå€B2E‹ƒÿÿ¿¿æÞP#ù}Ìße“ƒ-äÞIÒ:P5…“E‹*%%ßÞI$I &›$„ªªªªßÝ	’$	…“e‹€çÞ�ŸÛ÷ä
…“ƒ  èzçÞÏmû“$	e“ƒÿçàùK&`e“ƒxxßÕçÞ)º}Þ»e“ƒ­‚èà[²Õ“8`e‹ƒ¾¿äÞÂ4«Ý$…“E‹µ%+çÝñp±…“ƒpppðçàZ‚%ãMÛe‹ä‚
èå Öm%ƒäz(¨¨¨æÞj,æÐ
ýe“%ƒ

çâƒV¨ÕºÅE‹ƒ¾¾.æÝmÚºšµ…“%ƒ
/-æàÂ<Í%M6e“%ƒ·¿¾®çÞù�¹”…“ƒppppçÞ�õÒ(‰…“ƒ--µµåÝ·KOë·…“%ƒpð€ã¸Ð=Ú/þ…“ÃIXXXXÅ¯I™”ÿôãQ£IààðzÅ·9•ÃI‚A€ ªÏÀ~`Û¶mÛCb£IUUUæ¼@¦ôP…“ãQª+
%åÝP­9ísÿ…“%ƒ-ßÝI2`˜0…“E‹
ÝÜ $ä›è‚ªªªªÝÜA’ H’ ä›è‚ªªªªÝÜH ä›è‚ªªªªÞÜ$	„ I’ä›è‚ªªªªßÜmº¶m;`Ä›ƒªªªªÞÛíÖnÝŠ-ä›è‚ªªªªÝª4rò$…“ãQÀp\W«ª€ DZAAªªªª«ªH H€DZAAªªªª¬ª &LÂ�DZAAªªªª«ªI€H�DZAAªªªª«ª@‚�$DZAAªªªª­ªI–´I›DZAAªªªªÅ®±S¹{»ãQÃIXXèêÅ«’ˆR/9ãQÃIÕÕµ%âªñ¹�e‹ãQ%
æá–$@ƒ5E‹ƒ¨¾.
çá,Û¶í–
E‹ƒàðçã1
”HE‹ƒàøÿÿçÞ’¯9Xõ…“ƒ----àÞIÀIÀ…“e‹ÀÀÀÀçäÁÖ%‹ƒüüüüçæ@fƒ‚‚ªªªªçäéÐÛ€
%‹ƒððÿÿçæ fƒ‚‚ªªªªçäÛ2 ÃŠ¡E‹ƒ¿¿¿¿çàÿ”ÉàOe“ƒzppzçäë2 ²­E‹ƒ:??¿áÜs¼$³ƒm…“E‹«ßÜiÚ6m
,…“E‹ÝÜ@€ä›è‚ªªªªÝÜ€€ä›è‚ªªªªÝÜI�	 ä›è‚ªªªªÞÜ	“�dBä›è‚ªªªªßÜMÛ¶m…“E‹ªÝÜ I€ä›è‚ªªªªÝÜ‚I�ä›è‚ªªªªÝÜH�Hä›è‚ªªªªÝÜ@�A ä›è‚ªªªªÝÜHä›è‚ªªªªÝÜ@$H�ä›è‚ªªªªÝÜ@’ ’ä›è‚ªªªªÝÜ €ä›è‚ªªªªáÜ¶Û¶ç…“E‹ÀçÜnÛÔ…“ƒþ÷æÜùoÛ	…“ƒ«õçÜÉïÖ…“ƒÿUçÝIòÛä¦A…“ƒºßáÜ±]Ûs�n…“E‹«ßÜmš4i…“E‹
ßÜiÓ&m…“E‹*ÞÜa†	2ä›è‚ªªªªÝÜ€ ‚ ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜA�ä›è‚ªªªªÝÜ�€ ä›è‚ªªªªÝÜ	@� ä›è‚ªªªªÝÜ�Aä›è‚ªªªªÝÜ@$ä›è‚ªªªªÝÜIä›è‚ªªªªÝªx‚&X<…“RT\XP«ª I’DZAAªªªª«ªI�A$DZAAªªªª«ª	�$$DZAAªªªª²ªÉ•ÉñDãQ¢I€€À«
ô€#9ãQÃI·%%/¾ªOò»±�
ãQÃI øx¾ªIl»#'ãQÃI€ÿÿ¾¸Ö6m±äQ Aªªªªâ´—”ÿð[e‹ÃI	%•çß‰ys’¨e“ƒ€¨¿µåÜ�¯5ôßÿ…“%‹-
ÞÜ!@!É0…“E‹¨ÝÜ ä›è‚ªªªªÝÜH€€ä›è‚ªªªªÞÜÉ„!Aä›è‚ªªªªßÜIÚ¶Û¶
Ä›ƒªªªªßÔ’@ …“%ƒ@ÝªÀ={’$…“R`XVU«ªH‚$A$DZAAªªªª«ª	 ’$DZAAªªªª«ªI$@’$DZAAªªªªÝª�)�…“R		

ÝÜä›è‚ªªªªÝÜHä›è‚ªªªªÝÜ	 ä›è‚ªªªªÝÜ€ ä›ƒªªªªÝÜH’ @€ä›ƒªªªªÝÜ@ä›è‚ªªªªÝÜ$@€…“E‹ øèÜépïp…“ƒxxxzèå ¶mf‹bjªªªªéâ9÷På$AE‹äzàpúÿèçHH’$ƒäzª«¯¯èç	�@$ƒäzªªªúèçIA ƒäzªª¯ÿèä� J -Å%ƒäzªª

èåÀÚ­Ýº.f‹bjªªªªèä	•	•%ƒäz    èçH’$	� F‹‚jªªªªèç	‚$I‚F‹‚jªªªªèçI IF‹‚jªªªªèçHIF‹‚jªªªªèçf‹bjªªªªçä@@´%ƒäz
ª

èædBAf‹brªªªªèæI A€f‹‚rªªªªçã�9�ØE‹ƒ///¯èãqk±KE‹ƒøøððèä¡DK¢$	%ƒäz  ªªèÝØƒÕ€@…“ƒ
-õUçÝIbû	l…“ƒ¯ýèÝñð¥0…“ƒpxz_èä� Q�9E‹ƒÿÿ//èã� m¶m'E‹ƒÿÿçã�Ú¶cÛE‹ƒ¯/ äã�$AE‹%ƒªªäã� @€E‹%ƒªªçã¶1d	E‹ƒúøøúäã	H$E‹%ƒªªªªäãI’$H$†“£rªªªªäãA$I†“ÃrªªªªäãI’$I‚$†“Ãzªªªªäã	‚$A’$†“ÃzªªªªäãI$A’†“ÃzªªªªäãH’A� †“ÃzªªªªäãI’ I†“ÃzªªªªäãH€	’$†“Ãzªªªªäã�H†“ÃzªªªªäãI’€†“ÃzªªªªäãA$I’ †“ÃzªªªªäãI’I$†“Ãzªªªªäã	’ 	’$†“Ãzªªªªãâ$�¥‹¥ŠªªªªæâdR1�8E‹ƒø ãâH¥‹¥Šªªªªãâ@‚	¥‹¥Šªªªªçâ¶dKîE‹ƒððððçäí–Û0%‹ƒððÿÿçæI$@ fƒ‚‚ªªªªæã@4í°E‹ƒâúçã¶
” ‘E‹ƒàøÿÿçâš�9�³ÚE‹ƒãâ‚ ¥‹¥Šªªªªãâ�	¥‹¥Šªªªªäâ	I†!¥‹¥ŠªªªªäãI’	$†“ÃzªªªªäãH’I†“ÃzªªªªäÞ£ƒÕš-Ú…“E‹+-­­çÞ±ðJ-×r…“ƒxxêªæÞ˜5¢#úe“%ƒ--+ßÞ	$I$&›$„ªªªªßÞH’$A’$&›$„ªªªªßÞI’$A‚$&›$„ªªªªÞÝ@$Æ›ƒªªªªßÝ$I’	I‚Æ›ƒªªªªßÞI I�$&›$„ªªªªßÞH‚	’$&›$„ªªªªßÞI’$I’&›$„ªªªªßÞ	‚$I�$&›$„ªªªªßÞI‚$I’$&›$„ªªªªßÞA‚$I&›$„ªªªªßÞ	’$I€$&›$„ªªªªâÞ±Û1B…“E‹ ¨øßÞA H‚$…“e‹ßÞI’I’$…“e“€€áÝ‚8¤mÓ…“E‹


ßÜéÖnÛ0lÆ›ƒªªªªßÞH�	’$…“e“€€åÞ¥äA÷”w…“%‹^^úèäâLÂ!ÁE‹ƒ€çãt‘€ ˆE‹ƒ
¯ÿÿèåÝºÛ–vfƒ‚‚ªªªªçä†­XƒµE‹ƒÿ¿/¯çäM›nÝ€mE‹ƒ¢øþÿçæ��fƒ‚‚ªªªªçßÐ=
±e“ƒ--­­ãá$e‹E‹w|æÞÒ­’#õe“%ƒµ­--ãß�-Æ”De“E‹
wWæá�IÓ*¨E‹%ƒØ¸.'äßj‚ÅÚ6Ie“E‹

uUåÞI²�ô…“%ƒ¾¯/-äÝÿï›yõ…“E‹‚ `pçáéÔ	“0	E‹ƒàøþþçæA€fƒ‚‚ªªªªèæaÈ0€f‹‚rªªªªèæ!Á€ƒäzêêªªèæ†	�ƒäzÕ÷ÿþèçI’$%ƒäz¿¿¿¯èæLB$A‚%ƒäz
ªªªèÝLX->e“ƒUÕ¥-æß€¨õÿ“øe“ƒµ¯ª¨áÝAG¢Z…“e‹íŠ��çä]Ò5ÅZ E‹ƒ/®¾þèãÚ¡ö”xE‹ƒÿþøàæÝmKçÒ
µ…“ƒ‚­èä&Q`
E‹ƒþüüþèåéÖ
Ã
4fƒ‚‚ªªªªçâšÙ˜3µE‹ƒåâ-Ö
IÛ4E‹%ƒøøäái‡nÛÚµE‹ƒ€èâæäNéàrE‹ƒúxøðèKXh%ƒBx€ä7Iâ$šhE‹ç9UWx –8I’$IÑ†bè9UUUè×8±�¼I’$%ƒè9-õUUä9€<ñï“$%ƒç9`r_Ué<É™Tù�
åzç9•5%
éß‰‘	0E‹äz«¯¯¯è]Pþòßä$ƒÇ9x\^WçW‰õ¯ðƒÇ95%
	çæ@f‹‚rªªªªèæ	Ã $É%ƒ{**ªªèßNìÄ#Ie“ƒ‚‚ÿUçå�f‹‚rªªªªçæ€ f‹‚rªªªªçK0%ƒHJ`æØƒý¬íÖ%ƒè9X\WUZñp÷Ð
(BÇ9øøúúYCNç9§9ªªªçD)ðÿùÿ%‹Ç9
5ÕUç—%ƒfZæä€&E‹ƒ¿¯//äâ$	†“Ãzªªªªäã †“£rªªªªäã†“£rªªªªäâ!†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäã †“£rªªªªäDz=€@E‹BVX`€cCI’$I‚$'Jç9UUUTDDI’$I’$(Bf1ªªªªDC @(Bf1ªªªªäD‰‘Ä%ƒç9
5ÕäÝE‹%ƒªªª©äC|‚%`Â$E‹ç9VX\WDC€(Bf1ªªªªDC(Bf1ªªªªDC (Bf1ªªªªDC@(Bf1ªªªªDC(Bf1ªªªªDC(Bf1ªªªªÝCÉ‘É‘Dƒç9ääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäã€ †“£rªªªªäã†“£rªªªªäã†“£rªªªªäã †“£rªªªªäã�†“£rªªªªäã†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäÞšÙX�Õe“E‹
äâ!I‚e‹E‹üWWVäà”J‰™Xe“E‹UUzzäâI†“ÃzªªªªäãI†“ÃzªªªªäY,E‹B€`ß
Ø³'þoû…“BXVUU0¶™œ¿@Bè9ª€àúDÐmOâD(Jè9Wÿÿ?ä4¿0e‹è9µ-äâH	À�†“Ãzªªªªäã�†“£rªªªªäã †“£rªªªªäã €†“£rªªªªäáMÚ´í°e‹E‹‹âz_äãA†“£rªªªªäã€†“£rªªªªäã  †“£rªªªªäâ	‘	�¥‹¥Šªªªªäâ�„†“Ãzªªªªäâ	˜ €…“ÅzªªªªâÝ�]§õ´…“E‹‚¢êãß&-ÑP%e“E‹¾®
âÞ	a…“E‹àêÿ÷äãA †“Ãzªªªªä?€ÀE‹È9`À€J-©�¢�&Bè9ÿÿÿþD> è9ç9þþþþD?aÁ(BF1ªªªªã2ðIœü%ƒç9%ÕUäD�
%ƒç9
äâ E‹%ƒµµõõãßé˜4	Re“E‹{r}UäÝ¢ƒ=ë³>…“E‹
-ÝÜA€ä›ƒªªªªÝÜ€ @€ ä›ƒªªªªÝÜ I�ä›ƒªªªªÝÜ€$ä›ƒªªªªÝÜ@�ä›ƒªªªªÝÜ’ä›ƒªªªªÞÜ$@&C2…“e‹àßÜhÛ4i’¦…“e“+ÝÜ�$&›$„ªªªªÝÜ€$	 &›$„ªªªªÝÜ &›$„ªªªªÝÜ’@&›$„ªªªªãÜ7ùr·”B…“%‹øøøXàØÒ$n)…“e‹‹éá`�Ã'…“(B€xWÚ`â'I’$e“B\UUU5›SÖ®ô
)Bè9¯ÿþ~&^? ƒ±)BBï½µU‘XILÿ)BBwzê¯Äöóÿù™{BUU•ß˜ …“ærãÜ+ù¶ÿü…“E‹¥áÜP=Í®šA…“E‹

  àÜ&´EJ…“E‹  €€âÝNZÛ’
´…“E‹¯ãÝƒ(­[Í&…“E‹·§*
ãÜîv�±d…“E‹è ðXãÞ®`±àH…“E‹ZPPPàÜ ¥˜²	Z…“e‹ƒäáiš&]3´e‹E‹¨.'âá@’$’e‹E‹ªãá$‘$	É„e‹E‹ê€€€äáX³5[»%e‹E‹%%%â(Ðèe‹BX`€°'I’$O‚'ærBUUUT('	 $fII:ÿÿÿÿ½(É‘ÄI’$ærè95ÕUUâ, E‹è9
äá[$@»5e‹E‹%µµ%äám›¶-Öe‹E‹ªú^\ãá$Á I’¥“Å‚ªªªªäâ�$E‹ƒãâ	H¥‹¥ŠªªªªãâI€ �¥‹¥ŠªªªªåâíÖm›¶E‹%ƒ  äâI&L˜„¥‹¥ŠªªªªãâH …“Årªªªªãâ@ ’ …“¥rªªªªãâ	‚$’…“¥rªªªªãâH@�$…“¥rªªªªãâ €$…“¥rªªªªäâ!I‚$I’…“¥rªªªªäã’$H‚$†“£rªªªªä:X‚%`'E‹ç9XX\\;:A‚$I’$(Bf1ªªªª;9 H’D‚$(Bf1ªªªª;:I‚$I’$(Bf1ªªªª;:I’ A‚(Bf1ªªªª;:I‚$I(Bf1ªªªª;8Û†m[Šµ(Bf1ªªªª;9$	’I’$'Bi1ªªªªã9!�°I’$E‹ç9
õUUm8H’$I’$GRç9TUUU97I&è9ç9ÿÿ¯ª97Àè9ç9ÿÿÿúä9IœX±`%ƒÇ9Õ5
èÕÑl€E‹Är
ª®çâÃ*ÕP
5E‹ƒ¿¯¯¯äâ��†E‹%ƒÿªªªäâ†	É�E‹%ƒÿªªªçáå”ni·E‹ƒzxè çâÐ"-€:aE‹ƒ¿/¿ÿâÜµM'«�5…“E‹-ÞÜ$Á„aÈ�…“e“€€€çÝ¦p±`�e“ƒ^Xxxç7
4hÒ'ƒç9Àp\WJ4Y?€4ç9Ç1G4Û�¤Iž$ç9§9€S�#Ñ›ÆABÇ9-½ÿßZIü›6Õ
BÇ9€àzz’I±Û·mÛ&RÇ9UUUèYp‰•äƒÇ9	µUèªƒfZ	èç$I‚$F‹‚jªªªªèäv‘)‘%ƒäz***çæAI�$f‹‚rªªªªèÞ $ƒåzjªªªç^M²'h9ƒÇ9WV\xç_�ù�ƒç9	
%5èc€ÀŽ9ƒÇ9€€`xØbOò$IšåzÇ9UUÕ5èbÉýNƒç9Õ-é°áƒ†b­éç!I’$If‹bjªªªªéèI’$I’f‹bjªªªªéèH’$I’$F‹‚jªªªªèèI’$I’$f‹bjªªªªèèI’$I’$F‹‚jªªªªéèH’$I�$F‹‚jªªªªêèdÀ�	‘�ƒäzþþêêêéH‚I Eƒcrªªªªêé� � EƒcrªªªªêéII Eƒcrªªªªêè$0‚ƒäz¿¿ÿÿéèI‚$H€$F‹‚jªªªªéèI’$H’ f‹bjªªªªéèH’$@$F‹‚jªªªªéæ¶Û6,f‹bjªªªªéå€$Š	�Ð%ƒäzªª  éâÀIù�E‹ƒW_ððéß‡•tìße“äzÿ¯‚‚éä‚6­U“ÚE‹ƒ×÷/®éãí`O)ÕRE‹ƒzøøúéæÃ¶mÛ2,%ƒƒÿªªªéß ‰µí$…“äzß¿ªèáö�÷à	E‹ƒpppøêç¶nm—$ƒäzþªªªèå@‚µÀ¶
%ƒäz

ªªêåVm[¬:%ƒäzþª

éã�$m;9E‹ƒÕý¿/èâ&i$›ÄE‹äzÿªåãÉ$I&E‹%ƒ«éã­OéE‹äzøøøøéæ
 Š¡ƒäzª:??âÜb3Ç²
Û…“E‹ßÝI’$	‚Ä›ƒªªªªßÞII�&›$„ªªªªÞÜ@Æ›ƒªªªªßÞI‚$H‚$&›$„ªªªªâÞI�DI”D…“E‹ÀÀÀÀêæ‘d€dIƒäz¼¼üüêèIÂ0aH0ƒäzªªªÿéèA’$HF‹‚jªªªªèÜP�5P�õ…“ƒ-


ßÜÛÐmÙ–mÆ›ƒªªªªßÞI’$I‚$&›$„ªªªªßÜØ¶mÛº¥Æ›ƒªªªªßÜÀ¶mëÖ4Ä›ƒªªªªÞÜ	�$Ä›ƒªªªªàÜ‚Ç‰“Ä…“E‹ªèÜ¥pS¹ûÿ…“ƒxàéÜ0	.—»…“ƒU_è éä€H“�¶%‹ƒUUWüéæÛ¶mÛÖf‹bjªªªªéèI$I’ f‹bjªªªªéè	€ I’ ‚ŠF{ÿÿÿÿèáXÑ�¶	e‹ƒ-½õ_éÝÏSÿ#�…“ƒ*¯õâÜ‰]Û¬�5…“E‹	ÝÜ� @‚ä›ƒªªªªÝÜA$ä›è‚ªªªªÝÜH‚	 ä›è‚ªªªªÝÜI ä›è‚ªªªªÝÜI@ ä›è‚ªªªªÝÜ@�ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ@ � ä›è‚ªªªªÝÜ@$Aä›è‚ªªªªÝÜI Aä›è‚ªªªªÝÜ€$ä›è‚ªªªªÝÜ	�ä›è‚ªªªªÝÜHIä›è‚ªªªªÞÜ@$Ä›ƒªªªªàÞI’„I…“e“€@@çÞ¹éº”D…“ƒ ªþ^èæ!$fƒ‚‚ªªªªèåMŠÀ¶m%ƒäzªªªèæC’ Hf‹‚rªªªªèàj"Ù�	e“ƒ­õUçÝ¤9˜9…“ƒ


èÜ÷ð÷�…“ƒppppèål†5%ƒäzªªª*èã�¤I¶›¸E‹ƒÿÿ‚€èä"
Ñ”ŠE‹ƒ¯¯ÿþçäC4Ö­E‹ƒ//ÿÿçã¦¶@
E‹ƒøððúèãX«Ù˜ƒÙE‹ƒ¯/èãÓÔ
ñàNE‹ƒÿþøøçã�9€$€E‹ƒ/¿ÿäâA’L’…“ÅzªªªªæäD&‘�E‹ƒ¾¨æãé�ÖE‹ƒððúúæâ
9tL›E‹ƒçâŽm»•6AE‹ƒþÿæåA%ƒƒ¨¨ªæå%ƒƒªªªæà˜
9€
@E‹ƒ/¿åßPÃ9õÖJ…“%‹¥/úÚæÞ¯�OÏíûe“%ƒxà€æÞ Iþÿü…“%ƒUÿ çß4	·�se‹ƒUzp€çä0Ø–6E‹ƒÿÿÿ¨çä€�´E‹ƒÿÿÿ¢çäX³5Øº!E‹ƒ//¿¾åÞ’�ùôÓ$…“%‹--àÝÃÚ¶]Ò6…“e‹/ßÞH$I’$&›$„ªªªªàÞI�„I’$…“e“@@€çÞ4i·Ÿüe“ƒÞ¾åÝ›PSþÙÆ…“%‹ê€
èã4H”ÖE‹ƒÿÿþ(çß’$HbÙçe“ƒÿý«çÞˆM:e“ƒÕµ/
àÝh‹.M“´…“E‹çÝ·±p…“ƒðppèçÞë­æØ�Ùe“ƒ‹

èä–‰†dHE‹{¾¾þþèÝ£½Úš�9…“ƒ‹

èÜ[K¶.…“ƒ¯ªèpèßZ¾ýÚ>e“ƒ

æÞ’/5-Ñ…“%ƒ//··çÝñp÷`…“ƒppppæâ1€E‹ƒ?¿æßy™Kù`e“%ƒ øpzæ¿r¢&è�þe‹ÃIX\\\Å²ÉàOÛ±ãI£A €‚
Å¾ûÃI¢AªªªÅ¯ˆP/>ãQ£IÕý­/Ú®þñÄIò'%‹ãQÕUUß®�…“R
ßÝa’�I�Ä›ƒªªªªÞÜ$Ã0d„ä›è‚ªªªªÝÜ€  ä›è‚ªªªªÝÜHä›è‚ªªªªßÜmÑmÛf…“E‹€€äÞœÈAé–j…“E‹×WXXßªè€'…“ãQ€@p\­ªI“t
�DZAAªªªª®ªŽc“$HDZAAªªªª®ª¢#Ñ‚
ÚDZAAªªªª¬ª	C2!™DZAAªªªª­ª�iÛ6DZAAªªªª¬ª‰$a’DZAAªªªª½ªIœ›±ãQÃI€àøxÆ³ÝÄ®�ãI¢A¨¨  Æ­˜Ñ€ãQ£I-½õUç«™p %ƒRçß’ùP+‘e‹ƒ	
¯çá®�	„°�E‹ƒðøþªçæ fƒ‚‚ªªªªçäØ Š-E‹ƒ/¿¿/áÞK€dH¶d…“e‹ÂÃÃÂçäPÅV`%‹ƒüüüüçæ�fƒ‚‚ªªªªçæ	fƒ‚‚ªªªªçæ@fƒ‚‚ªªªªçæ fƒ‚‚ªªªªçå!%ƒäz€ªªªçæ@‚fƒ‚‚ªªªªçäI‚a: E‹ƒÿ¿¿åÜZ�5«½–…“%ƒ
ªáÜqlÛŽ·
…“E‹êåÜyÞúSù…“%‹%ßÜI›¶mÐ…“E‹€åÜq×N’$H…“%ƒ èÿ÷æâ$I€$mÇE‹ƒ(¾ãÜMÎþ¢ù…“E‹
åÜù·¯ä
…“%ƒðxæÜÿcÿšù…“%ƒ
ßÜmÛ6IÚ…“E‹€åÜò·¯T…“%ƒøøâÜqlÇ´¹…“E‹âçÜyrÿ+Œ…“ƒ®·àÜ‰CÛ4%…“e‹€æÜ1á¥0I…“ƒàxêþçä[ƒ5ÃÖ%‹ƒÿþçå I€$ fƒ‚‚ªªªªçä°míš,E‹ƒÿÿº°çáDJ‰—te‹ƒÿê€€çâsµ’$HE‹ƒ¯ÿÿçà¤­ÕÚ�%e“ƒª­­�èã¶S©\ÈE‹ƒ¿¿?àÜ²-Ûp,Û…“E‹æÜÛ7g
…“%ƒðxåÜÏoÛ$i…“%‹«ýßÜmÓ¦h‹…“E‹€ßÜMÒ¶il…“E‹
ÞÜ$É�	†ä›è‚ªªªªÝÜ@A€ ä›è‚ªªªªÝÜ$€ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝª@, …“Rp`@À«ª	ADZAAªªªª«ªAI DZAAªªªª«ªA€@$DZAAªªªª°ªq‡Ž�ÄDZAAªªªª¹ª€¿ÙöWãQÃI
€àÆª¹k»Ô$ãQ£I€¨ÿWÈ¹1÷
 mÃI‚A€ ¨ªÇ»ãƒÕÀ&lÃI‚A
ªªÈº1åJ4AÃI‚A ªªæ»‚di·ôP…“ÃI
	
%áÜµãØ­I…“E‹ªãÝIÛéÈ	…“E‹ ^áÜ¶ã¸³§…“E‹êçÜynÛÛ6…“ƒþWèÜÉßÖÛ…“ƒÿUèÝO~ÛÛ`…“ƒ€¿Õá­0˜?Ûe‹ãIÀ`XV°ª±c'´�ÚDZAAªªªª«ªA’$I’ DZAAªªªª«ªI’H$DZAAªªªª«ªI�DZAAªªªªÝª19�…“ãQ

ÝÜ	ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ‚ €ä›è‚ªªªªÝÜ ä›ƒªªªªÝÜ	@€…“e‹€  ÝÜ €…“E‹à~WWÞÜ!I2$ÉE‹%ƒ øþúèÜïOïðnE‹ƒpZ^Wèã Iu�$E‹ƒWÿ«éä4mŽ�$e‹äzÿÿªªèæ I!HƒäzÿúzzèçIA� äz¤rªªèçH’ Iäz¤r
ªªèä Ib,9%ƒÄz¿ÿ­­çã€-9�
ÙE‹äz¯¯¯¯èãñäJ•0HE‹äzêêþÿèç@$@ ƒäzªªª¯èçI€$H€F‹‚jªªªªèçH ‚F‹‚jªªªªèçHI$f‹bjªªªªèç	’ @’$f‹bjªªªªèæ	 I‚f‹bjªªªªèæ!	’$Af‹bjªªªªèçHA’ f‹‚rªªªªèåØ²­Ûº¡f‹‚rªªªªèã¶äL¶`KE‹ƒððððèåÉ�tm²5E‹ä‚úê«¯èä¢9’$IE‹ƒ//ÿÿèä	”AE‹ƒøøÿÿèæ!A’$I�f‹brªªªªèæD‚$I‚f‹brªªªªçãRÚ´í˜E‹ƒ€èåé6lÛVf‹brªªªªèä’Ñ�%E‹ƒÿý­-çã¶d‰i[E‹ƒúú ªèæ!"$I2f‹‚jªªªªäãA‚$H$E‹%ƒªªªªäãI€$H’ †“£rªªªªäãH�H’†“Ãrªªªªäã’$I’$†“ÃzªªªªäãI$I’$†“ÃzªªªªäãI’$H€$†“ÃzªªªªäãII †“ÃzªªªªäãI� ‚$†“ÃzªªªªäãI‚$H’$†“Ãzªªªªäâ$’$A2†“ÃzªªªªäãA$	$†“ÃzªªªªäãI’$A’†“ÃzªªªªäãI’$A$†“ÃzªªªªäãI‚ H’$†“ÃzªªªªãâH$ ¥‹¥ŠªªªªãâA‚$ ¥‹¥Šªªªªãâ$¥‹¥ŠªªªªåâiÛ&X»­E‹%ƒ

çã	aK”D‰E‹ƒðøþþçã 	´E‹ƒÿÿúðçæ€$fƒ‚‚ªªªªæã`À‚5E‹ƒÿ¿/æâ²iÓ±`E‹ƒàxæâvL;�
:E‹%ƒ-µãâ$AE‹ƒªãâA€$I’ E‹ƒ*äß“°JñdOE‹%ƒ  à`äâ$I‚É$E‹%ƒ

«-äãI’	� †“ÃzªªªªäÞ˜ƒÕÒ(i…“E‹-­µÕåßqs1U…“E‹zxzzçáuB6
4e‹ƒ*/'àÞLB†`Â$…“e‹ßÞI’ 	’$&›$„ªªªªßÞ H’&›$„ªªªªßÞI’$H’$&›$„ªªªªßÞA‚I’$&›$„ªªªªßÝ$A‚™�Æ›ƒªªªªßÞI$I’$&›$„ªªªªßÝ IdH2Æ›ƒªªªªßÞH�$I$&›$„ªªªªßÝ$I2H’Æ›ƒªªªªßÞI’I�$&›$„ªªªªßÞI’$’…“e“ âÞ1“‰'…“E‹ø¨ áÞM“´éÐ…“E‹¢èèáÞI“&@ƒ5…“E‹
++ßÞ$	’$&›$„ªªªªßÞH�A…“e‹ªãÞq’Øñæ…“E‹ èZæÞyyo�4…“%ƒàøþ_æãÉ�I¶¤E‹%ƒ``€çã-1’DE‹ƒ//ÿÿçã¡J”@E‹ƒøøÿÿçäØ¶m
Ö®%‹ƒÿÿð°çâÂ†Ù³ã´E‹ƒ¯çâP	ž�NE‹ƒÿþøðçÞ	±�¯>…“ƒ­­-æßdY’¥�Ne“%ƒêúþúåßÀ
°¢#Úe“%ƒ­¯«ãÞ‚ M›«%…“E‹Uu¯æâD1[E‹ƒ¿¾€æâŒIÚ
0E‹%ƒ
æâ‚Bˆ6™�E‹ƒ/>€çÞùÔ
›$Ie“ƒàø~WçäÉ�ÛE‹ƒøúÿÿèã‚&L�«9E‹ƒÿÿ¯çæAfƒ‚‚ªªªªçä`2 E‹{ÿ¿ªªèá‚ÆM	•pE‹ƒõÿààèæ$I’`’f‹bjªªªªèä(€’,)%ƒäzª***ãÜèÍ§Ì»Þ…“E‹
ƒ‹æàñhJ¦TE‹%ƒ ØØÜæÝvê¸-Õ
…“%ƒ‚òZçãHÉ¶ã$E‹ƒþ¾
äâÁ0d’0¥‹¥Šªªªªèâ-ééæŽE‹ƒàðð çâ$m³íØE‹ƒÿÿæâ€,:tbÛE‹ƒ/æãé–É–nE‹ƒ ðð åâMÛn-ÐE‹%ƒ  æâ±�Ð¦dE‹ƒààæâ6c: #ÙE‹ƒåàqçtR­e“%‹êêõõæâ¢#‰¦CE‹%ƒ
.øðäÀE‹æzxä;ô­E‹èA_àã9Iò$sõ%ƒè9UW^péW�±�WƒÇ9		-µè9 À5%ƒB€À`pÄ9¾�¼É™ærè9WÕ•5ç—@%ƒFRçæ@ � fƒ‚‚ªªªªèæ$É�aÈfƒ‚‚ªªªªèç	€ f‹‚rªªªªçÝ $‹årªªªêçU€PÃ'%ƒç9€xWÇ)èÿÜ¿mÛ{ç9\WUUZT‘"I$ç9Ç9(ªªªZJÉç9Ç9€ªªªZYA’ ’$(B&)ªªªªZYI� I’$(B&)ªªªªæS)�Iš$ƒÇ9
5ÕUæ…%ƒGRäã�†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäã†“£rªªªªäã†“£rªªªªääI’$I’$†“£rªªªªäã †“£rªªªªäã †“£rªªªªäDr9€%ƒÈ9\pÀzDI’$I‚$GRç9UUUTDDI’$I’$(Bf1ªªªªDC(Bf1ªªªªäC˜2I’$E‹ç9Ã}UUDDI’$I’$(Bf1ªªªªDC(Bf1ªªªªDC@� (Bf1ªªªªDC�(Bf1ªªªªDC(Bf1ªªªªDC(Bf1ªªªªDC(Bf1ªªªªÁCI�DI˜¤årç9••Õäã†“£rªªªªääI’$I’$†“£rªªªªäã@†“£rªªªªäã†“£rªªªªäã†“£rªªªªääI’$I’$†“£rªªªªäáÀ
4†“Ãzªªªªäám›¶¥‹¥Šªªªªäâ	À†“ÃzªªªªääI’$I’$†“£rªªªªäâÀ�†“£rªªªªäÞPƒ9P³9…“E‹%%%-äÞ®S‰éº…“E‹Zx ªäà @&“e“E‹UUWzäã@†“£rªªªªäa(E‹GR€`à�­ÿÏŸüe‹è9x^WUD MµëÄBÇ9ÿª‚R u2þÙ
Bè9¯¯ÿ?ä/É•0E‹B•%	äá[‹µKºve‹E‹ï­‹ëäßš-8‚e“E‹%%UUäß±`Ae“E‹XXUUäà A‰�e‹E‹UUPPäà€’¤éÄe“E‹Uõýëäã@$†“Ãzªªªªäã†“£rªªªªäâ †“£rªªªªäá€
kÛ¤e‹E‹UUë‚äã†“£rªªªªäã†“£rªªªªäá`@ƒ&…“E‹UUÕµãÞë´
­O…“E‹ë{Zøäà’Ù´é˜e“E‹µõýêãádB†I„e‹E‹

¯¯äámÛ´Ý6`¥‹¥Šªªªªäá@³5kÒ$e‹E‹µ-â*M¢$ð�ýe‹è9WV\XD>`A‚è9ç9þþþÿDCç9Ç9¨¨D?Ž`ç9Ç9 ªªª­?É‘$I’$†bÇ95UUUä?`	‘ä%ƒç95Uä°E‹¦jã�Xe‹è95ÝÜ@€ Aä›ƒªªªªÝÜ	 ä›ƒªªªªÝÜ@ä›ƒªªªªÝÜIä›ƒªªªªÝÜIä›ƒªªªªÝÜä›ƒªªªªÝÜ�&›$„ªªªªÝÜ’$&›$„ªªªªÝÜ@&›$„ªªªªÝÜ@$&›$„ªªªªÝÜ	&›$„ªªªªÞÜdÈIH…“e“€€€ä$ˆ9E‹è9€xâ€,ÚÿŸ$E‹B`^UU;Z‘%›?Bè9ÿÿ¾ª1�9õó$)Bè9­­«ª')�“ÉŸ$)BB^^úª/­p‰›$)Bè9ÿúêª&âþuž›	J*ªªªªâ¹‘9�e‹B5%
ãÝNRÛ¤D	…“E‹ú^äÜn»ä´	…“E‹z^ãÝ±ÔJ‚H…“E‹ðXõõãÝöÄj­5…“E‹ðú-
âÝ`KI—T…“E‹úð  äÝ~^»”…“E‹‚WUäß$h€-e“E‹WÕ•µäÞ¶±”l…“E‹PPPpâÞrÅ	…“E‹‹ëÿäÞ)ŒZ#Õ…“E‹õµ%¥âá	’I e“E‹ÿþþÿâáI�I�e‹E‹€€ªúäÞR-9š�±…“E‹¥¥õäám34C´E‹ƒã(X,E‹BX`€¨'I’$O‚$Æjè9UUWT-'éà
îà
IBE1ªªªªÌ+‰‘ÄI’${è95ÕUUâ, �
e‹èA
âá	Ie‹E‹¬¬üüâá¥‹¥Šªªªªåá)‰¦é�E‹ƒãâ$H‚$¥‹¥Šªªªªãá	€$À�¥‹¥Šªªªªãâ	‚ I�¥‹¥Šªªªªãâ	’ I$¥‹¥Šªªªªãâ@€	…“Årªªªªãâ	$@� …“¥rªªªªãâ	$…“¥rªªªªãâI€ …“¥rªªªªãâ$A$…“¥rªªªªãâ@€@…“¥rªªªªäÞ’ 	$(E‹%ƒªªªêÑ:x²$Lò${ç9TVVW;9$I$C"(Bf1ªªªª99I’$I’$(Bf1ªªªª:9	�I’$(Bf1ªªªª;9dB$I’$(Bf1ªªªª:9@’$I’$(Bf1ªªªª98(Bf1ªªªª99I’$I’$'Bi1ªªªª99I’$I’$(Bf1ªªªª98I’$è9ç9ÿÿªª97I’!I’è9ç9¯ªªªã7Iš)PE‹ç9Õ5
åÝ‘ IÛ´IE‹%ƒkjêêéåHÉ$;%ƒäz¾¾ªªåâX‹¶kƒ5E‹%ƒ­©«­ãâH A’†“£rªªªªãâ@†“£rªªªªãá!A‚$E‹%ƒªªªÿçâžd±äIE‹ƒúúúúæÝXÕ+Me“ƒ-­ÿÿç×mKr“ …“åzªÿâ8
8hÒ'E‹Ç9Àp^WX6~bûÔ(ˆç9Ç9¾¿<4€ß$H¢$(Bf1ªªªªâ4I’¤I‘E‹ç9UÕ5
æH"5%ƒÇ9_p€Î!‰�ØŽ
Úåzç9UUWXZYA’ H’$èA¥)ªªªª[X]ÑvI—tèA¥)ªªªªæ[ñ�œI’$ƒÇ9-ÕUUç] �TƒÇ95çæA$@$f‹‚rªªªªçæI�$I’$f‹‚rªªªªèç	’ I� f‹bjªªªªècÈ@ƒÇ9`à€§^‰‘äO²$FZÇ95UUVÂ`rò$Iž¥jÇ9^UU5èb±ðƒç9-	èçI	f‹‚rªªªªèç’$ f‹‚rªªªªéç	’$I�f‹bjªªªªéèA’I’$f‹bjªªªªéèI’$I’F‹‚jªªªªéèI’$I’F‹‚jªªªªéèI’ I’$F‹‚jªªªªéèI‚$I’$f‹bjªªªªêè	‘	™0ƒäzêêêªêè ˆ0$I&ƒäzÿ¯«ªéèI’ ƒäzÿªªªêèH2L˜$ƒäzÿªªªêè I’IB&ƒäz¿ªªªéèH’$I’$f‹bjªªªªéè	’$H’ f‹bjªªªªéèI’ I’f‹bjªªªªéæÛº­²­f‹bjªªªªèà$M«¯æe‹ƒUõèàH’=&e‹ƒÿÿ
çâš-­®AE‹ƒ/¸øèàœÔ
¹àE‹ƒøðððéæilÛ¶mf‹bjªªªªèâi�9E‹äz¿¿/åßk,v­Ð
…“%ƒ‹ëzúè¬�$1E‹år¨*`çVÐè$E‹çAàWéT€mþŸä%ƒÇ9¨WUèc0÷�\ƒç9-•èâÍ�&iE‹äz//¿¿äàŽÄP’Ie‹E‹pðýÕäà’DI‰��e‹E‹Upðéâïðn›§E‹äzøð €éå‚,Á”B)%ƒäzº***áÝr,Û2
Û…“E‹ßÞ€$I’$&›$„ªªªªßÝd†$I’Æ›ƒªªªªßÞH’ I’&›$„ªªªªßÞI’$I‚$&›$„ªªªªáÞI�M�d…“E‹ÀÀ€€êå•`IÖ�M%ƒäzþúè¨éè@‚$ƒäz¿¯«ªéèH’$I�f‹bjªªªªéÜ��ù˜�9…“ƒ



ÞÜ$A’ä›è‚ªªªªÞÜ 	&C†ä›è‚ªªªªÝÜH€ @€ä›è‚ªªªªÝÜä›è‚ªªªªÞÜ$�$™�ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜä›è‚ªªªªßÜÐ6iÒ4…“E‹€âÝ’»qœ$…“E‹ú€éÝœàrÿ�$…“ƒ_úèÜ 	-——…“ƒU_è éä’&¡ƒ»%ƒäzªªªèåÉ�Ý�n%‹äzêêúúèæC’$A%ƒäz*ªªªèÝãƒõÀ@…“ƒ-õUäÜI^ûZ
µ…“%ƒ++ÞÜ!É„L0ä›è‚ªªªªÝÜ	 ‚ä›è‚ªªªªÝÜI‚ �ä›è‚ªªªªÝÜ@@�ä›è‚ªªªªÝÜ	$@€ä›è‚ªªªªÝÜ$A� ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ @ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ@@ ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜ Aä›è‚ªªªªàÜ1iS!S…“e‹€ÀÀæÞynÛ“0I…“%ƒªWWæà!oZ‹µe“%ƒZú¯¯çâ¶…$¨E‹ƒððü?èà I®ðHe‹ƒÿßðàèç�$	€f‹‚rªªªªèçI‚	� f‹‚rªªªªèÜXƒõX±…“ƒ

-­èÜ÷�÷ÐN…“ƒpppxçã1€$E‹ƒ//ÿÿçã1JE‹ƒ øÿÿçâÉ”¬Z5E‹ƒð +åÝš`WÎÛŸ…“%‹â‚¢çß häß>e“ƒWÿ

çß€$A÷—e“ƒÕÿ¨ çã’ A¦˜ØE‹ƒÿÿø€çäÀ¶®Í–´E‹ƒ¿¿ò åát,:
‘E‹ƒåá&I3”HAE‹%ƒ(¸åá$`ŽíÄE‹%ƒð€æâ 1‘PE‹%ƒÿ^`àæä2E‹ƒÿÿÿ*çâ‚¤Aí”lE‹ƒÿÿð çã’ J6•ˆE‹ƒÿÿðàçã�‘¢-&E‹ƒÿÿçác£Ñ‚4IE‹%ƒ
-÷WæßOÙe“%ƒàz_UçáNÌ–›&ae‹ƒªÿÕäÞR
4ÐH…“%‹¯-½ýãÜåfÛ£ƒÑ…“E‹ª%áÜÛàx¶½Õ…“E‹ªçÞäŽ��ä…“%ƒßú áÞH²&M’n…“e‹ðßÞI’$I‚ …“e‹ßÞI‚$I$&›$„ªªªªàÞI’„I˜…“e‹€À€èÞ1÷Àqe“ƒàx^þèÝãƒÕÀ¶me“ƒ-õÿåÞ·ï'‘…“E‹¨
ÕÕâÝvì:R
Õ…“E‹+åÝíóÛ·v…“%ƒ
øØåÜqéN­Ð
…“%ƒ ðpòåàµ·&rue“%‹ê‹‹íæßÐ#ÙB�e“%ƒ
¯§¥èä‘@H„DE‹{þþþþèÜXƒõXƒ9…“ƒ



èÝññO…“ƒppppèßØ�=X"æe“ƒ



åÝB4R9…“%‹%%%%çÜÿp±…“ƒppppææI’$I’$%ƒƒ*ªªªçäÍ¶mÛ6`%‹ƒpUUÕæ­`‹Ö¨/?ƒÃITTTTÅ®ÐªÕöŸäãQ£I½¿*¶­�Ôÿþ¿5ãQÂIª
´«�Ù†ul'ãQÃIŠ€¼­@/ô®ÿ?ãQÃI//*ß«‘Oœ$E‹ãQ%ÕUâÅ€H’I…“Är

ÝÜ’ ä›è‚ªªªªÝÜ‚ @ä›è‚ªªªªÝÜ� €ä›è‚ªªªªÞÜÁ$Á�ä›è‚ªªªªã«`€.1e‹R€@`ÃªHò$Oò'„jãQTUUU«ªH� ’DZAAªªªª«ª€$DZAAªªªª¬ª “„!Ã0DZAAªªªª®ª±`J6ÛDZAAªªªª¬ªHB2LÈ$DZAAªªªª¾ªI’Û±ô
ãQÃI øøÃª¹û»öDãQÃI  z_Æ°yws¥´	ãQ£IøúÿåÄIž¤I–ƒ£IUÕ•çäÙ†¡Š­%ƒäz+***åâhÓ¶KÓ´E‹ƒæàcÌÚí4e“ƒªŠú^çä`ÃlE‹ƒþþÿÿçÞP/9˜#ù…“ƒ----çÞOš»9õ
e“ƒ€àxçå€E‹ƒþþÿÿçæfƒ‚‚ªªªªçæ@�fƒ‚‚ªªªªçæ	€€$fƒ‚‚ªªªªçæ’@fƒ‚‚ªªªªçæ�fƒ‚‚ªªªªçæAfƒ‚‚ªªªªçæA fƒ‚‚ªªªªçäKƒaÃ`%‹ƒÿÿÿçâk'iP='e‹ƒªÿ¯
æÝ�#Õ“FI…“%ƒ
-ÿßßÜM·vH‡f…“E‹æàà	æ˜ve“%ƒ~~úêæâ¢	Ùvl›E‹ƒ€æÜ’�ù�9…“%ƒ


çÜ/ws÷…“ƒ  àpçÜë?:˜�ù…“ƒ


åÝñùTJ…“%ƒðððøçáqÛ¶îV
E‹ƒàøèâIYJÛ4aE‹ƒÀøÿÿçá‰#Í6E‹ƒ??áÜk1{‹W»…“E‹‚‚€æá4@Þ”NE‹%ƒÖÖ¨€çå	‘$%‹äz  êêçåB‚ %ƒÄz*/¿µçãE
’E‹ƒðúÿÿçå		$	E‹ƒêÿÿÿçå€ %ƒäzª***çà`²þ>iOe“ƒ
«êzçâÓ24‚ME‹ƒ./¿¯çÝOl»Û…“ƒ‚ÿUçã¡D¦`
E‹ƒüþøúçäh3 ‚¡E‹ƒ?¿¿¿æß9÷¶Ône“%ƒàzzúåÞ�±ýÓÿ…“%‹½½
ªßÜH‹®¶mÆ›ƒªªªªßÜM³nÃ¶
Ä›ƒªªªªÞÜ		’ 	�ä›è‚ªªªªÝÜAä›è‚ªªªªÞÍ€`’ …“{@€ÌªI’ü½
—äzãQUUWT·ªÉóÿõúãQÂI
°ªIlÇ¤
4DZAAªªªª¾ªI’Ü1ãQÃIàðÆ«9å
ãQ£Iðx_WÆÅÃI£I¨ªªªÊ¹c>þÛ6	ÃI‚AªªÉºS=9�ƒ9ÃI‚A



Çº®S¹›ÄÃI‚A €ä½¶a{ÿÿ'äzÃI•UUçÌ%ƒ#Zåß 
MÚ¤…“ƒÿÿ‚‚èäNLJ”›E‹ƒ‚ÿÿèèæI’Hf‹‚rªªªªèæ A�„%ƒäzªªª€éÄ€€4ƒÃIÀ@pËÀ}£ÍÀÚnÃI¢A ªªªÂ­NBû#‹±ãQÃI«ýý±ªOÞ<L‚:DZAAªªªª¬ª’aÈDZAAªªªª¬ªIÂ0d‚DZAAªªªªÝª‰�	‘…“ãQ%%5ßÜIÚ¤MÚbä›è‚ªªªªÞÜ’$Iä›è‚ªªªªÞÜd&dä›è‚ªªªªÞÜI’a0ä›è‚ªªªªÞÜÉ�$ä›è‚ªªªªÞÜÃ�d…“E‹þ åÜOz»oçe“%ƒêèàøåâÁ,]»u%ƒäz®.åâM—ti°
E‹%ƒ««êïèä&%ˆ‚#Ù%ƒä‚ªª**èä@¡`
%ƒÄzzøø èæI$@2ƒÄzW_ÿúèåÛ6`Ð¬äzÄzUÿèæI‚H’%ƒÄz½¿¯«çã�
ÙPÙE‹ƒÿ­¯¯èåÖ
Ý–t%ƒÄzþªª èç I€%ƒäzÿªªªèç@’ H� %ƒäzÿªªªèç‚$I� F‹‚jªªªªèç�$I€$f‹bjªªªªèçH	f‹bjªªªªèæA2 	’f‹bjªªªªèä€D’N’$e‹äzÿ«ªªèà�$itÂ&e‹äzÿªèâ6m©”JE‹ƒÿÿøøçã¶`ŽMÛE‹ƒððèâ€¤mmÒ&E‹ƒÿÿèæ @€!’f‹brªªªªèç@Af‹brªªªªèåÛ6`
,f‹brªªªªèâÆI	•PE‹ä‚ÿúààèä‰™H	•E‹ƒððððèç	 f‹brªªªªèäP™’E‹ƒ­­ýUèä¦$H’
%E‹ƒÿÿ¯­èæ$B $†f‹‚jªªªªèãNRÇ«
ÙE‹ƒ*//äãA’$I†“ÃrªªªªäãA$†“Ãrªªªªäã	‚€$†“Ãzªªªªäã	’$	’$†“ÃzªªªªäãA‚ I‚ †“Ãzªªªªäã	’$I$†“ÃzªªªªäãA‚$’$†“Ãzªªªªäã	’I�$†“Ãzªªªªäâ$H’C0†“ÃzªªªªäãH’	’ †“Ãzªªªªäã€$I�$†“ÃzªªªªäãI�$I�$†“ÃzªªªªäãI’I †“Ãzªªªªäâ$I�$B2†“Ãzªªªªãâ@$I€ ¥‹¥ŠªªªªåâI›¶Ù�
E‹ƒààæâtlÛ�#ÚE‹ƒæâ6`E‹ƒøðøzçã1A’ E‹ƒðúÿUçä[‹%Û%ƒäzªªçâš#Õ’©E‹ƒ/¯ÿýæâ¶`“Ží8E‹%ƒ^_ý«åâh»´m“¦E‹%ƒ½«ªåâIšv-�E‹%ƒêþ^øãâ@$E‹%ƒ¿¯«äâ	I0 "E‹%ƒúª*ãàX³¦É–ve‹ƒäßƒ°mš­9…“E‹W÷­-ãÞ¤­…“E‹U_zxäám1€f†“ÃzªªªªçÞP9R£5…“ƒ%--/ßÞI$I$…“e“
ßÞA‚$’$&›$„ªªªªßÞH$I’$&›$„ªªªªßÞI’	’ &›$„ªªªªßÞI’I$&›$„ªªªªßÞI‚$I’$&›$„ªªªªßÜ¶­]Û6Ä›ƒªªªªßÜm—ÖvÄ›ƒªªªªÞÜ€I†Ä›ƒªªªªÞÝ’$I‚ä›è‚ªªªªßÞI’$I …“e‹
âÞ±”@‰“Ä…“e‹øø ßÞH‚$	’ …“e“ßÞ 	…“e‹  áÞm“$IÚ…“E‹
€àåÞIþ¿n9
…“%‹€ªêçàùï¶Ü&@e‹ƒ¨þÿçáñÖ	‚@E‹ƒàøÿÿçå!	€I2f‹‚zªªªªæãXtí�tE‹%ƒ	­zàçåA˜„f‹‚zªªªªçæ� fƒ‚‚ªªªªçå$H $˜„%‹ƒ¿¿¿¢åâíÐm·¥E‹%ƒ à€æãÉÖa6¬E‹ƒ°¸¾¾ãÝkÂÖØ¦M…“E‹ý]äÞés¬±…“E‹Xh«¥åâÀi×¶E‹ƒ*¾ã-@À=e‹è9àxç°M¿›Ü%ƒèAªUUçOå”Ä%ƒÇ9/Õæ•�
%ƒ†b-çä°m-–®%‹ƒÿÿð°èâ´	ìäpE‹{þúààèä`Ù%IE‹ƒ¯ÿÿçåIHfƒ‚‚ªªªªçæ fƒ‚‚ªªªªçäÍÀ°
E‹{êêêïèæI�d†f‹‚rªªªªçæ’fƒ‚‚ªªªªèßj‚ÕÒ&Ie“ƒ­ýUèãVI›$mE‹ƒüþÿÿçä	Öb†­E‹ƒðúÿ¿äâ`† Ã�¥“¥zªªªªãâA€@’¥‹¥Šªªªªæâ-9¶cÇE‹ƒ

ãâI’ @¥‹¥ŠªªªªãâI’ � ¥‹¥Šªªªªäâ@&LÈ�¥‹¥Šªªªªãâ’¥‹¥Šªªªªãâ	 	’¥‹¥Šªªªªäâ†$“„¥‹¥Šªªªªäâ`˜$L’$¥‹¥Šªªªªäâ	A’a¥‹¥ŠªªªªäâI’	‚†“Ãzªªªªäã	’$’$†“Ãzªªªªät€€E‹gR`ÀÛCÿûÿ|‚õ%ƒç9UUVx®9�S?öó'fZç9pUUUå9	!`E‹è9%-	èâéVNÛ&LE‹ƒðøÿÿçæ fƒ‚‚ªªªªèædÈ�fƒ‚‚ªªªªèb5ƒç9€pçJÀ*>ýó?ƒÇ9à\WUZ°mNâ$BÇ9ÿÿY°ñBÇ9ÿÿøøtÛ6’ã¿‡bç9UUU5çTIžT ƒÇ9ÕµæYN‚&@ %ƒÇ9W\pÀZXI�$I2(B&)ªªªªZ=��Ð*>è9Ç9ÿ¿¿¯â4/ðOü$Eƒè9
5ÕUäjE‹GR	äâ	$†“ÃzªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäã@†“£rªªªªäã€€†“£rªªªªääI’$I’$†“£rªªªªäã†“£rªªªªäDh4
E‹ç9\pÀ’CI’$I‚$†Zç9UUUTDDI’$I’$(Bf1ªªªªDC�(Bf1ªªªªDC(Bf1ªªªªDC (Bf1ªªªªDDI’$I’$(Bf1ªªªªDDI’$I’$(Bf1ªªªªDCH(Bf1ªªªªDDI’$I’$(Bf1ªªªªDC€@(Bf1ªªªªOCÿñ?ÿÿÿBÇ9¿ÿÿÿäb@E‹'Jäã †“£rªªªªääI’$I’$†“£rªªªªäã‚†“£rªªªªäã€†“£rªªªªäã†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäã@†“£rªªªªäâ €†“£rªªªªáÜè:»‹»v…“E‹ª‚ãÞvlÇSt…“E‹ŠŠ�¥äáÙ: V`e‹E‹¼×××ãÞ�Û¸ö…“E‹‚‚zzä](E‹‡Z@ãP­ÚM’$%ƒBP\WUB&a®kBÇ9ºº¨ ú¥DpG)BBiimíâ4ù—0e‹è9•%	äà±`…“E‹ZZWWäâ!À�†“Ãzªªªªäâ	$€†“Ãzªªªªäâ@	�†“Ãzªªªªäã ‚ †“ÃzªªªªäÞMÊ˜ä$…“E‹‚‚{Uäà$ˆP8e“E‹UU¥¥äâ!��0…“ÅzªªªªäßÀµ˜5…“E‹Õµ%¥ãáI˜!e“E‹ÿ~^_äÞlZ-&…“E‹UU¥
äß0iI’$…“E‹UÕ*ªâßÀŠ¶Iš¤…“E‹½ª€ªâÝŽ[×‚@…“E‹¯ÿâÞ±�P¤$…“E‹ààêÿãádÈ„IHe‹E‹Š€€êäá C‹5e‹E‹UÕµ%äáIš´É�e‹E‹‚âxXäD@4€àE‹ç9Pp`ÀDC@(Bf1ªªªªDDI’$I’$(Bf1ªªªªD: 
0ç9Ç9  ?*%àOÎÛçè9Ç9úêªªD2ÿðwíï&ç9Ç9€ã(¯ðŸò'E‹è9-ÕUU>ë3>˜ƒ9BÇ9

Ý�Iœ$…“(B%ÕUÝ…“(J
ÝÜ@‚$I‚$ä›ƒªªªªÝÜ ä›ƒªªªªÝÜ‚  ä›ƒªªªªÝÜA@€ ä›ƒªªªªÝÜH’H’&›$„ªªªªÝÜH$€$&›$„ªªªªÝÜ $&›$„ªªªªÞÜL’…“e“xá~(e“fZ`Þ!0rò?e‹è9`^Uj(ë¶­ß>hRè9TUõõH®$N’“)BB©«ÿÿ5ÿŸÛñ)Bè9ªêzz5Ib?˜ƒ9)Bè9ª«­­I’$I’$jB†Aªªªª(I’Û1)BBªþ^^*)p¾íÄ)Bè9þúª*á` …“:	âÞDÑb,'…“E‹¾ªŠäßñO6ie“E‹PXW×ãÞ³`K	�l…“E‹ZPPðßÜØºlh»¶…“e‹äÜñô
·ð
…“E‹pPPPäá€
mÛ¦e‹E‹UU«äàÚ4MÛ…“E‹µµ¿ÿãÞIeO�0	…“E‹àèZ_äà¶Iš"
9…“E‹ÿÿõµäà)	$™˜e“E‹UUÿúäáÀ:lM’&e‹E‹ÕUêäáMÑÐn…“Årªªªªäá@‡-�nE‹ƒ €åá�-ÚtìÄE‹ƒ
äáXÓ5m’¤¥“¥zªªªªâ(X,E‹è9X`€ 'I’$I‚$Æjè9UUUT.+[ÓnÝlIBE1ªªªªÜ$I‘¤I’$e‹è95ÕUUâE‹(B
âá @ e‹E‹ÿ¿??ãÞ´Mµë¸e“E‹UõŠŠãá I I¥‹¥ŠªªªªãßLèÄ)e“E‹‚‚ÿUãâA ¥‹¥ŠªªªªãàX»%Ø¶me“E‹­­õUãâ	� ’…“Årªªªªãâ@€I…“¥rªªªªãâH‚…“¥rªªªªãâH€…“¥rªªªªãâH’…“¥rªªªªäâLÀ€	‚…“¥rªªªªä:ÀÀ8E‹È9€À`p;:I$A’$(Bf1ªªªª;8Øº-ÛŠ­(Bf1ªªªª970�è9ç9¯¯¯¯97À@è9ç9þúúú99I’$I’$(Bf1ªªªª98è9ç9ÿÿÿþ99I’$I’$(Bf1ªªªª97	„'Bi1ªªªª97C†$É�è9ç9¯ªªª87A€’çA	2ªªªªã7I˜!@E‹çAÕ5
ãâ@€A€ E‹%‹    äâ	A2	&†“£rªªªªåâÛÖfmÖE‹%ƒêêzèâd³±Ó&	E‹ƒ¯¿ÿWçâvÒ¶‚E‹ƒªªÿýçâNÜ¶R-´E‹ƒªª¯¿çã¤$¡dB%ƒäz(¨  çä¶í–n%ƒä‚ªª  æÀ %‹åzªªªJèC€=zòüƒç9ÀxVUS5€­Ùõï$ç9Ç9
T4½9ö“$ç9Ç9/
ã4I’„	‘%ƒç9U•%	ãŽ%‹†ZçâîdOñ`E‹ƒúúúúç~@%ƒJ`€çYIÂ'˜€ƒÇ9UWxÀfYIžäÉ�üçAÇ9UUUV]ZÃVtÛÚ.BE!ªªªªuYÿñÿÿÿ?BÇ9UUUæPð
É—$ƒÇ9-•Uç†�ƒ&R	èæ‚	H’f‹bjªªªªèç�$Hf‹brªªªªè^{–ƒÇ9V¸è�¡ ƒFR-èçI H f‹bjªªªªèçI$I€f‹‚rªªªªèç	I‚f‹‚rªªªªéç$H’	“�f‹bjªªªªèèI’$I’$f‹bjªªªªéè	‚$	’$f‹bjªªªªéèI’I’ f‹bjªªªªéèI’$I‚$f‹bjªªªªéèH‚$A’$f‹brªªªªéèI’$A’$f‹brªªªªéèA’$I�f‹bjªªªªéèI’$H�$f‹brªªªªéèI‚$I’$f‹brªªªªèèI’$I’$f‹brªªªªéèI’$I’f‹bjªªªªéèA’$H’f‹bjªªªªéèI’$	’$f‹bjªªªªéæÛº¡Û²­f‹bjªªªªçà’
Ñc=6E‹ƒèÞìm»6•…“ƒªhpéäéTI’$H%‹{¨þþÿèæ	$f‹‚rªªªªè–1ƒfZxè@í$E‹BèUå¤õžä%ƒBzUUœ›·®ëÚÆjç9xUUUb;œ¨R?>è9Ç9ßµ¯¯c*ö�L¶æŽè9Ç9zpúºš%$ÑºOþäFRè9Õ}}æL E‹çA
äß´mö”´e“E‹UUZðãÞ€ I«çd…“E‹UÕê‚äßö°NÐ¤e“%‹zê¥¥èá6­O:E‹ƒ×¿?áÞH‚$kÒ$…“e‹ßÞI’	’ &›$„ªªªªßÜØº-Û¶mÆ›ƒªªªªÞÜ A2a‚„ä›è‚ªªªªÞÜ$H’	C†ä›è‚ªªªªàÜ¤a[¶å˜…“e‹€€éà„TIæ”E‹ƒVþøðéèI‚$I’$f‹bjªªªªéèI’$H’$f‹bjªªªªèÜXùXõ…“ƒ



ÝÜH‚Hä›è‚ªªªªÝÜHä›è‚ªªªªÝÜ€H�ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜA€’ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ€$ä›è‚ªªªªÝÜHH$ä›è‚ªªªªÝÜA€	ä›è‚ªªªªÝÜ‚ ä›è‚ªªªªÞÜ$�0$“0ä›è‚ªªªªàÜàØŽm;…“E‹®èÜ¥ðn¹ý?…“ƒzø€èÜ°mmû?…“ƒUÿªèÜ im�'…“ƒUÿ*äÜ«•µ™¿…“%ƒ««€€äÝ¤3ÒÛ6…“E‹*§×WäÜÿ_?šÑ…“%‹-ÝÜ@€ä›è‚ªªªªÝÜ�@ ä›è‚ªªªªÝÜ@@� ä›è‚ªªªªÝÜ’@ä›è‚ªªªªÝÜ ä›è‚ªªªªÝÜH€€ ä›è‚ªªªªÝÜ$Aä›è‚ªªªªÝÜ‚ä›è‚ªªªªÝÜ@ä›è‚ªªªªãÜùÛ÷v…“E‹àpâÜ¶ÓÚZ�Õ…“E‹àÝÉ–´iÛ
…“E‹€¨ãÞn—8Iº
…“E‹ª€€jçà1•
•$@e‹ƒàpÞ¿çà�#:5›´e‹ƒ
  èßñ”Oÿ�Oe“ƒxxxxèç	€$A‚$f‹‚rªªªªèæ	€dH†fƒ‚‚ªªªªçå E‹ƒ¯ÿÿÿçäé€­E‹ƒúÿÿ¯çæ fƒ‚‚ªªªªçåÈ0%ƒäzªª*çâP£5kÝØE‹ƒçâIç
®àE‹ƒ€ðððèã[
iP�9E‹ƒ/ÿ/äáK`Û††“ÃzªªªªæávlÇÞ4	E‹%ƒ úæßÂ&µëCÿe“%ƒÿ¯«åß)±¥C&e“%ƒ¯¯

åßdn1™”e“%‹_úà äáM×
°µ¦“£zªªªªäã�†“ÃrªªªªäáX‹5X³µe‹E‹µ%-¯äá)�Û0`e‹E‹XXWUääI’$I’$E‹%ƒ¨  €åâX³µ[»mE‹%ƒ

 æã°aM×¶E‹%ƒVþª æä@L˜$E‹%ƒUÿªŠæã0l]›¶E‹%ƒUÿªªæä™„E‹%ƒÿUþªæß�±Zƒùe“%ƒ­­-/åÞã£Ù¯ð
…“%ƒ¯úxæÝíC¶‚$I…“%ƒ
/õUçÞ9éJ&ie“ƒ øßÿâÝu2Û³�­…“%‹«áÝ¶c'v,…“E‹ŠçÝInÛÔ&…“ƒþWåÝ­]'âõ…“%‹ª
+-ãÝe›¸&`B…“E‹ª XXßÜÀÖ6h‹…“E‹
áÜ[íº±;	…“E‹
€êèß¹ôn�4e“ƒðø^WçÞŽKÿš9…“ƒ¢Š+-èÝÓ´ïe“ƒÿ^xpèàÚ#ÙÐ&Ie‹ƒÿ÷èæ!’‚%ƒäz¨¨ªªçÝ˜ƒùP
Õ…“ƒ----æÜ©`
å@n…“%ƒpxúþæÞb.æÐ
åe“%ƒ
åÜRô@4…“%‹%%%%çÜ÷±ð…“ƒppppçå$H’$I2%ƒƒ¢¢

çÞ$©R/>…“ƒÕµ-Úªx¢${²${ãQTTTT´ª%a·‘ãQÃI€€€€ÀªR4@£9ãQÃI/%%/­ªmšn)ÐDZAAªªªª®ª‚,8dbÇDZAAªªªª¬ªd†$“�DZAAªªªªÝª�I‘…“R	5ÝÜ@ A�ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜ@€$�ä›è‚ªªªªÝÜ‚ ’ ä›è‚ªªªªÞª€�%xÂ$e“ãQpXTV®«Š¡XÒ%DZAAªªªª«ªI A$DZAAªªªª«ªH‚H‚ DZAAªªªª­ªI’&é–bDZAAªªªª¯ªŽ“ØqlDZAAªªªª¹ªIžÜ¿iãQ¢I€ Æ­¹{»œ&@ãQ£I ªÿ×Å¾)fA±–LÃI¢A ¨  Æ¾É�‰`ÃI‚A    çÅÉ!ƒ£I%
	çäŠ-Š­E‹ƒ¿¿¿¿æàÉ%@e“ƒòzzzçäÛ°m	Ö%‹ƒþÿððçæ A‚fƒ‚‚ªªªªçßÐýÐ
Õe‹%ƒ			
çã‘@		E‹ƒøþþøçæ€@€ fƒ‚‚ªªªªçæ@ ’ fƒ‚‚ªªªªçäÀ0íÐ%‹ƒÿÿððçã�	&b‘E‹ƒ¯¯çå@Hfƒ‚‚ªªªªçæH‚ fƒ‚‚ªªªªçæ@fƒ‚‚ªªªªçæ ‚fƒ‚‚ªªªªçäÀ2 : E‹ƒ¿¿¿ÿãÞs¼¤Ú	…“E‹‹‚}Uçá©è‰„4@E‹ƒ0¸þÿæÝN^Û’&A…“%ƒÿ_çÞñ”­@
…“ƒøxzzçã"H1E‹ƒÿÿ¿/æÜ�/:ôïä…“ƒ
çÜñð¯æb…“ƒppøøçÜ˜=ÚõÿÜ…“ƒ
çâ®V@–ÎE‹ƒèü¼(çß’ I¶””e“ƒ_ÿú çÞ$	­e“ƒÕßúpåÝÚ¨±
9…“E‹Õµ-%áÜMZ§¶ç…“E‹€Àçáá–AD	E‹ƒðøüþæß m��%E‹äzxêŠçâ4Iž�nƒÄr¯¿®*çæfƒ‚‚ªªªªçæ€fƒ‚‚ªªªªçæ‚	€$fƒ‚‚ªªªªçäí0`Ã¶6E‹ƒúÿ¿?çá�=ÆN—Pe‹ä‚
 àçåH2%ƒäz¨¨¨
çæI’fƒ‚‚ªªªªçæH‚$fƒ‚‚ªªªªçác‚%Â&	e‹äz«ÿçãŽCÉ$AE‹ƒ¾ÿÿçÝÎ_×Ò…“ƒ¢ÿUçÞyâº“@…“ƒªÿUçÜöÓúL…“ƒ¯õçÜùcÛÛ…“ƒþUçÝIlÛã…“ƒ€ÿUç¿J.þ€ð%ƒÃI\XPpÆ®âƒ=ØƒùãQ£I--¯ÃªíSÖœFãQÃI
¯ß_Æªy÷SöÐ
ãQ£IàððzÆÄÃI£I¨¨ªªÆÆI’$I’$R1ªªªªÉÄ-ÐIÝÜ6ÃI£Iªª**Èº�#:õSÛÃI‚A
»º€ I‚ äQ Aªªªª¾º’‘DvÇäQ Aªªªªçºpÿ�ƒÃI
%çã¶
€ÈE‹ƒ¿ÿÿåËš¤M0åe“ƒ€‚ëUèÅ$�“%ƒäz(((ªåŸ°5e“Är‚€ªçSÐ†�Úö?äz¢AØôWUË' ð¼ãQ¢AúèèúÉ\�H�\ãQ‚A+«ÿýÇ_Ò&IÔ*ãQ‚A
*¿ÿÅgÛ¶Ià”ãQ‚A àúÉ«Éo»’$ãQ‚Aªºÿèª‰õ[-Ñ…“ÃI55••éÜyë’’…“ƒ ¨_UèßÉÝ–še“ƒªÿUèß‰ír’e“ƒ€ê_UèÝí3ÖÐ…“ƒ
«ýUçÜyÙn`…“ƒ êÿÕçàÿo—Éðe‹{ ààçá©°A‚�E‹{àú¯¯çäØÉ�¶E‹ƒÿÿúúçã’I´å„E‹ƒÿÿª€éçdB@2ƒäz*þª(éäk
5Z½m%ƒäz
*ªçß$‰¢#ÖE‹ƒ×¿çÞ¤pK±dJE‹ƒúààðçàÀnôK'e“ƒ_«‹èã�,¡”	E‹{¿¿þøèá?ñ˜l®ýE‹ƒðÀèå¶a–a%ƒƒúúªªèç’$$f‹bjªªªªèçAAf‹bjªªªªèç	€A‚f‹bjªªªªèç	H’ f‹bjªªªªèæ B‚ A‚f‹bjªªªªèæL H�f‹‚rªªªªèåm²Ã6%ƒäzªªªçã@€
9E‹ƒÿÿ/èãš4A¶E‹ƒÿÿøðèåm:`°f‹‚rªªªªèå6¬X‚¥%ƒÄzªª

èçH‚ 	 f‹brªªªªèæ$BAf‹brªªªªèã«©P�9E‹ƒÿÿ/èãŽ`¶E‹ƒððððèçA’ $f‹brªªªªèä$A´˜˜E‹ƒUÿúúèã�£:sìÄE‹ƒ-/Š‚èäIœ„”h	E‹{ªªþþèãš#9�£:E‹ƒ////æãIÓ´)ÖaE‹%ƒ¨X^äãI‚$‚†“ÃrªªªªäãH‚$	 †“Ãzªªªªäã	’I$†“Ãzªªªªäã	’$@$†“Ãzªªªªäã‚$I‚ †“ÃzªªªªäãA’I‚ †“ÃzªªªªäãI‚I$†“ÃzªªªªäâI2dB††“Ãzªªªªäâ!’$’¥‹¥ŠªªªªäãI’@†“ÃzªªªªäãH’$H$†“ÃzªªªªäãI’I’$†“Ãzªªªªäâ$C‚2†“Ãzªªªªãâ@ I¥‹¥Šªªªªãâ¥“¥zªªªªäâÉI@’E‹ƒ€€çäÙ0`Öm%ƒäz ª( çã 	¦�E‹ƒÿÿúðçã€I-%E‹ƒÿÿ/çâÐ¼Únb'E‹ƒ¯+ãâH� ¥“¥zªªªªãâ€$¥‹¥Šªªªªãâ ¥‹¥Šªªªªäâ †d’¥‹¥Šªªªªäà�$‘¢
Æe“E‹Uõ­­ãÞZÙZ3Ù…“E‹¯­/+âÞ€#Ùqâ$…“E‹/*
äÞös‰�$…“E‹xè ãÜ)ÚõýÜ…“E‹­ãßP"Ù‚H‰e“E‹%¯÷¾áÞ@4hš´…“e‹//ßÞ	‚$	$&›$„ªªªªßÞ@’$A’$&›$„ªªªªßÞI’A &›$„ªªªªßÝD‚„LÈÄ›ƒªªªªßÝ$H’d$Æ›ƒªªªªÞÜ$I†ä›è‚ªªªªßÜMÚ­¶aÄ›ƒªªªªßÜM×m¶…“e‹ ßÞA�	$…“e‹€€áÞ@4mš&…“e‹//
ßÞI’$	’…“e‹ àÝm»µkº
…“e‹€ÊæÞ¹ë’Ô(h…“%ƒ ªÿ÷æß	uíDre“%ƒðzúúæãÛÀº%E‹ƒþÿ¯
çå$@€†%‹ƒÿÿÿªçãÉ#ÙE‹ƒÿ¿/æâD“‰m›E‹ƒú åâMÛv-ÖE‹ƒ ðåâ]ÑtíÖbE‹ƒ€ °çß´i6ù¸e‹ƒ×ºæà
—xí°e“%ƒêâú_çãdB:¶”E‹ƒ

àðçâ®c;›�¹E‹ƒæß�és“4…“%ƒàú_Wæä$I	�E‹ƒªþøúæ’ %‹¦b@ã4h¢'M’$%ƒèA\TWUJ48îó$èAÇ9®¯ªª>*H2$K’éA2ªªªª’ÿ�—wi“GRè9/_]WåEp—É“ü%ƒç9µUUçE01•üE‹ç9½UèS%ƒJ-çæI$fƒ‚‚ªªªªçæ€fƒ‚‚ªªªªèæ 	0$I†f‹brªªªªçæ€€fƒ‚‚ªªªªçæ	’‚ fƒ‚‚ªªªªçæHfƒ‚‚ªªªªçæ’$fƒ‚‚ªªªªçã#9P%E‹ƒ/ãâ@€ 	’ ¥‹¥ŠªªªªãâH�$‚¥‹¥ŠªªªªãâH’ ’¥‹¥Šªªªªãâ@ ‚¥‹¥ŠªªªªãâH ¥‹¥Šªªªªãâ¥‹¥Šªªªªãâ€$¥‹¥Šªªªªãâ’$@¥‹¥Šªªªªãâ‚ 	 ¥‹¥ŠªªªªãâI I€¥‹¥Šªªªªæâ6dK‰�ØE‹ƒààäâ	‚I’†“ÃzªªªªäãI‚$I€$†“ÃzªªªªäãI�H’†“Ãzªªªªä¯ÀE‹Æj`ä;~.–E‹è9W¸ç±0E‹År¡¢èåÃ6tÃ–¦%ƒäzªªªçÏ ƒÅr@çY¨Øã$ƒç9ÀXWºFèÿÿ¿ÿ?¦jÇ9\UUU\´	ö�BÇ9ÕÿúúZDNç9§9ªªªæCÉÿße{Ç9UUµ	çY9AE‹ç9-çäR ÃE‹ƒ¼¾ÿÿçáÉ”¤�E‹äz  ªªçVL&`ƒÇ9WX`€V$X‚%+mBÇ9¯¯¯ÿD:yè9ç9ªþþÿäC±�\Iž$E‹ç9-µUUäX�E‹B	ääI’$I’$†“£rªªªªäã†“£rªªªªäã†“£rªªªªäã€†“£rªªªªäã†“£rªªªªääI’$I’$†“£rªªªªäâ †“£rªªªªäà	S$e“E‹ZZUUä7à0
E‹B\pÀ–8ÿÿÿù�ÿ†bç9UUUTDC@@(Bf1ªªªªDC(Bf1ªªªªDC€€(Bf1ªªªªDDI’$I’$(Bf1ªªªªDC(Bf1ªªªªDC(Bf1ªªªªDC (Bf1ªªªªDDI’$I’$(Bf1ªªªªDC (Bf1ªªªªäDÉ�E‹ç9	
%5äã†“£rªªªªäá`X³5e‹E‹UUµ-äâ@!�†“Ãzªªªªäâ$†“ÃzªªªªääI’$I’$†“£rªªªªäâAI˜„¥“¥zªªªªäã†“£rªªªªäâ@	†“Ãzªªªªäâ€†“£rªªªªáÞÍ°Kº­…“E‹â¢ªäßÂTñO…“E‹UWXZäß€&`®�e“E‹UUZpä‹ e“¦jjà@ƒæüÿÿe“èAp\WUA¤/5�ù)Bè9¿µµµ4/o¹m?)Bè9^úêªãO–0e‹B•%	äÞIbÛšh…“E‹¨ÕÕäÞ¡ç”…“E‹Xpb¢äà�
Ä€DRe‹E‹
UþäâH�À$†“ÃzªªªªäáÍ°¶.¥‹¥Šªªªªäà2iS¦àPe‹E‹ëâzàäá`�e‹E‹UU_XäáÀ°†“ÃzªªªªäßMì$š`e“E‹‚ÕUäà‚d‰äe“E‹UWXZäÝ
9�ù…“E‹¥%%%äÝ~þŸ1÷
…“E‹€xXäáY;`C‹5e‹E‹üWµ%äà¢1¤C:e“E‹­µ¿¿áÞí�IÑ…“E‹êàààãá!	I&e‹E‹xx 
äâ$@!��e‹E‹UU^Xäá[ƒ%kÒte‹E‹%-‹âäáéÐe‹E‹X^WUä«@E‹¦j@€ÆCIò$L‚$Ærç9UUVTD4lX‚%è9ç9ÿÿ¯¯D3ØƒýÓ6è9ç9¯¯ÿÿD*ã#õ€è9Ç9«¯ÿÿD,1yKè9Ç9úúÿÿD(ýSÛ’hBç9««ÿÿDã3ö’ˆBÇ9
*¯¿Iâ$J‚'iJg1ªªªªœ‰‘$I’$sB5UUUÝP	‘ä…“(B5UÝž…“{ÝÜA Aä›ƒªªªªÝÜ$€ä›ƒªªªªÝÜH€ �&›$„ªªªªÞÜdB2IB…“e“¨àÜ±cÇ¶e
…“E‹€ hã@PÏ'E‹èA€pVààïÿÉŸ$%ƒè9XWUUC$Pñ‚jòBÇ9¯¯¿ªX?Ûò½Ç)BBõýýí>¹}“¥ÖA)Bè9úþß_õ°$J‚$)BB«©©˜“$I’$)BB½ªªªI’$I’$jB†Aªªªª%y›Û1)BBþú^^ÝIšD¿ñ…“BÕ•5%ãÜ·t)õ…“E‹pp`häÝ«¯þÚ�9…“E‹	
ãÞ]ÓÚ–à	…“E‹.*~zäÜ];šõ…“E‹
ÞÜdÈ$a ä›è‚ªªªªäÜ¯O¶ùû…“E‹Pp äÝÐ8mîo…“E‹õõZxãáIB†e‹E‹ªUäáIÚ¶Àe‹E‹àêUUäÜ
õPÑ…“E‹%%äÜ®ô
©à
…“E‹xPPXäÝã=:˜µ…“E‹+)-¥âÝ�K¶´M…“E‹zðøúäáé–b)š¬¥“¥zªªªªâÞ�$JeK…“E‹ÿÿúzâáI’ A’$e‹E‹ªªª*âà$A’ É�e‹E‹ªªª€â-`0e‹è9X`€�ÿÿÿI‚$ÆjBUUUT3#ßíßò¡IBE1ªªªªâ	‘œÉŸüEƒB5ÕUUâ+E‹È9	âáI e‹E‹‚êªªãâAH$¥‹¥Šªªªªãâ	‚@¥‹¥Šªªªªãâ@ 	$¥‹¥ŠªªªªãâI€$A¥‹¥ŠªªªªãâI’ @…“Årªªªªãâ’A� …“¥rªªªªãâI‚ H$…“¥rªªªªãâI$@…“¥rªªªªãâ @$…“¥rªªªªäâ	I‚!™�…“¥rªªªªã:X'JÒ$E‹ç9X\VW;:	’$I’$(Bf1ªªªª;9$C2$B (Bf1ªªªª98@$@$è9ç9¯¯¯¯87€@ çA	2ªªªª98 $è9ç9ÿÿÿ¯97!@†è9ç9ÿÿúª97	�d2è9ç9¯¯ªª87A$éA2ªªªª87H çA	2ªªªªã7I˜!@%ƒè9•%	ãâA$ …“¥rªªªªãâ$€E‹%‹  ªªãâ@$I’†“£rªªªªçâ©ä
®�
E‹ƒúzzzèç	� 	‚F‹‚jªªªªçä@Š%X‚µ%ƒäz



èæd’!If‹bjªªªªéæÉ¶bÛº­ƒäz¨ªª«éÁ ƒ…b@èEÀ‚=ûïÿƒÇ9`XVU[=�6­šƒ5ç9Ç9þ¿/->5H¢<}ÜÇ(Bf1ªªªªã5I’dÉ�%‹ç9U•%	ã¬%‹¦jãâH  †“£rªªªªçâñä
ñàE‹ƒúúúúçæA f‹‚rªªªªçæ@$f‹‚rªªªªçYrðƒÇ9^`€ä[I’$M‚=åzÇ9UUWx[U’É,ÉBE!ªªªªPEãÐwŒÉ¼(B&)ªªªªÝOù�¤I’$åzÇ9%ÕUUè[0¡�xƒÇ9
µèç	‚$@�$f‹bjªªªªèç @f‹brªªªªèç	 F‹‚jªªªªèç	‚ 	 f‹bjªªªªèçI€Af‹‚rªªªªéçI˜�!H�f‹brªªªªéèI’$A’$f‹bjªªªªéèI$I�$f‹bjªªªªéè’$I’ f‹bjªªªªéè	’$I’$f‹bjªªªªéèI’I’ f‹bjªªªªéèI’$H�$f‹brªªªªèèI’$I’$f‹brªªªªéè	 I� f‹brªªªªéè	’$H€ f‹brªªªªéèI’$I�$f‹brªªªªéèI’$I’ f‹bjªªªªéèH�$’$f‹bjªªªªèèI’$I’$f‹bjªªªªéèI’$	’$f‹bjªªªªéç$C‚I’f‹bjªªªªèÞ ƒùX-Ú…“ƒ--­¯è…  :e“J€ ¨~èT@¢ÿ$ƒÇ9€~Uè6€¶>öoÛ{Ç9€~UU’ÐJ²¤Ï>GRÇ9\ÕõýNMâÛ·BÇ9¢øøRùä
’mBÇ9àúÿ¿U:%`¿™Äè9Ç9úúªª]:õSÛ“4	è9Ç9ªªÿÿa;‰mÇ¢Õè9Ç9ªª¯­aBmMa©v“ç9Ç9¼° ß.?ñ„ÿÿûf‹ç9%•UUß0…“è9	ßÞH I’$…“e“€àÞ@˜„I†…“e‹�€€€ãÝ+5S½Õ…“E‹%/%/ßÞ$I’$&›$„ªªªªßÞH’$I�$&›$„ªªªªßÞI’ I�$&›$„ªªªªÞÜÉ„d’ä›è‚ªªªªÝÜ@$‚ä›è‚ªªªªÞÜ!‘�I&ä›è‚ªªªªèÝ¯ñ…“ƒxxppéèA‚$H’ f‹bjªªªªéèI’$I‚$f‹bjªªªªèÜPõ˜�5…“ƒ



ÝÜ@€€ä›è‚ªªªªÝÜ 	ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ€€$ä›è‚ªªªªÝÜ@€ä›è‚ªªªªÝÜI ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜ‚ä›ƒªªªªÝÜ ä›è‚ªªªªÝÜä›ƒªªªªÝÜ@‚ ä›ƒªªªªÝÜ@	 ä›ƒªªªªßÜmÑvm×¤ä›è‚ªªªªçÜœÐM¿�$…“ƒ^úæÝ+‰-—…“ƒ­¿ª âÜµÃÚ�Ñ…“E‹++ÝÜH$�$ä›è‚ªªªªÝÜ€ ä›è‚ªªªªÝÜ 	$ä›è‚ªªªªÝÜ’	ä›è‚ªªªªÝÜH�€ä›ƒªªªªÝÜ ä›è‚ªªªªÝÜ	‚€ä›è‚ªªªªÞÜ	Ã�Aä›è‚ªªªªâÝ±à A…“E‹ðøÞ¾ßÝ@Â„ ’…“E‹æÞñOú¿…“%ƒxx€€çàÛlš­=E‹ä‚ª¯

çáˆ›³%e‹ä‚¿¿
çßÏßû“(Ae‹%ƒªÖçß¹K¿P…“ƒxxxzçæ‚ $fƒ‚‚ªªªªçä°
ÉÐ%‹ƒÿÿððçæ€fƒ‚‚ªªªªçâX‚%�$E‹äz

ªªçåH‚%ƒäz(((*åâØÖ&mŠ
E‹%ƒ¢çãIb'RˆE‹ƒ¯çã‰é˜ E‹ƒ€€ÿÿèã’39’
ÙE‹ƒçäI—]Ó&E‹%ƒxZ§æãXƒ%mÒ¶E‹%ƒ-
€æâi	HE‹ƒøþ¿åá Ù�
9E‹%ƒãáL’$dB„e‹E‹€

¿âß@‡¦X‡me“E‹¯‹¯¿ãÞ‚$Õ«³&…“E‹õ§
äß›Ðv±ã&…“E‹_~ª*äÞ0I®”’…“E‹UUZøäàI¤I;e“E‹UUÿ¯äâ˜†“Ãzªªªªäã  †“Ãrªªªªäá°mmÛ&e‹E‹UUªäâ€�$†“ÃzªªªªäÞ mc[Ç…“%‹Uÿ«
åÝ�&i¿9…“E‹UÕ%åÝœÀnÿÿ'…“E‹_úäÝØÆŽ7“…“E‹Uú øâßÀ¶vÉ–e“E‹õŠ ðåÞ4Iÿë¼…“E‹UUª¢åáN,‰&dBe‹%ƒª¸¸çÝ@n¾íç…“ƒ^úçÞ�#:uû…“ƒ-+ àÜ¤äØŒM
…“E‹ €âÝöK±½%…“E‹``
çÝ“4®K…“ƒÿ_øðèÝ m´]?…“ƒUÿ
çÝP¯Õî“…“ƒ-/¸ èÝ÷�sÏù¸…“ƒpà€€çä@ƒ%]’¦E‹ƒ¯ˆèæ!’f‹‚rªªªªèÝ˜�ù˜ƒù…“ƒ



äÞÔTjé…“E‹W^xXäÞZ:Æ¢q…“E‹��­uæÝR#9’-´…“%ƒ¥çÝ±à
 e“ƒpx^÷æâ€0E‹ƒ¿??/âÜ`M×tÌ$…“E‹ÆªH¢$K²$ÄrãQTVVV²ª9—wù•DZAAªªªª¿ªöc?›8ãQÃI

/%®«É–é–`DZAAªªªª¬ª ‰� I’DZAAªªªª«ª’$’ DZAAªªªªÓªI�¤IžüE‹ãQÕUUÞÇ€…“ÄrÝÜ@$€ä›è‚ªªªªÞÜI2!ä›è‚ªªªªÝª €0…“RÀ@`¯ª°�$qâ8#ZãQVUUU«ªIDZAAªªªª­ªmÚ6[2$DZAAªªªª±ªÉŸ?ÏóDZAAªªªª¿ªI’Û9ç
ãQÃI€ðzÀª9éJ’ãQÃIðú_UÆ²Iç
› ãI¢A€ ªªÆÄ  ÃI£I(***Æ¾‰”É`KÃI‚A    æÅI’Ä‰‘ƒ£IUÕ5çÔ I%ƒCbçâÐªÙ˜½:E‹ƒ/çâñ”J±àIE‹ƒðððøçæH�fƒ‚‚ªªªªçæ	€fƒ‚‚ªªªªçã#€E‹ƒ/¿ÿÿçáñ`’@E‹äz  ªªçæ@  fƒ‚‚ªªªªçå	 ˜%ƒäzªªª€çæIfƒ‚‚ªªªªçæ@@’fƒ‚‚ªªªªçæ	€  fƒ‚‚ªªªªçæ$fƒ‚‚ªªªªçæ@� fƒ‚‚ªªªªçæ$�fƒ‚‚ªªªªçä ²¡%‹ƒ¿¿??åßã¶rMÕe“%‹ÿûârçäR Å6%‹ƒ¾¾þÿçá	—›Ae‹äz  ª¿çã	aK’H;E‹ƒðú¿çÜP­ùõãÿ…“ƒ-áÜNæ¸¶ë…“E‹€€æâh@`
E‹ƒ8¼øàæÜ~NÛ	h…“ƒ«­åÝ.ÝþÚ9…“%ƒ¨

áÝ6é$IL…“E‹ èæÞ±ð
”(­…“ƒpx¾¯çÜX£ùõí¿…“ƒ
çÝ1e&@…“ƒàxz^çäIš¤Û0E‹ƒ€‚ÿÿèÞZ‚ý ƒùe“ƒ­�
-äÝ§•ö›we“{µ¯Š€çäÅPÁ�
%‹ƒþþüüçæ$Afƒ‚‚ªªªªçã’Ù�@E‹ƒ//ÿÿæãI’$†¡E‹ƒ¿¿æáñTW­°	E‹ƒ€€ààæãÀ$XºuE‹ƒ/‹çã¡J$@E‹ƒøøþÿçåI	‘�%‹ƒÿÿððçæ� fƒ‚‚ªªªªçæ@Afƒ‚‚ªªªªçæ‚fƒ‚‚ªªªªçæ@@fƒ‚‚ªªªªçæH@fƒ‚‚ªªªªçæ@fƒ‚‚ªªªªçæ fƒ‚‚ªªªªçÆ€`ƒÃI@€ß¸òçü�ÿ%ƒÃIUUWTÆ¹©P
$@ÃI¢A  ¨ªÆ¿µ IÿðÃI¢A ª  ÆÅR1ªªªªÆÄ R1ªªªªÆYD'ÃI‚AªªªúÆPØó?ÃI‚A*ªêÿ¾; )ÉŸüÃI‚A€þÿ¹4”$IòÿÃI‚A¨ÿÿ 4(—$Iòÿ„j¢A?•UU·6‚tÿI’$äz„juF’õïç%ƒÄzUõ¯ŠtD’îmç%ƒÄrÿª
yH`éÖoŸ6Äz‚AÀ@`p_ 	¶ðTÃIb9ÿúêª_'kŽýÐ&¢A‚A¯ÿdO‘�MÝ´máIå0ªªªªj_Ã¹ÿ›¤ÁI)ªªªªjWIlÀ&qÁI)ªªªªk[Ò"ì6i¢A‚AõUUÔI‰‘üÿýÿÄz‚A•èeð–I’$ƒ¤r»UUèc0Iœ$ƒ¤rŠ÷Õéi }—äƒ¤r*·ÕèƒàœƒÄz×æÓ€$I¶E‹äz**ªÿäâ	A‚�E‹%ƒ ‚«çäÍ–v]24E‹ƒúø¯¯æâ€Ñ¤M:E‹%ƒµ%

åâkÑM–fE‹%ƒÀÀ€€çã€8€-ÙE‹ƒ·/¯�éãédÜDnE‹ƒz~_ÿéæK‚µØÖ¶%ƒäz
«ªªèåÉŠaÀÖm%ƒƒª¿ªªèÞì3ÖÒe“ƒ«ýUçß©ðÒ�e‹ƒppï­èåk»–®%ƒäz
ªª èåÃ†
Û–%ƒƒþÿªªèçH€	f‹bjªªªªèçI$‚f‹bjªªªªèç@€$H’$f‹bjªªªªèçA I’ f‹bjªªªªèç@’H$f‹bjªªªªèçAAf‹bjªªªªèç	�H$f‹‚rªªªªèâX£ÕXƒ5E‹ƒçâ)�JnÛºE‹ƒððçã`1E‹ƒúðððèç@‚H€ f‹brªªªªèç	‚ @’f‹brªªªªèç	A$f‹brªªªªèã˜9’­9E‹ƒèã¶`KñwE‹ƒðððèèã$­Z­9E‹ƒÿÿ/çã¶íØ±E‹ƒ¢¢øzçãIlÛE‹ƒªÿýèä1‹’D
E‹äzªªúúçãrLÇRÑE‹ƒŠŠ/¯æã@‹µmš$E‹%ƒµ%*‚èãñdñä®E‹ƒøøøúæãX‹µkÒ4E‹ƒ
æã[ƒ5m’$E‹ƒäã@ H’ †“ÃzªªªªåãIÈ$aE‹%ƒ€àçãNlÛHE‹ƒÿ¿æãiÒ6@3¬E‹ƒ*äâÉ$ Ã$¥‹¥Šªªªªäâ$É$C€¥“¥zªªªªèãñOñàNE‹ƒðððøçã’
9�ÙE‹ƒ/äãA�  †“ÃzªªªªäãI’$I€†“Ãzªªªªäâ™0$	$¥‹¥Šªªªªãâ A¥‹¥Šªªªªãâ€$H¥‹¥ŠªªªªæâK1éÄE‹%ƒØà€çã‰`K’M9E‹ƒðàŠ
çâ˜#­’&­E‹ƒ/¿¾ãâA$@¥‹¥Šªªªªãâ@@¥‹¥Šªªªªãâ	 $¥‹¥ŠªªªªãâH‚	 ¥‹¥Šªªªªãß‚$I"-9…“E‹Uõ­-ãÞ‚6iu'…“E‹õ¿ªàÞ`’$	“$…“e“	ßÞ	�$H’$&›$„ªªªªßÞ’$I�&›$„ªªªªßÜK×mØ€aÆ›ƒªªªªßÞ�I‚ …“e‹ªßÞI’$A’ &›$„ªªªªßÞI‚ I� &›$„ªªªªßÞ	’ I’$&›$„ªªªªÞÞI’$I’$&›$„ªªªªßÞI€$H’$&›$„ªªªªßÞ’$I’$&›$„ªªªªÞÞI’$I’$&›$„ªªªªßÝ I’$™�Æ›ƒªªªªáÞ)�I›t…“e‹øø  åÞòÛ©äB…“E‹ªX^ãÝŽí˜õÔ…“E‹€âräÞñÖnÜ4	…“E‹èz_UåávHR€(Ñe‹%ƒŠ/
æâ(@$™Äe‹ƒ÷ÿª€åâ+°M×¶E‹ƒ  äâ@È�$E‹ƒ€æãi’$Û E‹ƒ¾¿çâî–îäVE‹ƒàððàçå	2$"%‹ƒª¿¿¿çã	åP	•E‹ƒððððæã	°b@lE‹ƒ°¢¯çáNÊr›AE‹ƒ€þÿçäÙ:`¶m%‹ƒ¾ÿÿÿçã1a
’ 	E‹ƒðúÿÿçâ˜-’@E‹ƒ/¿ÿæá±Sµe‹ƒpà«¯æ¥ E‹Årª*
JäÀŒýûó'E‹B`XVUJÀ÷S)BÇ9ÿþúø<4H¢$Mâ$éA2ªªªª>4O’ÄIéA2ªªªªY4±ð
0è9Ç9úúþÿZRÏ&	�$Iç9Ç9 ªªªbRùP
%×¶ç9Ç9ðúêªjXkÀþöÿßBÇ95UUäS��¼ò'%ƒÇ9+ÕUUçW@¹™$ƒÇ9
µUè_wƒç9½çØ@ƒåzçã 	¦�E‹ƒÿÿúðçæ€$Afƒ‚‚ªªªªçæ€ €$fƒ‚‚ªªªªçâ�
9�½ÕE‹ƒãâ�$	¥‹¥ŠªªªªãâA�¥‹¥Šªªªªãâ	‚$‚¥‹¥Šªªªªãâ@ H€¥‹¥Šªªªªãâ	� ¥‹¥ŠªªªªãâA$€ ¥‹¥ŠªªªªãâH$¥‹¥Šªªªªãâ@‚	€¥‹¥Šªªªªãâ	$	�¥‹¥Šªªªªãâ	 A‚¥‹¥Šªªªªãâ€¥‹¥ŠªªªªäãI’I’$†“ÃzªªªªããI’$I’$†“Ãzªªªªäã$@‚ †“Ãzªªªªäã@’ I†“Ãzªªªªäã@‚I’†“Ãzªªªªäâ`@’$E‹ƒ åE€ˆ9E‹ç9ÀxçP¿>ÿ“?{Ç9`^UUY)°	ÉðBÇ9ÿÿúúY�ÑP9BÇ9¿¯//·›·y›‡bè9UWW7çYIœ%ƒÇ9Õ%çËIÚ6r…“Åz½ªçÜí`O¿›Ü…“ƒzà€çä†mÝ E‹ƒÿÿ¾<çß˜-Þ>—e“ƒ­«êpçäÁÖ­Ûºµ%‹ƒÖö÷½å$û�ýÀ`E‹è9VX`€D, 
BÇ9ÿÿþøDDI’$I’$(Bf1ªªªªäCù�|I’$E‹ç9%•UUäJ�E‹ç9	äã€†“£rªªªªääI’$I’$†“£rªªªªäã	†“£rªªªªäã†“£rªªªªäã†“£rªªªªäã$†“£rªªªªäã€†“£rªªªªäâ@†“£rªªªªäD`0E‹ç9\`€¨CI’$I‚$¦jç9UUUTDC€(Bf1ªªªªDC(Bf1ªªªªDC@ (Bf1ªªªªDC(Bf1ªªªªDC@(Bf1ªªªªDC (Bf1ªªªªDC@(Bf1ªªªªDC$(Bf1ªªªª½DI�¤I’$Årç9ÕUUä}E‹GRäákº¶Àe‹E‹‹ëUUäã†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäã†“£rªªªªääI’$I’$†“£rªªªªäã€†“£rªªªªäã@†“£rªªªªäáØ†ak²¶e‹E‹ýU++äß¦­¶Ó8e“E‹UÕàŠ …“§b@ä�ýûó'E‹èAp\WU$+áœ~Èž	J*ªªªª;�-Ù’#9BÇ9



Ýø!@…“:•%	àÜ&‡¶I’…“e“@äÝBMö.s…“E‹¥¯úøãÞqÛÉÔ…“E‹ ðZãÞ±íÄí¶	…“E‹¨ª{äÞŽ;Ð…“E‹ª¯µàÜD[Jh‡…“E‹ªâÞ‰'RÄ…“E‹ �ãàÖm[:´e“E‹^Þ§¥äàŽ™�¤ Ie“E‹òòWUäÞ“°MX+Æ…“E‹W_¥
äã	 †“ÃzªªªªäÞ˜±šÆ	…“E‹%¥]_äà±R¤MÚe“E‹\^ÿ½äÞ·µMb'…“E‹õ­ãÞ�¦µIœÄ…“E‹µ¯€âáI�$I’ e“E‹êþþþäám4C³6e‹E‹/%%+äá-–i—¤e‹E‹Xxà€äâ	‚H†“Ãzªªªªäâ!�	@¥“¥zªªªªäâ@�†“ÃzªªªªäCp&P4E‹ç9\XPpD?P(Bf1ªªªªDC@(Bf1ªªªªDC(B&)ªªªªD?` ç9Ç9ª***D(P->ýSÛBç9¯¯««DP�9˜ÕBÇ9/++¯*~R?ãÐBç9
*I’$I‚$iJg1ªªªªI’$I’$iJg1ªªªªÜ©�„I’$¥›B-ÕUUÝ�T…“(B	µÝÜ@$ ä›ƒªªªªÝÜ‚’&›$„ªªªªá1ˆ=e‹È9€xÞ2À¬&É“$e‹ç9à\UU-üÓ'"iBç9
ª«mû$N�	J*ªªªª”$IÂi)BBÕ¯ÿß}–dIæ)BBëêÿ@'vB'Bç9ººúè>NB'šƒ9)Bè9««­½I’$I’$jB†AªªªªI’$I’$jB†Aªªªª 1C±O)BB^^^^ã‰�`e“(B
	äÜ�°I£«:…“E‹Z~+äÜP#Ñåt
…“E‹-øXãÝ±éÄlŠµ…“E‹€
­ãÞP"Ù€#Õ…“E‹%%/âÝ’#Ì�äJ…“E‹/úøâÜŽS·­Ô…“E‹ðpäÜyk»íD
…“E‹zZäÞvj›Ó…“E‹¨¨UUäáC·¦iÚve‹E‹õ¯Šëäà�Ñ-Ñ…“E‹µõõÕäß™Ð	�ÐA…“E‹^___äâ	“	˜0¥‹¥ŠªªªªãÞ€muçt…“E‹ÕÝûúãá$‚	Ã�e‹E‹ZÞ::ãÞ´JNì$…“E‹_ÿ¢¢âà 	’!e‹E‹++(øâÞ±dS” Ie“E‹zzUáà@e‹E‹ªªªâ&`0E‹BXpÀ|*¹Ÿû¹�Û‡Zè9UUUT,ÑÎàBè9úúúúâ*	‘„I’$%ƒè9%•UUã4E‹è9	ãá$$¥‹¥Šªªªªãâ€�¥‹¥Šªªªªãâ€¥‹¥Šªªªªãâ$ ¥‹¥Šªªªªãâ	$€…“Årªªªªãâ	�…“¥rªªªªãâ�� …“¥rªªªªãâ€	�$…“¥rªªªªãâ$	’$…“¥rªªªªä: €4E‹çA€À`p>:H’$Ž“8èAç9þÿÿÿ;:I�$H$(Bf1ªªªª;9C2$C2(Bf1ªªªª97	„@�è9ç9¯¯¯¯87çA	2ªªªª87@	 çA	2ªªªª87$$çA	2ªªªª87H€çA	2ªªªª?7Ïó?ÿŸBè9ÿÿÿ¿ã7I˜0%ƒè9•%	ãâA$@€†“£rªªªªãâA$� †“£rªªªªãâ€ †“£rªªªªãâ@  †“£rªªªªçâ®�
®�
E‹ƒzzzzèçH� F‹‚jªªªªèçH 	 F‹‚jªªªªéçd†IB&ƒäzªªªªé¸ ƒeb@ècÀ‚%K’${Ç9`XVUf[}ÒÛÚBE!ªªªªgRmCŠ“`BE!ªªªªè5Iò|·`ƒç9U•%	èµ‘$I€H%‹År
*äâÉ$a’E‹%ƒªªª¯ãâI€H †“£rªªªªçâñ`Ovç¸%‹ƒøø  çæf‹‚rªªªªçæ‚Af‹‚rªªªªçæ	@� f‹‚rªªªªçšÀƒFR`çUO2'`ƒÇ9U^p€vEOþäOŽ$'JÇ9UUUTVKðï�èA¥)ªªªªgZ±Û·Ûç9§1(¨¨¨è]Iš$äz¦1-ÕUèy{æA
èçA’I‚$F‹‚jªªªªèçH$H‚F‹‚jªªªªèç	Af‹brªªªªéè	’	’f‹bjªªªªéèI�$I’$f‹bjªªªªéèI$I’ f‹bjªªªªéèI’$I‚ f‹bjªªªªèèI’$I’$f‹bjªªªªèèI’$I’$f‹brªªªªéè@’$H’$f‹brªªªªéèA’$I$f‹brªªªªèèI’$I’$f‹brªªªªèèI’$I’$f‹brªªªªéè@’$	$f‹brªªªªéèI’$H’$f‹brªªªªéèI’$I$f‹brªªªªéØ(ƒÅrÀé^¶>ƒB€^èOˆ¬ó?ƒÇ9 _Uß ÛçÉ�ØEƒè9à_UUl=�Di“Z7BÇ9\WÕÿd	P+Ú}þ¼BÇ9­¯‚€d6©›³9BÇ9×÷¯¯-èÏä}Ú‡)Bè9¯«ëëU	ùm'›/P(Bè9ªª¯5ÙùŸüÿÝ	E‹èAUUÕ+æ0I’›%‹è9Uõ
ãIy7e“Bµ
äYL‚æ@€E‹Ç9W\pÀdJl‚ýÐ†õç9Ç9
ÿ/aÒ±P/:BÇ9ÿ½-/ÞöðIž$e“B%•UUÞ)…“HJ	ßÞI�$	’$…“e“€ßÞ@‚$A’$…“e‹
ßÞA’$I’$&›$„ªªªªßÞI’$I‚$&›$„ªªªªßÞH’ H$&›$„ªªªªÞÜdB2 ƒ�ä›è‚ªªªªÝÜ‚ä›è‚ªªªªÝÜI ä›è‚ªªªªéÝù�ñ�…“ƒppppéèI’$I‚$f‹bjªªªªéèI’ I’f‹bjªªªªéÜ˜�ù˜�9…“ƒ



ÝÜ@ ä›è‚ªªªªÝÜ@�	’ä›è‚ªªªªÝÜ @� ä›è‚ªªªªÝÜ�ä›è‚ªªªªÝÜ€Hä›è‚ªªªªÝÜI� ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜA	ä›è‚ªªªªÝÜ� ‚ä›è‚ªªªªÝÜ@€	€ ä›è‚ªªªªÝÜH 	€ä›è‚ªªªªÝÜ@‚ ä›ƒªªªªÝÜ@ ä›ƒªªªªÝÜä›ƒªªªªÝÜ@ä›ƒªªªªÞÜd˜0L†ä›è‚ªªªªÝÜH€@ä›è‚ªªªªÞÜÀ�I&ä›è‚ªªªªßÜÃš6IÒ6ä›è‚ªªªªÝÜ	 ä›è‚ªªªªÝÜ� ä›è‚ªªªªÝÜA ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜI‚$@‚ä›è‚ªªªªÝÜ‚ä›è‚ªªªªÝÜ Hä›è‚ªªªªßÜI—¶m²…“e‹ àÜ¤“¤…“E‹ ªãÞIœ¤qç…“E‹€ ¨ZåÞæT
¶í'…“%‹~^ªæÞP­ÙõŸç…“%ƒ­¯
çß’ÏÙ7e“ƒ¯ªèxçäÁÖaE‹ƒþþÿÿçå	 %ƒäz€ªªªçæfƒ‚‚ªªªªçå$€	 E‹ƒÿÿ¿¿çá€0Iö�e‹äzÿêààçå ‚2E‹ƒÿÿÿ¯èå[»Û–lE‹{¾ÿÿêèæI� A’f‹‚rªªªªèæC’ I2fƒ‚‚ªªªªèä±”‰”HE‹ƒúðððèã�#9’#ÕE‹ƒ/çãvœ˜¶hBE‹ƒ€ðøæã[‹5kÒ$E‹ƒæã@³5)�nE‹%ƒ%/øøåâM’tÛlE‹ƒ
åá”H�-9e‹%ƒªª
âáH€$H$e‹E‹
âß[³mÃ¶
e“E‹ªªªúäàNb›¶@
e“E‹ªú^Wäßq¼&’µ…“E‹ª‹¥¥ãÞ“£9“4A…“E‹//¿WâÝ®`WN<»…“E‹h äÞ°MqÛ…“E‹UW  äßP+míoe“E‹µõÞÚäÞ¤C;6—…“E‹+*zPäÜ}j›’…“E‹€UUåÝíCÚÒ&H…“%‹
ªÿUåÝvBº£$	…“%ƒŠúåàñÖI’­e“%ƒøþ¿¿æáÎÔ
.Ð	E‹ƒ€ààðæâ‰E
E‹ƒ€ðÿÿæâÑ€E‹ƒ
ÿÿæÝ´?þ˜9…“ƒ


åÝ�äA/——…“%‹þÞø äÝî`ŽëÛ…“E‹ZZ€¢äÝ�ƒùíÿ›…“%‹
-
 æÝ±àíÆm…“%ƒpxúÿäÝXõ´Í¶…“%‹--
ªãÜ9{·%dB…“E‹  XXäÝ±�OOûü…“E‹PP æÝ¥à
·K…“ƒzxððèáƒ´mÿøøE‹ƒÿû çÜX
öôï?…“ƒ-çÜÝÐ	¯�…“ƒzzxpçâ’iX¢%E‹ƒï¯çã`"Ù’dIE‹ƒ¯þüæãÃ´XŠ%E‹%ƒ§

æß�£9’(‰e“%ƒ--µ·ßÜ[º­k‡n…“E‹¾ªp‚'ø?dbãQTTTT±ªyð\IzÛDZAAªªªª¿«€£9íóçãQÃI%/
²ª1i—$¬ãQÃI
­ª+ÐÍ¶¶DZAAªªªª³ªÏïßm[BãQÂI ¯«±“$ŠDZAAªªªªß­)�…“ãQ	
ÞÜ$‚	‚Æ›ƒªªªªÞÝH‚$Ä›ƒªªªªÝª€%X‚&…“ãQpPX\«ª‚ A� DZAAªªªª¬ª$&!ÃDZAAªªªª¯ªvb;±
9DZAAªªªª¿«1©pSãQÃIðxxxÀºé$ @J@IªªªªÀ¿  J@IªªªªÆÀ¥�
©OÃI¢A¨   ÆÅ‚R1ªªªªÞÄIþÿÿóäzÃIUUUçÆ`$AE‹£I	âÞ ¨Ä´)…“E‹«‚âæà±—	h…“%ƒêêÿõçå!€˜�%‹ƒþ¾¾øçã´à	AJE‹ƒúððúçæ fƒ‚‚ªªªªçæ@H�fƒ‚‚ªªªªçæA fƒ‚‚ªªªªçå  E‹ƒ¿¿¿¿çàþðs‰ëÿe‹ƒpàçß ·e“ƒU_zxçæ@fƒ‚‚ªªªªçæfƒ‚‚ªªªªçæ@fƒ‚‚ªªªªçä†mXƒ5E‹ƒÿ¿//çäÉ�Û�¶E‹ƒúøþªçâ©P-9E‹ƒ¿¿/æá¶°
®wE‹ƒàððçä€�$E‹ƒÿÿÿçâ Ú6E‹ƒ¿??áÜØ6Ç³½Ø…“E‹+âÜŽíØŽ—…“E‹€àçÜ1å
 …“ƒàx~Wçä[ŠµÛ¶5E‹ƒŠ¯ÿ¯æâ�	Ù�9e‹ƒ¯/-/åÜP«µµë¤…“%ƒ
æàÜ4@ÃÈ5e‹%ƒèÖ&æÜP�ÙõíÇ…“%ƒ-çÝ¹yS¦P…“ƒ àz^èæ	I"$H%ƒäz¨ªªªèà›Àm¢£9E‹äzª¢

çÝ(‰¶]?…“ƒµ¿
æÝþô±…“ƒàpppçä)ÐlÛ†­E‹ƒøúÿ¿çã� RvâÄE‹ƒÿÿçãD‰Ž�˜E‹ƒÿ¿€çãLì$$%E‹ƒþÿçâqÝ¶ÛAE‹ƒÿÿçã1
„ÑE‹ƒàøÿ¯çå’’E‹ƒÿÿÿúçæI�$fƒ‚‚ªªªªçæH fƒ‚‚ªªªªçæ �fƒ‚‚ªªªªçæ	 Ifƒ‚‚ªªªªçæ€fƒ‚‚ªªªªçæ@fƒ‚‚ªªªªçæ‚$%ƒäzªªªçæ$@�$%ƒäzªªªçå$€Hfƒ‚‚ªªªªçÂjù€%ƒ£IXpÀÌÄ·oû¶;ãQ£IUUÕÔÆÀ°	É�ÃI¢Aªª  ÆY$ÃI‚AªªêúÅY�³$I’$ÃIb9¨úÿÿZYI$I�$áIå0ªªªªZP  áIå0ªªªªW<ÿðÏô”¢A‚Aððð Y;Û¶ö�P¢A‚AÿÿúàZJµ€$±áIå0ªªªªR;	Ý®X/&äz‚A	
R�kS %ƒÄzâú_WWc"Ù€&AƒÄz­õÕ_6­ìO'Äz¢APPX\?Î×Ÿ$5	ÃI‚Aªªêÿ_L@öòáIå0ªªªª_7 mµý$¢A‚Aÿÿª`7°m¶�$¢A‚Aÿÿªb9°M¶›ä¢A‚AUÿª€d9$�[O>¢A‚AÕÿ¯*W!ëMÇåT
äz¢A••j;ƒDm›Ï>äz¤rþ®

jA€´‘ÿŸääz¤rÿªlD@nÉ�Ääz¤rÿêkY¥Ñgó6Äz¤r½¿¾ª�9T×ÿÿ'äzÄr¯ÿà9”p—I’$%ƒÄr¯ÿÿæ@°	y›ü%ƒÄrªÿÿæVœ�¼E‹Är

/½çº’$
E‹ƒ øÿçã¶m'�
ØE‹ƒ¯èã©mÛÛ&E‹ƒª¨ÿÿèäN’Ä$	E‹ƒªªÿ_èæ$IIf‹bjªªªªèåÛ¶mÛ²¡f‹brªªªªèà­±>•LE‹ƒ/+ààçà÷K@E‹ƒð°¾ÿèàµ”ÿ`Oe‹ƒpppðèâqZÌ&E‹äzÿ¯èåÃ°mlf‹bjªªªªèç@‚$f‹bjªªªªèç	’$I€f‹bjªªªªèç@‚ Hf‹bjªªªªèçI‚A f‹brªªªªèç	I’f‹‚rªªªªèãšƒ9š#ÕE‹ƒ/åãL’0IE‹%ƒ€àèãñä
$E‹ƒðøÿÿèç$Hf‹brªªªªèç’€$f‹brªªªªèçI’$f‹brªªªªèâPÕP£ÕE‹ƒ/æßP­9·k—…“%ƒ­/ªúçâ®WîàE‹ƒ€ððèå6`Ã
¬f‹‚rªªªªèãÐ²ÕëVOE‹ƒ­¯úúçä�¬C²&E‹ƒúú¯/æãÐM×$E‹%ƒ_Zê€çãvl›‚ @E‹ƒ‚ªÿÿèã�½9�£9E‹ƒ¯///äãI‚$A†“ÃrªªªªæãIÒ$X´E‹ƒçã‰cÛE‹ƒÿÿèä‰¢ ŠE‹ƒðøÿÿèàPõ’&IE‹ƒ¿ÿçß¯änš5e‹ƒà 
çß#In±ä
e“ƒªªøxçâ©Ô
@E‹ƒðøÿÿèäDI±�E‹ƒÿÿúðçäíÚl†-E‹ƒúúÿ¿äãH‚$†“ÃzªªªªèãqöOE‹ƒððððèã[5’*iE‹ƒ/¿ÿåâiÛ´-°E‹%ƒ  äâIÂ„`’¥‹¥ŠªªªªæâqlÚ’@E‹ƒ¾¿åâÐM»¶E‹%ƒø äâ I’$’¥‹¥Šªªªªãâ€	�¥‹¥ŠªªªªãâI$¥‹¥ŠªªªªãâH€ ‚ ¥‹¥Šªªªªæâ‰íØ¦dE‹%ƒ°ÐãÞšƒ%sRÛ…“E‹-)¢ÞÞI’$I’$&›$„ªªªªßÞI‚ H’$&›$„ªªªªßÞI’$I$&›$„ªªªªßÞI’ H’$&›$„ªªªªßÞA’$I’…“e“ ßÎ€5…“e‹xß¾€ðä…“FƒÿßÍ�
…“e‹-ßÞ’ 	’ &›$„ªªªªßÞI’$I$&›$„ªªªªßÞH’$	‚&›$„ªªªªßÝ$	!I’Æ›ƒªªªªàÞIÂ$I˜…“e‹€àäÞNâ¶Ü6…“E‹ªþWäÞ1ÙRÛ$…“E‹èz_UäÞ[­5Ú(a…“E‹¯-µÕäÞ1	‘…“E‹ppppçá­M6Ó8aE‹ƒ¾þãß¤ä�¢e“E‹úð]Uåß±Oe=6…“%‹Zúª/çÞœÔ
·�e“ƒúzp`çå$	’ 2f‹‚zªªªªçã9�(	E‹ƒ//ÿÿçâ±g{ÚAE‹ƒ€€ÿÿçã$‰�9E‹ƒÿ¿//çâö`±Ð	E‹ƒðððøçâ�$IÐ9E‹ƒÿ¿/çà4I¿se‹ƒÕÿpàæâ B
&E‹%ƒZº-çÞÀn­ß>e“ƒ_ú

çß4i1³e“ƒUÿ¨¨ä¾’$)…“%ƒÿ«@åÀ=zòäE‹(B`XVURòÛåÄ	)BÇ9*ªþÿYñäJ@BÇ9àøÿÿå4I’¤	q%ƒè9UÕ5
æ_¦@E‹'J{€æUI2:€%ƒç9U~€åEÿÿÿìˆ%ƒç9UU^€†RÿÿÿùþGRÇ9UUU\ZWlÛ°!(B&)ªªªª[4P‹Ù˜½&è9Ç9¯¯¯«_EÐmåo&ç9Ç9ø¨]RØ°­ßòíç9Ç9*ª((ÒE¦ðßÉŸüåzç9/UUUç>`
É›ü%ƒç9+ÕUç>�˜ƒè9
õç¶@E‹år

 ­çã‰‹”(@E‹ƒ øÿÿäâC&$	2E‹ƒãâ	�	¥‹¥ŠªªªªãâA¥‹¥ŠªªªªãâA ¥‹¥Šªªªªãâ€@ ¥‹¥Šªªªªãâ@A¥‹¥ŠªªªªãâI’’¥‹¥Šªªªªãâ¥‹¥Šªªªªäâ$C2dB‚¥‹¥Šªªªªäâ!C†dB„¥‹¥Šªªªªãâ�H‚ ¥‹¥ŠªªªªäãH’I†“Ãzªªªªäã@’$	’ †“Ãzªªªªäã	’$H‚ †“Ãzªªªªäã$	€†“Ãzªªªªç­(E‹Årªjç¨êïä%ƒB`\Uœ<ðmÛ÷ÿ'fZç9TUUUbK4I”N(ç9Ç9þþ>>Z)’ 	É�:Ç9ÿÿúðçöcß-Eƒè9UÕ5ç©0%ƒ(J
çß�&�’9e“ƒ•½--áÜs\Ûv¶…“E‹êçÜÉm»Û6…“ƒ€þWçäR 6E‹ƒ<¾ÿÿçßÉ`›@e“ƒpz_UçäÛ:´[²6E‹ƒ¯¯//äÝ�ƒõ€@…“E‹%ÕUã,KŽýÀ@e“èAVX`€QCÿÿÿÿ�çBÈ9ÿÿÿþDC(Bf1ªªªªäDÉ�dI’$%ƒç9%•UUäFE‹È9	äà ‰�e“E‹UUZZäà�PÚe“E‹UU¥¥äâH†“£rªªªªäã†“£rªªªªäã †“£rªªªªäã†“£rªªªªäàP &e“E‹UU¥¥äâ†“£rªªªªäD`,E‹è9X`€³DI’$I‚$¦jç9UUUTDC‚@(Bf1ªªªªDC@(Bf1ªªªªDC  (Bf1ªªªªDC (Bf1ªªªªDDI’$I’$(Bf1ªªªªDC(Bf1ªªªªDC(Bf1ªªªªDC€(Bf1ªªªªäD�‰�E‹ç9	
%5äã†“£rªªªªäã†“£rªªªªäã†“£rªªªªäã  †“£rªªªªäã @$†“£rªªªªäã†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäãH†“£rªªªªä¢ E‹¦b@àþLò$e‹BpXVUBX‚ýS;ŒBÇ9«ª®Bd.µ‚´mBÇ9
ª®ªãø'@E‹èA•5
ßÜmÑfX‡u…“E‹áÝ
�vœ„…“E‹//€ãÝNi·)Œ…“E‹€€¯·äßÖaÉ�e“E‹WWXXäßÎdae“E‹pZUUäÞX:4]»…“E‹%-ªªãÜÎû›÷à…“E‹ pxãÞ›½ÙPÙ…“E‹Š‹�­äâC€&e‹E‹××·¬âß¶mÛÖ6e“E‹ÿ¿¿*ãÞj¼ºÎ…“E‹ªxPäàDH$I'e“E‹UUÿ«äáíÐé�®e‹E‹ZZXøäßØ†­[»6e“E‹õõ½«ãÞ$AÝ·e“E‹×Uú ãßv$J@	e“E‹ª_~äá
 @»%e‹E‹×•µ-âßÍ–tíl…“E‹êâêÿãáI’$I˜e‹E‹€àäâ!€†“ÃzªªªªäâÀ†“Ãzªªªªäã†“£rªªªªäD€àE‹B`@ÀNCùÿçÏ�üçAç9ÿÿÿþDC@‚ (Bf1ªªªªD?”Lç9Ç9¨¨¨D?�ç9Ç9*ªª€D>N"@è9Ç9ª«««C€&m¬ý'BÇ9¿¯ª
CÒ,a¥—BÇ9¯¿úª8NBßÐIBç9«ÿ9Ib?šÕBç9
/I’$IbiJg1ªªªªI�$I¢'(BB¿ÿÿýÞ�Išä…“(B%ÕUÞ0kò?e‹è9`^U`x™·Ïýä§bBTUUU>O™”•PI:Ç9¢ þþ<(O^¿˜»¾èAÇ9ªª¯¯D.·3`6¨è9ç9ª¿¾ª>$Iß‚-X÷Bç9ªúºª/Oës>õBè9 ¢âà?y÷—	lBç9  ª¯:â3>�ù)Bè9¯¯½½
I’$I8)BBªªª¿I’$I�jB†Aªªªª»IžäI˜{BUUÕäŸ E‹ÆjâÝ˜­ÆuÜv…“E‹
¢äÝ¦ÐM½9…“E‹^^§-åÝÒ&I®…“%‹ÿßzxåßIÜ8jÚe“%‹­åÝÏmÛœ&A…“E‹"WUäÝ9wS¤0…“%‹àèz_åâí¶ÅÐ¬E‹%ƒ ªªåà’iRÛ:e‹%ƒªª
äâ H"I’$¥‹¥ŠªªªªäáÚ)Ðe‹E‹ßZX^ãá$@C2e‹E‹Zú¢«âßØ€µ[‚¥…“E‹ÿ«‹¯ãài»­[le‹E‹€¯ö¥äß�´mR#Ôe‹E‹Þ»
âà$@�e‹E‹ _øêäám—í�¬¥“¥zªªªªâáI‚$@‚$¥‹ÅŠªªªªâáH$I�¥‹ÅŠªªªªâá	 ¥‹ÅŠªªªªä;h5
@E‹ç9\pà€fÏýØ¾
»'Jè9ÿÿÿü-*m×¦IŠ¤IBE1ªªªªä-É�|ÉŸü%ƒè9%•UUã?E‹è9	ãâH�¥‹¥ŠªªªªäâI&LÀ„¥‹¥ŠªªªªæâNBÛDIE‹%ƒ ÞÞäâL†$Ã0E‹%ƒ¨ª¢‚ãâH	$…“¥rªªªªãâA @$…“¥rªªªªãâ�$@…“¥rªªªªãØ E‹%ƒªªªjâ9X'Lò$%ƒç9X\VU;:A’I’ (Bf1ªªªª;:I’$I‚$(Bf1ªªªª;9$C2$2(Bf1ªªªª97	„`ˆ„è9ç9¯¯««87@$çA	2ªªªª87çA	2ªªªª87HçA	2ªªªªI7ÿÿÿÿóBè9ÿÿÿ?ã7I–0E‹è9•%	ãâH$IE‹%‹¨¨¨¨ãâ	€$†“£rªªªªãâI †“£rªªªªçâ¶m·éä
E‹ƒªªúzçâ‰Ý:Z¬E‹ƒªª¯½èâé�NîàRE‹ƒzzzúèæ � ’F‹‚jªªªªèæ ‚È„f‹bjªªªªè® ƒfZ@è^À&L’${Ç9`XVUg[´�öý<BE!ªªªªgR i$Ý6BE!ªªªªæJÿÿ[¹%ƒÇ9U•%	èÂ  %ƒÅr�€€èæ €™„%ƒäz«ªªªçâªƒ9�#ÕE‹ƒ¯¯¯¯äâI2aBE‹%ƒªªªÿçâiå
¶àE‹ƒúúúúçæ$@$f‹‚rªªªªçæf‹‚rªªªªçæf‹‚rªªªªçæ€ f‹‚rªªªªçå€0f‹brªªªªåGâÈ%ƒç9XàåJI’$|ý%ƒÇ9UUVXaY÷vn™ä	Ç9†1    b^±éP¤$&Iç)ÿÿÿÿÒ`I‘äI’$¥j§15ÕUUèa@±�œƒÇ9-ÕèÞ$ƒåzªªª©èç€$Af‹brªªªªéèA’$A’$f‹bjªªªªéèI’$	’$f‹bjªªªªèèI’$I’$f‹bjªªªªéèI$I’$f‹bjªªªªèèI’$I’$f‹brªªªªéèI$A’$f‹brªªªªéèI’$A’$f‹brªªªªéèH$I’$f‹brªªªªéèI�$I’$f‹brªªªªéè	’ I$f‹brªªªªé¾0ƒ†j`édÐX'ƒÇ9à_écÑN’$ƒÇ9èWUÔcý$I’$ÅrÇ9øUUUf5`‚%	BÇ9­­õUdObÀç9Ç9<<ÿÿc%Éfo›mBÇ9úú_õ^ÎãüÚhBÇ9ªªÿõ�yysäHgRç9_WU5Ý5öó?‰Éf“ç9UUµ
ÞO~w…“BU½åq)%…“&Jµ*æÝ¯ÐJûä…“%ƒzz èÞ&A­se“ƒßßxàæÞMºžP«¹…“%ƒ‚‹­­èÞ&hS;9…“äzþÿ¯/âó>€e“è9W^pÀ)ZíÛÍ�iIJ‡)ªªªª$IÁ	J*ªªªªÞ¹�I–¤…“B5•ÕÞÝ@’Ä›ƒªªªªßÝ$H!A’&›$„ªªªªßÝ I’dB&&›$„ªªªªÞÜ„$Iä›è‚ªªªªßÝ‘$“$Ä›ƒªªªªÝÜä›è‚ªªªªÝÜ‚Aä›è‚ªªªªÝÜä›è‚ªªªªçÜ¯ð
¯�…“ƒppppéæÛ†mëÖ¦f‹bjªªªªéä’ uZ½&E‹{ÿÿ¯
èÜPõ˜£=…“ƒ


ÝÜ@ ä›è‚ªªªªÝy€†5…“çr€xÝLi¬ý$…“§b€þUÝL 	v™ä…“§b
¿UÝx�…“çr-ÝÜ$ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ@ä›è‚ªªªªÝÜH ä›è‚ªªªªÝÜH�€ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ�A ä›è‚ªªªªÝÜH$ä›ƒªªªªÞÜ!I†$�ä›è‚ªªªªÞÜ2Ä›ƒªªªªÞÜ@2 2ä›è‚ªªªªÝÜ€	 ä›è‚ªªªªÝÜA ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ	‚ä›è‚ªªªªÝÜ@‚€ä›è‚ªªªªÝÜ Ä›ƒªªªªÞÜ$I$I2ä›è‚ªªªªÝÜ@’$Aä›è‚ªªªªÞÜ!‘d†ä›è‚ªªªªåÜ­àwùÜ…“%‹xx åß‚Iq›8e“E‹UU ¨æß­fB7”s…“%ƒß_XøãÝuB»Øº�…“E‹½¿ßÜ[±K±…“E‹€€€æß0h“Ã=e“ƒ~¾.
çÞ´I·›¼…“ƒUÿ €çä0l[›$E‹ƒÿÿ®çä0`�6E‹ƒÿÿÿ¨çäÀ: Àš,E‹ä‚¿¿¿*èà9•ÿpOe‹ƒ`ààðçß�9le“ƒ-
­õèàï”N”$Ae‹ƒðpþÿçã	ÚvL›E‹ƒ¯‚çäÛ²-ÖuE‹ƒ//ÿêèã±àJ E‹ƒðøÿÿèä‚(QPÙE‹{¯¯««èæ$C0f‹‚rªªªªçâu¼v’E‹ƒ‚ÿÿçã¤-9’ÑE‹ƒ
/åáP"&’De‹ƒ
ªúäâ@B„!A†“Ãzªªªªåá¶#Ù’$e‹%ƒ
ªªäáiÑ€me‹E‹x^UýäßIP«&e“E‹UU¥
äàP"%E…“E‹¥¥UUäá0lCŠµ†“ÃzªªªªäßÚMš
9e“E‹õU¥¥äà¤,ˆ4›e‹E‹?•¨€ãß‰éØ
�…“E‹¢ª¿¥äÞÉoµMÚ…“E‹Px*+äß I‰›Ä…“E‹UU¨€åá’@I6™Äe‹%ƒºªæâ$E
1SE‹%ƒêêààæäI�$A&E‹%ƒ«ÿÿ«æå	%ƒƒ€€€æå€%ƒƒªªªæâ-1E‹ƒÿÿæÝ�Ù»­…“ƒ
/ªªáÜqg»uŒi…“E‹€ªæÞ¦hJ©ð
…“%ƒúþxxæßÉés M…“%ƒàú_ÿæÞ’HP-=…“%ƒWõ­
æá“:až�E‹%ƒ*žxpæÜµÍ:`
Ð…“%ƒ-æÝOž»9u…“%ƒ€ðpæÞ¹`J’i…“%ƒxzÿõæÜX
ù�/:…“%ƒ/

àÜ¶�Ä1iC…“E‹ çÝññp…“%ƒppppçä[²mÛº¡E‹ƒ/¿ÿ¿æâ$@¦àPE‹ƒððàÀæà	±PÙe“%ƒõ­­­æÝR
9R/õ…“%ƒ-
//ßÝ$	’dB&Æ›ƒªªªªÐª|²'z‚'äzãQVVTT®ª’¦i'DZAAªªªª°ªb±vè¦DZAAªªªª»ª@ôíÿ?ãQ£I
«ªH@ DZAAªªªªºª'ðJý?ãQ£I¸ ±ª¨/'Í“?DZAAªªªªÝ«‰�‰‘…“ãQ%%5ÞÜ ™�aB’ä›è‚ªªªªÞÜI†I’ä›è‚ªªªªÝªp‚'ú³'…“ãQ\TTV¯ªIR'Z"DZAAªªªª²ª‰•7ñ[ãQ¢I€€¼ª›5P£9ãQÃI//¶ª7‘{O˜§ãQÃIà€€À¶@’R@AªªªªÀ¾ €€J@IªªªªÆ¿ñ”SñsÃI¢A   €Ö·mÛÚíSäzÃIUUU5äÂ¿�”$Ie‹ÃI%	åÞ.poÿ�$…“%‹Zú æÞõäÿ™Ç…“%ƒzz €çäÛ: ÃR %‹ƒ??>¼çàö”Ï`e‹äz àààçæIH�fƒ‚‚ªªªªçäÀ°
X‚µ%‹ƒÿÿçåH€H %ƒäzª*((çá 	Ž`E‹äzªª  çæ	fƒ‚‚ªªªªçßâù�e“ƒ­õUçàñ`
“E‹ƒàøþÿçæfƒ‚‚ªªªªçæH ‚fƒ‚‚ªªªªçæ@‚ fƒ‚‚ªªªªçã’È€1E‹ƒ¿¿¿/âÝÐ {³×d…“E‹ë‚‚€çáS3Í:�e‹ƒ..¾¾ßÜÀ°th‡…“E‹¢‚áÜÛÖÖSi…“E‹ª
ªßÜ�6I…“E‹**ÞÜ C’!‰�ä›è‚ªªªªçÜ÷ÿp…“ƒàpppçæAfƒ‚‚ªªªªçàÚ£ýÐAe‹äz«¿åá&c2#)E‹%ƒ
àÜ´I›ŠI
…“e“@äÞv’8G	…“E‹þWæÜl»	@…“%ƒ€¯õèà”@m­Kçe‹ƒÞþ
èæH’!%ƒäzªª¨¨èå[ƒÛ°m%ƒäz
ªªªèÝÛ±€e“ƒ-õUçÜñÐ…“ƒpx_UçäX¤Ø†
E‹ƒ/¯ÿÿçåLH	%ƒäz¨ªªçåafƒ‚‚ªªªªçæ€fƒ‚‚ªªªªçæ 	fƒ‚‚ªªªªçà˜ƒ9Ò
ae‹ƒ¯¿çß¯�÷Ð
…“ƒzxxzçæ@fƒ‚‚ªªªªçæ@ fƒ‚‚ªªªªçäéÐÛ%‹ƒððÿÿçæ@€fƒ‚‚ªªªªçæ@ fƒ‚‚ªªªªçæH€ fƒ‚‚ªªªªçáX¢ÙÐ&	E‹ƒ¯ÿæàR«Å�
µe‹äz


çåE‹ƒþþþþçæ	$ fƒ‚‚ªªªªçÀú�ý@`%ƒÃITXp€Ê¿%G¶í�>ãQ£I_õÿüÆY@8(ÃIb9à   ZY	’$A’ áIå0ªªªª\YI“¶I�$áIå0ªªªª_;’(­�/>¢A‚Aÿ¿¯K6�M'€-p¢A‚A
ªW7É{»œ$H¢A‚A€€þÿW6R-9��Ù¢A‚A/Z6~rûÜ8`äz‚A%5>4à$K‚$Eƒcrªªªª@4�»¹›¿EƒCrªªªª;.h"i’$IÄr¢ATVWU:4!AnÉmaI:ªªªªA7ôÿþç¢A‚A(;7HlÇŽmÇaI:ªªªª87€aI:ªªªª;9I�$I’$aI:ªªªª@9€“$I’$¢A‚A
C8÷ðüÿÿÿ¤j¢AY9ö�›ñäzÄr  dOq[	“ÐNäz¤rªêêêh;›$HP­=äz¤rê¿/a: m¶�Ûäz¤r»ªZ9˜ƒ9öó$äz¤r

A9ÿñÿý?EƒCjªªªªQ78õó$äz¤r

Q7õ›{1Cäz¤r  §8¦`ß¿�ÜäzÄr*ª åG`NÉŸ<ƒÄr«ÿÿè? ®�x%ƒäzªŠ	­èÔ�ƒäzªªª¯èålÛ²¡f‹bjªªªªçâ¤ö”´E‹ä‚ÿú  èà®ÔJ¿�Oe‹ƒzzppèçA$If‹bjªªªªèåÍ‚!Ø¶af‹‚rªªªªèáOù£ AE‹ƒÀðÿÿèä‚RR,&E‹ƒÿÿ¯èÞHP->…“ƒUõ­/èÞ æ�se“ƒU_zàèæ‚ &f‹brªªªªèæ I’C2f‹‚rªªªªèäŽ`KE’E‹{êêúªèåØ²aÚ¶fƒ‚‚ªªªªèä‰eK"@ŠE‹ƒðúÿÿèåÃ°m¶¦fƒ‚‚ªªªªèåÃ†Ú6%‹ƒÿÿÿ/èâ¦mléÄE‹ä‚ÿ¿‚çá°aÒº5E‹ƒúº/
æÞ@Jÿûä…“%ƒ]‚€æÞ’‘ã³5…“%ƒýµ//çÞPNùûä…“ƒ^ú€çâ€¦µ®m'E‹ƒ¯¯æâ€(Ñ$é$E‹%ƒµ%*äá¶­Ú-E‹ƒ
äß’´MÎ`Oe‹E‹Uz``äã� H E‹ƒªäâI� Ã$e‹%ƒ«ª*
ãÝ I´Y§…“E‹U÷‚äß€°
«½Åe“E‹Uu��çäX3,V E‹ƒ//þþäã$H€ †“Ãzªªªªåã$‘„IÈ$E‹%ƒê€èä’m	±KE‹ƒ¿ÿøøèâœ mµË6E‹ƒþÿèÞ¤I-ù”e“ƒÕÿª èãö`o‰kÇE‹ƒðð€èÞ�ù˜3>…“ƒ­-
äáÃÖm–e“E‹UWW^çã¶C±SE‹ƒððððæã-ÐbMÛ´E‹ƒú°åâK»¶ëÐE‹ƒààæãI’vÛ0lE‹ƒ€ÿÿæâ
9�‘E‹ƒ/åâ-�iÛ&E‹%ƒ  ãâH ¥‹¥Šªªªªãâ€ � ¥‹¥Šªªªªäâ!Ã„aÀ¥‹¥ŠªªªªæâvlÛ$IE‹ƒþþæâ&hŠ
:E‹%ƒ�¸-	ãßI‹‘e“E‹¢ûÝµàÞL‚$H˜$…“e‹ßÞA’$’$&›$„ªªªªßÞI�$H’$&›$„ªªªªßÞ@’H’$&›$„ªªªªâ`@À
5e“Çj€àxÕMK?O’$F‹‡Z ~WUzM��$I’$ÇjhRÿÿÿÒM¥�›Iž$f‹‡Z
½ÕUß_ �
…“Çj-ßÞA’$I’&›$„ªªªªßÞI’$I’&›$„ªªªªâÞ±“8±`…“E‹ èèâÝñà
Pµ…“E‹àè««äÞ¤m\M&…“E‹Uõ¯
äâ$Ha’¦‹£Šªªªªäá[³­Ø†µe‹E‹5µÕ­ãÞñPK’$H…“E‹pzßÕæßÔj	™”e“%ƒ_úà åá¢D¤d'e‹ƒúú æáµÓ¶íàNe‹%ƒ"øxçßÉpOÚ(�…“ƒpú¿¿çã#:1mKE‹ƒ/ øçâ®¶´JE‹ƒøððâçåÀ$f‹‚zªªªªçå €˜$%‹ƒ¿ÿÿªçã I¦àPE‹ƒÿÿúðçâšÙš£9E‹ƒäà$$“dLÛe“E‹_õ­íæàdLÚ“Fe“%ƒ««ÿ_æávìµP¬E‹%ƒ-åß@c;6e“%ƒÿÿ«+ä
€ðX‚&E‹B@pX\*
‚ Ij¿Bè9êê€ªY+·y›ñt
è9Ç9¨¨èøàRI’¤I‘E‹Ç9UÕ5
æ“ e‹†b	€€çãI’Ä"IE‹ƒÿÿæâ´cÛ’@E‹ƒ¿¿æâ¤
¶EÛE‹%ƒx`€ç˜X%ƒfZxåR~‚õE‹Ç9Wøæî'¢@E‹èAUU~€£1¶}Ûù�ù¦jç9UUUxZR“6i�)ç9Ç9ªª((W6 IµÝ':Ç9ÿÿ««W;¶�ÿ�¿è9Ç9ÿ¿ªªY>Évo0è9Ç9úúþÿ¶Añ�üÿÿ¦bç9-UUUæUðRI’$%ƒç9­UUæ>æ”Ä%‹è9+ÕåŒ�
E‹fZ-çâqœØöÔ
E‹ƒàúèâ±ãºÜ¦	E‹ƒÿÿèâ‰c·›@E‹ƒÿÿèâ‰Ý¶Û&AE‹ƒÿÿçâŽÓÖ’@E‹ƒ¿ÿçâŽc»îÔ
E‹ƒàúèãqçnÛaE‹ƒàøÿÿèâ¬3ºäÖE‹ƒúðçâ‰Ý¶’E‹ƒÿÿçãIb'’ÐE‹ƒ/äã’$H$†“Ãzªªªªäã’†“Ãzªªªªå6€>E‹Bà\è¿>òüƒBxVUUU9¯PBÇ9àøøú[6~ì¼>ÕèAÇ9ªêúÌYù“?yžÅrÇ9UUUçJÉù
ƒç9Õ-çÚƒåzçßI�-&e“ƒUý­	çä[²alE‹ƒ/ÿþüçäI:`ÃÖvE‹ƒ€ÿÿúçàmÚ/:e‹äzþ«

çã @–‡E‹ƒÿÿþ€çÜlP­9e“ƒU½-åÜ$IíK…“%ƒõÿøðääI’$I’$†“£rªªªªäâ	†“£rªªªªäD{=€@E‹çAVX`€YCI’$I‚$BÈ9ÿÿÿüDC(Bf1ªªªªä7ÿð‡ÿó<%ƒç9%•UUäE‹(B	äâ@†“£rªªªªäã€@†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäâ †“£rªªªªäÞ€´mtBÛ…“E‹UUäß°ñ�…“E‹UUXXääI’$I’$†“£rªªªªäDX,E‹ç9X`€¿8ÿÿ?ÿƒ?Ærç9UUUTD°	É�BÇ9ÿúêêDC@(Bf1ªªªªD/l˜ƒ9è9ç9ÿ«««D/°	ñè9ç9ÿêêêD?` è9ç9ÿ¿¿¿D4°AÏ–lè9ç9ÿªªªD/°mNìÄèAÇ9ÿªªª½?I�ÄI’$Ærç9ÕUUäXE‹'Jäâ@0†“ÃzªªªªääI’$I’$†“£rªªªªäâ	À€†“ÃzªªªªäáÀŠµ@´e‹E‹õ¥%µäá°)�ne‹E‹UW^Xäâ!�†“Ãzªªªªäà�`Å…“E‹UU¥¥ä¤ E‹Æj@ä3ÀŽ=ûó$%ƒè9`XVU:Û@Îé¿Bè9ÿú¢ªD4Â"à’Éè9ç9ª¾¾ªàúX±Pe‹BÕ5
äÕÙHŽ…“E‹×UäÝÏsß6Å
…“E‹zZäÝ‰i—š�µ…“E‹ ¨-¥âßXºe0`e“E‹ªÞßãÞ’0iu—t…“E‹wÿêàäÞ€&±£3:…“E‹Õ¥+áÝMÚvb›…“E‹

ãÝ¥äI©à
…“E‹úúxXãàmÓ6m·e“E‹¯¿ÿäÞ±äN`e“E‹XXWUâÝµÓØµ[…“E‹¢âäÜ©àJ¥´M…“E‹Pxú¿âÝX‹9ª½Æ…“E‹
âÞ”`J1eJ…“E‹þª¨ºáÜÐŠµs\Û…“E‹
àÝX·&i’$…“e‹

ãÝdY¶é–B…“E‹ªªøPâßÃ�ÉÖ…“E‹ÿêâêãá C0dB2e“E‹õµ¿¿äÞœ@J6—t…“E‹_Zè äÝM£]?…“E‹UU/
äÝ i¶›ß…“E‹UU€€äß€ h­ÝÆe“E‹UU�äáZ4E‹%ƒªª(à´­ÿø&e‹è9WV\XDhÛ>BÇ9ÿ¿¯ªC¤ÔJ®�—BÇ9ÿÿúúD4É��$ç9Ç9€€€D3ð'èAÇ9ÿÿÿª¦)OIJ‡)ªªªªšÀ$LÒ$iJg)ªªªª9®O¹�$Bç9ø 3´I¶ý'Bç9¿ª,¶`¿™¤Bç9  €.}²>�8Bç9

I�dIÜ>iJg1ªªªª>Â:�®KBÇ9¿¾øð:Oþ»öÀBÇ9€âúH¶mÿš9BÇ9ª
//@-wSñBÇ9ª ààH,›³ù’Tè9Ç9**ªêD¤?>˜ƒ9)BÇ9«+//07‘wÉ�Ü)Bç9êêªªB4I/™—Bç9ÿº¨ 3`¢Æã-þBè9‹««:›8@/õ)Bè9¯µµ¿I’$I)BBªªª^ãy‘¹ðe“(B5
äÝ›D
¯�…“E‹U^XPäáÍÖ-¶ae‹E‹ðZZßâÜP�Õ«C×…“E‹)äÜ¯©dO…“E‹PPPðãß‚@JŒé$e“E‹U_‚äáÙÐé�e‹E‹_ZXXäÝl­=…“E‹UÕ%
ãÝkY×®�…“E‹ª¢xxäÞ¶ëÄ£•…“E‹‚‚­¥äã	†“Ãzªªªªäß’´P
%e“E‹Uõ%åá$E	¦Je‹%ƒª¨  åâ[ƒmÖnE‹%ƒ
ªª åâk²%ÛŠ­E‹%ƒ

*+äâHLÂ$E‹%ƒªèäáÛ`@‹5E‹%ƒ*+
âáA€$I$¥‹ÅŠªªªªâáI’$’$¥‹ÅŠªªªªäáiÑM›4¥‹¥Šªªªªâá@¥‹ÅŠªªªªåâ	�né–nE‹%ƒð   ã<r9€@%ƒÈ9\pÀQ*OòäO‚$'JÈ9ÿÿÿü5-¯»÷oûIBE1ªªªªã/É�|Iž$E‹èA%•UUãF�E‹B	ãâ� A¥‹¥Šªªªªäâ2aÈ0¥“¥zªªªªãâ$ …“ÅzªªªªãâI’@$…“Åzªªªªãâ	I…“¥rªªªªãâI€@…“¥rªªªªã7
(€ƒ%E‹ç9À`pX;71åP6è9ç9úúúú;:I’I’$(Bf1ªªªª;:I�$$(Bf1ªªªª;9$C0 C"(Bf1ªªªª97 	’`&è9ç9««««87@$H€çA	2ªªªª87€A€çA	2ªªªª_7I’$I’'JÈ1ÿÿÿ?ã7É• E‹çA•%	ãâ	€ …“Årªªªªãâ		$E‹%‹¨¨¨¨ãâA€$†“£rªªªªãâ @†“£rªªªªéâ1wS7E‹ƒzzzzéæ[3¬Ã¶
ƒäz*¯¿ÿèã¶½Ú’
,E‹äzªª¯¯èß4I®”Oe‹{ÿþðàç¥ %ƒfZ@è]&L’$$ƒÇ9p\WUfW°Ë&BE!ªªªª^O€H€$5BE!ªªªªç[Iž\¹p%ƒÇ9U•%æÉ‘	€%‹åz¡ŠªªæãX4@lE‹ƒ¿¯¯÷çã¶
 %ƒäz  ¨ªçãPÙ�I%ƒäz


çä]»
é�%ƒƒªª àçå!%ƒäz¢ªªªçæ€ f‹‚rªªªªçæ’$f‹‚rªªªªçæ  f‹‚rªªªªçæH $f‹bjªªªªçå 2`2%ƒäz*

ªåQ@/'%ƒÇ9€p^åMàïäI’${Ç9XWUUaV°	æsÇ9†1   ¨b_Vlm›®&Iç)ÿÿÿÿb`I@’$FIç)ÿÿÿÿb`$A�d’0Ç9¦1èa�PIœ${Ç95ÕUèj�
ƒçA-éèH’$I’ f‹bjªªªªèçf‹bjªªªªéç$I’	If‹bjªªªªéèA’$I’$f‹bjªªªªéèI�$	’$f‹brªªªªéèI’ I’$f‹brªªªªéèI’ ’$f‹brªªªªé¤€5ƒfZxécí$ƒÇ9øWèc$úO’$$ƒÇ9€~UU»c “$I’$†bÇ9xUUUdc IèA¥)ªªªªdc@HèA¥)ªªªªdc’A‚ èA¥)ªªªªdc€@$èA¥)ªªªª´cI’$IfbÇ9UUU-è5~â'.%ƒç9UU­æ2nNE‹è9Õ/çvée“†b-

ßÜÛ²6XŠ¶…“E‹ÞÜ!I’$Aä›è‚ªªªªçÜùÿ»ïð…“ƒ€àxæÝÏÃ>Z‹µ…“%ƒ
­­æÞ‰ý÷$A…“%ƒ ¨××áÞm‘dMº&…“E‹Š€åÝ@#9öÿÜ…“%ƒ%àG`þe“Ç9€`Xf/ Íiùô(JÇ9üW__cORÿ¢
µBÇ9
¯­»IüÇöÛærè9ÕÕ•äÓÙöm0…“E‹«XZßÞI‚$H’ …“e‹àÞIÂ„	‘…“e“€@@ãÝ­3Ö
Ô…“E‹*%%ÞÝI’$@$ä›è‚ªªªªÝÜ	€ 	$ä›è‚ªªªªÝÜ@	� ä›è‚ªªªªÝÜ@ ä›è‚ªªªªèÜép7÷s…“ƒppààèãÐº:vb;E‹ƒ¯äã@‚A$E‹ƒäÝ˜ƒ=Ú£=…“E‹


Ýy`€
,…“çr€À`ÃLàÃ'O’$F‹§bXVUUMLA‚I‚$¨b§b®ëª«MLI$H¨b§bª¯«îÂL9‘œIž$F‹§b%•UUÝx0�…“çr	ÝÜ ä›è‚ªªªªÝÜA�’$ä›è‚ªªªªÝÜI$ä›è‚ªªªªÝÜ @ ä›è‚ªªªªÝÜAA�ä›è‚ªªªªÝÜ €ä›è‚ªªªªÝÜ ä›ƒªªªªÝÜA Iä›è‚ªªªªÞÜdH�Ä›ƒªªªªÞÜL’`0ä›è‚ªªªªÝÜ	‚€ä›è‚ªªªªßÜm—bÙÖä›è‚ªªªªÝÜ@€ ä›è‚ªªªªÝÜIä›è‚ªªªªÝÜ@ H�$ä›è‚ªªªªÝÜI$@ä›ƒªªªªÞÜC2	C�ä›è‚ªªªªÞÝI’Ä›ƒªªªªßÜ[ƒ­[»¶Ä›ƒªªªªÞÜ!†$A’ä›è‚ªªªªàÜN[¶‘X…“E‹€€€€çÞ”(ˆSÏ9e“ƒ¾·/
àÝØ°¶m2…“e‹¢ªèÝÿŸü9ç
…“ƒàxèÝIòÿÛl…“ƒÿõæß1ùJ$‰e“ƒ¨øß¿ãÞÚm‹ãØ…“E‹ÿý¢æÞÛØn·K…“%ƒ¿úxøâÝ›VÛ˜ƒ9…“E‹ª		åÜ-Y—¯�…“%‹ª xxçà®àNí_'e“ƒZúª*èÞ0nÿýÇe“ƒUÿ€èâ4	­“E‹{ÿúè€èäÉd‹%‹ƒ¿¿ÿúæàŽË¤’$e‹%ƒýUèä`‘NœÄE‹ƒÿþ‚‚èædBf‹‚rªªªªèç I$f‹‚rªªªªèæ$I’ ™0f‹‚rªªªªèå[;lÛ–lfƒ‚‚ªªªªçå!’0f‹‚zªªªªæä�™E‹ƒ*¯ûpæâ6éÐ”
9E‹äz "¯¯äßµS;˜e“E‹UUäÞvl‡Ó&…“E‹ŠªUUäâ†“£rªªªªäâ 	 †“Ãrªªªªäá@¬mÒ´e‹E‹µÕ+ªâÞ’Rb,Æ…“E‹ë«ŠãÞ�Ø‚#Ô…“E‹¥¥%¥äß“Tñ{e“E‹WWx`åáŒÉ„DJe‹%ƒ*ªªäàvLš€@…“E‹«­UUåà“0h’�9…“%ƒÿ¯/åà˜­9­ë¶e‹ƒ
æâ@ˆ±iÛE‹%ƒÖ¼æâ$dK¡`E‹ƒððððæâtBÚ‚HE‹ƒÿÿæâvl›E‹ƒÿÿæã]¬E‹ƒÿÿ¯æÞhP¯9e“ƒßµ-áÜè0g³Ûv…“E‹ë‚åÞÐ³=eN&…“E‹%%æß`n­Ý&…“%ƒ^þª
æà€¨ié˜je“%ƒµßúøæÞ¹ðK÷�e“%ƒpð  çß‚6i®˜l…“%ƒÕßúøâÜ˜½Ú‹3Û…“E‹åÜé”J©p…“%ƒðððpæßÉà­¶A…“%ƒpzÿßæß´‰õÝÜ…“%ƒÕÿªŠåßUsÓH…“%ƒâêÿ÷çä]ÓmÝV%‹ƒ÷W×æÞPñ
�…“%ƒ--µ½áÜmÒºku…“E‹
Þ­J¢$x'…“ãQVTT\®ªvLÚ	ÙDZAAªªªª¯«dBÒEADZAAªªªª®ª�#9�8DZAAªªªª­ªMÚtmÚDZAAªªªª±ªµÏúí8DZAAªªªª«ª@’I€DZAAªªªª×ªI�DùõE‹ãQ••ÝÜH€ ä›è‚ªªªªÞØ’$AÒ$-…“E‹€Ã«ÈÏØ>O„jÃIü^^WÀ«7é’c�9ãQÃIøú/-³ªÍË¤Ï™ãQÃI€¾ªöãÚ“&@ãQÃI
*ÿÿ³ªIü?ÍþãQÃI´ª%‘§Oü'ãQÃI¨À«@	ïOãQÃIWxxà»ÿÿçO”e‹ÃIUU5æÆ±D@€he‹ãQ-àÝh‚&kÛ¶…“e‹ßÞ	’$I’$&›$„ªªªªàÞI�L�…“e‹ÀÀÀÀçà„4mœ=&e“ƒW÷¯/çäÝ°–
E‹ƒúÿþøçæ‚$fƒ‚‚ªªªªçæH�fƒ‚‚ªªªªçå	�$I0%ƒäz*ªª
çäí�´E‹ƒúÿÿªçå�E‹ƒÿÿÿúçæ@$A fƒ‚‚ªªªªçæH@’fƒ‚‚ªªªªçâiZ"%E‹äzªª

çåH€A%ƒäzª¨¨¨çæ‚fƒ‚‚ªªªªçÜX�ù˜ƒù…“ƒ-


àÜ¶áX±mÛ…“E‹€çÜ¶�ö›ü…“ƒ×¾âÞiK$È…“E‹¢úÞ·æÝîtù¼…“%ƒøp€€çâu#©:¨E‹ƒ?>>ßÜk‹¦hƒ¶…“E‹çÝññs…“ƒpppàçã€ 	¤�E‹ƒÿÿúðçäº!Š!%‹ƒ¿???äÝ$`K½Ýä…“E‹[Z"åÝ¶d±àJ…“%ƒðppøäá[‡mèÖ¤e‹E‹}ý‚çã”dA¡ÊE‹ƒÿþø¸çßÚ£¹íde“ƒ‹êpèå`²­%‹ƒþþ¿¿èß€0�ýS?e“ƒUÿèÝ°M¶ûä…“ƒUÿ€çäÀ0�­E‹ƒÿÿþüçå	€$È0%‹ƒÿÿÿªçã’$I¤�E‹ƒÿÿúðçæ@�fƒ‚‚ªªªªçæ$ fƒ‚‚ªªªªçæH�fƒ‚‚ªªªªçæfƒ‚‚ªªªªçå!		%ƒäz€ªªªçæ	@‚fƒ‚‚ªªªªçä€mX‹5E‹ƒÿÿ¯/çå‘$%ƒäzªª¨çå�’fƒ‚‚ªªªªçã Rvh‡E‹ƒÿÿ‚‚çã$‰’#ÙE‹ƒÿ¿/¯çäÍ�lÝ¶aE‹ƒúøþÿçäX·
í�l%‹ƒ¯ÿððçæ@� fƒ‚‚ªªªªçæI‚ Afƒ‚‚ªªªªæá› 	˜ØE‹ƒâ¢çÄ`ì%ƒÃI\`€ãZÓ"‰’mäz£IUUU\Z*°	ýàtÃI‚AÿÿüøYJ :1áIå0ªªªªH4 Ï$LÒ$¢A‚AZ4.ñ�S¢A‚AèððàY=š�%X‚%¢A‚A¯S7�-ù’#ð¢A‚A/Z4Æ�¶Ÿ$äz¢A•••>4H²$NžÄEƒcrªªªª85)–l)Ðaäzdb€ÀÀ@87 aI:ªªªª87@€aI:ªªªª87€€aI:ªªªª87@aI:ªªªª87€aI:ªªªª97@aI:ªªªª;9I’$I’aI:ªªªªJ9I’äIZäz¢A•5Y9¹m?›ÐäzÄr

[9&o‰Ûväz¤r  m:}bÛå6äz¤rªþi:ñæJ›@äz¤r ðúÿc:NÂ'âÕäz¤r
G9ÿó?ÿÓ
EƒCjªªªªJ7OòäºEƒCjªªªª_8És;Ü(@äz¤rª¾J!?ñT,‡‘{äzp`ûýY7-9ö“Ûäz¤r

F7¾ñ‡yìÇEƒCjªªªªÓ:¦ðÛI’$äzÄr
ªè@`
¹�äƒÄr
+ÿþæ^E‹Är
*/=çß¥ÐJ?—”e“ƒZzê¢èÝ ic¿>…“ƒUÿ+èÝ°mÿ›ü…“ƒUÿ€èá$�n÷E‹{ÿª(åßÐ6N1ee‹%ƒ«¢€àçÝ£3Úhe“ƒ
*ÿõåÝ�çv’I…“%ƒàªUÕåá€
$¢mÛE‹%ƒ
çáÃÊÑe;E‹ƒ/æâ$i“¦�HE‹%ƒª€pàçäI’$ÚnE‹ƒÿþäã@$@E‹%ƒª€ªæà£½&R
le“%ƒ¯­õåß[K:)	e“%ƒ¯
ªÿèàwÒþÒ$e“ƒ

ÿUèßíÓ&Z±e“ƒ

¯¥çá±mRæ@E‹ƒ€ðøèä¤CH€$’E‹ƒ>ÿÿÿçâI¬v`E‹ƒ‚ÿÿæßÚ9¢¹me“%ƒ/-¯ÿæßm^þ+me‹ƒ
¯¯æâ1mš
ÑE‹%ƒ('%äâ	A’$I’†“ÃrªªªªçãIÛ	E‹ƒ øøçßk²>R
õe“ƒ

--âÞR,Ù¶”…“E‹
ªªðãÞ’Ô®�…“E‹w^zpäã$I$†“Ãzªªªªäã‚$I†“ÃzªªªªèãIl»›&E‹ƒ€ÿÿèå6lÛ†
f‹‚rªªªªèáš1˜*©E‹ƒ/??ãÝ¶àRMÙt…“E‹pà‚¢äÞ’ÀmNÊº…“E‹UÿŠªåÝÚ#=�-¹…“E‹¥¥çÞq÷v'He“ƒ ¨î÷èã‰mÛÝ6hE‹ƒÿÿçã1eC$‰E‹ƒðøÿÿäâ‰� ‰$…“Åzªªªªåâm—´í�bE‹%ƒ  æâ¦¶`“E‹ƒàðð æâ 
Úrl“E‹ƒãâ �¥‹¥Šªªªªãâ‚ � ¥‹¥Šªªªªæâ¶‹¶ÇE‹ƒ  äâI&Ã�¥‹¥ŠªªªªãÞÐ
ÕP9…“E‹¥­--âÞ€,9¶c'…“E‹¯*
ßÞH’$I’$&›$„ªªªªßÞA$I�$&›$„ªªªªßÞ	’$I�$&›$„ªªªªßÍ@ …“e‹€@ÔMà#'|Ò$F‹‡Zx\^VMMI’$I’$èbæQªªªªNMI’ I’$èbæQªªªªNMI$I’$èbæQªªªªÓM9‘XÉ™¤F‹‡Z-5µÕßÍ …“e‹ßÞH’$H�…“e“€€áÞI×6@4…“e‹ 
//àÞ`˜$™$…“e‹
ßÞ@‚$I’$…“e“Š€ãÞ0I®o…“E‹W^ú¨äÞXKÆ5ise“E‹
êàãá$I&¥‹¥ŠªªªªãÞš H’³Úe“E‹_õ
ãÞ˜­%[Ò:…“E‹­
*ãÞÐIñdO…“E‹W^xxæáÐJm›ØE‹%ƒøàæã0�¬E‹ƒÿÿø æâ	Ú²C;E‹%ƒ-	åâkÛ¦iÚE‹ƒ€æãM“¶Ã E‹ƒ¾¿æâ6K6`JE‹ƒððððæârâÐ6iCE‹ƒ °äÞ´	ŒK›…“E‹U_¢«çáñ”L@	e‹ƒààúþæãëÖn@,E‹ƒââ/æàÑ[MŽE‹%ƒâ-xŽÿh%e‹è9\\\XR£«m÷”BÇ9«ÿúúY,0ilO;è9Ç9þ¾ª*åàÉ�|E‹è9	%•çÞ©ÐJÒ(m…“ƒxú¿¿çâÐªºnìºE‹ƒ¯æã@»%[‚5E‹ƒ/
çâš3Í’6E‹ƒ
/ÿÿçã!dJ” E‹ƒøøÿÿçäkŠaÀE‹ƒ«ÿÿÿçåd€E‹ƒ¯ÿÿÿçµ%ƒ¦j`çW}�ƒÇ9_àç;Ò'ƒç9UWèÏJI’ÿþ�ÑÅrÇ9UUUøZWÙ¶mÛ†m(B&)ªªªªZJ€=ç9Ç9ªªª_N0Û–ÿç9Ç9úúª\OÍI’ôÿç9Ç9ªª’;6aÛöï'FRç95UUUçJp—ùŸ${ç9µUUçO 7•äƒç9½UèSƒJ­èæ �$A&f‹‚rªªªªèæ I€˜$f‹‚rªªªªèá›$‘ ?&e“ƒUõ­-èâ‚¶Iå�NE‹ƒÿÿøðéäIçvÓiE‹ƒðúÿÿèæ@0f‹‚rªªªªçà€i«M?e‹ƒÿÿ
æ{,E‹¦b`çNðóŸ$ƒÇ9€p^U‚A°ÓöŸøJÇ9ÔÕßß`?÷É�BÇ9úzzp_LñH�6nç9Ç9 ¿¿ª[RI’$&ç9Ç9 ªª
¬mÑÚõ_'†bç9UUUç7P7‘¿ƒç95ÕçÏƒÅrçßZÙ�$e“ƒ	­ýUçäÁÒ¡ÛºmE‹ƒ¼¾ÿÿæáŽàšMe‹%ƒ``Z¥çã #É’L‰E‹%ƒ-••—âÜ#A‡Œ-’…“E‹ªªäÝ€³Õ÷ä
…“E‹/xZäÝùdOZ‹µ…“E‹Px­¥äâ@†“£rªªªªäâ $†“Ãzªªªªäß®àÚ¶µe“E‹ZZu­ä?z=€@E‹çAVX`€e?ÿÿÿù�ÿ'JÈ1ÿÿÿüD@è9ç9¿ÿÿÿä7	ñŸÿÿçe“ç95ÕUUäDE‹B
ääI’$I’$†“£rªªªªäã†“£rªªªªäÞL�#6…“E‹UU%-äÞ0®…“E‹UUXXäâ	@†“Ãzªªªªäâ€†“£rªªªªäã †“£rªªªªääI’$I’$†“£rªªªªä@ÐèE‹BX`€Ð7Iþÿþÿåzç9UUW\DC(Bf1ªªªªD>P#Hè9ç9«ÿÿ¿D>±àè9ç9êÿÿêD>@9è9ç9¿ÿÿ«D>¶”
è9ç9ªÿÿêD=Ï
@è9ç9ªÿÿ¿D>€�è9ç9þÿÿêä4'ð�ñdE‹ç9
%5•äá0�e‹E‹UU^xääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäâ@†“£rªªªªäáéÐ†“Ãzªªªªäã†“£rªªªªä¼ E‹ær@äÀ‚={þäE‹B`XVU?(q›š„PrBç9ªªþªC"$)ŒX¢%BÇ9ª¯««ã0É�X±`e‹è9Õµ-ãÐÒ$Ie“{«ªäÞ0	¶›…“E‹UU¨¨äßhZ³9e“E‹UU%/äßÀ$©ke“E‹UUXØäÜP«5«_Û…“E‹%
áÜíà©Ð…“E‹ààààâÞ)ˆ’-'…“E‹««ãÞ�Ô©`…“E‹ú^XXäáÉ–)–ne‹E‹PZZúäáíÐnMÛ´e‹E‹zz¢¢äà‰$MÆe‹E‹ÕÕª
ãÞŽà
­&me“E‹pZºÿâÞ�(“vì„…“E‹¿ª‚‚âÝuZÇ’Ô…“E‹äÝ6ˆ[=:…“E‹×Õ%/áÜs²¶õæ
…“E‹ ààÜ¶›¶	I…“e‹‚äÝ±äN$@…“E‹PXWUãá	AÃ$e‹E‹pz""ãÞ$a¶m'…“E‹ÕÕäÝ¿û—9ñO…“E‹ àpxäÜuÎ¶’I…“E‹‚ÕUäßñÖ
ëTwe“E‹x^ëäà¢
�-0e“E‹åõµµãÜÀªùõSÛ…“E‹5Þ@4Àà…“(BPp`@À–äI˜„iJg1ªªªª.g'À
øIJ‡)ªªªª$m›ÿ”@
Bè9ªªþþ.
¶ý'ÀŒBç9««,ùoûÛ(@Bç9ªª&O’Û6IBè9 úIú¤MJiJg)ªªªª@4í£±	J*ªªªª(Iœ¿9‘Bç9  :ä?þ’9Bç9

@4í“$	J*ªªªªAñ9•wBÇ9ððààHkŽýÒFAè9Ç9¿þ?€#Ñ’6ŽBÇ9//¯ª81pO~é—Bç9ð €€?7ðkÜ*5Bç9úúª/#èÃÛìÖn)BBµý]_1p¾Ý$)BB^^û«8®`O¿�$)Bè9þêª,˜/>þ“$)Bç9««ªª#í“Ø1)BBµú^^Eñä
´m)BÇ9øúÿ¿à7p …“È1	ãÝ±äR›$Œ…“E‹`èÿ§äâB€��†“ÃzªªªªåÝŽ[““$	…“%‹¢ªÿWäÝÿÝçâÑ…“%‹€
­âßÀ`Û�e“E‹¯÷þúäß�Ðmµ]§e‹E‹XøãÜ ¯5šÑ…“E‹	-µåÜ¿û»1å
…“%ƒ€€àøåãI’$	’E‹%ƒ¨ª«äßP9�8e“E‹¥¥µãßPBÅdlÛe“E‹¯êäâH�C&¥“¥zªªªªæà1sdKÖe‹%ƒà 

åá�-Úv’ØE‹ƒäáh‹5[²­¥“¥rªªªªäá@4@´E‹ƒ



äá]4C³5¥“¥zªªªªâáI’I$¥‹ÅŠªªªªâá	’$I�¥‹ÅŠªªªªãá$™�$É€¥‹ÅŠªªªªãá$’$A’¥“ÅzªªªªåáŽmÛ#ÑE‹%ƒ
â+z=€@e‹è9^x`€N-I’çÿ�ÿGRÈ1ÿÿÿþ5/1çNœ0IéA2ªªªªã4ù�\É�üE‹è9%µÕUã^E‹'J	ãâH ¥‹¥Šªªªªãâ@A …“¥rªªªªãâI‚ …“¥rªªªªãâ$A …“¥rªªªªã² E‹Æj@ã7p²$N’$%‹è9\VWU:8!$Aè9ç9þþÿÿ;:@’ 	‚$(Bf1ªªªª;:I$�$(Bf1ªªªª;9$C2 B"(Bf1ªªªª97H† 	2è9ç9««ëë87@ç9Ç9 ør7I’$I’GJÇ9ÿÿõ5ã8‰%ƒè95
ãâ ’…“¥rªªªªãâH‚A�…“Årªªªªãâ@ $E‹%‹¨¨¨¨ãâH‚ †“£rªªªªãâ’$†“£rªªªªéâéO÷�—E‹äzúúêèèç ƒäzªª«®éÞP�9š#úe“äz­///æ{  )e“fb   `ç:&M’$%ƒç9p\WU_:Àm¿�Üç9Ç9Wÿ_A˜=Þ9Oç9Ç9­¯øøäGþ[¯P%ƒÇ9Õ5
çËÙ´M e‹ƒ�€ÿ_çã–CÙ�%ƒäzªªçæA%ƒäz¨ªªêçæƒäzªúÿÿçäXƒ5Ø6`%ƒäz
¯ÿ]çå!I$@%ƒäzúÿW_çæ’%ƒcjªªªªçæ €$%ƒcjªªªªçæ€€%ƒcjªªªªçæ€€äzÄrèZ@À&äz¦1€`XæWÐØ'I’$åz§1 _UUbIðS?­Ï¶Ç9§1¨ªªªVIIœÜm¹	Ç9¦1 ªª^S/•wÞÆç9F1ªªªªa^i›´I‘bFIç)ÿÿÿÿa_	‘$IH�ç9F1ªªªªa_d@’$@Ç9¦1
b`!$	’èA¥)ªªªª¾a‰‘$I’$…bÇ95UUUèbP9‘¤ƒÇ9%ÕèÏƒÅrèç	‚f‹bjªªªªéç$I’$	2f‹brªªªªéƒ$:ƒJxéc@£Ÿ$ƒÇ9€~Uéc€Æ>I’$ƒÇ9 ^UUšch’$I’$FRÇ9\UUUdc@$’èA¥)ªªªªdcH$’$èA¥)ªªªªdcA$èA¥)ªªªªec!C†dHèA¥)ªªªªÑcI’$IþÅrÇ9UUU-ècI’ÜæƒÇ9UÕ+ècÉÛ	ƒç9Õè¿!ƒ†j	éßl˜­æe‹ƒÕý
èâk¬%Ãj²E‹ƒ?<æÜ­ù´ãü…“%ƒ%àÜŽãØNh
…“e‹ äÝrÛ§À…“%‹ ø^æß±”J¶ðJ…“%ƒXXZZâÝh[ÛKÝN…“E‹‹¢áÞ[›$Iƒ5…“E‹ª*ßÜØ°a[ÛdÄ›ƒªªªªá`ƒ%…“B€`X®hë¶y›·¦jç9TUUUcNö` ç9Ç9úÿ¿?vÚ6’µí§Zè9UUU=åNÿe‹ç9%
áÞè†$m’&…“e“YßÞH’$I’ &›$„ªªªªßÞI�	’$&›$„ªªªªßÝI&I�…“E‹
ßÝ$B’ I’&›$„ªªªªÞÜ$	’Lˆ�ä›è‚ªªªªÝÜ@’$H‚ä›è‚ªªªªÝÜ	�ä›è‚ªªªªèÜñô·…“ƒppppèãš5X³9E‹ƒ//æãiÓ$mšE‹%ƒ€àçÝì3ú
°…“ƒ
­¥ÞL5�ƒ9…“§b`pxxMLH’$I‚$¨b§b«ªª«MLA’I’ ¨b§b®êªºMLI$I�$¨b§bª¯êªML	$I’ ¨b§bº®ªºÝL'�
±…“§b	
--ÝÜ@‚ ä›è‚ªªªªÝÜH€ä›è‚ªªªªÝÜ@@ä›è‚ªªªªÝÜA€ ä›ƒªªªªÝÜ‚ @ ä›ƒªªªªÝÜ$ä›ƒªªªªÝÜ€$€ä›ƒªªªªÞÜ$ÀÄ›ƒªªªªßÝd&&Ä›ƒªªªªßÜ[‹5[Û6ä›è‚ªªªªÝÜ@ä›è‚ªªªªÞÜ!@’dÈ„ä›è‚ªªªªÝÜH  ä›è‚ªªªªÞÜ!ÁIH2ä›è‚ªªªªßÜm“tMÑlä›è‚ªªªªßÝLB2$@’&›$„ªªªªßÝ!	$I’&›$„ªªªªßÞI’$H‚$&›$„ªªªªÞÜd’$ƒ�ä›è‚ªªªªÝÜ �ä›è‚ªªªªèÜùÿ»ñö
…“ƒ€àxèàñwš$Ae“ƒ èUèä±#I€,0E‹ƒ¨ÿÿ?èÝ°mµíÜe“ƒ_ÿçÝ«ùömç…“ƒ­çßÿ“?“8Ae“ƒ¾ÞèÝ?—÷àS…“ƒàxzZçÞ¬/>Xõ…“ƒ*-%çÝwòÛ7U…“ƒàzèÝùmßÓ…“ƒ€ŠÿUèÞeI–¢ƒ9…“ƒªª/-äÞÀhvâ¶…“E‹ÕÕ
ªãß):1eKe“E‹µ/øxåß`JlÛ&…“%ƒ^øª
åàëàTnëÎe‹%ƒà€çà€ÀMÿ�äe“ƒWÿ‚€èã h[Ý:E‹ƒÿÿ/èâ¶mm™”E‹ƒÿÿ€€çäÍš¬0t%‹ƒº¸þ¯èâ	—L›&hE‹ƒððÿÿçä²mí–tE‹ƒ¿¿úòæß­Ps¢->e“%ƒzzë¯æáP²Ù]Ûu%‹äz/··¾äÞ ‰�‹%…“%ƒý½­	äáÍÐP`†“Ãzªªªªäâ@‚	™$e‹E‹UUß;äÞÀ6–Mì¸…“E‹Õ­‚‚äáÝ6`E³5e‹E‹W×77ãßP‘¶dSe“E‹
­zzäÞÓ6mR�9…“E‹ÕÕ¥
ãàK·me“E‹ú_VVäáíÚtí°¥‹¥ŠªªªªäßÛ¤µXƒ5…“E‹Uí¥%äß@»ui—x…“E‹µõjhäái·vX´e‹E‹èï%æäI‚E‹ƒºþþ¼æã
�ÍÐnE‹ƒððð æßÐ&Ñ£³Úe“%ƒõ­+«çàÄIñOe‹ƒW~ppçàš£9Ð&me“%ƒ­­õõçÝöcÛÓ`…“%ƒ
ÿÕåÞIœŸ?u…“%ƒ€ ðpäÝ€
ÙØ>…“E‹¥¥

äß‚-Ù›�ºe“E‹¥¥�êæâ‘(€hÊE‹%ƒ¸––¸äÝ6äkNýß…“E‹ZR¢åÝ®d·…“E‹ZXXXáÝL,Û°#J…“e‹£æÜ±p±ëÛ…“%ƒpð€çà’´I7e“ƒ__xxçâk"µ’&HE‹ƒÿÿæåA %ƒƒ((*çäÚmI›¬E‹ƒÿÿððçâmb»vUE‹ƒàðçßc"õ’*he“ƒ
/¿Õâ®p&X<e“ãQ\XXP¯«¢#&¢šDZAAªªªª¯­!€!IäY:ªªªª¯ª˜#9�#ÙDZAAªªªª²ª¹‘ùû'ãQ¢I€ºª�õõ“<ãQÃI®ªI›!
DZAAªªªªÆ«ÿñGf[¤rãQ••ÞÜ$É�d’ä›è‚ªªªªÝÂ  …“„j€ÀÀ@ÀªññãQÃIxxxxÀª�ƒù�
µãQÃI---­À¬1gJ0ãQÃIøÞWWÀ¹ÏóüÛ*€äQ Aªªªª¼ª˜9š¯:ãQÃI
¿ªI’äIž„jãQUUUä«¹û E‹ãQU5
àÎ‘ 	�I…“¤räÝ-ø‚CÖ…“%‹%'/®ßÜÛ¶aÛ2tÆ›ƒªªªªâÜ­k§±Ç	…“E‹€èæÞOlß›+�…“%ƒ€ˆ¯¥çßÒ3õ’$@…“ƒ/¯÷Wçàñ�wì
>e“%ƒxú¯­çäX³µÝV%‹ƒþüçå @€B %ƒäz¨(**æá€ŒÕŽ›¸e‹ƒ/*€€çàò$Ü6e‹äzªþçà±pOœAe‹äzà ª¿çâ€¤msÛ8E‹ƒÿ¿çâ«TöKE‹ƒúððàçå €%ƒäzªªªçæA�$fƒ‚‚ªªªªçà M˜­åe“ƒUõ­
çÝ˜ƒ9š#9…“ƒ

ÝÜ@’ä›è‚ªªªªàÜvh›Ž%
…“E‹€¨äÝ¤½9@-q…“E‹/¥õçÝÉk›œ…“ƒ€ þWçä²! E‹ƒ>>??ßÜh‹¶hƒ¶…“E‹æÝys±àN…“%ƒààpøæã	�E‹ƒðøÿþçâÉÐ"-E‹ƒ¿?//àÜˆ¥D²	…“E‹‚€ªæÞ“#ñ‚(i…“%ƒ//÷ÿàÜ$a›r,;…“e“@æÝD‰¶�$…“ƒ×¾çÞ¶p±ð
e“ƒpppxèäŽdS’E‹{ªêúÿèã]# ‚ E‹{*¿¿¿àÜr¨˜Š[…“E‹‚‚çâ©�Ú•6@E‹ƒüþæãIÒ¤†aE‹ƒÿÿçâéàI’$ME‹ƒðøÿÿçåA2%ƒäzªªª
çä€
Ð¤E‹ƒÿÿÿ‚çå 	�%ƒäzªªª çæfƒ‚‚ªªªªçæ€fƒ‚‚ªªªªçæ€$‚ fƒ‚‚ªªªªçäØº­é–l%‹ƒ¿¿°ðçãvì81I
E‹ƒàúçã±
”@E‹ƒøøÿÿçåI’@‚fƒ‚‚ªªªªçæI  fƒ‚‚ªªªªçæ	 $fƒ‚‚ªªªªçæI’$fƒ‚‚ªªªªçæ 	$fƒ‚‚ªªªªçæ€‚$fƒ‚‚ªªªªæä	@�%ƒä‚
ª

çäÃ¶­[³5E‹ƒÿ¿//çÍ# 	%ƒR`ç*{"'€ôƒ¢AUVpÀU8S?9�
Ù¢A‚A.Z4ObÛ6@¢A‚A(ÿÿK4¹÷w-°¢A‚A€€ ªR7�½ý}RÛ¢A‚A
W4‚H�¶ï'¢A‚A¿¾<4J‚'Î“$#Z¢A••Õ64I˜�IÈEƒcrªªªª856lVäzãQÀÀ@@87aI:ªªªª87	€ ‚aI:ªªªª:7mÚ¶mÛaI:ªªªª?7ÿŸ¤ÏaI:ªªªªX7IbÛ0	¢A‚A¨þþ]8Ib?š9¢A‚A
//L9Iš„I¢A‚A€€€ hP±ëIPÄr‚A5%%hYvBR$ Äz¤rªÿßhJÛHÚ/æäz¤rêÿ‹oa”0”‰Är¤rªªª¨mc‰´ÿ$Är¤rªªªiQÚ,�“ª5Äz¤r¿Ÿ¿/b=ÿäÎû¼äzÄrðr‚€bOkhƒ:1äz¤r«ÿ¿¯_?$¶”�äz¤rÿú  X8˜ƒùôM›äz¤r

€_89énSØäz¤r  
]8O^»“$Häz¤rª®a?m²ÙÒäz¤r

¯ÿ_$ã¯%˜
�{Är

­Š$­Ñ>eÛ¶%ƒÄr/¯÷ÿä ðR~b?E‹Är/½½åž�›e“ƒ
õèÌÛ¶M…“ƒªþUèà¦DŽÚ9e“ƒúþ/-çß’ Iwn?e“ƒÿæÝ@«9õý¿…“ƒ-€èßùŸçÝ6Ae“ƒþWèÞbß	e“ƒ
ÿUèßùãÿ›@e“ƒªÿUçàIò$’ie‹ƒÿýæà)Ú&‘e“ƒxxÿ¯çã$A¶�$E‹ƒÿÿèãõdK±`WE‹ƒúðððèã›mP­9E‹ƒÿÿ/èá Imk?E‹ƒÿÿçâP«µ­�ØE‹ƒçã@�¶cÛE‹ƒÿÿæãhÛ¤Iš&E‹%ƒ«äã� $†“ÃzªªªªäâI’ ™$†“ÃzªªªªäÞ$mZ3:…“E‹Uu--äÞ€4nIœÄ…“E‹UU€ãÞ IqbÛ…“E‹UU
äÞÀMéä…“E‹U]xZäÝP¯=Ú‘…“E‹%

¥äÝùx“¥-�…“E‹ð¨ª¥æÞ	õS Ae“ƒààúÞçà9M·�E‹ä‚
ªààèäf"š‚$IE‹ƒ¯ÿÿèæ$� @‚f‹‚rªªªªèçIHf‹‚rªªªªèáR#ÑÐIE‹{++¯ÿèß	gs£9…“ƒàê«-æâ¢‰SE‹ƒ/ø æÞÛ­å�#Ñe“%ƒ-¯èÝƒÀm·ëÇe“ƒWþ€çã�-Ø’CÑE‹ƒ/.äã�$I†“Ãzªªªªäâ 	’HÂ„¥‹¥Šªªªªãâ	‚¥‹¥Šªªªªäâ$Á�	C$¥‹¥ŠªªªªåâíÐI›´E‹%ƒ  äâ’!I’¥‹¥ŠªªªªãâH€ ¥‹¥Šªªªªãâ@$I‚ ¥‹¥Šªªªªåá$d4M:e‹%ƒø¸ ãÞ�ƒ:KâÄ…“E‹-)
ÞÞI’$I’$&›$„ªªªªßÞA I&›$„ªªªªßÞI’$I€$&›$„ªªªªßÞI‚$	’$&›$„ªªªªß½(€À…“FƒÀÀ@ÀzMH¢$J‚$ÇjhRüüüüNMH’$I’$èbæQªªªªNMI’I’$èbæQªªªªNMI$I$èbæQªªªªzMI�DI”ÇjhR/???ß¿p…“&ƒßÞ	’$	� &›$„ªªªªßÝC&d&…“E‹
ßÞI‚�&›$„ªªªªßÞH’ I’$&›$„ªªªªßÞ	€$I’$…“e“ ßÞ	�I’$…“e‹ àÞ˜$L’$…“e‹ªàÝ�kÛ6…“E‹¨ áÝ$`Ž�Ä…“E‹êà€ãàm7¬š6e“E‹ßÕ×¾äÞÎ–P1g…“E‹zppZæâ±íÐ¶hBE‹ƒ øäâ$†	†¥‹¥Šªªªªæâ!Ž•ØE‹%ƒ``€çâÒ
Õ’Ó9E‹ƒ/
æâ¦!E‹ƒððððçã	E
’ RE‹ƒðúÿÿçäM‚­X²¥E‹ƒ¿/‹çäé�Ý0E‹ƒøøþÿçå$HE‹ƒ¿ÿÿÿæãi·€E‹ƒ úÿúæ2€E‹è9`€â-É�ÿÌþE‹è9UUV\R6˜�ý~â'BÇ9¯¯««J48íS’è9Ç9ªªªªæ4�É�d%ƒè9	%•èåIº-š-%ƒä‚*ªªªäÞÐ$n³»˜e“E‹U}ƒƒçâ°M®'E‹ƒÿþçâ$	ž”E‹ƒÿÿøàçæ€@fƒ‚‚ªªªªçâ€ hP‹9E‹ƒÿÿ/çã JŽéÄE‹ƒÿÿ€€èæ$��!’fƒ‚‚ªªªªçã‚I�
9E‹ƒÿÿ¯çØ€hE‹åzjª

çYëh%ƒçA^€çö¿>À%ƒè9U_€á2I’$õ�%ƒç9UUWèm;I’$m
ÖçAÇ9ªªÿü>4˜í$K²ÄéA2ªªªª>0¶k¢ýBç9ÿªª«[-¥pS¹{ÛèAÇ9~úªªs*Û@¶~â'BÇ9µÿ««ã/œð¿y’'%‹è9+ÕUUä @y—ØE‹è9
õUäb�›E‹ç9½çÖ0iE‹ƒpøÞ)èà€´I~—xe‹äzÿª€€èæ2!�f‹‚rªªªªäC@¯&E‹çA€`^â˜Ã'~b'E‹è9xWUUP3'ûÚDk&è9Ç9ªª®ªW %Æ‰ÒL:BÇ9þÿ¿¯`¶ðOÏ›ÄBÇ9xð€€Y)›@rÜÓ&:Ç9ÿÿ/*Y09Ú÷sûè9Ç9¯ª*ªR�#>õ_»BÇ9
ªZ¯¦À	BÇ9øøúþÒ?žðßò'Årç9	ÕUUçC@÷�œƒç9%•çäÛ¶bI—tE‹%ƒU_zpæáX‚9€e‹%ƒ		¥UæåE‹%ƒÖVWUæäL€	�E‹%ƒ
Õõõåß©Õ :…“%‹ÿ­--äÞ€4	©à
…“E‹UWXXääI’$I’$†“£rªªªªäß�ƒ9€…“E‹%%UUãÞNb'€&a…“E‹ÕÕäÝï�6õW…“E‹Xp``äDr9€%ƒè9\pÀ|DI’$I‚$GRç9UUUTD@ (è9ç9ÿÿÿ¿ä7?ñ‡ÿŸäE‹ç95ÕUUäD�E‹çA
äâ †“£rªªªªäà	Pe“E‹rZUUäâ †“ÃzªªªªäßöàTš
Ùe“E‹Zr�¥äâ†“£rªªªªäã@†“£rªªªªääI’$I’$†“£rªªªªäâ †“£rªªªªäD�Àe‹ç9pÀÞDI’$M‚&%ƒç9UUW\D? è9ç9¿¿¿ÿD4Éðmè9ç9êêê«D'P�9�ÕBç9¯¯¯¯D'®�S¹mÛBç9úêªªD-´­ò'BÇ9ÿ¿ªªD+íðùð
èAç9úêúúh;ÿñ?ÿÿ?GRç9UUUä30�E‹è9	äãA†“£rªªªªäá`ÀŠ¥†“Ãzªªªªäã@�†“£rªªªªääI’$I’$†“£rªªªªäÎ E‹{@ä€ùòÓ?E‹è9`x^W$«ào�û“	J*ªªªª8­ûŸùà
Bç9‚€ ¨ä8Iž[¹ðE‹è9Õ•%äÇE‹åzäà)±“e“E‹UUZúäà’(A‰‹e“E‹ÕUZZãÞ�dÎTw…“E‹zzââãà[¬[³­e“E‹õµ¿¿ãÞm»I±ä
…“E‹ªúøZâßíÖbI·t…“E‹êêâêãÞs²¦“ …“E‹«Wãá!	2LÂ$e‹E‹¬/
ãáI˜�@e‹E‹  øXäáÉ–íÐ¶e‹E‹xXZªäÞš�%cB'…“E‹­
	
ãÝ \Û:…“E‹WW.
ãÝ'qµ›¸…“E‹í­€€ãÞ@9šÓÚ…“E‹
ªâÞ„B‘¢m'…“E‹®ª

äÞñ”%@I…“E‹pX^Väá[�e‹E‹ÿU_Päß°i˜½&e“E‹W]¥
äà4EI„(9e“E‹_WÕµâßK»mÛ–e“E‹ªÿÿúãàÉÖvÝ�¬e“E‹úÿ_úãá$“$$�e‹E‹* zpãß‰Å��&…“E‹êê­-ãàÀ
`�e“E‹µÕW^ãàIÒ¶°e“E‹ú___ã€`…“ærBŠªªºIòÿ´
ÛårBUUWTAbÛÒBÇ9 úÿ?Iòÿä´	BÇ9 úÿB
ò'[ŒBÇ9«¯7ÀI·�$)Bè9__úª6°I¿�$Bç9úª<äÄ	7—·Bç9êú  6ZÍ�×Bç9«¯ª¨¾Ñd�ÙÛ	J*ªªªª7@¿õõóÿBç9/
Lâ$I&iJg1ªªªª>y—sñBÇ9 àððB'&æ®Z/>è9Ç9ªª++BþãÿíD
Bç9êúG9õ
 BÇ9 èúÿA�ƒùÚ¶IBÇ9+ªª5ÉÿÛ´ABç9ªª3âß~g)Bè9ªªû{5Ib?šù)Bè9ª«¯½I’$I9)BBªªª¿ñ�$I’$)BBúªªªâù›d‰‘e‹BÕ•%ãÝlÌÕÓÆ…“E‹
ªþ^âÞ’CÆ6 …“E‹**úZàÜ”ÄXb	…“e‹€£åß¥N)Y’e“%ƒúúªªåá€,‰v’8E‹%ƒ+*äß±±…“E‹^ZZZãàÛ°I×v…“E‹W]ûÿäá@3¬m›´¥“¥zªªªªåá‰àP±mÛE‹%ƒà åá�$I’H2E‹%ƒ«ªª*äß€&Iv—te“E‹UU_räßIå
 ie“E‹Z^UUäßPµ«½Æe“E‹UUå�äà-9BB%e“E‹UÕµ¥ãàmÛuÃ
4e‹%ƒ

äáí�M›$e‹E‹[^ÀåáP9RB:E‹ƒ



ãá$	&¥“¥zªªªªâáH�$I’$¥‹ÅŠªªªªâáI$I’¥‹ÅŠªªªªãß@I¤C&e“E‹UU­­âá$I’$e‹E‹¾«¨¨âá ’$¥‹ÅŠªªªªâáA€ I�$¥‹ÅŠªªªªâ1z=À`E‹BVX`€?+%ÛºÏ�äHRÈ1ÿÿÿþ</Ð¶¶�'éA2ªªªªâ0±�Iœ$%ƒè9
5ÕUãtE‹gZãâA€$	€ …“¥rªªªªãâA…“¥rªªªªãâH€@’$…“¥rªªªªã70Ðƒ&%ƒè9À`P\97a@$Aè9ç9êêêê;9	™	™�(Bf1ªªªª;:’$A‚$(Bf1ªªªª;:I’ 	’(Bf1ªªªª;9$B2$C"(Bf1ªªªª97 	†è9ç9ëëÿÿz7I’$I’&RÇ9UUUã8I‘%ƒÇ95
ãâI€H$E‹%ƒªªªÿãâI€E‹%ƒªªªUãâA@E‹%ƒª¯ãâ’E‹%ƒªªªÿãâ �E‹%ƒªªªÿãßˆ’#ÚE‹ƒ*

æà	‘Tv×rE‹%ƒ``è~èâ6ˆSK6%ƒäz®ª

æn(%‹&J€`Þ@çMþçE‹Bp\WUV1T@i›¶è9Ç9WWþþV›0Nì?:BÇ9_ÿ¯¯ß¶i!Pe‹Ç9Õ5
çÚi]·íô
e“%ƒ©¢øXçÞ©­4Ie‹ƒxpZßçâ M«ÛÄE‹ƒÿÿªªçã@I‰™ÄE‹äzÿêª¨çæ 	%ƒÄzÿÿþúçå	  ’%ƒcrªªªªçã´ä	aSƒäzU_Zúçå� Ã$äz¤rªçæ’$I$äz¤r*çæI’$I%ƒcjªªªªçY€&äz§9ÀpX§YH’$I’$ER§1TUUU[W#É#Ñ§9§1¯¯¯ªWT[ÒmÛŠm:1ªªªªXUM×IÐ:1ªªªª^Zd@FIç)ÿÿÿÿ`]�íÐvç9F1ªªªªb`I�€FIç)ÿÿÿÿbaA$’$Ç9†1
*ªªcad˜L˜„Ç9†1 ªcb‚ @� Ç9†1db€ÀèA¥)ªªªªèc'�xIž${Ç9	µUUè^ˆí“$ƒÇ9 _UåRÐZÿÿŸüåzÇ9àWUU|[°mÛ¶�ÜçAÇ9TUUUdEl˜ƒ9ç9Ç9ÿ¯dE°	ñç9Ç9ÿúààdcèA¥)ªªªªwcI’$I’çAÇ9UUUácI’$ÉÝ	ƒÇ9UUÕ+écI’›œƒÇ9Uõèey7ƒçAµèÖƒÅréç	€	’f‹brªªªªéæÛ¶¡ÛÒ6f‹brªªªªèã€¶©ÉšlE‹{¿º  ãÜ`Íÿ}ÚW…“E‹	‚âçßq;”&he‹ƒ¾¿áÜ¶]»j†
…“E‹‚âæÝ±PJ;Õ…“%ƒxz¯/åß@
9mì–…“%ƒ­-Šêèß±ôJ”$	e‹ƒððþ×æàÉÀ
X‰Ùe“%ƒrz­­èß£#õ‚&I…“ƒ/­÷÷çO þe“ç9€p^�ˆû»õÏþçjè9TUUUcD¥ �ºç9Ç9øÿþ€žO¶c;¶sfZÇ9UUUáOñ…“B5
ßÞ’$I‚$&›$„ªªªªßÞI‚$I’$&›$„ªªªªßÞI�$I’&›$„ªªªªßÞI’I‚$&›$„ªªªªßÝ$I&d&Ä›ƒªªªªßÞI’$A’Æ›ƒªªªªÞÜ I’$	†ä›è‚ªªªªÝÜ€  ä›è‚ªªªªÝÜ@ä›è‚ªªªªäÜ¯p·K…“%‹pðððèã¶ã¸ñä
E‹ƒ€ðøèä	iE‹ƒðúÿÿèÞP�ù˜õ…“ƒ----ÞL˜9Pð…“§bxxp`MLI’ I‚$¨b§bªºª«MLI H‚$¨b§bª¾««ML	’A¨b§bºú®îMLI’$	’¨b§bªªºêÝLñ©p…“§b-

	ÝÜH�€ä›è‚ªªªªÝÜA$ä›è‚ªªªªÝÜ‚ ä›ƒªªªªÝÜ‚ä›ƒªªªªÝÜ	 ä›ƒªªªªÝÜä›ƒªªªªÝÜA€ $ä›ƒªªªªÝÜ€€ä›ƒªªªªÞÜ’dH’ä›è‚ªªªªßÜm›µÛ6lÄ›ƒªªªªÝÜ$	’ä›è‚ªªªªÞÜd’$Áä›è‚ªªªªÝÜ‚Iä›è‚ªªªªÝÜ�€ä›è‚ªªªªÞÜdH†!ä›è‚ªªªªÞÜ˜$aH†ä›è‚ªªªªÞÜ‘„Aä›è‚ªªªªßÝI‚dB&Æ›ƒªªªªßÜMÛvÅ¶mÄ›ƒªªªªßÝLH’$	’Æ›ƒªªªªçÝ&P7s…“ƒzzààèä‚‘¢C:E‹ƒÿÿ//èâP³±åèjE‹ƒ//¸ðæß	uë6Ne‹ƒà`âêçÝ¢9˜ô…“ƒ

-æÝ%”n‰íÖ…“ƒXXàèâÜóÀX¶9vE‹%ƒ]õ/èâ›3±ÅDE‹{
®®þèåé¶
Ã¶µ%‹ƒüÿÿÿèâ€ mZ²ÙE‹ƒÿÿèâX#‘“:iE‹ƒ¯¿ÿåß‚@´=;e“ƒÿÿ

äà4)Š‰e“%‹»ûèzèÞ~RÛ›…“ƒªÿUèßyû²“‰e“ƒ ¨ÿÕãàÛ°mMÒ6e“E‹}ý©äà‚LŠ	
e“E‹Õßx^çàñ�WþMße‹ƒ`àçàÒ¯%ƒ?Õe“ƒ­
¯¯èÞÀM¶kÇ…“ƒWþªåâlÚ-E‹ƒ«/(åÞ O¶5—”…“E‹åýzàäá][4XÒ¶E‹ƒ·.
ãÞP‚Õ“$…“E‹
­_äßƒ0hÒ¶9…“E‹WU•­ãß�#Ñ¶e“E‹¥­zXäáiWX‹µe‹E‹èWõµäà‰b,Æe“E‹UU¥¥ãÞZ
%P²Õ…“E‹­

¯ãÞX2%[²Ù…“E‹

Šãß@ÉB$…“E‹^®¥%ãàÛÖm�e“E‹__V\ãàX³mÛ¶ue‹E‹ª«ªäà±ER¤DBe‹E‹ÀêÚ^åÝ$Iµùx…“E‹UUêâæãIš¤Ý: E‹ƒ<¾äß lsÜ$e“%‹U­
çßÓ6	±Oe“ƒÿ^xxæÞHP5e“%ƒ_õ--æÝ©µ~ìÇ…“ƒ­‹æãV`�´E‹ƒ¾¾¼æà‰`¬´I…“%ƒzz__æÝš9ãC?…“%ƒ

åÜî”J¯ô
…“E‹XXXXåÝ$dk½O?…“E‹ZZ"âÝµV±äB…“E‹¢  ¸åÞ¹�O—x…“E‹XXp`çà‰moœ0Ie“%ƒ¢ú_WæÞNL—’H…“ƒªÿõæâ!E‹ƒøþÿÿçå$I’ ’%ƒƒªªª€çæI’$A’$%ƒƒ*ªªªæå	%ƒƒ**ªçã	a¤$IE‹ƒððÿÿçæ	‚I’$fƒ‚‚ªªªªç®�0Àè%ƒãQp`@@±¬­ÛÚu'äY:ªªªª³­®ëš±áäY:ªªªª¼ªþÃþ@
ôãQ¢I
**­ªM’´MƒDZAAªªªªÂªI’Û1ç
ãQÃI€ð|ÂªIl»ÛãQÃI€ªÿUÉ¸±U%QCbÃI•••åÝOBû’&@…“%ƒ¿ßá¾’.)�(…“„jÀ@@@Àª±ñSãQÃIxxxðÀº˜
J@IªªªªÀ¼ˆ€"!J@IªªªªÀ¯¶­þãŸ#ZÃIUUÿ?àªòÄé …“ãQUÕ-ãªùDI€@e“R%äÜ¥ôJ©p…“E‹XPPpäÜMÌúšõ…“E‹
æÜ.÷S…“%ƒøðpàåÞ~Îº&‰…“%ƒªýÿæÝ“ Imk?…“%ƒÿªæÜ 
µ™§…“%ƒUÿ€çäÃ6`E‹ƒÿÿþþçàØ£ÝÐ$e‹äz«ÿçäV€E‹ƒþþÿÿçä`†!E‹ƒÿÿÿ¿æß	¹ëO'…“%ƒýý�çäPl–mE‹ƒÿþþüçäÀºmÍÖ%‹ƒ¿ÿððçã6MÓ’ÑE‹ƒ "/çà	õ®Fje‹ƒ`àðºçâ 	É”E‹äzªª  çäXŠµÛ`%‹ƒÿÿçßÚ£%XÙe“ƒ


­æÞ’#Ñ‚4I…“%ƒ/§×ÿçÜù]¿Ú…“ƒ€ÿUçã±C@E‹ƒ¾ÿÿçá1gšIE‹äz€ ªªçæ$fƒ‚‚ªªªªçä Ã E‹ƒ????ßÜK‡h�v…“E‹‚‚‚æàd2%CMme“%ƒ®/¯ÿåâ]‘¶ÃlE‹ƒ€

çå$C!@’%ƒä‚*ªªªçã´À€l;E‹ƒ?¿"àËI�4'…“äz^ÞÏ€ »…“ƒ}åÜÿÛ–’»…“Är€ªWèâž@‘cœÆE‹Äz¨ª
	èÝiZ­=e“ƒUõ/èÝ¶�¶Ÿä…“ƒÕ¿çÝNì›÷ä
…“ƒ€€àxèäIÉ”,�%‹ƒþ¾ÿÿæâ²íØ¶HBE‹%ƒú_åâm‘¦KÛ®E‹ƒ€æá€*5«Ó®E‹%ƒ%

ªäÞu˜¤$'	e“%ƒ‚ªÿçâ®�A“ E‹ƒøøþÿçæ@€fƒ‚‚ªªªªçä†mX³µ%‹ƒÿÿçæH’A�$fƒ‚‚ªªªªçæI‚ fƒ‚‚ªªªªçæH$@� fƒ‚‚ªªªªçæ€fƒ‚‚ªªªªçå  2fƒ‚‚ªªªªçæfƒ‚‚ªªªªçå € fƒ‚‚ªªªªæâ`Žå˜E‹ƒúà€€çå@’$I2%ƒäzªª(çäX³¦M—E‹ƒ¯«úúçæI’A fƒ‚‚ªªªªçå$€IE‹ƒ¿¿ÿÿæàNÜØÒ`e‹äz*«åHè…“ƒê‚ª|8îã>k�Öäz¢IVàR6n™¼ÿfäz¢AUU\`L6	Ùt2'¢A‚Aª
W;ÜF©”B¢A‚AþþøøR4˜ƒ9ôCÛ¢A‚A74I’&I‚ÃI‚A?¿¿¿;4IœÜIØEƒCrªªªª86@@äzÃI@@@@:7mÛ¶i›aI:ªªªª@7yžÿµaI:ªªªª?7ðyôaI:ªªªª_7äÏÕï¢A‚A
®øø_?ùýßÛ@¢A‚A¨ªÿÿZ9�³ÕíF¢A‚A/¯úúf9ñ÷ÐN¢A‚AøxzúeR“ MÚ$&Är‚A
	h\À°d›¶Är¤r*
aYX.	€$ÉÄzÄr¯ÿÿ¿fR°IÛ”PÄz¤rÿÿþàdbH�L�$Är¤r€€iAP5Ò*‰äz¤r¯¿[=ù�OÏíÜäz¤rà a9P?:þã'äz¤r
H7‘¼ÿM²EƒCjªªªª]:“D¯käz¤rªú  _)P«µ¬ï$äzÄrX€´•~üç%ƒÄr÷ïŠŠf:‚4H•–²äz¤rÿþ¾(_5€&A­�päz¤r¯ºà€Xë¿&P­mƒÄr«+­ÿX-æ–
w×v{Äzîøªª_HÏ)0mäzÄrÿþ®æÐNµ[?%ƒÄr+--è
“�we‹ƒõÿçÜÐ�NE‹ƒ*ÿøÀçáN<’�¬E‹ƒ¿?èß‚ÀI®””e“ƒW_z èâ‚$iää”E‹{ÿúªçÞI£»æ…“ƒUõ«äÜ	ù@/5…“%‹­
%çÜ.÷sñ�
…“ƒ¨àppçã‰c;¢
ÙE‹ƒ/çãŽmÛ’@RE‹ƒÿêçádËº`ÕE‹ƒèÞ¬C6Ó(@e“ƒ

¿Wåß1sä
e“%ƒààêÿæãíÖbÃŠ5E‹ƒðø/çãNœØ¶ƒE‹ƒ€°ðæÞ‚(­ýßÄ…“%ƒµ¿çÞNòÿ-Õ	…“ƒ ú^çÞyën’@e“ƒ èÕçâIÜv€ªÍE‹ƒ€¿+åÞÒ�ýßü…“E‹UU¢çÞ“0	)wwe“ƒ~~  çã)@¶m'E‹ƒÿÿèã['žKE‹ƒÿÿøðèå‚­Ã¶m%ƒäz(*ªªçà�PS¢ÔE‹ƒàÀèæ$I€f‹‚rªªªªèä$Q#:E‹ƒÿÿ//èã‚$až–4E‹ƒÿÿø èá€@N?—SE‹ƒÿÿððçâ�ƒ­Û´E‹ƒ/úúçÜc»>˜õ…“ƒ*

çÜît±p…“ƒøppàèßkŽ¹�&Ie“ƒ­õWèåÙÚmÃ°µE‹ƒþÿÿ¿èä$-ˆ�'E‹ƒÿÿÿªæâtB“$@
E‹%ƒ‚zxæâNh[�E‹ƒ€ÿÿæâ’
Ù�
:E‹ƒ
ãâH ¥‹¥Šªªªªãâ’ $¥‹¥Šªªªªãâ I’$¥‹¥Šªªªªãâ	�‚¥‹¥ŠªªªªãÞ©ÐŒ9…“E‹Õµ­-ßÞ@$A’$…“e‹ÞÞI’$I’$&›$„ªªªªßÞI� A‚$&›$„ªªªªßÞ	’I’ &›$„ªªªªßÞI�$I’&›$„ªªªªßÍ€…“e‹@€ÕMMÂ'r>f‹‡ZW^\xMMI’$I’$èbæQªªªªNMI‚$I’$èbæQªªªªNM	’$I�$èbæQªªªªÔMIšœ‰•F‹‡Z•µ5-ßÍP…“e‹ÞÞI’$I’$&›$„ªªªªßÞI$I’$&›$„ªªªªßÝ`B2I’Æ›ƒªªªªßÞH$I$&›$„ªªªªßÝ	’I’„Ä›ƒªªªªßÝ$A	I’Æ›ƒªªªªßÞ	‚ A’ &›$„ªªªªßÞI’ 	‚…“e‹ ßÝL&$	’Æ›ƒªªªªâÞIœÄ1…“E‹€€àèæàéä	&×–E‹%ƒààæã`Iš$E‹ƒÿ¿äâ 	2	I’¥‹¥Šªªªªåâi’4mšE‹ƒ€çâ®ãºÛ&	E‹ƒþÿçã1eJ$‰E‹ƒðøÿÿæãK²´À`E‹ƒÿÿçã1e
”@	E‹ƒàøÿÿçãA-&E‹ƒÿÿ¯çäÀ6 š®E‹ƒ¿¿¿¾æá	�Lu;·E‹%ƒp æâ¢d¶ÒE‹ƒ¢°°äO@ E‹ç9pÀÞöïÿÍþ…“è9UUW\W IìÏ&BÇ9ÿÿªR*P	q¦�
è9Ç9««êèç'à>á‡E‹çA
%•ãáL�’e‹E‹ƒÿ~ïåâiÓ5[;E‹ƒ
Šçá	” Ie‹ƒpp~÷çæA@fƒ‚‚ªªªªçáb‚9€E‹äz

ªªçäiQ`ÃE‹ƒüþÿÿçæA ‚ fƒ‚‚ªªªªæã@‚µë°E‹ƒ‹âúçå!I€A€f‹‚zªªªªçã„ ’ŒÍ$E‹ƒÿÿæã¶i–¦E‹ƒ¯ÿ€€çæA ’$fƒ‚‚ªªªªç\š@%ƒGR~æ4I2úƒè9Uz€å4òÿ«h%ƒç9UU_ ‡<b'u&'JÈ9ÿÿÿødH÷Oi„T>ç9Ç9þþ^3£ƒù˜ß:èAÇ9¯­­¯^)÷àNvû$:Ç9úúª^)Ð*©mŸ?BÇ9ýÿ¿ªÅåðÄOòä&ƒB-UUUæ(`
¹›ÿ%ƒè9+ÕUç.õô“$ƒè9€xWUh�´�¶í')BÇ9ÿÿª*GÐ8²¶Ÿ$)BÇ9¿¿ª.«ëÛ÷)Bè9ÿªúú9
öó?Û
@Bè9*¿ÿJy™“?ÕBÇ9   ê^y—Oœ$@BÇ9êúÿ×ZJw
` ç9Ç9***Z)#·	É�:Ç9ÿÿððZMéç9Ç9 ªªªYCÐÀè9Ç9¿¿ÿÿV'É”L›H(BÇ9úúÿÿæ;p?ñ‡%ƒç9
%•æä$%‹%ƒU_þþæå Æ‹âyªªªªæãÀº¶M›4E‹%ƒµ« åâX³mÉÖnE‹ƒäâ�†“£rªªªªäàˆ 
Å…“E‹UU¥¥äá
 ÅÚ5…“ÅzªªªªãÞsÒ$X¬…“E‹­µäÝùpÔ¶m…“E‹pXwÿäã@†“£rªªªªäDh4E‹ç9\pÀ›¶mûv'†bè9UUUTDÿ��PrBÇ9êèúªÜ@I‘¤I’$%ƒç95ÕUUäD E‹è9-äß˜5À&…“E‹%%UUäÞö�
…“E‹XXUUäâ†“£rªªªªäâ À�†“£rªªªªäã€†“£rªªªªääI’$I’$†“£rªªªªäã†“£rªªªªäã	†“£rªªªªäD@ E‹ç9pÀäCI’$M‚&%‹ç9UUW\D4X‚åÀè9ç9«««ÿD>–chè9ç9ªþþ¿D>I"`Kè9ç9ªÿÿªD:nÈ6è9ç9ª¿¿ªD2°ÿ�è9ç9êêêªD3ØƒýÀ¶mè9ç9«««ªä:9�É•¤E‹ç9
5•ÕääI’$I’$†“£rªªªªäâ@B0€†“Ãzªªªªäâ�†“ÃzªªªªäÙ E‹%ƒªªªJäC€9pÒ$%‹ç9Àp\WD,€è9ç9+¿¿¿:ÿÄNP�9Bç9 ª+äþ¹ðE‹è9Õµ-äµ‘$I@…“{ªªäÞî�Nc=:…“E‹Xx¯/ãÜµ¶ÿÇ…“E‹­­äß´iq’$…“E‹W×ª*äÞ,ÇnÎà
…“E‹ëzxXäâ$	€H2†“Ãzªªªªäà&@
¤Ce‹E‹PZZPäákŠ5kÓ´e‹E‹‹­¢ãß$�b"&…“E‹Õ¥++âÞ$Q¤MÆ…“E‹ÿª
ŠãÞ°I›½9…“E‹_þª*âÞ’:„D…“E‹++þÚàÜ$dJÉÄ…“E‹  ÞÜ`2!A…“E‹€ãÝñ4@…“E‹ðX^VãÞµo¶d…“E‹ª¢òPáÜµ×xµ‹¶…“e‹€€ãÜ‚$�v·…“E‹—¯ âÞ&�	�H…“E‹ZðààäßNšl®0e“E‹â`ZWäÝR/=˜/Ù…“E‹%¥âÝ-�
i…“E‹øøº¾âÝµíÄvç…“E‹ àãÞñ·’H…“E‹è¨¿µáÞKÚ¤°…“E‹€êªäÝœ@rZ?>…“E‹^ß%âÝZ«Õ¶�J…“E‹«*øðàÜ’à˜´M;…“e‹ªá°þÐ8e‹BTXPp?Pn¿�$BÇ9úª4’0r¶›äBÇ9ûª€@;±e›ÿBÇ9¯«ªªI’$I’$jB†AªªªªI’$I’$)BBÿÿúú@É�¼9BÇ9€ àAe/ð/:BÇ9ª®¯ª0NâÜ~wBç9 à<¹ën IBç9 ¨þÿ8~B?˜ƒ9Bç9/ñs·{»Bç9à 3ÒVJ1äjBç9¯ª¨ª10’½ï$)Bè9_ÿ«ªBPJ7——BÇ9úª  /„­š¿>Bè9¿««*ØHçuZ‡)BBUíïï9±ð“6­Bç9à¨ª*$ ËŸÎíü	J*ªªªª2’#Õ.ç
)Bè9¯¿ÿ~3IbûÒ)Bè9ª¯ÿUâ¹�`E‹B
	åàñ`kÕve“%‹xzÿÿæák�9«£:E‹ƒæá‰OñàME‹ƒ€€ æáÛ
iR=;E‹%ƒ*/ãá$H‚I˜„e‹E‹ÚZàðåß¶”íTJ…“%ƒzzúúäâ$$ÀE‹%ƒªª  äà 	¶é˜e‹%ƒúê€äâI&E‹ƒªª
äám³6Û6`E‹ƒ¨ªãß‰m›	ˆe“E‹òûÕUäßnwíÔ	e“E‹^ZWUåßmRº'…“ƒŠªÿÿäßm¼:P
­e“ƒ
ª¯¯ãß’#8’I’e“E‹5%õUáßI˜„ 	e“E‹À€ÿUãá0d’0E‹ƒâáI’$I’¥‹¥ŠªªªªâáI’$I¥‹ÅŠªªªªâá@’$’$¥‹ÅŠªªªªâà@’$I’e‹E‹ªªªâáI’$	’$e‹E‹¨ªªªááI’$I’$¥‹ÅŠªªªªâáI’$I�$¥‹ÅŠªªªªâá‚ ¥‹¥Šªªªªá*{‚=À`e‹BVX`€6'µm?öÿBè9ÿ¯¯¬,'ƒà¸¶kwBè9ÿªªêâ*)�Iš$E‹è9
5ÕUã}E‹gZãâ	€H€ …“Åzªªªªã4@4E‹è9Àp°4Hò$I’$¦jè9TWUU94Ó0mv�Äè9ç9êªªª;6Ômé–vè9ç9ÿþúê;9 I’ ’(Bf1ªªªª;9$A’dB$(Bf1ªªªª;9$"D’$(Bf1ªªªª›7I’ü¹�FZç9UUUä9I‘%ƒç95
äâ$‚†ƒäz«¯þþãâI$	$ƒäzªÿÿãâHAEƒÄrªúÿÿãâ€ ƒÄzªÿÕãâ‚$%ƒäzª¯ÿãâ	€%ƒäzªªÿãâA’ 	’E‹Äz
ªÿÿäâa@’dH†%ƒäzªªÿä-,%ƒJ€`ãP-ÿÏŸüƒç9pVUUObýcÂ&:Ç9�­­­\+•T§–®Ç9†1  ä+öù!@ƒÇ9•%	äÜýO;›±…“{*¯ýçÝñy——e“ƒXX^_æâ@&éÐ%ƒƒ*äâI†d†E‹%ƒ««ÿÿæâ¦`1dJ%‹ƒxXþÿçã 	6•P%ƒäzª¢€€çå I2dB’%ƒäzªª¢ªçâ­³5Ò&%ƒäzªªªçã‰›”fƒ‚‚ªªªªçå!@HƒäzþªªªçZ`À‚%ƒÇ9€`X´YH’$I’$ebÇ9TUUUZYH’$I’BE!ªªªªZX 2A‚Ç9†1XUkÛf[‡mBE!ªªªªXP“$	9BE!ªªªª[P 	Û”sBE!ªªªª^YàIi•XBE!ªªªªaZ’4ID'BE!ªªªªb^‚D’¤’Ç9¦1ª b` ’IÂ$Ç9†1ªªca‚$Ç9¦1db	I’$èA¥)ªªªªdb	’èA¥)ªªªªdL  ç9Ç9????\µðOO÷TBÇ9zðàâd›@N›­=BÇ9_ÿ¯­�=mÝ¶nFRÇ9UUU5è5·ýÛyGƒç9UUõèdIsƒÇ9U½é1%%ƒJ½çä@‹µí–E‹ƒ­¯úøèæ!‚ A‚f‹brªªªªèåÍ–Û†m%ƒÄz  ªªèåkº¥Û¶%ƒÄz

ªªèâ‚4ˆÐ,5E‹äzÿ».èà“T
÷Oe‹ƒ_Zppèà’&��¯%e“ƒßµ­
èà	e”4ie‹ƒàp~þèßZ#=Ø?ºe“ƒ-

«æßùo\Ù…“%ƒøú¯¥æÞtÎÇš
�…“%ƒ
Š¯õèßÕ4hR«9e“ƒþ÷¯èÞ$�¤m?…“ƒUÕª
æÞôÛ{¯K…“%ƒ‹âxxè4 @ƒ&%ƒè9Àp\ŸQ°Û±ÛfZÇ9TUUUc€ˆP�9BÇ9õõ­-§þýäIžærBUUUæN9‘E‹ç95
áÞH‚$MÒ$…“e‹ßÞA’$I &›$„ªªªªßÝ!’!É�Ä›ƒªªªªßÞAI‚&›$„ªªªªßÞI$I’ &›$„ªªªªßÞI’$H’$&›$„ªªªªßÝ I’ I2&›$„ªªªªÞÜ I’$†ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ@‚  ä›è‚ªªªªäÜ±p±pS…“E‹ppp`èæ!A$f‹brªªªªèçA A’f‹brªªªªèàPÍ
ÑE‹ƒ///ßyÀ¨…“çr`À€ÃLIò$|>Fƒ§bUUVXMLI’$H’$¨b§bªª«ªMLI�$	�¨b§bêªúêÁLI’ÄÉ™F‹§bUU•%ÝyP…“çr	ÝÜ€ Aä›ƒªªªªÝÜI�$ä›ƒªªªªÝÜ	 �ä›ƒªªªªÝÜ€A‚$ä›ƒªªªªÝÜ€‚ä›ƒªªªªÝÜ€ Hä›ƒªªªªÝÜI� ä›ƒªªªªÝÜH�€ ä›ƒªªªªÞÜ$À$ä›è‚ªªªªÞÜ†$ä›è‚ªªªªÞÜ$Æ›ƒªªªªßÜmº®Û0lÄ›ƒªªªªÞÜIH€Ä›ƒªªªªßÜm›¶ÍÖä›è‚ªªªªßÜíÐ¶Û²mÄ›ƒªªªªßÜm“¦i;lä›è‚ªªªªßÝ	‚$I’Æ›ƒªªªªßÜ[»­[‹¥Ä›ƒªªªªßÜ@Û¶mÛ¦ä›è‚ªªªªàÝIš¶�…“E‹¨¨æÝ©à
÷h·…“%ƒxxø çÞDJ6™·e“ƒßú  çß@JùvSe‹ƒúú  çàã@NíK'e“ƒ{úª
çâ�¬jÉE‹ƒ¯¿(æßÓ&ýëœ…“%ƒ_Wêâèàl.Õ’&AE‹{®¾èãàm¶]§E‹ƒþþ‚‚èà��%ÚC>e‹ƒ


èäiH’E‹ƒÿþþüèæI$f‹‚rªªªªèàÚIP­%e‹ƒ«÷èãí$ƒ�mE‹ƒþÿÿüèçA$	$f‹‚rªªªªçä@Šµi“bE‹ƒ¯¯ºúèâ$¹	ÉäLE‹ƒ®þððèä$)I‚ :%‹ƒúÿÿ¯èåm²m–¤E‹ƒïÿÿúèàÚÙÒ&IE‹ƒ¯ÿæÞÚ#=’Õ…“%ƒ--ãÞƒÔ®ql·…“E‹—ªˆªáÜm[Ûš
4…“E‹
ãÝ¦±o…“E‹xppàäßØªÍö–¬e“E‹µ½úðãÞ�íÄÎÐJ…“E‹Š€bzäáiÛ5Ûle‹E‹¨§ÕUäâ 	™�¦‹£Šªªªªäám›b¶­e‹E‹:ÞÕµãß	‘4E’e“E‹ppzåßd¢µÒ6Ae“%‹¯÷WåÝ’#Ñ�e“%ƒ/ÿÿæÞÉûßb	i…“%ƒ€€¯ýäáiÛµX»ne‹E‹¨®µåÞ¥Æ�£ƒ=…“%‹ßÿ/-åÝµ`OÉûû…“E‹ZZ€¨æà4iI§e“%ƒÕÿª¨äÞÛˆ‘
4…“E‹ýõ¥¥æÞ¥ÐNùÿÿe“ƒzêæÞ€$¯K…“%ƒõ_xøæÝšõšHJ…“%ƒ-ÿÿâÝnå¸ÎÐ…“E‹¨€àâæâdˆ¡ÛE‹%ƒž¼äÝüÃç˜�Õ…“E‹%¥æÝ±à
¥Ð…“%ƒpx~^æÞÚýÐýe“%ƒ


æán3ÔÓÚÙE‹%ƒæÝOZ»“$…“%ƒ€‚ÿWçäÙ–
Ý¶m%‹%ƒVVÿæá�
Å€@E‹ƒ/ÿæãÖaÉÐbE‹ƒþü°°æã-�É�E‹ƒððààçæ	’$I’$%ƒƒªªæå�%ƒƒªªææI’$I’$%ƒƒªªçæI’$I$%ƒƒªªçÇ€€%ƒCb@ÀÒ«OÒ?ì>#ZÃIÿýµô´­±yûñ?`ãQÃI€ª·¬ãóçùùãQÂI
€ Ã­In»”4	ãQÃI€êwWÂ¸á0JBIªªªªÂ¿†mŠ&JBIªªªªÈ¿¾a¶RÃIåâlX²5E‹%ƒªª

äÃ�è€
‰e“¤rBJÊ‚²«9—$~"¬ãQÃI€*Àª®�sùýdCbÃIW_ÿ?â°¶}»ñ0e“ÃIUU­ä»91E‹¢A-äØ‚(E‹äz@äª€HÐÖ'e‹R€Wàªl�$…“ãQþUãªHöŸ$e‹ãQUßªÿ“$…“RUUßª II’$e“ãQUUÞª mI’$¥“ãQªUUàª°‘Ižü…“ãQêUUçÀÐÚùŸÿ%ƒÃI_UUæÆô'I’ä{ÃIUUUçÆ•ƒ£I*%çãÑ’$E‹ƒ//ÿÿçÞm²Ö’@…“ƒ
ªÿUçâ™ä
IE‹ƒøøþ¯çæI$fƒ‚‚ªªªªçå C�€fƒ‚‚ªªªªæãX´+�tE‹%ƒ¯­zàçäé°ÃÐ
%‹ƒøÿÿþçæH‚€fƒ‚‚ªªªªçãÀ€€E‹ƒ/??¿áÜÚ0{s¦x…“E‹ê‚‚‚çã`I–šE‹ƒþü¬ˆçæH$’$fƒ‚‚ªªªªæâ@&¤$E‹ƒ¢úçã@	¶�E‹ƒþþøðçä2 À6lE‹ƒ?¿ÿÿçÜÎ_»Û6…“ƒ‚ÿ_çááVJ$E‹ƒ øþÿçálKÚb‚Ùe‹ƒŠ
çäÛR ÝR E‹ƒ¿>>¾áª
&zÒ$E‹R`XTW­ªH›$MÓ¤DZAAªªªª³ªÏ•\I”ãQ¢I€€€€Ç¿—t	—	ÃI‚A¨¨¨¨ÎÆ/qÛ¿�Û#Z£I-UUUÞ»“P'µï¶…“£I+ÕUUß«PõÏ>…“ÃI+UUå­î”»%ƒÃI¿UçÅO%ƒÃI
çå I0€fƒ‚‚ªªªªæâ¶d
-:E‹%ƒzz¢çã$%¡`E‹ƒÿÿúúçåL€€fƒ‚‚ªªªªçä°
ÍÐtE‹ƒÿÿúêçå ��f‹‚rªªªªçæ f‹‚rªªªªçä[‹%À%‹ƒÿÿçæ		fƒ‚‚ªªªªçæHfƒ‚‚ªªªªçæfƒ‚‚ªªªªçäXƒ5Ø†­E‹ƒ¯/¿¿ä¾›ÿÐè%‹ÃI¯TpÀâº`ÛÿŸääzÃIUUUäÁ�Üùÿ?ƒÃIUUUæ½ÐÚ~ò'%ƒ£IÿUUçÁà¶ÿŸ$ƒ£IÿUUç³@²~þ'%ƒÃIÿUUç¿`sùŸÿ%ƒÃI¿UUçÀ°	ÿŸ$%ƒÃI
UUçÂnù'%ƒ¢I¿UÖ4û'X¢þäzÃIÕW4ñ±äJäz¤r   £_<lÂÚ6å
Äz¢AVp€_J)P›ªÍÄr‚AUU^àU6�iµïÜ¢A‚A¿¿>4K¦DN9ãQ‚A¿¿¿?J4@ôî›WEƒCjªªªªV7Ib» äzÃI@@@@]8In»’&A¢A‚Aªÿÿ\?dBº6Õ
¢A‚A
¯úú]7¤#Ñ€(A¢A‚A
/¿ÿ_8ñp÷àS¢A‚Aøøøâ_] 0áIå0ªªªªaX	%	’”TáIå0ªªªªg`Ïôî“$¤r‚AUU•`2X‚%ÐäzcbªaRH„HäzÄrþþÿÿaS"!’(IäzÄr¿¿¿ÿa2É�›äz¤rààêêcN€9äz¤rÿÿÿ+cL€ø?äz¤r¿¿¿cBI—ÉpäzÄràpppcAkÕÐÕäzÄr­ý­^?Ü(ˆPÓþäz¤rª®_:÷ú�ñä
äz¤r   à_Nì¿Ú@%ƒÄr¢ªÿU\'å#ì¸aäz¤r
/ªA®–�>Ç
%ƒäzÞúú_RI™�­°	%ƒÄrúúþÿZ$ù”	õƒÄrèè»¯_4š$¦äz¤rªª  _;P‹ýØõäz¤r



X�#Õ›´I%ƒÄr/ÿÿKIhÛÐhE‹äzªªõUásî'e‹äz¯µå*�e“ƒ/
êUèÝ‰mÛÛ&	…“ƒ€ ÿ_èÞÏý»äe“ƒ€€ÿUèÝÛ3ù•…“ƒ/­­çÜösÛÓ&…“%ƒÿUçÝñ` …“ƒpøßÿæâ"HJ&É˜E‹%ƒš²‚€çàOüÄc+�e“ƒ¢‚¯õèåÝÚaÝ–µfƒ‚‚ªªªªèä B¦‹E‹äz¾¯úºçã€$I´í$E‹ƒÿÿæãmÒ´í–E‹ƒð°çâ.äJmë8E‹ƒððäÞ"‡mXËÆ…“E‹ýõ­äâ!"!C€E‹ƒ  äÞ´mNÌ¸…“E‹U×‚«çÞõý§åT…“ƒ‚€ú^èáykn	qE‹ƒø¯¯çâ‰°	R¨E‹ƒàú//çã�9vœXE‹ƒ€çã1`J’	PE‹ƒðø¯¯èæ$’f‹‚rªªªªèædB� A‚f‹‚rªªªªèÞŒX�9…“ƒUõ--çÞÔJ9—´…“%ƒ]_øàæà«½¦¤P
e‹ƒêàèä±DALÉE‹ƒüÿÿÿèâ’0Jñ�E‹ƒÿÿððèÝØƒõ€@e“ƒ
-µÕâÜîT›uŒm…“E‹à€«äÜ@MvÍ>…“E‹U~
çÝ½Ñî…“ƒ¥¯øpæÞ¾í'â±e“ƒ€­çâi›¶…4@E‹ƒüÿæâ´MÛ€9E‹%ƒ

ãâ$I� ¥‹¥Šªªªªãâ’$¥‹¥Šªªªªãâ	‚¥‹¥ŠªªªªãáÀ$e‹E‹ÿÿÿãÞ’m˜#Í…“E‹Uõ--âÝP­Õ¶íØ…“E‹-+ßÞA$	$&›$„ªªªªßÞA’I’$&›$„ªªªªßÞH’$I’&›$„ªªªªßÞA’ I�$&›$„ªªªªßÞI‚$H‚$&›$„ªªªªßÞI€I’&›$„ªªªªß^P¨…“Çjxà€ÔMIò$ô±f‹‡ZUW~ zMI’$I	ÇjhRÿÿ¿ÔMI’ä¹Y
f‹‡ZUÕ½
ß_©P…“Çj-ÞÞI’$I’$&›$„ªªªªßÞH’$I‚$&›$„ªªªªßÞ	$H€&›$„ªªªªÞÞI’$I’$&›$„ªªªªßÞ	’$	$&›$„ªªªªßÞ	’$H�&›$„ªªªªÞÞI’$I’$&›$„ªªªªßÞI’ I’$&›$„ªªªªâÞ‰K6K…“E‹¨øø¨ßÞIH$…“e‹àÞI�„I’$…“e“`€ãÞ4I™o…“E‹W^úøãß$I¦”�e“E‹U_zpãá I À¥‹¥Šªªªªçâqå	“´ME‹ƒàøþþçä[Š5Ø¶mE‹ƒ¯/¿¿æâ€Ñ´M'E‹%ƒ%åâÝšv�E‹ƒààçã¶
’DIE‹ƒøøÿÿçãR"0�h“E‹ƒ/ÿªçãIœ$"E
E‹ƒÿúçâ¶c;›�µE‹ƒçávÂ&+ae‹ƒª¿äà	H	•Pe“E‹UUzRçP€E‹BpÀåöoÿs‚=ƒè9UUVX>*¥P’!ùIéA2ªªªªN/åö
wo7BÇ9ÿúªªä`O‘¤e‹B
5ÕçÞ�T	“E‹ƒàøüÿçä[ŠµØ6`%‹ƒÿÿçå@’$I&%‹ƒÿÿÿ«çâ¤Iuç¸E‹ƒÿÿ‚€çæ€	fƒ‚‚ªªªªçæ@  fƒ‚‚ªªªªçäÛ¶
éÖ%‹ƒÿÿððçæ‚fƒ‚‚ªªªªçåL‚ fƒ‚‚ªªªªçã¢I’
&E‹ƒÿÿ¯æãÀ¤XÒ6E‹ƒ¯æâ€(™€#ÈE‹ƒ¯/æâ€,9vì$E‹%ƒ%
äâ$˜$L˜�¥‹¥Šªªªªæ�PE‹‡Zxç}¢Ñ%ƒBUøåÉŸüb@E‹BUU~€¦O’$ÿ�Õ†bBUUUXSy›“¥@BÇ9 ¨úúYO^ß	H)BÇ9‚ªÿý_*±ý¶”$è9Ç9¨ªþW_5ÿcÛšhè9Ç9ªªÿý@ãƒÕÐm)Bè9¯½õõ,IbÛ)BÇ9ªÿÿ,¹i›`)Bè9êêÿÿ@
“Ð	ö”tBç9þêà X“ H£Í&BÇ9ÿÿ«
^)4mn»BÇ9ÕÿþêYE$m[Â%ç9Ç9*
Y=­l›½%è9Ç9úÿ¯¯ZE ‘dB&ç9Ç9ª
ZR’4�‘vÍç9Ç9ªª¨(V9€†‘àO'è9Ç9¿¯«ªMGZ2I�”m(BF1ªªªªåJ�ù�d%ƒç9	%•çãH‘±�ØE‹%ƒÕþ  æâ #Û‰é�E‹%ƒ€äã †“£rªªªªäáÀŠ5Xte‹E‹µ%¥õäâ	†“Ãzªªªªäâ@$†“ÃzªªªªäÞšƒ5À…“E‹%%ÕUäÞ	s¤ …“E‹èhZUääI’$I’$†“£rªªªªäã †“£rªªªªä+àì%‹è9X`€«ÿÿävÿ¦jBUUUTD4`èAç9þþþþÌ4¿ñÿÿó?{ç95ÕUUä �e‹(J	%äà�`:e“E‹UU¥¥äâ �†“Ãzªªªªäà1e“E‹ZZUUääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäâ †“£rªªªªäá�†“Ãzªªªªäã†“£rªªªªäD@ E‹ç9pÀäDI’$M‚&E‹ç9UUW\D? @è9ç9¿¿¿¿C4É–o°mçA	2ªªªªD/NîÄÛèAç9ªªÿÿD7&H€0è9ç9ª¾¾«D*½û¼>õèAç9ªªêúD7@1è9ç9þ¾¾«ä'p1�E‹èA	
5äá`Û²­†“ÃzªªªªäÜš$	›´)e‹E‹Zzà`ä3
4hÒ?E‹è9Àp\WD3ÐIùöoè9ç9þªªªD &©lÏ:Bç9ÿ¿ªªßOž|ùð…“BU•%	ä´ e“åz©ª  äÝX�5½Ñ…“E‹%%µ­àÝm’´É¶…“e‹ààãÝ‰k—¥@J…“E‹€ zzäáI²me‹E‹õUUäâ!I$H†“ÃzªªªªäÝm]ÿ¢9…“E‹ª

%ãÝ.�
)O…“E‹XPPðäÝ›@N½ëç…“E‹_{‚äà’#ˆ“e“E‹¥ÕWxãß¤I™PÙe“E‹ªï
­ãß‚(€(e“E‹%µµ5áÜÐnuÛ¤…“E‹¨ ãÜþãÚÜ6…“E‹úVãÝIçRÛI…“E‹ àê}äÝ‚$ŒR­=…“E‹UÕ%
äÞ¶¶àN…“E‹PXXZäÞ[�Ñb³&…“E‹­µ-âÝ¶NçV…“E‹ðð ¨äßIëV• …“E‹âzWUäâH@Â$†“Ãzªªªªäá@t€me‹E‹õUõäÞ-±P£Ù…“E‹µµ%-ãÜÎéš¥D	…“E‹€€z~äáE³5mÒve“E‹µµÿäÞNb;“Œ…“E‹×ÕáÜkÓ¶Ú¤	…“E‹ªªáÜq×¶š…“E‹ª¾áÜŽÓºZ‹y…“E‹‹âÀà@e‹HJ`@ÀI’$IqiJg)ªªªªIž$I9	J*ªªªª
�$I’$)BBÿ¯¯¯I’$I`)BBªªªÕI’$I‚D)BBªªª«71o¹ýçBç9ð `ÝäOÚ¾	J*ªªªª@ùôJ@IBÇ9 èúª:¬M?˜£ÕBç9
+�c'yò$iJg)ªªªªEy™SñOBÇ9  à F›9-�BÇ9*++ªOòÿ´�m)BB««ÿU&±K¯4A)BB^^WUX;ÛsÂç	J*ªªªªu\'vB	)BBï¯¯WÓšÿùõ	J*ªªªª¾i›vÊ
	J*ªªªªIñvJ§PNBÇ9¨úúêªÉ�Ü~j{è9UUÕäž  e“¦j	
äÞ.1gs…“E‹ZX`úåàP«µ­í:e‹ƒ
åÝ4‰µm?…“%ƒß¿äÝ,gs÷…“E‹ëêxXåá±J$’E‹%ƒ º*åà­ÐNuWÇE‹%ƒààåâXº%[Ò%E‹%ƒ

äáX$@»%E‹ƒ


äámÚvÅ0¬E‹ƒ(
äà	š¤íØe‹%ƒ*
âá@�I’ ¥‹¥Šªªªªãá†L’$…“Åzªªªªåà0i­k'E‹%ƒþªâà 	$’�e‹E‹ý¿? áß@	�e“E‹UzzâáI‚$I�$¥‹¥Šªªªªâá	’$H’$¥‹¥ŠªªªªâáA’$I�$¥‹¥ŠªªªªâáI‚$	‚$¥‹ÅŠªªªªâáA’ A’$¥‹ÅŠªªªªâáI‚$	‚ ¥‹ÅŠªªªªâáI’I’¥‹ÅŠªªªªâá	$H’$¥‹ÅŠªªªªâá	’$I’$¥‹ÅŠªªªªâá I$¥‹¥ŠªªªªâáI‚$I$“„ªªªªâ)K‚=€E‹èAVX`€+'ÁP$ER:è9ªªªª/+1a
¡`IBE1ªªªªã0)�Iš$E‹è9
5ÕUãCV,E‹B€cã2`²$I’$E‹è9\VUU44I’$I’$çA	2ªªªª64d�„I˜„çA	2ªªªª95‘	`è9ç9êêúú;9	™€$(Bf1ªªªª;8h»¶H»¶(Bf1ªªªª–8I’$I’†bç9UUUæ7	%‹çA5
äâC&aÂ$E‹ƒzzúúãâ’$A‚%ƒäzþ®ª¨ãâ$A$%ƒäzÿªªªãâH$%ƒäzÿÿúªãâ@HƒÄz×ÿªãâ€$%ƒäzÿ¯ªãâA�	’ƒäz¯ªªãá�	0%ƒäzúªª*ã",%ƒB€`ãÐ£'ÏŸü$ƒç9XVUU5m.ý€´ç9Ç9
ª 5Z¢%X.~è9Ç9¯¯‹«æ+ù—0ƒÇ9•%	èÞ9u¥ÀE‹äzxzz_èâ��&@EƒÄz¿ÿÿÿçßÉd$M%ƒäzàðÿªæã
–-�%ƒƒ:¢  äâdÈ„` E‹%ƒ«««­æãÃ°a)Ð%ƒä‚¨¨  çämÛvÝ–fƒ‚‚ªªªªçå!I€f‹‚rªªªªçæ‚Af‹bjªªªªçæ@ f‹bjªªªªçY`À‚%ƒÇ9€`X¼Yxò$I’$¥jÇ9TUUUZR$H’¤%èA¥)ªªªªZWÀ¶aÛ–mèA¥)ªªªª\T’$I$>BE!ªªªª[F‚I€(1èA¥)ªªªªZÐ¦±ãO'BÇ9õ½¯‹Y(¥ðNwÛè9Ç9_~úª[5°M¶�$ç9Ç9_ÿ^7P;ÞþŸ$ç9Ç9­`9@¯ç9Ç9W_xpa`I’I’ èA¥)ªªªªca 	BE!ªªªªcbA I�$èA¥)ªªªªdb	Á�	ÈèA¥)ªªªª®N¶c;¶ã†bÇ9UUU-ç!É�¸÷$%‹èAUU½è#~^Ne“çAÕ-èq©  e“†b½   èæ	IH’f‹brªªªªèå†µX²¦E‹äzÿ»¯¯çãtL›€E‹ƒªÿÿèä@A¦”E‹ƒÿÿúøèç€$I$f‹brªªªªèåX²¶ÀÖa%ƒÄz

ªªèæA�$0f‹brªªªªèâPÕRË:E‹ƒ///èßñä
”Äie‹ƒpðþþçÝ�
Ú´ïç…“ƒ­æÝ«õí�ä…“%ƒµ/
æÝ­`J«9…“%ƒzx/èÜP;Úöÿü…“ƒ
çÜ0Hvûä…“ƒ÷þçÝP¯Ù¶�˜…“ƒ-+€€äÝvÒþ€
ù…“E‹

%%à=è�£'e‹È9Àp\`ø�¼?eSHRÈ9üÿ_cNp0ç9Ç9üüÿÿÐõSÿ­Ûårç9UUÕáùðe“(B%	èÞ8ˆSM:e“ƒ··/
áÝpÌÄtœØ…“e‹ßÞ	’$I’$&›$„ªªªªáÞiš$I’…“e‹øáÞIš$I
4…“e‹/àÜ)’¤#	…“e‹ äÜ¾�s/ÀA…“E‹ X^áÝ¶Ã$ŒM…“E‹¢àÜ‰íØ¤
9…“e‹
ÝÜ€€$ä›è‚ªªªªÝÜ� 	ä›è‚ªªªªâÜ6W¶g{…“E‹à€€€èåÝÖaÙ�a%ƒäz¨¨¨¨èç@I‚$f‹brªªªªèáXƒùP5E‹äz
ßÜK‚¶Hº¶ä›è‚ªªªªÝyXh…“çrx€ÝLOÂÚ�…“§bUþ ÝLIn—’…“§bU¿Ýzé0…“çr-ÝÜAHä›ƒªªªªÝÜä›ƒªªªªÝÜA@€ ä›ƒªªªªÝÜ €ä›ƒªªªªÝÜH€ ä›ƒªªªªÝÜä›ƒªªªªÝÜ@ ä›ƒªªªªÝÜ�	ä›ƒªªªªÞÝI’I’$ä›ƒªªªªßÜÃ6l[74Æ›ƒªªªªßÝ$A’$Æ›ƒªªªªßÝ$I’`&Æ›ƒªªªªßÝ$’d&Ä›ƒªªªªÞÝ‚€Ä›ƒªªªªßÜmÚuÛ0lÄ›ƒªªªªßÞH�A�$…“e‹€€áÝ
Ð$i;…“E‹*/
ßÜ[‹¦KÚtä›è‚ªªªªßÜkÛ6]‹µä›è‚ªªªªÞÜaB’d�ä›è‚ªªªªßÜé–µÃŠaÄ›ƒªªªªáÜn·.à…“E‹  äÞÉöd…“E‹ppzZçß I£Ãúe‹ƒþÿ
çÝ˜
:vbÛ…“ƒ
âÞ&ÇI(…“E‹ª€€êçßùôJ4‰e‹ƒàðÞªçß ­”Le“ƒU_úðçâ’*A‰�E‹ƒ¿ÿððèß}ÒûÒ�e“ƒÿõæà.—r Ie“ƒèê_ÿèãî�
›0­E‹ƒøøÿ¿èÞàÕ€8Me“ƒ
-õÿçß)çz¢Ýe‹ƒà€
èåVlÙ–µ%ƒäzª¨¨èæ	‚’f‹‚rªªªªèåm·
Í–lE‹ƒÿÿúúèÝX�=Ø?þe“ƒ-

æàn—”6`e“%ƒêèþ×æß°	w÷x…“%ƒUêàæãX`ØÖ¶E‹ƒ¿¾åàö¶uj9e‹%ƒ‚
äÝØƒÕÒ6…“E‹
%ÕUãÝI[·“I…“E‹€ŠuýãÞ®Û:�£Õ…“E‹ª
-¯âÞ%‘¡…“E‹¯®øØãß@A	™P…“E‹UWêàãàÀ´m›$e“E‹õõ¯ªäß�³%vWe“E‹%zpäà¡`
 ˆe“E‹^VUUæãmÑí–lE‹%ƒèêêàæã[‚%ë¶­E‹%ƒ««æãÝ²!¶mE‹%ƒ*>¾ªåàI‘ h…“%‹zz_Õåß˜ƒÅkÌÆe“%‹


æßÝFp›M&…“%ƒþ÷¯çâm+i”vE‹%ƒª×V¨çâvÒ¶Ò6HE‹%ƒ‚ÿWæá]+`ÐÍE‹ƒ?äß°AÉæ¸e“%‹^Úà¢äÞ,ÐncI'…“E‹ZZ«
äÝÎ[¿F`…“E‹‚ªUUæßVn~÷¼…“%ƒ×ÿú äÞM\»Ò*a…“E‹ŠªµÕæÞ`J?•x…“%ƒ^zààæÞÐ/9Ò#ñ…“%ƒ--
¯ãßdL&"I	e“E‹�ŽþWæâ@!`E‹%ƒV|xxçæI’$	’$Æ‹âyªªªªçá’$mš�ÅE‹%ƒU¥		æå	  %‹%ƒß×ÖÖæãÉ�	ÐE‹%ƒpppzæå  Æ‹âyªªªªæãíÐÉÐE‹%ƒzppzçæI’$I�$Æƒâ�ªªªªçæI‚$I’$Æƒâ�ªªªªçæA’ I’$Æƒâ�ªªªªæ²r‚þ˜
´ƒÃIVT\PÅ»!C€ÃI‚A(ªªÅ²	[�±ãI£A 

Ã³ÿ�îÀMãIÃIxp^_ÂÀ A$&JBIªªªªÂ»X¢å©‘J@IªªªªÉ¿±÷ñ#ZÃI••åÜ€‰R­5…“%‹Õµ-
àÓ�(M’¦)…“E‹Â€@â«¶mÛ¿™E‹ÃIUU×%ßªá…“R%	àÎ’ I’$)…“ƒ€@ä°`¢�ØE‹ãI€XWâª˜_?õSÿ{ãIxUUU­ªH›¶M²6DZAAªªªª«ªI’’ DZAAªªªª«ª’$A‚DZAAªªªª«ªI€$$DZAAªªªª«ª‚ 	DZAAªªªª²ª’$yü
ãQ¢I€ÆªÉ�»÷T
ãQ¢I€€èúÇÀ‘dI“&	ÃI¢A¨¨ªªçÅI–!@ƒ£I•%
çæ	@fƒ‚‚ªªªªçä`¶-E‹ƒÿÿÿ¿çã JNè$E‹ƒÿÿ‚çá˜­9Ò*`E‹ƒ/¿çßDIþû¼…“ƒWþª‚çåB02%ƒä‚ªª¨(åâK»¦m»E‹ƒ€çã± AE‹ƒøøþÿçæ€$’$fƒ‚‚ªªªªçäº­ÉÖlE‹ƒ¿¿úâæÜ|ÌÞ˜ù…“ƒ
çÝœ`
ïO…“ƒþzxàçâIÐ¼9E‹ƒÿÿ/çã’HI±
E‹ƒÿÿøøçã	a’ˆE‹ƒðúÿÿçå0H’E‹ƒ¿¿ÿÿçáÉ�£0re‹äzààêªçæ�$fƒ‚‚ªªªªçæ@‚€$%ƒäzªª
çÇ (ƒÃIÀÀ`ÆªýC?š9ãQ¢A
++ÜªI’$Iš…“ãQUUÕ5ÝªIžäµ
…“ãQUUÿß¹·ÛOe“ÃIUU_Þ»¶mÛ¹@%ƒ£IUUU¨ÖÁ¶mÛvñcb£IUUU€È«˜ƒù˜¯ÝãQ£I---€Å­1ç’Ó&HãQ£Iøþÿ÷Ì¼ðß%»õCZÃIUUUç¸`¿”P%ƒãI	%æÞ�&m6•We“ƒýÿêàçã”@II&E‹ƒþÿ¯
çæ$$fƒ‚‚ªªªªæJ1E‹äz**ªzä4puž$E‹äz€ ÿ}ç”%ƒäz¨¨*+çä¶mÉ–n%‹ƒÿÿððçä°
íÖ´E‹ƒÿÿú¢çã ’Œí8E‹ƒÿÿçã@‘IìÄE‹ƒÿÿçâP­9®c·E‹ƒ/äß“2I“$LE‹%ƒ@â¸Ï¯ÿØ0E‹ÃIUVX`Å¹»õíŸÿäQ Aªªªª¾º�í8N;äI Iªªªª¾º;¶ã8äQ Aªªªª»®€�‰ÅãQÃIÿÿ¯�Å®‚(Ñ’¯=ãQÃIÕµ¥¥Â¯þ›¼æÔãQÃIêê~WÅ¼CßÕîô”J@IªªªªÄPRü€ ÃI‚Aðàê¨[RI	’ Iäz‚A-ÕUU_Y		Ôd›˜Är¢A	•`O#³ÍÀhÄz¤r**ª©Z<O×
mäz¢A^pÀZ4£Õ€8A#Z‚A•••”N4±ð¾»þäz¤rJ7"ÙäNšäzãQ@@ÀÀa?÷�0¢A‚Aúøþ_`XÉ")’	áIå0ªªªªaJ	™�¤áIå0ªªªªb:ÏÛ¿Û¢A‚A‚ªÿõaX‘)•
HáIå0ªªªªfI	—P$0áIå0ªªªªa_	Éˆ�Är‚A5%
a_IB&$C‚DŠkÿÿÿÿ`_@DŠkÿÿÿÿ`R` äzÄrÿÿ¿¿a MýÛç%ƒÄrUÿªŠb%˜ƒ9Ã6%ƒÄr­­÷Wc%IžÄÛ@%ƒÄrªªÿÕbFàñä·äzÄrüüð c˜£9ãFNƒÄr--ûú_"ñ“ I{Äràp~ÿ_HœmØ¯={¤rþÿ¯¯_­š#þƒÄrÕµ­¯S
-`o­O:%ƒÄrúúª/Z¤@
¯”s%ƒÄrÿ~øðU�+Ú>™KƒÄr¯«ªðXÒCþ>÷%ƒÄz¥¯úZ_.©�
®DJäz¤r    _;€¦MýÛçäz¤rªª_š�9Â*@ƒÄr//¿×?å�WNºš%ƒäz~è‚ë_c"Ùƒ6ƒ¤r¯ÿÿ­=¹q»¶mÛƒ¤r>¿ÿÿèLPñ�¤E‹äz ‚
µè—�e“ƒU_xzèßØ£=Rme“ƒ

­õæÞ“¶­P­e“ƒ¾ª/­äÝípw�[¿…“E‹Zà€ŠçãI‡”@E‹ƒ€þþçã’
9’
YE‹ƒ¯çãvh'”ØE‹ƒ€èãTaÞKE‹ƒÿÿøðåãdB2L&E‹%ƒäá6 Ã†“ÃzªªªªæàI›�¦°e“%ƒ  ú_äÝ}ÜŸÚI…“E‹‚‚}UçãD@±iÇE‹ƒüþ €èãu‚Ù“½ÙE‹ƒ¯¯¯èåÙ°
Ð6%ƒäz¨ªªèæ$	 †f‹brªªªªèåXl°6%ƒäz*ªªèä	i’d’E‹ƒðúÿþèâ€i+6E‹ƒÿÿ/èß¤I?™·e‹ƒÿú èàš@N-k;e‹ƒúúªèÜ«±õÿ'…“ƒ­¯âÝ¶àN‰—¤…“%‹ð €€çß•S” e‹ƒ€ úþèæ!’I’f‹‚rªªªªèß›mP¯=e‹ƒÿ¿èà�4Iñe‹ƒÿþððèäŒ
I�$E‹{ªÿÿÿèÝãƒõÐ
@…“ƒ-µÕçÜ±ð>×v…“ƒpð ªçã6i±‹E‹ƒâðð°çà©µþ›¸e‹ƒµ«€€äÞ€4�¢-&…“E‹Uõ­
ãß@RdLÆe“E‹Uõ��çãI;–hˆE‹ƒü¾åâmÓ¶Xƒ%E‹ƒãßb&I
e“E‹

õ_äÞFA-:…“E‹WW­
àÞH‚$a’$…“e‹ßÞI’$I‚$&›$„ªªªªßÞI’$A€$&›$„ªªªªßÞI€$I’$&›$„ªªªªßÞI’$A’$&›$„ªªªªßÞH’$I &›$„ªªªªßÞA’ I�&›$„ªªªªßÞH‚$I$&›$„ªªªªßÍ…“e‹`ß¿O.H…“FƒÿßÍ¡…“e‹	ßÞH’ I’$&›$„ªªªªßÞH’$I$&›$„ªªªªßÞI’$	$&›$„ªªªªßÞHI’ &›$„ªªªªßÞ	�$I’$&›$„ªªªªßÞ	’$I’&›$„ªªªªßÞI’$A’$&›$„ªªªªßÞH’ A‚$&›$„ªªªªßÞI‚$I�&›$„ªªªªßÞI$	�$Æ›ƒªªªªßÝ A…“e‹€€àÞ	C&0…“e‹
//áÞ)Ðni›´…“E‹ø¨  âÞ¶C¶dB…“E‹úúøúâÞ`ŽåÄ…“E‹Zzâ‚äáÛÐní–¶e‹%ƒª€¨€æâ€HÙfb;E‹%ƒ¥
æâ�-9fb'E‹ƒ

äâ	Á$a2¥‹¥Šªªªªçâf¯îOE‹ƒ¸°°ðæà6™´ì´Ae“ƒª¢úÿçß®�O­ÄIe‹ƒp`ðúæâ�
Ù´�ÄE‹ƒçåB"!2%‹ƒ¾¾¾¾åâÉÖmÛvE‹%ƒ  äÞ€q¢#:…“E‹Uõ--äMÀ@E‹çA`€æ8Éÿÿòùƒç9UUTPV;	ßŠ µè9Ç9ªºÿ«M
�YsÐHBÇ9 êïÿçO‰•ß{Ç9
5ÕçÖ€H%‹åzªª
	çã´ã8$-HE‹ƒ¾ÿçâqOµ°IE‹ƒàððúçæ€‚fƒ‚‚ªªªªèæ!C’$Afƒ‚‚ªªªªèæIH&$Á0fƒ‚‚ªªªªçå 	@2fƒ‚‚ªªªªçå’fƒ‚‚ªªªªçâX-€@E‹{
/¿ãàí�Ø°e“E‹zz]}æâ$@)8E‹ƒ¿¿/æásR;Þ…“%ƒ««ÿ~æâ‰Û’@E‹ƒ¾¿æâŽ“&@
E‹%ƒ€ppçã‰d ‰E‹ƒðøÿ¿çâ’IkëÄE‹ƒÿÿæ³ 	E‹Åjz*å"}­e‹BWàâNyò'
E‹Ç9UWèÄB·ýÿO‚9&{Ç9UUUø`+«Õ­�Üè9Ç9­¯ª <˜ƒ9ÐBç9«ÿ9¶í?ãƒù)Bè9ªª¯­–$I2)BBÿªªÿ0¿™»ñf)Bè9êêúþ8[BÞ?×
Bè9ªêú>)!q%AR:ç9¨ªªªW<ƒ4H“M&è9Ç9ÿÿ¯ªW>X‚%Z2Ù:Ç9¯¯¯ÿZP™à9ç9Ç9¨¨X.­˜#:è9Ç9¿¯++D*ìôù�è9ç9ªêèèFCÐ¶mÚ¶(Bf1ªªªªL>$Ñ¶mß6çAç9¿ÿÿÿä/ðù�|E‹èA	%•äã€†“£rªªªªäâ@$†“ÃzªªªªääI’$I’$†“£rªªªªäá€mk»4¥“¥zªªªªäâ†“£rªªªªäã@†“£rªªªªäã€†“£rªªªªäã†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªä8XìE‹è9X`€²@I’$I‚'¦jç9UUUTD@"è9ç9¿ÿÿÿÂ7Éñßÿÿÿårç9UUUäD0�E‹çA	%äà`%€ˆe“E‹¥%ÕÕäà@‰�e“E‹UWXXäàˆ�Úe“E‹UU¥¥äàPdBÙe“E‹UU¥¥äá@‹5[2´e‹E‹µ%§§äáéÐ0e‹E‹X^WUäã †“£rªªªªäã†“£rªªªªäD@€E‹BpÀä?I’$L&E‹ç9UUW\D*ýÛçâõè9ç9ªŠ*«D-PA±tkè9ç9þªªªD-�#:5ûOèAç9¯«ªúD*ù�SÏÛ¿è9ç9è¨¢ªD'P
9’£9Bç9¯¯¯¯�'I�äÉŸÛ†bè9UUUä/0�E‹B	%â/
ôèßüE‹èAÀp\WD, mþï?èAç9ÿÿªªC' I¶ûÄBç9ÿÿªªä-OòÿðEƒè9U•%	ä«e“{ªªªäÜ’­
5…“E‹÷µ%ãÝuë´ñ…“E‹€ðpãÞ®ÓÚÚi…“E‹

«ýãÞI§­ …“E‹€€z_äá0Ö5e‹E‹WWÕ?äß�¶m�–He“E‹UõZPäßP3Íöæje“E‹5µÚZàÜ´HÛt‘…“e“âÝNâÚ)ä
…“E‹ðxàÜEÛLÑ…“e‹€ãÜ¥ä±ûÿ…“E‹zxäÝX3úv›Û…“E‹%-¨ áÜqÚV“0	…“E‹€êêäâ!I$@�…“Åzªªªªäâ$	@2†“ÃzªªªªäÞb"Æ˜=Ú…“E‹	‰­­äám[,6e‹E‹¬·WWäÞd<:
­…“E‹«¥•ãÞ0I±�Ä…“E‹WW‚€äâ!’€@…“ÅzªªªªäßIw“e“E‹ârUUäÞR9�-Ú…“E‹¥­âà@B�B e“E‹¯¾··âÞ¢MÚ
…“E‹ªŠ úäßƒPMk²&e“E‹UWäÝX/>ìÃú…“E‹%

ßÜØ–¶Mº5Ä›ƒªªªªáÜ4míœ´…“E‹¾ªßÜh·¶m»6Ä›ƒªªªªâÜƒÆQn»…“E‹÷þ€ß}¢ÿø&E‹è9WVTX4š±¤à
Bç9¯úè5Ib?˜ƒ9Bç9B'm#�®sBç9ª¿úê8NNÿ˜±)Bè9ª«½ýDvn»7BÇ9ˆ àCä£9˜�ÙBÇ9

<ÿÿ'-ÐBç9ª¯+%�ëÛBè9úð€M"ßPP	J*ªªªª:¹kß+h)Bè9úîÿ×?ôJÉïÿBç9þú ª+ %Oø„Bè9«ëªªA
ð’#=BÇ9ª¯*
*Îí›Ü4Bè9¢ªêD1e
.ÉúBç9èúªªDš�ùãÓúBÇ9


=¥`
ÿý'Bç9êèBP«Ý~œ¼Bç9«€ä5ù‘9�E‹è95%%äÝñÖJÒm…“E‹pZUõäà6DI8e“E‹^U¥%ãáLÂ�!‚e‹E‹¢ø¼âÝš£ÕX«¹…“E‹
‹ŠäÞéàJ4I…“E‹XZWWãß -&¢
‰…“E‹ý¯ÿõãßthÚ”@	e“E‹ïïWUäá@³5kÓ$E‹ƒ
âß[·fÛ°e“E‹åí}uäÝ-9�±…“E‹µ%¥µâÞ6S–$e“E‹xx~UâÞ$‰b,:e“E‹Uý­
áÞl[Û6e“E‹Õ¿¯ªáÞmÛ66le“E‹¾¿âÞ¶S1iCe“E‹øððZáß@IÂ$e“E‹ÿáÞ€íÐe“E‹UxxááI’$I’$¥‹¥ŠªªªªâáH’$I’$¥‹¥ŠªªªªâáI’$I’ ¥‹ÅŠªªªªâq0E‹%ƒ@á(é'E‹äz ÿâˆE‹%ƒâá	’$I’$¥‹ÅŠªªªªâáI’$I‚$¥‹ÅŠªªªªâÀ@ ¥‹¥Šªªªªâ* MOò$E‹äzÿÿâ+ 7™$E‹äz«ÿá)L‚&Bs·%ƒBV\pÀ0+é�éäNIBE1ªªªª30PPçA	2ªªªª|2G“$I’$gZè9qUUU52íÖlmÑvçA	2ªªªª53$IdB’çA	2ªªªª64I˜I�çA	2ªªªª95¡`
¡`è9ç9êêêê99I’$I’$(Bf1ªªªª 2I’$I’¦jç9UUUæ9	%ƒç9%	æâ-Ø²�ØE‹%ƒ/-+ãáH’E‹%ƒøø  ãâHH’E‹%ƒUWÿêãâ	’$A$E‹%ƒUÿÿ
ãâ @ E‹%ƒUÿªãâ	‚ A€E‹%ƒý«ãâ	HE‹%ƒÿúzzãâ$%ƒƒªªªªã<,%ƒÇ9€`á$Ø³ÿÿó'%ƒÇ9XVUU4´aö�è9Ç9þÿúê4É–Œ›
MçAÇ9ÿÿß5ãÉ—0%‹è9•%	çä]²%]×aƒäz¯þþçå$@€2ƒäzß×—½çä¶mM—%ƒäz«*¢ çàNîÿ	�E‹{ª«çâ©�
ñ`E‹ƒøøúúçãb9 Ò%ƒäz


çâ“$©¶5%‹ƒÿ¿¿*çßµð¿”Le“ƒ_Zzxèæ	„dÈ�f‹bjªªªªçæ@f‹bjªªªªçT`ÀŽ%ƒÇ9€`XºRxþ?ÿ“$¥jÇ9TUUUY=°¶ðtç9Ç9ÿÿúàYEX‚%ÐF’èA¥)ªªªªZO`�?èA¥)ªªªªZFX‚%ÐV’èA¥)ªªªªX(-5P£5èAÇ9õµµµ+|ìœþàBç9‚€àà6)`0è9ç9þþþþE5É“ÿ˜ç9§9€V7Ib?›Ðç9Ç9
/`8ñSù›¿ç9Ç9pð€€aQ �èA¥)ªªªªÏaI’$IþÅrÇ9UUU-èbI’ÄæƒÇ9UÕ+èd‰Ë	ƒÇ9õè½¡@E‹¥j­ª

æáÐ H6¯E‹%ƒí­° æÜ€­Ùôë¼…“ƒ
èã©0I4	E‹äzèþþþèçI‚	$f‹brªªªªèçI 	 f‹brªªªªèä#1’(E‹äz./»ÿèâ®ÔrbŒ9E‹ƒøêèãX-9›=­E‹ƒ¯//¯èä¡K” �E‹ƒúøÿÿèâÐ5P;ÚE‹ƒ///çß}â?“@e“ƒ¿ÕæÝ&oŽM·…“%ƒXð ªàÜ°)“ŽMÛ…“e‹àÜLèØa[…“e‹€€äÝöã?R
Ô…“E‹

¥¥áÝIB&�	Q…“E‹
Š‹æÜÿS;[Œ…“%ƒ
/µäÜ©�Åv…“E‹XXàŠäèÐ£&e“(B€`XVD‹yÇ’#ÐHJÈ9üÿÿÿE'�&�KBÇ9¯¯úø×n{Û¿›åzç9UUÕ5åd±pe‹çA%	áÞHŠ&MÚ¤…“e‹ƒ‚áÞCÓ$I‚5…“e“%%ÞÜ`H’$I�ä›è‚ªªªªßÝ 	‚Æ›ƒªªªªæÞ±”
¹›ç…“%ƒxx åÞP±¥dJ…“%ƒ-­úúæÞép½Çv…“%ƒxxâêçßZ
9’/Ñe“ƒ+
¯çß	e
0e“ƒàx^_èÜ¬3ú˜�9…“ƒ


ÝÜ A$ä›è‚ªªªªÝÜ @ä›è‚ªªªªàÜv”v[…“E‹€€€€èä�`†E‹{þþþþèç� H€f‹‚rªªªªèâP#ÍÂ
€E‹{//¿ßÜk²´h‚¦…“E‹ÝÜ€ä›è‚ªªªªÝÜH‚ä›è‚ªªªªÝÜ �$ä›è‚ªªªªÝÜI$ä›è‚ªªªªÝÜ‚ ’ä›ƒªªªªÝÜ@Aä›ƒªªªªÝÜ I ä›ƒªªªªÝÜ� ä›ƒªªªªÝÜ@‚ ä›ƒªªªªÝÜ‚$ä›ƒªªªªÝÜH@ ä›ƒªªªªÝÜ$ ä›ƒªªªªÞÜdÀ�!I†ä›ƒªªªªßÝ$I’&›$„ªªªªßÝ!’@€Æ›ƒªªªªßÞI’$I$&›$„ªªªªßÜ¶mÛº6Æ›ƒªªªªßÝ`Â$L’$ä›è‚ªªªªÞÜÈ�!™�ä›è‚ªªªªÞÜ@2a’ä›è‚ªªªªÞÜ$B’d’$ä›è‚ªªªªßÜi×n-–tÄ›ƒªªªªÞÜ †Ä›ƒªªªªÞÜ$’Ä›ƒªªªªÞÜ’Ä›ƒªªªªãÝq›´©�N…“E‹  hhæÞ©T
’¤m…“%ƒxzÿÿèãŽëjÖ­E‹ƒ úÿ¾çá#§Ž`E‹ƒªÿððèä6É’(0E‹{*¿¿¯èß½ãøwÕ
e‹ƒàpèÞñ`
…“ƒxz_Uèà’$I�5E‹ƒÿ¿èÜ=úõãÖ…“ƒ-âÜÜ{mÖR…“E‹ê€€ çß/5ƒ8‰e‹ƒ¶ªãÝãP›¶ÛØ…“E‹j€‚‚çß¹I¯�
e‹ƒ¯îppçàš£%P-Öe‹ƒ
*çâ®�éàIE‹ƒøððøçä: ²!E‹ƒ¿¿¿¿æÝuì¸öT…“%ƒ€ðpçäÙÒ­6lE‹ƒ<¾ÿÿæßùÖNše“%ƒðú_UæßÎÝçb‘e“%ƒª‚¯½åã$0I’E‹%ƒ¨ªäà€(1e‹E‹Õ••5àÜ IÇŠMÛ…“e‹äÜî·�
…“E‹xpppäáÝŠ­@³6e‹E‹Þ•%+âß	�í0e“E‹ðúúêäßNí´›*@…“E‹ªê×Uãßvl'6aJe“E‹ŠŠrzãÝ9�£9…“E‹%	åÞïS/{·…“%ƒxø¨¨æàI¶1—�e“%ƒÿ¯úèåá)‘¶äÐe‹%ƒª
 åÞÐ(•ëÝç…“%‹õ¯«ŠåßlB¶Ó4e“%ƒ
ªþÿäÞ€µÒ¦
…“E‹%¥õUåÞv{çãõ…“%‹êŠ/¥æâ`¡�PE‹%ƒV\x€æãÀ
¶5E‹%ƒµUÕ/æÞš5É–e“%ƒ+-«ªäÝnßp…“E‹
õõäÞ±k§Ò(…“E‹¨ŠõUæÝ­M>šÑ…“%ƒ

/-ãÝ%‰—x…“E‹Zp€€æÞOêŸ“$…“%ƒ€¢ÿWæã]3`Ð
E‹%ƒ.ÖWzçâÎÖN› HE‹%ƒàz_Uçå!A’ ™0f‹¢zªªªªæåÆ‹âyªªªªçäk3lÛ¶m%‹%ƒ­UUUææI’$I’$Æƒâ�ªªªªæßm��9…“%ƒUõ­­æä@E‹%ƒUWV\æå	Æƒâ�ªªªªçæH‚I’$Æƒâ�ªªªªææI’$I’$Æƒâ�ªªªªçæH’I’$Æƒâ�ªªªªçÅà
@%ƒÃI`@À€ÆÂ’$I‚äÃI£I

ª€ÅºØ�ý˜õÃI‚AÂ»ÐIéôOJ@IªªªªÂ¹P«=Ú£õR@Aªªªª¿¸@«ùwþŸäQ AªªªªÎ¾ÿ•ùñCbÃI••åÝÐõÒ&I…“%‹
-õýä¬’*éÀ8e“ãQ€À`pä«1�pE‹R
ã°’I€
4e“RÀpÝªP³'Iò'…“ãQpVUUÀª±ñãQÃIxxxxÀ·€€HJ@Iªªªª¼ª~Nÿ˜�9ãQÃI
¶ªÏÿÇÉùãQÃI€àÀ«I~Ûœ$ãQÃI¨ÿU¼ªþÓÚ@ãQÃI*ÿý´ªynÿô
ÙãQÃI
Æ­9ñ�SãQ£IøxxøÆÀ© ÃI¢I¨ªªªçÅI˜É�ƒ£I•5%
çæ$H€ fƒ‚‚ªªªªçã‰9E‹ƒÿÿ//çá»ÕmS:E‹ƒ/äÞÒ@NeWe“E‹U_p`çäZ Ú¡%‹ƒ>>>¾çàI—Ï`e‹ƒà``pçä[ƒ5Ø†­E‹ƒ/¯ÿÿçåLH�$’%ƒä‚¨ªªªçà$�ó¿æe‹ä‚ÿ«æãÐ]3,E‹ƒúà.æã@¶¥Iš$E‹%ƒ­æÝ�#9’#õ…“%ƒ


-æÜ7s÷`
…“%ƒààpxæâvhÛ’
ÙE‹ƒçã”@’I’$E‹ƒþþçâÐ¬9vìxE‹ƒ/€çã±Ê–,ÀE‹ƒ¸8>¿âÜ"A›Œ©š…“E‹ë‚‚ƒæÖ€$H‚´>E‹Är
|çËà?%ƒR_çÃøPþ$%ƒÃIpPXUÆª�9�õãQ¢A+++/ßª‰�)p…“ãQ

	ßÜmÚ¦]…“E‹ªåÝù�˜±`
…“%ƒ€ðxçã!MÑ€DIE‹ƒ(.ÿÿçß;öšõ…“ƒ¯«--àÎ�#	’H…“Är`æÆO¢õ6Ae‹¢IWx€€Çª�9¢³úãQ£I

+ãª?‘9ñE‹ãQ5555ãÞ¶àÉ”t…“E‹RRPpäÈ E‹ƒ
ç1`Xß'E‹äzªêxþÅ¨Mÿ~ò'%ƒäzÖõ¯«Z*¶{—ét
ƒÄrªªúúæR!I‘\E‹Äz­¥5µçã’$@¡�PE‹ƒÿÿøàçä[‚5Ûº­E‹ƒ/¿¿çâÚ&	��lE‹ƒþþøàçã$	‰C:E‹ƒÿÿ/çã¤D	!“E‹ƒÿÿøàçÞµ�£9…“ƒ¯­-/ãÁ€I’$Ie“db@á¸yò$z=E‹ÃIUWTX»·�‚"!äQ Aªªªª»® ö–´ãQÃIÿÿú ºª�©½üï<ãQÂI‹ŠÀª@¿ùö“$ãQÃI%/
¾­Pn÷OãQ£Iúþ¨øÅ²­mß	wãIÃI¯«PXÆ®Â	°ÃI‚A    ÆYI’$L‚$ÃIb9þþúè[Y!&I’0áIå0ªªªªbY¦ò¢©–Ž¤r‚A
5UUV=üÓ$Ø†mäz‚A
W=±´­äz‚A\XP`R4˜�9ôã$äzÃI^61ñ�SäzCb@ÀÀ€eVÐA-ï6áIå0ªªªªdFÒD
ù�áIå0ªªªªe[	�¬ïØáIå0ªªªªe]B+µv’ÿáIå0ªªªªeWÀŒ¤[7áIå0ªªªª`M I’”p#Z‚AUUU_O`²)Är¢Aa.°	ÿðtäz¤rªª €aZ’IÛ–-DŠkÿÿÿÿ`Q`’0äzÄrÿÿ¿ªR`Ž¹õPƒÄz­ízzcNp@äz¤rüþþþc`²
€d{„iªªªªcB£ƒ9Ðäz¤r
«ÿb<ÉmßÛäz¤rªÿcAOüÄÛHäz¤rª¯_‚$hP�=%ƒ¤rÿÿ/SšD
9·%ƒäzU_øúR-­6›Ø%ƒäzµÕú 'öàœMè%ƒ{ ‚€ ])±dJÔAäz¤r  ¨¨_7É`öðäz¤r    _Uö9ÄzÄrªÿÿ«_?bÙ€¸�äzÄr¯*_?D¶�TäzÄr¾úà€_I} äzÄrÿÿÿ_)mØ�%äz¤rªª
_A˜£9Äæäz¤r

ª¨_AyO›`äz¤r ªªçJ©ðsÉ�üƒÄr¿ÿÿèZ�Oƒäz
ª«µèáqâ='E‹ƒ¿ÿçàkŽÕÂÖme‹ƒ
¿ªèãÔ­µ›ÄE‹ƒþþ‚çäíÐÐµ%‹ƒòøþ®èã�#Õ’æ®E‹ƒ/ÿþçã1S¶m'E‹ƒððçã`,Ñ¦hAE‹ƒ¯¸øæáÂ*­‰ÛxE‹%ƒ/çã‰íØ±hBE‹ƒðøåãI’L’E‹%ƒ€€«åâÀ
l[»&E‹ƒ//äà€$‘`B†e‹E‹U­	çád\'æÈaE‹ƒ øäßÐIöÖÔe“E‹U_ò¢äÜÐ(:µïç…“E‹¥äÝ¦�ùôN…“E‹ZppxäâC‚$C0†“Ãzªªªªãß’(AŽde“E‹ßßppâÞNì$ …“E‹ÿäÜ^Û’H…“E‹¿ÕæÜyü›6Q
…“%ƒ€ðxæãÅZ´mÚ¶E‹ƒ®èã’TI®�¸E‹ƒÿÿøàèàX"ÕÒ&	e‹ƒÿÿèã™0ƒ$	E‹ƒüÿÿÿèç€$H$f‹‚rªªªªèçI’Hf‹‚rªªªªèâk£ÕX£ÕE‹ƒäâ$È�L†“Ãzªªªªäâ		!	�¦“£zªªªªäÞc¢ÕÒ…“E‹
­õUçáqwîDE‹%ƒ€`xæáÂ4P¬E‹ƒ.äÞ-i×¬
:…“E‹úª+%ãÝíàv±Ý¶…“E‹zàªâÞ�#9v’8…“E‹-+
ßÞI�$I’ &›$„ªªªªßÞI’$H’$&›$„ªªªªßÞI’I’$&›$„ªªªªßÞA’A’ &›$„ªªªªßÞ	�$I� &›$„ªªªªßÞ	’A�$&›$„ªªªªßÞI$I’$&›$„ªªªªßÞI€$I’ &›$„ªªªªßÞA’	’$&›$„ªªªªßÞI’$H’$&›$„ªªªªßÞ	� I� &›$„ªªªªßÞ	’$I‚ &›$„ªªªªßÞAI’$&›$„ªªªªßÞ	’$H’$&›$„ªªªªßÞ	$I’$&›$„ªªªªßÞ	I’$&›$„ªªªªÞÞI’$I’$&›$„ªªªªßÞH’$A’$&›$„ªªªªßÞA’$A’$&›$„ªªªªßÞI$’ &›$„ªªªªßÞA’$A’&›$„ªªªªßÞI�$’$&›$„ªªªªßÞ@’ I’$…“e“
áÞé�i›$…“E‹èè âÞ$H¶�Ä…“E‹ÿ¿ªßÞH$I…“e‹€€âÞ&`B”-9…“E‹~êª/ãÞ4	¶o…“E‹U^xãâ	‚’$¥‹¥Šªªªªãá 0¥‹¥Šªªªªæá­ÐJnk'E‹%ƒpàæâ"	Ò¦
E‹ƒ
 àæâ!“´MÛE‹ƒ° æßŽ™w®ÄA…“%ƒââú_æáÐ:µ«;'E‹%ƒ/
åá¤@�,0E‹%ƒ ¸*
äÞ¹‘MìØ…“E‹½é‚‚äáIÑnéÖne‹E‹`~üüçp€@E‹'J`€ã~â'òù%ƒè9UW\pX�ô
ñ”OBÇ9þúúú_=€$I6•pè9Ç9÷ÿúúçS�É•ä$‹ç9	%•UçÌƒÅrçäÛ°
é�%‹ƒÿÿððèåëÖuÛŠ.fƒ‚‚ªªªªèä@¶KE‹ƒßÿúúçäÍÖb¶aE‹ƒúúÿÿåâØº$k²4E‹%ƒ
çà¥pKÿ”Pe“ƒ^zxøçà€(�l]?e‹ƒµ¿*ãÞrÖ¤N‘…“E‹‹‚`pæáR34B#5e‹%ƒ&&'/åÞ?‘Pù�…“%ƒðàppæßÀµk2çe“%ƒõ¯äâ@†!�¥‹¥ŠªªªªäÞ$­[£5…“E‹Uµ--ãÞ¶K‰`…“E‹úðpxâÞtÌ$€…“E‹‚¿¿áÜR[§µ×…“E‹
€àæÞä3:+‘e“%ƒ

¯¯äÅÒ"Ie“%ƒÀªþã?ôhe‹B^€ä6IB'ÀE‹è9U_ Ù
~òçý�E‹è9UU_èH ±]’$‰’(Jè9ÿÿÿü@,9µ
Û¶méA2ªªªªO6¤ôíó'èAÇ9¯¯ªª>4OüÄOöéA2ªªªªP6v|Ç›
ø:Ç9ªª¯¯ZJY·ç9Ç9¨¨Y<˜ƒ9À¸iè9Ç9¯¯¿ÿI8ws¯Ðnè9Ç9ªªªªD-ùP Aè9ç9êêêªD?A�è9ç9ÿÿÿêD(ˆP9Bç9ÿ¿¯¯H(öpo÷”sBè9¿ÿÿþä>�É�|E‹è9	%•äã†“£rªªªªäã†“£rªªªªäãH †“£rªªªªäà	‘H…“E‹ZZUUäâ!À†“ÃzªªªªääI’$I’$†“£rªªªªäá-�`e‹E‹UU_PääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªäCX,E‹ç9X`€·CI’$O‚'Ærç9UUUTDC@(Bf1ªªªª·CÉ‘äI’$Ærç9UUUäD0�E‹ç9	%äà$@PPÅe“E‹WU¥¥äâ@†“Ãzªªªªäâ†“£rªªªªäâ`&@�¥‹¥Šªªªªäã@$†“ÃzªªªªääI’$I’$†“£rªªªªäâ†“ÃzªªªªääI’$I’$†“£rªªªªäD€E‹çApÀä>I’$L&%ƒç9UUVXD>±Àdè9ç9ª¿¿êD/Éàsã�ùèAç9úê«¯C+’HRO>éA2ªªªªC(�#>þsÛBè9¿¿¿ÿB(±K±àNBç9úúúúu(Oñÿ¶mÛ‡Zè95UUUC,ùpSš+æBè9þÿÿÿD8$€H0è9ç9ª¾¾ªâ'I’„I‘E‹BUÕ5
ä›E‹†bäáPÝ�¶e‹E‹UW^¨äÝ˜õÚ8j…“E‹%ÝßâÝ±`íPO…“E‹`àà¢äà��#Åe“E‹UU¥¥äÞ’�9+m…“E‹%%µÕâÞ±í$4	A…“E‹€ª¿äÞ¥P
ñdw…“E‹^Zhâäâ †“Ãrªªªªãß-HŽàe“E‹­õZpãÝ¤$�P-9…“E‹ú¯-
âÜP#Õ­ÝÚ…“E‹
ãÜÏÿÛ±æ	…“E‹ðXâÝIœØ­°…“E‹úzâÝ®g§«l…“E‹€
¯äß’£5‚6m…“E‹%%UWãÝvÛÆX+�…“E‹­­äÝ~n»Ô&…“E‹€€WUäáÅÚµiº´e‹E‹·/Šëäâ	"2¥‹¥ŠªªªªâÞ±`¢
Ú…“E‹pz«äá-ÐnE[4¥‹¥Šªªªªäá0�ne‹E‹UU^xäàr"š(e‹E‹«ÕUâßÀ°uhŠme“E‹ÿë‹­äáÙ06¬†“ÃzªªªªäÝÐ&i¼û¤…“E‹ÕU‚€ãÝ)mP+4…“E‹«¯-âÜP
ÑmÓÚ…“E‹àÜ¡`K6i;…“e‹àààÜ-Ñ¤�Ø…“E‹àÜ±éX±J…“e‹€€  àÐ4€0…“BXp``ö�äIú¤iJg)ªªªªãc?€°	J*ªªªª-¶ÍÛl;Bè9¾ªªª4­v1�oBç9¨   D÷àSÎýÜ)BÇ9úêª¢DX"þ¥³BÇ9+ª¨7À³ý¶ùtBç9/
ª 8ùSòÀ>­Bç9ªª¯¿µçxŽÕ)BB}{{H')—JV�BÇ9ªúþ¾;
’I´í$Bç9ª«+
Ú 
¶—|Bè9êêª ?€ù’9Bç9//0
”P÷�WBè9êêê¨C’ù¹•Bç9/¯ªL1ùJ HBÇ9¨øþÿF
­-Ö˜£ùBÇ9**+<
ñpÉûçBè9øú Š�­aÛw›·gZè9UUWá;�I‘äe‹èA	5Uå¬e“{ªª ¡åÞZƒ9’�µ…“%‹¯-­­åÝòúÓ(H…“%‹*¿×ãÞÞ�xI\Û…“E‹zà€ªäà"-‘–e‹E‹µçZXâßÛ°uXŠme“E‹Uý­ýãàm·uÀº-e‹E‹ÿÿµ7ãß�)Ù±•e“E‹ååzXåáRB‘’$@E‹%ƒ

¾þäá`Àº6E‹ƒ¨ª
âßh‚&Ãe“E‹
-ýUâÞ1iK’ Ie“E‹èxUâÞ’-9’He“E‹¯­ýUãà)�ÛÖ¶e‹E‹\\þÿâàL’$I’e‹E‹ÿÿÿáà	e‹E‹àÿÿÿâáI‚H’¥‹¥Šªªªªâ4=E‹äzðâ'€õ}’$E‹Äzàþÿ¡'p’$I’$%ƒäzøÿÿÿ('H$¥ƒÃqªªªªâKE‹{âáI’$I� ¥‹ÅŠªªªªâá	$	’$e‹E‹ªª

â½à€¥‹¥Šªªªªe*NÒ$L‚$%ƒäzþþþþ-*Ý².X‹µ¥ƒÃqªªªª/*I�¤ql§ƒåzêªªª6-È�ÜÉ›¼åzè9W\pÀ30�çA	2ªªªª52C»µ]ÓµçA	2ªªªª53I˜I˜„çA	2ªªªª54I’$I’ çA	2ªªªª54I’I�çA	2ªªªª;5é–næàNè9ç9úúúú»9I’$Ižærç9UUUã4	‘E‹è9%	äâ!&$B�E‹%ƒ¨((ªãàÉ–l6e‹E‹ðð_UãàéÖlÛ0`e‹E‹ðð_UãàÍÐÛ†E‹ƒ€€ãß�
ÙPÙe“E‹õ¥¥õãàÅ°u[º5e‹E‹W÷ãâ A …“Åzªªªªãß� H-9E‹%ƒzêã9,%ƒÇ9€`ã.Ø³$I’${Ç9XVUU6˜#:6ÙJè9Ç9¯¯ªªMy™—iBÈ9ÿÿÿ?â+I– E‹ç9•%	èÞq÷ä
E‹äzèxxøçãH’
9%ƒÄzÿÿ/çã€DI¶J%ƒÄzÿÿø¨çäë°Í�%ƒäzªª¢€çã�
&b9E‹ƒ¯¯¯­çâéäN•4@E‹ƒúúÿÿçã�LÉ¶l;E‹ƒµß¿«áÜØ:ÛK\w…“E‹½êæÝ·�SÉëÿ…“ƒxø Šçã‚@AJ%‹ƒÿÿÿüçC`À‚=ƒç9€`X½6ðï?öó?¥jÇ9TUUUW6&�B±äJç9Ç9øððøA2 Û²½?(Bf1ªªªªJ4lû×7ç9Ç1>4à'J"o(Bf1ªªªª?4�ÿÉïü(Bf1ªªªª?€(­Z¯=BÇ9¿¯+6þû¿?BÇ9€€ ø;”TN9aBÇ9þúêúS4ñà[½¹çAÇ9__õ5ß>ÿÿÿÉ{
årÇ9UUÕæ?ÉŸ›%ƒç9UõèMy7%ƒçAµèÕ€$I%‹år©ª

èç‚ I�$f‹brªªªªèå¶m[ƒ%%ƒÄzªª

èæ$C’I�f‹brªªªªçßZ/9š¶Ae“ƒ--¿ßáÜvfG³‡…“E‹€€‚‚èåÅlÙ�m%ƒÄz¨¨¨¨èçA$f‹brªªªªèçA’ @€f‹brªªªªèá� lÚ�9E‹ƒÿÿèå@`–a%ƒäz
ª¨¨èá’$�šƒ=E‹ƒÿÿçá�-Ú1E‹ƒàðèávnÿ'le‹ƒ

ÿÝèåÅÚm�4%ƒäz¨¨ªèßš
©P¿>e“ƒ¿µ-áÜ‹7·]­…“e‹áÝvl;¶m
…“e“PäÞe“.ä…“E‹*¨XXáÜ›µz�µ…“E‹Š€‚¢èäI‰”2E‹ƒ¾þþ(æ%è˜¿üE‹B€`XV`�?úõíä)Bç9·¯«ª]1KÐmBÇ9úú^þÔÉÿ$ökF‹è9UUÕ5è1`%ƒ:
çàùK¿`We‹ƒ ððàæÞNºr� …“%ƒ‚ëUUèÞ¤#Ñ€Œe“ƒ
/µµàÞIÈ„ƒ„…“e“ßÞ	�$I’&›$„ªªªªäÞNs!�…“E‹€èXXäÞÀ´£Í$…“E‹õ¥«æÞ’ If›$…“%ƒWWªèÞ€8a®“e“ƒõßø çÞ­PO½ë$…“ƒZú¢çÜP¯ùíóÿ…“ƒ
ÝÜä›è‚ªªªªÝÜ@€ä›è‚ªªªªàÜv`GŽ…“E‹€€€€èä†dE‹{þþþþèç€�f‹‚rªªªªèäÉ")%ƒäz****àÜŠÇHÇ…“E‹ÝÜH‚$ä›è‚ªªªªÝÜH€€ä›è‚ªªªªÝÜ	€ä›è‚ªªªªÝÜ’$Iä›è‚ªªªªÝÜä›ƒªªªªÝÜA$ä›ƒªªªªÝÜ�H ä›ƒªªªªÝÜ	 ä›ƒªªªªÝÜä›ƒªªªªÝÜ€@ä›ƒªªªªÝÜ’A ä›ƒªªªªÝÜHä›ƒªªªªÝÜä›ƒªªªªÞÜ$ÀÄ›ƒªªªªßÞI�$	’&›$„ªªªªßÝC&$H’Æ›ƒªªªªÝÜ�$ä›è‚ªªªªÝÜIA� ä›è‚ªªªªÝÜ‚@‚ä›è‚ªªªªÞÜ I�‚ä›è‚ªªªªÞÜ$A	I’ä›è‚ªªªªÝÜ H$ä›è‚ªªªªÝÜ 	ä›è‚ªªªªÝÜ€ä›è‚ªªªªÝÜ	‚A ä›è‚ªªªªßÜíÐ¦m“6ä›è‚ªªªªßÜÀÐ6mÓv…“E‹
åÝ¥SÉûÿ…“%‹zà€èâÜ4æsE‹ƒÿÿøàçßÀ‘Ðõe“ƒõ­
-èà“P	©�Je‹ƒÞÞððèåÛ6lÛ†5%ƒäzªªª
èåX3l–%ƒäz
ªª èàÜ‰’ƒ9e“ƒ¿µ--æÞöÔB©`J…“%ƒúZX^ãÞÚÚ$M‚Ú…“E‹«©äÞIšxqg
…“E‹€àh^æà ¨R£9e“ƒÞ·//åÞm÷S±ÐJ…“%ƒêàxúçäÝ¶mÉ–E‹ƒþþøøæÝ$iP
5…“ƒß¿-
äÝý`W�——…“%‹rà€àçãD‰ÚE‹ƒÿ¿.çã‚DQ±‹E‹%ƒUpðæä@‚B’E‹%ƒ­½½«åâMÒ$k‹-E‹ƒãÞ�#5’*i…“E‹%-¿ŸÞÜd2 	†ä›è‚ªªªªãÝ©ä
é…“E‹XXp`äßöK“$…“E‹zZUUäáIÚ¶Àle‹E‹€ëUUäà@�	1e‹E‹UÕ55ãÜÒŠõõã?…“E‹­
ßÜØÚ´MÚn…“E‹ãÜ.O±ð…“E‹ààPPãàíÖ®	–e“E‹þúPZâÞ¶ã8ä…“E‹*òòåÝv™SöD
…“%‹ àzzæä!˜�	È$E‹%ƒ¸ºúªçâNçJÛ4AE‹%ƒàp×æáÒ
hÀ¦ÅE‹%ƒ/½-åßc*º€$…“%‹¯¯UUæÝ+5P#Õ…“%ƒ¯/--ßÜÛ–tI†…“E‹‚äÜ­Û>R¬…“E‹
'¥åÜ­�
ïÔ’…“%ƒxpà æà��dÝ&e“%ƒµ¿«ŠåÞ‰éwÒ$H…“%ƒàêÿ÷æå $E‹%ƒ–—×¯æá¶› E‹%ƒ``zWçå$C2$IÆƒâ�ªªªªæãMÚ¤ÛE‹%ƒ‚‚ÿUæä@d$E‹%ƒWÿ��æåÆƒâ�ªªªªææI’$I’$Æƒâ�ªªªªçß�+µÚ¯å…“%ƒ½½­­çâ©äNžT	E‹%ƒxx\VçæH’$I’$Æƒâ�ªªªªæå$%‹%ƒUUU­çå$I$’Æƒâ�ªªªªææI’$I’$Æƒâ�ªªªªçåC2$I&Æ‹âyªªªªå¿Ì�þ€è%ƒÃIV\P@Å¾
i�Ê2RB9ªªªªÁ·H´í'äQ AªªªªÁ¹�6	±�RJ@IªªªªÁ¾IŠ­ë¶uJ@IªªªªÚ¿I˜dI”¤rÃI••äà¤)Ú
%e“E‹ý½µ¥á´X‚¿û×E‹ÃIXÔ–7ä»€&E‹ÃI€pXØ°è�¸‰û»ƒÃI\UUUÀª£Õ�@ãQÃI-ýÕÀª±pO?åwãQÃIxððâÀ­ˆR½9ãQÃIÕÕ·/¼ªôãÛ÷dãQÃI€ðx¾­ñä
ä¶mãQÃIxúÿÿÀ½Ã2 VJ@IªªªªÀ²NîäÛ`ãIÃIýÕ¹­@4ìÓ$ãQ£I++·«‘„�ýsãQÂI € Þ°mk›É‘E‹ÃIUÕ5çÐ ›À	…“Cb©ª  çä€mX‹5E‹ƒÿÿ¯/çå C˜„%ƒä‚ªªª¨çâ«£5X#5E‹ƒãßtÆ"‰e“E‹‹�õõçâPIžOE‹ƒþüøðçäë°aíš,%‹ƒúÿ°0çà;ö��¸e“ƒµ¯¢¢çßœ`Oyg“e“ƒ^ú ªæßÀ&i£C:e“%ƒýý++çß�4I9“e“ƒÕÿ¨¨æâ	Ù¶é˜E‹ƒæß±˜/=e“%ƒ­­--åá’‘&’e‹%ƒª. äÃ5E‹cbxã²¢ŸüE‹ÃIxUä·0ÖÿŸüE‹ÃI€^UUá¹€fûÿó?ÄrÃI UUUÊªXM?þãçCbÃIèõÿÿÁªn›—ñd
ãQ¢I¨ øú¿­°‘¢�=ãQÃIUUõ¥À´’@R%»JBIªªªªÆºZ²µZKR¢A¿ÿÿ?æËD@‚h…“db©«

æß-W
÷��e“ƒêzx æáÛ
­šê´E‹%ƒ
-ºæßäfS÷�p…“%ƒÿúzðçà’(HÀ::e‹ƒõÕ5
æÝšõmù—…“%ƒ-êàåÃ“(© e‹#ZÀÀ@@¼¯€m��=ãQÃIýÿ¯É°6Ñúöc?djÃIUUUàD°Û´-…“ÃI-ÕUá0Œ=þÿ?E‹¢I ª­8
ö–põ%ƒäzúàâò8Oõ¤6²%ƒäzêúÿ«Z°I™Ü%ƒÄzW_ú ©6¶a»ž$ƒÄz•Õÿÿä^0E‹äz	æá€,5mm»E‹%ƒ%
äßö�tmµIe“E‹Pp_Uæâ&K¶mÚE‹ƒààæã[3´éÖnE‹ƒààæâLBÛ-ÒE‹ƒæá­-´B­5E‹%ƒ
å¾€`’$Ie‹Z`€Þ«¶mûL‚&e‹ãIUUV\®ª0¤Ä´c'DZAAªªªª²ªÎŸ$Iž
ãQ¢I€¶ªOú¿¸
ãQ¢I€ªÇ´1e
0HÃIƒA€¨ªÆÁ1 ÃI¢A ªªªÆÄ!€€ÃI£I ª**ÆEØü€ ÃI‚AúúÀ€\TÓÖm‘áIå0ªªªª\R¼-’áIå0ªªªªZ4µÝ'¢ƒù„j‚A5UUU>4”Üÿ!äz¢AÀ‚	J4OÒ>@ôäz¢A	%O6¹—›±`äz¤r€]>Ä	ö�tãQ‚AUWV\dU¹PJíènáIå0ªªªªdY­Ð&Z.áIå0ªªªªc5 i´íä¢A‚AUÿª^?�º©ñ¢A‚A¿¿úø^0É�›Är‚A5
	^XÛ2@ÄzÄrªþÿÿ^.kŽýÐäz¤rªª`Q „(IäzÄr¾¾¾ÿ_.ÿôtkŽ={¤rà 
`'k®ýÓÖ%ƒ¤r¯¯ÿÿbO aäz¤rþúúºbCm˜C?äz¤rÿ«cD°	ñOäz¤rÿêà bHmØ¿æäz¤rÿ«
aT€$H„T9äzÄrÿÿþ®_ØƒÙÐ&�%ƒÄr
­ýÿN+^#ðc[§{Äz*®«ŠSÏß?š°%ƒÄz/µJññÐ%ƒäzxXpzQ%ÀnZ�=%ƒÄz^û¯-_%ÿ�Sw{Û%ƒ¤rúúêª^7P=>þ“ääz¤r
X7¶�ÛñfäzÄr J0-Q{´‡&EƒCjªªªª_A0–jäzÄrþþ¾ _2Ø£ÕìÆ’äz¤r

 _:¯�SÏëçäz¤r €_GÆ9äzÄrÿÿ¾
]D$A¶�¼äz¤rªª �-ÑÖìÃ>ƒÄzßÿ-%âP©�…“%ƒª«
•âÝÛæ¤Ž›…“E‹ª€€êåÞÜ´±‚ð…“%ƒþ¯/%çÞkßú1å
…“ƒ+*èxèßw—œAe‹ƒ  úÿçãIì„€E‹ƒ€ÿÿçã ´åØE‹ƒÿÿ‚èã«u‚4iE‹ƒ¯ÿÿèåé¶
Ð$%ƒäz¨ªªèâ’&H»9E‹{«¿/
çàX&¤í’e‹ƒ		
¨èâ1™
îÔIE‹äz è¨ªçä†a-Ö.E‹ƒÿÿú:ãÞ˜ƒ9óæL…“E‹))êââÜvÚºR´…“E‹
ãÞ• IRÝ%…“E‹^÷¯
ãÞLR½9…“E‹Uõ/*ãÞ$©Ib'…“E‹ß¿
áÜjQg¶½M…“E‹‚€ªæÞ‚¶‘|»e“%ƒ·®€äâ	’@†“Ãzªªªªçã1±dE‹ƒðððøèáu^ÿ	IE‹ƒÿÿèå–aÛ–&%ƒäz¨¨ªèçAI’$f‹‚rªªªªèç‚I‚f‹‚rªªªªèæ 	’$I0f‹‚rªªªªèß«µkÂ>e“ƒ­­
çâ“4H)�JE‹ƒÿþø°çã’
’$™HE‹ƒ¯úðçãDA´m;E‹%ƒWW**åâÀ€uk–¦E‹ƒ‹æãXlÃ°aE‹ƒ¯ÿþçáœ£µX=ÆE‹%ƒ


æáÛ*`]í6E‹%ƒ(>áÞK‚$mÒ$…“e‹ßÞ	 I’$&›$„ªªªªßÞI’$I&›$„ªªªªÞÞI’$I’$&›$„ªªªªßÞI�$@’$&›$„ªªªªßÞI’$I�$&›$„ªªªªßÞA’$I’$&›$„ªªªªßÞI’H$&›$„ªªªªßÞI‚$I$&›$„ªªªªßÞ	$’$&›$„ªªªªßÞA �&›$„ªªªªßÞA$A€$&›$„ªªªªßÞI’$	€&›$„ªªªªßÞI�$$&›$„ªªªªßÞI$I�$&›$„ªªªªßÞI‚$A &›$„ªªªªßÞ	‚$I’$&›$„ªªªªßÞ	’$’&›$„ªªªªßÞH$I’$&›$„ªªªªßÞI$I€$&›$„ªªªªßÞA’$I�$&›$„ªªªªßÞI’ I’ &›$„ªªªªßÞA’$I’$&›$„ªªªªßÞI’$	’$&›$„ªªªªßÞI’I�…“e‹€€áÞIÒ&C³5…“e‹
//ßÞ	�I’$…“e‹€€áÞ@³5mÚ¤…“E‹/*Š€âÞŽ`
 …“E‹xúÿÿåâI’´É�E‹%ƒ€ààæá›-5Ð¢ÙE‹%ƒ
äßëÖvI—…“E‹ÿzZæá)Ð	0IE‹ƒàà¾¾æâˆ´í$E‹%ƒ¿¿æá-doµkÇE‹%ƒð äÜX«Ù’¯5…“E‹­		
äÝƒhNùS…“E‹×~xhäáMº¶À
,e‹E‹¿µµâá¥“Å‚ªªªªäámÛ¶)�ve‹E‹ÿþ^xå_€@E‹GR@ä,ÉïÿðÔ%ƒè9UW\pV;ÉàS£µè9Ç9êêª¯^EkBæÔ6@ç9Ç9¨¾ç>pÿ÷'%ƒç9	%•Uè¸’IE‹ÅrªªèâX9¶­í$E‹ƒ¯çâ4A�”´E‹ƒÿþøæãÐlMš$E‹%ƒZòåÜ¤I[;:…“%ƒÿÿ+æÝ­Ô
©ôN…“%ƒzxpxäÞ¢#Æ)’…“E‹--½½âÝ±à
 	…“E‹px~~ãáB0$ e‹E‹5???æÞ¹�K¹ôK…“%ƒpppðäákºX×e‹E‹Í}}bçã”-9’#8E‹%ƒ%%%åá¤C’$%	E‹%ƒ¨çávM6-�E‹ƒ/çÞOâüíºA…“%ƒþßæÝ1õ
¶P…“ƒàppðäß˜ƒÙÐ*e“E‹%
õUãÞ hX5…“E‹W÷--äÞ’@nNìÄ…“E‹Uÿ€€äà�$I„Òe‹E‹Õ×–(âÞ€ŒMÇ…“E‹ß¿‚Šã[£@e‹'Jz€ä9I2:E‹èAU~€ã6I’$tˆEƒè9UU^à`4IœÄIÇGJÈ1ÿÿÿøP2@ô€4BÇ9¿¿¯¯>1ðßÿù‡éA2ªªªªN,TŽš=>è9Ç9ºªª
?,#Ðn[ËåéA2ªªªªD3ÿ–o�4è9ç9ªªªþD4É�`è9ç9êªª¿D(�£ÕíäSèAç9¯«êêC(ùëßâ
µBè9þÿÿÿM=o‘¶oû¶BÇ9¿ÿÿÿä?ðù�|E‹ç9	%•äã†“£rªªªªääI’$I’$†“£rªªªªäã†“£rªªªªäã@ †“£rªªªªäà(�‰Ke“E‹UUZZäÞ­`ñ`…“E‹ZPPPäßhZƒ5…“E‹UU%%äß ±…“E‹UUXXääI’$I’$†“£rªªªªäà�Å	e“E‹¥¥UUäDXèE‹çAX`€ÄBI’$O‚'Ærç9UUU\D
H�-&BÇ9ÿ¯«
±(¿ñßÿŸÿ¦jè9UUUäB0�E‹è9	%ääI’$I’$†“£rªªªªäâ@$†“£rªªªªääI’$I’$†“£rªªªªäã$†“£rªªªªäã@ †“£rªªªªääI’$I’$†“£rªªªªäã@$†“ÃzªªªªääI’$I’$†“£rªªªªäAÀ`E‹è9`€ã'ÉŸü{‚=E‹èAUUVXD(€¦i¶›¿Bç9ÿÿªª?*}ÞÇÛ
´IBE1ªªªªC+”$HR+=éA2ªªªªCÕRÍ>Bç9¯¯¯ª0@r$•WBè9ÿêêêD+ž¿ÜDè9ç9Šªªêâ-ò§õEƒè9UÕ5
ät E‹gZäâ!0†“ÃzªªªªâÞ -ÆaJ…“E‹«‹¢úäà1i’„De‹E‹ ¨WWäÞlLÖÐ@…“E‹Š¯ÕUãÝ0IZ½&…“E‹^~+äÜ$Imûä…“E‹UUäÜ€$i­�<…“E‹UÕâÝ’ M¶—¤…“E‹êê€äâH †“Ãzªªªªãß´DË	Ce“E‹û»ðPáÝrì„NÈ…“e‹ÀäÞd¢Õ;ˆ…“E‹¥µÕäÞ0M¶Ý$…“E‹WW‚ãß 
Ñ±Be“E‹­­øXãÝ$itÝ$…“E‹Õ×äÜtë»¶”
…“E‹pXäßñ�lš
9…“E‹xx­¥äá€
I—¶e‹E‹UUèèäàHP%…“E‹UU¥¥äà$i“&e“E‹ýÿ^^äÞlÌÆbµ…“E‹
¥äâ€2…“Åzªªªªâß°mM×e“E‹ÿëâúäà$`´é�e‹E‹^xà äâ`€H&†“ÃzªªªªâÞ(’Žã$…“E‹¿«âÝŽQw›½&…“E‹à 

ãÜP­Õ.·…“E‹/¨ ßÝ	0LÂ$…“E‹

ßÜÀŠ­[Û¦…“E‹

ãÝq›ŽÔ‰…“E‹ øÚúÞ€�Ã$…“B€xWÁh’üùŸ?FƒB\UUU.OîÛ¶pBç9àà$îäNX�=Bè9¨ª+–$I`)BBÿªªÿ
7�üyë·)BBþªúú7¹ý$)BB_^ú«1.pK¹™›)Bè9_zêê3OY³‚:`Bç9¢ª®¾3%ðOÏÝ'Bç9ª $=ÑÉÙšIJ‡)ªªªªA"ö®q÷Bè9ÿþ¾¾
È¯çK²·	J*ªªªª?
¹—SñBç9  àà@€9ã¿úBç9/

#
¹i›“°IHJˆ)ªªªª(€©ÅØ?>HJˆ)ªªªªFÂÈÑw›—Bç9¿ª¨ Hv›OîäBÇ9ªèêêL¶¿úÚƒ=BÇ9**+C±K'ä(BÇ9úúúú6�´v}LßBè9ÿ«ŠŠå'ð{ò'%ƒèA
•UUä"�E‹B%äáÃ:´X²¶e‹E‹õ¥%¯äà¢1´I’e‹E‹/%*êäß±ÐAe“E‹^^WUãà-°aëº.e‹%ƒ ¢ãÞëfo1e“E‹ûRXPäß‰àNí¶me“%‹xZûÿäá-Ð¡Û¬E‹%ƒ  

âá@€	¥‹¥Šªªªªäß$`k³:e“E‹UUµµâÞ$
aKe“E‹UzzãáI�d’$¥‹¥ŠªªªªâáI’ I’$¥‹¥ŠªªªªâßÛ¶µk‚%e“E‹Uý­¥á¿ e‹E‹ÿþü|á(ìêó$E‹äzàø_ˆ'x’$I’$%ƒäzüÿÿÿ((I’$I’${äz



('H �ƒäz¯¯¯¯('€ 	‚ŠF{ÿÿÿÿá(pe‹ƒâáI’$	’“„ªªªªâáI’ 	’$“„ªªªªâÕ€¥“Å‚ªªªªˆ+K¢$J‚$%ƒäzþüüü-+C$d„¥ƒÃqªªªª,*!™„L˜¥ƒÃqªªªª0,1‘P6›ƒåzÿÿÿ3/&`äzè9WVX`42I2$AçA	2ªªªª73IÛ&IçA	2ªªªª74M»m†mçA	2ªªªª85I–vëÐaçA	2ªªªªÒ8I’$Iœ{ç9UUÕ5ä:¹pE‹çA%	äãI$I’ †“£rªªªªäã’$I$†“£rªªªªãâA ‚…“¥rªªªªãâI� ‚ …“¥rªªªªãâ	� ’…“¥rªªªªãáC� €…“¥rªªªªãáDH$…“Åzªªªªãâ@‚…“Åzªªªªã@4E‹BÀpâ/XÂ'ÿó'%ƒÇ9XVUU>4¶cÛ¶m(BF1ªªªª`0Éÿÿÿÿ'Jç9UUUã/É• %‹çA•%	äâd˜�$‘„E‹%ƒïê€èä¦$HR%ƒäz¨®ª¨èãX¢¹�¶m%ƒäz
ªªªèåi[ Ã¶µf‹bjªªªªèä	e$%‘%ƒäz  ªªèä`Ð€(Š%ƒäz
«ªèåÝÖ®Ò.%ƒ{ªª**æÝ-úuî¸e“%ƒ¥-‹âçÞ9÷” He“ƒðXWUçÞã£9�¯ýe“ƒ-¥­çL`ÀŽ=%ƒÇ9€`X¿Jxò?’'¥jÇ9TUUUQ>I—P£�ç9Ç9 àê¯Q6¨š3:ç9Ç9º/
K1ÎïÛùvè9Ç9«êúþ<2/äÿË/(Bf1ªªªªQ3÷1`ç9Ç9 ðððW4OâÛ>Õ
ç9Ç9àðXì3úmBÇ9/½õXñô
¥ÀIBÇ9xx^_Þ0ò'O–…“ç9UU•%æ?17%ƒç9­åØ 	E‹%ƒùªZ_åâmÛtÉÖbE‹%ƒ¯ªúßæâ±™˜E‹%ƒªªzzçâíÐnZ"'E‹ƒøèèåÃÖÝ�mf‹‚rªªªªèæd$†f‹‚rªªªªèä‰�#&E‹ƒÿÿ¯æà°mX
0e“ƒ_ÿ-%çÝ$Ir®e“ƒªêpàèæI’$I�f‹‚rªªªªèß’IR#:e“ƒUõ-+èÞ°M¶™Ä…“ƒUÿª€èä)I„ÛE‹ƒ¿ÿÿ¨çá°m`,ÚE‹ƒúêèà�&iS¯9E‹ƒ¿¿èà“$	©se‹ƒðàçâ€4P-ÙE‹ƒ//åÝm[?˜ñ…“%‹ª
-¥áÝ�™˜qœ˜…“E‹Š€äÜB-ôíóç…“E‹%%
äÜ¯”B±Ûþ…“E‹XX 
ßÜè€fË–v…“E‹¢äÜ%àJnkç…“E‹XX á,X²$…“(B€`XVû–ÄÉ‘)BB_êzz=On?�8)Bè9ª¯µµÛÿŸ$Iš…“BUUÕ5ß$1`…“è9
áÝÁ˜NK…“E‹ê€ äÞÀ(5¥ã$…“E‹µ%*ãÞmgI…“E‹j€€hæÝ-9Rõ…“%ƒ%%%%ßÞH‚I�$&›$„ªªªªßÞI’ I’&›$„ªªªªàÝ-�tmÛ¶…“e‹àäÞN—©`K…“E‹¨XXäÞ‰·­P
…“E‹ªZZâÝveÇM‚9…“E‹ ãÝµí’&…“E‹¨XXàÜ$-: 
Ò…“e‹ÝÜ	‚ä›è‚ªªªªÝÜ‚Hä›è‚ªªªªàÜv`[q›…“E‹€€èáÔ
§e‹äzþþøàèçH$	 f‹‚rªªªªèä�,!!E‹{¿¿¿¿àÜˆ-;ˆ
;…“E‹ÝÜI�$ä›è‚ªªªªÝÜ‚A�ä›è‚ªªªªÝÜ$@ä›è‚ªªªªÝÜ@ ä›è‚ªªªªÝÜ@‚ ä›ƒªªªªÝÜä›ƒªªªªÝÜ@‚€ä›ƒªªªªÝÜ€H‚ä›ƒªªªªÝÜ$ä›ƒªªªªÝÜHä›ƒªªªªÝÜ�@$ä›ƒªªªªÝÜ@  ä›ƒªªªªÝÜ‚@ä›ƒªªªªÞÜ	’	Iä›è‚ªªªªßÝ$I’$ÉÆ›ƒªªªªÞÜ €HÄ›ƒªªªªÞÜ 0	�Ä›ƒªªªªÝÜH$ä›è‚ªªªªÞÜ!I&	Iä›è‚ªªªªÝÜ ä›è‚ªªªªÞÜ	 Ä›ƒªªªªÝÜ€$$ä›è‚ªªªªÝÜ€ ä›è‚ªªªªÝÜ@€ä›è‚ªªªªÝÜ€�$ä›è‚ªªªªßÜIÚvM×…“E‹€æÜÉ}»öV…“%ƒ€ð^âÞd,Ù4!
…“E‹
ªêëãà[±¥X
¤e“E‹w��¥èå]lš¡E‹ƒ¿þþþçà“ mMÞçe‹ƒÞ«èàR3úq—
e‹äz
 àèà±”J’ 	E‹ƒððþÿèàR
±˜õe‹ƒ//çà0	ñOe‹ƒ^^pðçàk‚ý˜=Úe“ƒ-­«æâ@@¶m;E‹ƒ¨¼æà£KOö�e‹ƒ
 ààçál¢ÅÂe‹äz
ªÿçäÙP`¶mE‹ƒüþÿÿçÞ’µ’$…“ƒ-­õUçÞñfjˆe“ƒ øßµåÝ£PNçt…“%ƒzð€€æã¶a]Ó¦E‹%ƒÿ¿.Šæâ¶m‡¢E‹%ƒªÿåâ[²&ØŠ­E‹ƒäÞ£Õ‚¨a…“E‹%%•UßÝL’$H‚…“E‹àÜ¶à�vlJ…“e‹€äÝœànñû…“E‹VúäÞÐ¶méàR…“E‹UÿxxäâC€†“ÃzªªªªãÜ~^ÿš
¹…“E‹	
äÝñhJœ0H…“E‹°XVUæÞùT“ 	…“%ƒðzæãI; À:´E‹%ƒ ?¿¯åÝÎK»Ú$@…“%‹‚ªÿUåâéP¶¡E‹%ƒ ¨**äÝ©¹tÜÄ…“%ƒ¯‹æß0i[Í=e“%ƒ×÷¯æßsÎ>Û8@e“%ƒ«ÿWæànÜ&ä¶	e“%ƒªªúßåâ@3¬¶.E‹%ƒ
 "äÞZŒµ5w…“E‹…¥jàæáS3­‚T	E‹%ƒ
.¶øæß~^¿$Å	…“%ƒŠ«ÿ_æßd®µÒ…“%ƒ¯¯õUæäIE‹%ƒöVWUæá�ÙÐE‹%ƒ		­Uæä%‹%ƒVVWUçæA’$H’$Æƒâ�ªªªªææI’$I’$Æ‹âyªªªªçå`B’ I’Æ‹âyªªªªçå!	‚$I’Æ‹âyªªªªçå$I2$A’Æƒâ�ªªªªæâLBš€E‹%ƒ‚ÿUæå€%‹%ƒVWWçå$I"2%‹%ƒUÕ••æá˜­:N¯e‹%ƒ
  æÝ 	-ç”…“%ƒWú æä€E‹%ƒUU×¾æáÐ¦Ík]'E‹%ƒ-æ×’²I°E‹Äz@€ æºIÂ$àô%ƒÃIUV\pº·K°h³äQ Aªªªª¿º]ÚÅé�äQ AªªªªÀºƒ4l�­&äI Iªªªªá¼ÿõ�E‹ÃI•5ãº€ÈÀ4e‹ÃIÀ`pá¯ÉcÖÜÙE‹ãI%�yYØºÈŸüÿÿÿäzÃITUUUÀ¹}®ùÒ@äQ AªªªªÀª&‰P9ãQÃI×÷--¾«~ésñãQÃIâððx¾¯ë³æ`‚ÙãQÃI��¯¿¶iK‘…4ÐäQ Aªªªª¾µZ+�¬�WäQ AªªªªÀ´ H‰9ãIÃIW÷ý-Àµ(©m�ÿäQ Aªªªª·«MÂÛÚãQÃI«ÿá­¹›»·iE‹ÃIUUÕ5ãÀ©THe‹ãI	çÝ1aO%G’e“ƒ`àªªçâ�&m¶ëØE‹ƒ¿¿çãv˜Ä¤H�E‹ƒ€¾¿æâ€)Ú´íØE‹%ƒ
åÞ’�=c²Õ…“%‹¥-¯æá©�
içVE‹ƒðà€€çäÛ¶­[3¤E‹ƒ¿¿/¯çáÍDJ“$@E‹ƒ øþÿçäi`À°¶%‹ƒ ÿÿ‹çä[0E‹ƒ+ÿÿÿçäéŠaÀE‹ƒ¨ÿÿÿçÒÚ$I,E‹cbjæÁ€` óüE‹ÃI€\UãºVûÏó?%ƒÃI€_UUÇ«¨Oÿ~\»#ZÃIüýÿÄ´y_Ò-lãIÃIüÿ÷ÕÆ²9•®À	ãI£A€  ¨ÛÀÿcû¾S
¤rÃIUUU-ß­~âçÏ-e‹ÃIUUõäºùÿÝ%ƒÃIUU¯â«õÓúE‹ÃIUUà­Ižü
¨E‹ÃIUU@`ãºy˜G¾á%ƒ¢I•55æßÐ£9dM¶…“%ƒ-/¯ÿæÝ‰mßå´	…“%ƒú_åÞÉó?m…“E‹ 
õUäÝ�ûÿ#©	…“%ƒ€ªÿæÞþóû’@…“%ƒ

×ÕàÜ6ÉØ²…“E‹‚æ¾’"-8e“ÃI@`pp¾¯b®Ù7’ãQÃI­ÿÿ¼'%ÃI‚A€ ­èÿ$~â'ãI¢A ¨¯¯(m�ÿ0Är£IUUU@1ðœF²ƒ¢I•U6üí¸7%ƒ¤r ¡$™{Ü˜%ƒäzªŠ‚JÂ6°äß>%ƒäzõ÷¯¯å"'ð9‘E‹äz	/·/åá´MÚ-:E‹%ƒãá �„e‹E‹ÿæâ‚@H¶�8E‹ƒþþæã[34é–nE‹ƒ  ãáI ˆ0e‹E‹õÿý
ãÝ&�Z=6…“E‹Õµ-ßÜë†´MÛ&ä›è‚ªªªªà«€È…“ãQpÀÛªIòÿµ�¶äzãQUUWTÂ«ñôl»ÞãQÃIxxï‹Ç»m)–ÃI‚A€ª¨ Æ¿Z‚ýÐæ
ÃI¢A

ª¨ÆÄÃI£I¨¨ªªÇÃ
$ BR1ªªªªÇÃL"È ÃI£IªªªÂTI’äz‚'ÃIb9þþúú^Yëº¶Û�áIå0ªªªªb6Ú¯ý˜ƒ9¢A‚A--X5äÃÕïÄr‚A5ÕUUS7~lÇ˜�9Är¢A”\[QN5ÀøõýÄäzÃI\8Éû¿ÜD	„j‚AVVVTbRðAÝ¼-áIå0ªªªª^?¶‰ö–l¢A‚AÿÿúðU5Mì›öDB¢A‚A€ úe?ÜÆI÷�Är¢AUi]Ïcÿ£�5Är¤r
^]�DŠkÿÿÿÿ^P` äzÄrÿ¿¿¿^3°		‘äz¤rªª€ ^A @äzÄr+?¿¿`.ùð›°	äz¤r  ªªb.­Øƒ=äz¤r¾*

c0•�Ð	äzÄr€àøøcXé
 ÄzÄrº¿ÿÿcJO÷›äz¤r àêÿc?š�9Ð
häz¤r
+¯IZ½&jŽ¹%ƒäz­�­^vîÞÔ6ƒÄr
Šÿ×_I™cÔ
äzÄr(üþê_?.	­˜9äzÄr /I`"Þ·	%ƒäz
­ÿ_W*±íÖ[ðƒÄrªª¯¯? Û@	es%ƒäzúú]8@I·�ääz¤r¨¨\˜£ùÛÆ%ƒÄr//ÿÿ\±`%ƒ¤røøÿÿYX+ÚµùxƒÄz­­êâ\?eNµƒ4häzÄr®®])Z¢%À6r{¤r

«ªY)d"%€(�{Är

¯ªT4ÂC¹´[ßäz¤rV4mÔ@¯ùäz¤r

å?p
9•¼E‹äz
­ÕUè¯%‹äzªªª©æàÓmµE‹ƒŠ àèà´iù»e‹ƒú €çã´mÛ	eE‹ƒðøçãIl‡€E‹ƒ€ÿÿçã#1¶h“E‹ƒ//ºðçß~üÄå´	…“ƒ‚€úçßl>&bùe“ƒ


çâé�IU½5E‹ƒðø,èß’°Iv™·e‹ƒ_ÿ €çÝ€Ð£O?…“ƒ½­
àÝmÑ¤Mš¶…“E‹€âÜ«1¥Ý¶…“E‹
àÜ¤Û¶C@…“E‹ªäÜ-K·ÄA…“E‹hppZåàRL‰çe‹ƒ
ª€àçà$Lš#ùE‹ƒ¨¿çã¤)±ÛE‹ƒªÿèä¤(I±E‹ƒÿÿøøèæaHHf‹‚rªªªªèåÀ,Š%fƒ‚‚ªªªªçàMÚ¤Ûme‹ä‚ëÿèåÁ–mÛ6fƒ‚‚ªªªªèç@‚ f‹‚rªªªªèæ C€ I�f‹‚rªªªªçâuÒÖP5E‹ƒäáÚ6]Óµe‹E‹×??¿çÞ¯�OOë¸…“ƒxp  çÝ i¶ûÜ…“ƒýÿ‚ãá &e‹E‹ýýþäá¶¶íÒne‹E‹U¿?ÞäÝXÏÚ~^ÿ…“E‹¥
ãÝƒÆmvë¸…“E‹×¾ ßÝ A’dH&…“e‹ßÝ$I’ &Æ›ƒªªªªßÝI’I’„Ä›ƒªªªªßÞI$I’$&›$„ªªªªßÞ’’&›$„ªªªªßÞI’$I�$&›$„ªªªªßÞI’H‚$&›$„ªªªªßÞI’$I$&›$„ªªªªßÞ	$	’$&›$„ªªªªßÞH’$I‚$&›$„ªªªªßÞI’$I’Æ›ƒªªªªÞÞI’$I’$Æ›ƒªªªªßÞ@’	$Æ›ƒªªªªßÞI’I$Æ›ƒªªªªßÞI’I’$Æ›ƒªªªªßÞA’$A’$Æ›ƒªªªªßÞI’$@’ Æ›ƒªªªªßÞI’$I’Æ›ƒªªªªßÞ	‚I’Æ›ƒªªªªßÞ@$H�$Æ›ƒªªªªÞÞI’$I’$Æ›ƒªªªªßÞI’ I$Æ›ƒªªªªßÞA’$H’$Æ›ƒªªªªßÞI’$A’$Æ›ƒªªªªÞÞI’$I’$Æ›ƒªªªªßÞ@’$I$Æ›ƒªªªªßÞI’$I &›$„ªªªªßÞI�I…“e“````ãàíÖm]‘b¥‹¥ŠªªªªäáéÖu0†“Ãzªªªªåá€Ù’Ùe‹%ƒ



åá‰±`Se‹%ƒ àà æãÛŠ­Ú5E‹%ƒ¿¿¿*ãá$	’$C’¥“Å‚ªªªªåáŽM‡¢-ÈE‹ƒäÝ˜ƒÙ;Ž…“E‹¥¯ÿâÝ“AZ»Æ…“E‹ú®«
ãà@×mÙÚ6e“E‹õÿþ®âà@€˜e‹E‹***€âÜ,I§š‹µ…“E‹¢
äáí–vÝ–e‹E‹|h||çˆ€%ƒFR@çQIÒ?è4ƒÇ9UW\p^5¤�µÿ$BÇ9Õÿ¿«R5óã»÷�wèAÇ9«ªúúä@�ÿ÷ÿE‹ç9	%•Uã¯…“år


	áÝ¤@“±i[…“E‹ª€€€åá1Ú-0E‹ƒâÝ�µ�…“E‹	¯ÿÿæß©`B¥Ö’e“%ƒøþþúäÝ ¿>}Þä…“E‹-äÝ7s`J…“E‹xx^^ãádB’ 	&e‹E‹?+«âÞ	`K …“E‹ðúÿþäßI•Tí4
e“E‹ppWçä[²¥6lE‹ƒ¯ÿÿèæI�!H’f‹‚rªªªªçä†¡X»%E‹ƒÿÿ¯çäÉ’¢R E‹ƒ°º¿¿æÞþäLŽôe“ƒààðpäâ$‚ 2†“ÃzªªªªäÞØ¶qNšØ…“E‹õÿ‚ æá±ãÍ¯E‹%ƒ ¸ áÜëV[‹7…“E‹‚€‚âæâ¦#Ð-�E‹ƒäãI I€$†“Ãzªªªªäã	�I’†“Ãzªªªªäâ$I&$ƒ„¥‹¥Šªªªªä{¢E‹GRxæ1"'Ðè%‹èAUVX`L0IþÛ÷tBÇ9ªªúúL)~â'¢ùBÇ9ªª¯¯8)ö›„ög:ç9ª€ªªK>i’d
è9Ç9ªªªªJ'’(­PñBÇ9ÿ¿¯¯4
š0vNZŸBè9ÿª‚ªE6i`è9ç9ªþþþD?" è9ç9¾¿¿ÿM4I‘t-7nçAè9¿ÿÿÿäD�É�dE‹ç9	%•ääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªåäI’$I’E‹%ƒªªªªäâ!€†“Ãzªªªªäß‰à…“E‹PZUUäâ†“£rªªªªäâ	†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªääI’$I’$†“£rªªªªä;ÐèE‹çAX`€Ðò'ý�þåzBUUU\/wwß’ÐBè9¨ˆ*¯«¶qÛIžä¦jèAUUUä0!�E‹B	5äÞP	Ù˜³µe“E‹¥­äã	†“£rªªªªääI’$I’$†“£rªªªªäã †“£rªªªªääI’$I’$†“£rªªªªäã†“£rªªªªääI’$I’$†“£rªªªªäá€
m³´¥‹¥ŠªªªªäC€@E‹HJ`€ä(Éïüòù%ƒè9UW\pD1À@
-è9ç9ª¿¿«C=Ò¾ýØBç9¯ª¢ XÛäMÜ)BBõ«ë*÷w¥-ÕBè9è¨ªªÝ ùŸÜÉ—EƒèAUU•%än0E‹'Räâ@I’„¥‹¥Šªªªªäà�
Åˆe“E‹¥¥UUãß$H¢#:e“E‹WÕäß¶Oéj;e“E‹ZXº*äÞFn6—”…“E‹UZêàäÜ|NÿšÑ…“E‹
%àÜ¶m“±D…“e‹ ðáÜqbÛî¶	…“e‹ ðßÜm‘K�uÄ›ƒªªªªäâD$†e‹E‹··×üãà)Öaë²­e‹E‹Ð¸"*äÞåNU—…“E‹pp`ªäâ†“£rªªªªäàd‘
�e‹E‹¥%µäÜ$i=:…“E‹WÕ/áÜ«³¶à…“E‹ðøäÝñ`ìÔn…“E‹XXzzäáËÖ
4e‹E‹û_Õ5äÞ’ 	-™�…“E‹UUú äß€¦Iq—t…“E‹ÕUúâäßñ` @…“E‹ZZUUäßÀaÚÚ¤e“E‹ÕUý«ãÝ¬I§˜+�…“E‹‚
¥äÞ›&ˆR-9…“E‹×Õ¥%äÞö±S…“E‹zXXxãÜ$¹¶˜�9…“E‹ªŠ

âÝ�&¬¶Û…“E‹¯¯âÝv’Ø±Ð
…“E‹ðøäÝIîÿíVB…“E‹ú^âÜNÜ¶…“E‹úÿâ#4…“B€pÞ€&þÿû…“è9àXWU6íÓÖ­4Bç9

 ú&ÿï'à�uBç9
Š3¹m?’ôBç9
/à“$IHiJg)ªªªª@ÿCÒ8aBç9*ª¿ºÎÏäpÇ)BBëëíí ~ÒÚ6`)BB¯÷UU4ñ”/pO)Bè9ú^^ú<­àŽÙßBç9èà€B
bÙRI–Bç9
¯ªC#ï3Õ@;ÙBè9®ÿÿÿG'9íŠ“(¨BÇ9ªº¾¿FÏï—­T
BÇ9 ¢êúC±à iBÇ9èúúª8«3²#TOBè9«¿ÿú+
Oâ$"	Bè9ªë/þ¿$LBè9Šªê¯I1kŠÆ‰Bç9ªºÿ¾Lÿ�	aOBÇ9èààêN ˜Ñ€­BÇ9¯¯¿¿C¥àOç›BÇ9úê ¢K$t®•‚4BÇ9ª¯ÿÿJ3/ˆâ£=è9Ç9ªªªªg(Oð?¶í¶gZè9UUUä0IõÿE‹è9	µUäœE‹¦jâá€$A�¥‹¥ŠªªªªäáIÒ66e‹%ƒ®®äÝþKç¢
Õ…“E‹â‹¥µäà$Iˆ!e‹%ƒ
¨¨ åäI�E‹$ƒªþúêæãmƒµk²%E‹%ƒª¯/åâm³­Û:`E‹%ƒ*ªª¾âà	’ 	e‹E‹âÿÿÿäáI’¤éšE‹ƒ äáIÒ´íÐE‹ƒ€€äe(E‹ƒ

já+ƒ>Î“üE‹äzàxVW8'/puÛ?EƒCrªªªª-'Š
'LìÄEƒcrªªªª('€’ {äz



('’ ƒäz¯¯¯¯('	A ‚ŠF{ÿÿÿÿâ'��e‹ƒ		
âáI€I’$“„ªªªªááI’$I’$“„ªªªªâá€¥“Å‚ªªªªŸ+J¢$H‚'e‹Äzþþþþ2,Iâ$Ž5{äz
,*L€„L’$¥ƒÃqªªªª.*”`’¦R{äzððàà3/±!äz¥j@62Ži“&iäzè9W^X^75$I!çA	2ªªªª76I AçA	2ªªªªØ6I’$Iœ{è9UUÕ5ä8±`%ƒÈ1
äãI’’$†“£rªªªªäãH$’†“£rªªªªäãI’$AE‹%ƒªªªªæâŽCÒ
0E‹%ƒªª¥¥ãâH�$…“¥rªªªªãâA @…“¥rªªªªãâ’…“¥rªªªªãâA‚ …“¥rªªªªã7
8E‹è9Àpá7hÒ$I’$%‹ç9\WUU@ Ð3&¹mè9Ç9
ªªy0y›·ÿÿgRç9UUUã6‰%ƒè95
ãáH€€E‹ƒ****äÞ´Û˜5×…“ƒªªêúæâ!`E‹ƒ^øZZæäL’$	ÀE‹ƒëêúÿçã-Å�#1%ƒäz



æá€&¬Ûæ¤E‹ƒµ¥¯‚çã&dŠ$#9E‹ƒþú¯¯æã+Ö)–E‹ƒßÚÚúåßÎ`ì¦‘e“%ƒzZÿÿçâÐ*ÕíOE‹ƒ¿¯úúæ`ÀŽ=E‹(B€`X¶¨mÛ¿›»¦jç9TUUUS=0IÚ�=ç9Ç9þ®S4X�=ÛOÚç9Ç9

R91KÐMç9Ç9 ðúªV8ùfo›$ç9Ç9 ðþÿV9IgS¢�Ùç9Ç9 àVJ¦ @Ýv>èA¥)ªªªªUK$Hdi?èA¥)ªªªªVEÐ.©#ÿ8èA¥)ªªªªâ0ÉŸÜÉ•e“ç9UU•%äN E‹B	åâ°mÃ¶mE‹ƒþþÿ«åâ°u[º5E‹%ƒ_ÿ¯¯åã$È0$I†f‹¢zªªªªæä	I2$@%ƒ{¨çáNe“ E‹ƒÀðþÿçåI’$I"fƒ‚‚ªªªªçæ’$I’$Æƒâ�ªªªªçãb"Ú%AE‹ƒ¯ÿÿæá€
hÐ5e‹ƒ··//âÝuÑ¸N2'…“E‹b‚èÜÄiæ–“…“ƒ×Þø ãÞ°sm'…“E‹]Z¢àÞHˆ„$&…“e‹‚
áÝ”`Û	Mš…“e‹ÿ
åÞ¦¹i›…“%ƒzxàªçÞ�HR«9…“ƒõõ¯/çßš«Õ/…“ƒ¯¯úxçß’#õ‚ie‹ƒ¿½äÝdK¾Ýä…“E‹^Z¢àÝh‹¶m`…“e‹®àÜ¶iG¶I
…“E‹€ ãÜR4­Íú…“E‹%%
ÝÜ@ ä›è‚ªªªªÞ0àßØ…“èA€`\WGIò»®Ð
)BÇ9ªúúHInÿ�µ)BÇ9€ª¯¯Ýò'vèF‹BUU•%ä
)Pe‹(B
æÞùK6äk…“%ƒðøÚúã×°ã¸>…“E‹ZZ‚àÆ”……“E‹+ç×åD
¥�o…“ƒèxð æÞ@£=ýó$…“ƒ-+ßÞI� I’$&›$„ªªªªßÜÛŠ&k»6ä›è‚ªªªªÞÜ‘�!I2ä›è‚ªªªªáÜî�¶qëv…“e‹à€âÞ¶�˜Il;…“E‹ê€€*äÝ�9®óÛ…“E‹%%
¨áÜ©`wnUw…“e‹à€ÀÀäÜµO6P/­…“E‹
%%ÞÜdH’aˆ�ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ@ä›è‚ªªªªèÜæð
ép…“ƒxxppèæ$€ Af‹‚rªªªªèä’")ÉE‹{¿¿¿¿àÜŠ�Ø°�8…“E‹ÝÜA ä›è‚ªªªªÝÜ€Aä›è‚ªªªªÝÜ I€ ä›è‚ªªªªÝÜ$@ä›è‚ªªªªÝÜ	€ ‚ä›ƒªªªªÝÜ�$ ä›ƒªªªªÝÜ€ @’ ä›ƒªªªªÝÜA’ä›ƒªªªªÝÜä›ƒªªªªÝÜ	@‚ä›ƒªªªªÝÜI‚‚ä›ƒªªªªÝÜA$ä›ƒªªªªÝÜ	 ä›ƒªªªªßÜÝÖé–¶ä›è‚ªªªªÞÜL2ä›è‚ªªªªßÝI’!™Æ›ƒªªªªÞÜ	  Ä›ƒªªªªÝÜH’ ä›è‚ªªªªÝÜä›è‚ªªªªßÜÍÖmÝ¶aÆ›ƒªªªªÞÜ„$	†ä›è‚ªªªªÝÜ$ä›è‚ªªªªÝÜä›è‚ªªªªÝÜä›è‚ªªªªÝÜ ä›è‚ªªªªâÜvS.ç…“E‹€€€€çá HÃ\6e‹ƒ^×7
æÞØ�¹u™´…“%ƒ­­ª æàR2•”PNE‹ƒ
è€çà HP3úE‹ƒþ¿çàš&¯E‹ƒ«þððèåé6lÐl%ƒäz ªª èçH Hf‹‚rªªªªèåkŠaÛ†m%ƒäz
ªªªèåMƒ-@Û®%ƒäz**¢çàîÄ%He“ƒ‚ªÿUçäi[ ²­E‹ƒ¼¾¿¿çà®`ÿðtE‹äz   çåI€˜�E‹ƒÿÿÿúçÞ€ Mk«Æ…“ƒUý«çäÐÝ�mE‹ƒÿÿþüèÜX�õX£Õ…“ƒ-


æÝñ”J¯ä	…“%ƒðxx^æãí–
ÐE‹%ƒà`pzæáiP
5E‹%ƒÿ¯åà�¶®N›l…“E‹UUZZäß¶­Ôme“E‹ZZZÿâß6`hŠ&…“E‹ºÿ«‹äÞç0I…“E‹àZWWäáM
°m¦“£zªªªªäßmµ�&@e“E‹¯¥UUäâ€@†“Ãzªªªªäßs²¦’`…“E‹‰«ÕUãÞ‚$Mí…“E‹Uÿêbåã!A�aH&E‹%ƒªª

åä€’$E‹%ƒªªª¨åãH‚	‘�E‹%ƒªª  åâéÚn°uE‹ƒ äÜ|ºÞZ	l…“%‹‚Š¯­äÞB
8€­Å…“E‹¥¥¥…æà0i[³5…“%ƒW÷¯¯æà0	±�L…“%ƒU_zøæÝR
5P/þ…“%ƒ---ßÜÝÐ¶mÚ¦…“E‹€æÜ&p·…“%ƒxpppçäí¶mÛ–%‹%ƒUUzæå€$%‹%ƒUUU­çæ	’$H�Æƒâ�ªªªªçæI’$I‚$Æƒâ�ªªªªææI’$I’$Æƒâ�ªªªªææI’$I’$Æƒâ�ªªªªçæA’$I’$Æ‹âyªªªªçæ	‚$I’$Æƒâ�ªªªªææI’$I’$Æƒâ�ªªªªæå Æ‹âyªªªªæã¬@ƒ5E‹%ƒÕµ-æâ¤@±@
E‹%ƒzppxçå$C’$I�Æƒâ�ªªªªæÝÒµP9…“%ƒ¿½-
æÝOš»1•
…“%ƒ€ðxæáiç®’E‹%ƒ¾Õäº€IXFe‹ãQ8˜çÞéôJ” I…“%ƒxx_WæÆ€@%ƒCZ@ä¹ÉïüàÈE‹ÃIUW\`À±l˜�9ãQÃIUõ­­¼³I¶-·ãIÃIúÿþèâµñ‘Le“ÃI55%%ä¶Ð&{’äE‹ãIP\VUÄ¹p÷”ok×#ZÃI\VUUÀ¹´Iÿ�äQ AªªªªÀ¿J@IªªªªÀª˜9PõãQÃI----ÀªñKñãQÃIøøxxÀ¹ÎíOÛäQ AªªªªÀ¬Z�9�
µãQÃI/-­õ¾®ùùß-¬ãQÃIà¨¿ý¼ª@«ùõï<ãQÃI­·ª@I¶�üãQÂIªªâ«öýÛ¹›%ƒãIUUU5á¹1p@e“ãI
æÝþû¸1…“%ƒ€€ðpçäéšmé–`E‹ƒ¼üøúæâ¶)š(2E‹ƒ?çß’¸�ö”e“ƒ·¯úpçã1
’E‹ƒàøÿÿçä[ƒ¡ºaE‹ƒ+ÿÿÿçã1•	AJE‹ƒàððúçæI@€ fƒ‚‚ªªªªçæ  fƒ‚‚ªªªªæÞš+æØ9…“ƒ«	
çÁ $>e‹ãQ€XçÀÌôŸ$ƒÃI`WUàÁ ó?ÿÿÿ¤r£IXUUUÆ¶ÿðtë�ýÃI‚A€ÈÁuÏmß–
ÃI£Aª¨(âÀIò':@…“ÃIUUõçÃIò» %ƒÃIUÕçÄy5@%ƒÃIµçä�´%ƒäz*ªªçÜ£�9˜Õ…“ƒ---çÝ6›—1u…“ƒªøøxçß‰{sšIE‹ƒ€ êÿæÄ’%P‚%%ƒ£IpPXXç½O•P¿`%ƒÃI%%%çâvb×›@E‹ƒÿÿçáíVŽ[ÙE‹ƒ° çà�›·Ý4E‹ƒèþçã‰hKE‹ƒàøÿÿèãµ];›*hE‹ƒ**¿ÕæáNR·ÎæE‹%ƒ °Pâ°Ðƒ%¨
·e‹ÃIPX\T¹A’$É@¢ÞãQ‚A€z^^
IòÿÛÃIb9ªªÿYbÛÛHÄzÃIUUáM
Iòÿ’¤r¢AUUUXWIòÿ›$ÃIb9ªªúRÉoÛ’%ƒ¢A-ÕUUP¹ërHƒ‚A­UO!íCÖ+Úƒ„j*ªª©ÒÉ‘„¿mÛe“äz?¿_Uæ‚$	e“ƒªùçÞIþßÛ@…“ƒ€ÿUæáim·ž4E‹ƒàúçâŽ]Ç›�5E‹ƒãÜZ�ù˜#ù…“E‹-


ßÜÛÚ¶M¶…“E‹€çÜOþÛîF…“ƒê~çÜ1å@…“ƒàøÿÕç¿à0(E‹ÃI\pÀÞ®Oâÿm’¤jÃIõUUTÆ³ùÿÿÛãI£AªªÇµñO›@ÃI¢A€€ ªÆ¹°ÉðPÃI‚Aª €€ÇÆ@�R1ªªªªÇÆ@R1ªªªªÇFX$ÀèÃI‚9  à€\T—@’4áIå0ªªªª]6˜ƒõÐ¢A‚A/ÿÿZ5ñäŽcÕ¢A‚Að¨+/W7ýóØùf#Z‚AIuUUH5Iîä}Šºäz¢A	
^=ñ�Ð	Är‚ATT\\fSmÓÒœÄ	áIå0ªªªªf>	g—¢�=¢A‚Aðê¯-Y?ˆ’MæÄz‚AUÕ%d?	aO”$Häzdj�€¨ªg]@#ÌTÄr¤r

  c]±]Ûj‹±Är‚A_V’*9ÄzÄr¿ÿÿ«_P	P
äzÄrêÿÿú_K,  äzÄr¿???_íðÿðtƒÄrzppà_< Ú6äzÄr+??b¶ðÿ�tƒÄrzppàcL Oäz¤rÿÿÿèca$I€!†d{„iªªªªc:€mP�9äz¤r¯«Y5`.‘í`äzÄr
  _L<Àä$äzÄr¾¾¿_3É�›@’äz¤r  ª_LÐ`”$äzÄr/¿ÿ_?Ig’PräzÄr€àú ^µØ/&ƒ¤r¯¯¯R ÐÒ#=ƒäzÕÕ¥¥@-$Q'ç:{äzþ.\ i¤_?%ƒÄrÿÿ+
WDj7™·%ƒÄzßßúèNOõP·ä%ƒäzrzZ^WÀ¸õNîü%ƒÄzõ¿ªª\ÿ�Üîd
%ƒÄr¢ úúWìÍæR‘%ƒÄz¯¯ýõ\:åCõƒhnäzÄr. P:vœ˜¶@Bäz¤r€ _?�ÀI¶”Oäz¤r¨ª  åIðWÉ›ü%ƒÄr/?ÿçx�E‹Äz ª«­èãuŒÙš³ÖE‹ƒ/èä”hA±”HE‹ƒÿÿøðåã I†d&E‹%ƒ«äã	� I†“Ãzªªªªåß“ u�9e“%ƒÿ¯--çâ�3­ž–IE‹ƒ.øøäâ$ �E‹%ƒ
çâñæª.êªE‹ƒ ¸¸¸èÝ}âü~×
…“ƒâzèÝ¹ûn›@…“ƒ ¨ÿÕãÝ¢ºk¶…“E‹‹‰©æÞ‚4I÷Ý>…“%ƒWWª
çß’$A¦”Je‹ƒú^ððèâÜ¶IÉàE‹ƒúÿððèåX:`Û°6%ƒäz
ªª
èä”$`;E‹{ªÿÿªèÞˆX?>e“ƒUõ-èà Iéoe“ƒU_xøèãZ¢&ØÚJE‹ƒÿþçâ›-%Ò*@E‹ƒ?ÿèá”PNÏô»E‹ƒÿüð€èå°
Û–¤%‹ƒÿÿÿ¨èæ H’I˜$fƒ‚‚ªªªªçã�9�$‰E‹ƒ/¿¿äâIˆ$‰�¥‹¥ŠªªªªåÞì3>¹	…“%‹+/ÿèÝyûr›&@…“ƒ èßUäßk²&X
ie“%‹¯ýæßæô
yé·e“%ƒþzàªæßb�ñ«C'…“%ƒ¯½/ßÞI‚$I�$…“e‹ßÞI’ H’$&›$„ªªªªßÞI‚I’$…“e‹ ßÞI�I�$&›$„ªªªªßÞI’$H’Æ›ƒªªªªßÞI‚$I$Æ›ƒªªªªßÞI	’$Æ›ƒªªªªßÞI�$IÆ›ƒªªªªßÞI$I’Æ›ƒªªªªßÞI’	’$Æ›ƒªªªªßÞI’I‚$Æ›ƒªªªªßÞI‚I’$Æ›ƒªªªªßÞ‚$I€$Æ›ƒªªªªßÞA�$A’$Æ›ƒªªªªÞÞI’$I’$Æ›ƒªªªªÞÞI’$I’$Æ›ƒªªªªßÞ’$I’$Æ›ƒªªªªßÞ	�A�$Æ›ƒªªªªßÞI’$H’$Æ›ƒªªªªßÞI$I$Æ›ƒªªªªßÞI’$I’Æ›ƒªªªªßÞ’$I’$Æ›ƒªªªªßÞI’$A‚$Æ›ƒªªªªßÞH$	’$Æ›ƒªªªªßÞ	$	’$Æ›ƒªªªªáÞIšfÉ�l…“E‹€  áÞ[¬6l…“e‹¯__áÞIÚv0…“e‹ªêUUáßI0…“E‹¯¯ÿÿäáé��ne‹E‹XX\\äám×ví–¥‹¥Šªªªªäá0kÛ$e‹%‹ÿþªåàÚ¦©�Oe‹%ƒ
* €æâvìØ")@E‹ƒªåâIÚ¦ÛlE‹ƒ*æãCÓ­i›´E‹%ƒ.ª  âÝm˜­9…“E‹½­	áÜ³Û¸îä
…“E‹  áÜÐ¦Õµ³¶…“E‹*
ãÜîtñän…“E‹è`pèåÞì3º›Ô
…“%‹¯_^æáiçM0	E‹%ƒ€W~çã I
9E‹ƒÿÿ/ç’E‹fbjã3IÂ$`0E‹è9UW\`6˜‹%G
Bè9¯¯ÿÿ>*tr%ÅÆéA2ªªªªâ1!�˜'E‹è9	%ÕUãƒE‹‡Zãá`H’$	�¥‹¥ŠªªªªãâI’$I’¥“Å‚ªªªªãÞ’¤­š9…“E‹ß¯/-áÜ�­9µÝn…“E‹

€åÝ±›»ùä
…“%ƒ€€àxåÞmÒ&âÝ…“%ƒ

­åÞysœ4@…“%ƒ èþßåâ	ÐMÛ$E‹ƒà çâP«µ®ë¸E‹ƒ¯èæ€$‚f‹‚rªªªªçâm½ÚZ¬E‹ƒ/èâ¥ènéT
E‹ƒ¸ððøçàùTSã�e‹ä‚àà«¯äáØŠ-Ø†“ÃzªªªªèÞyiO¥Àe“ƒ ðz^èÞÏ_;ã�e“ƒ¿ÕçÝ7¶P
…“ƒàppzçãtâØ¶(E‹ƒðúæãI’&Mƒ¦E‹%ƒäãII�$†“Ãzªªªªäâ`ˆ0LB2¥‹¥ŠªªªªãâH¥‹¥ŠªªªªäÆE‹{@ã6O¢'Ðèe‹BUVX`H,�£ùýýœBÇ9¯¯ªªK+1çJœ$è9Ç9 ¨ªªK7ùð›è9Ç9ªªªªK?Xhšµè9Ç9ªªªªJ6NI’$@BÇ9ªÿÿÿHD‘Ð-Ú(Bf1ªªªªEC$I†(Bf1ªªªªGDÖmi›$(Bf1ªªªªO@mÑ¶¶m;çAç9¿ÿÿÿå4ðÿ�d%‹è9	%•åä€	�$E‹%ƒªªªªåâ`Ãº5E‹%ƒªª**åÞ€ qþû¼…“%‹Uÿª¢åã IE‹%ƒªª¨¨æãi»uÛ¶E‹%ƒªªªúåäIE‹%ƒªªªÿæäIÂ0	�E‹%ƒªªºÿæãmºnÝ¶
E‹%ƒªªªÿæäI’	"E‹%ƒªªª¿åã$I€ ÁE‹%ƒªªª å0�ÈE‹è9pÀÛÉŸÜÎ�Þe‹è9UUW\I4I¾�Û èAÇ9ªÿ¿¿töQ?¿ýÛ§bè9UUUäP)�e‹B
5åã$C’$	E‹%ƒªªªªäãE‹%ƒªªªªäã †“£rªªªªåãdH’$I€E‹%ƒªªªªääI’$I’$E‹%ƒªªªªäã †“£rªªªªäà� �He‹E‹UUPpäâ@2†“Ãrªªªªäj€@E‹GR`€ãÿß?è8%ƒè9UW\p(ôÀ–$fII:ÿÿÿÿ6÷àdË>)Bè9zÿ¯šµo›¿‘¼Çjè9UÕßáP 0e“GR	äÞÜ°M¤»:…“E‹_«Šäß�mmÒ&…“E‹UU/*äß˜­Åñ–T…“E‹¥­xxäÞÃ(ŒX#:…“E‹ÕÕ%-ßÜØº$kÚv…“E‹âÜiçvÜÄ	…“E‹€€êêäÝ‚6lZ?>…“E‹ÕÕ%âÝ›$	­�…“E‹ªêààäà‰MÛ”$�e“E‹ªÿUÕäÞuÂÚÛ¶	…“E‹
+ÿ_âßi—¤kl…“E‹ª€ª½äÞ’°I6—e“E‹UWð äß›9›ëNe“E‹
%¯zäß©�n[%e“E‹Xx/%äá:-�ve‹E‹ÕU\xäÞ«3&X,Æ…“E‹	

äÝ®_>£=�…“E‹*
¯¥äÞñs\=:…“E‹xx¯-äÜ­9ìÓú…“E‹%

âÝ1�ñàJ…“E‹ppààãáÃ�	‚e“E‹êÿ__äá–n
Öne‹E‹ÞØZúâÝµ»ØšM…“E‹‚‹«äà¶@Ie‹E‹ø\V×äÜP
ù¢³ú…“E‹%
	
âÜ®dj!ä…“E‹è ððàÝhÒ$KÛv…“E‹€ãÝñd@a…“E‹ðX^ÞáÜØŠ9ª]{…“E‹*€ãÜ®à
¥4)…“E‹Xxz~ã* �Ãÿe‹è9€xW¹èÿ'Oò${B\UUUCÀmùÿ'Bç9þª:�¨Ñò?Bç9»ª3®pO‰�ü)Bè9zêª>[ÛrñBÇ9ªªèè>IB’°mBÇ9ªªÿªB®K±)Bè9_^^^?NRÛ’h)Bè9«ÿÕÕ+·ï?âƒÕ)Bè9ªª¯¿DÉ›¼9å
)BÇ9¨¨èúDä#õ€ˆBÇ9
*¯¯e÷¤M¸)BBwëk]:eÜæS+hBè9®ª¯ÿBÂ8Ñ¤?:Bç9¯*

;-po¹�ÜBè9úø €+"ä³Ï_ÖBè9ºª ª£à¼OÎ¶)BB]ûëÿ0“PR·í')Bè9ÿÿªª=­ùö“ü)Bè9õ½¯ª9åtO±)Bè9~^^F›°MµýÜBÇ9úª‚KØ3&.kjBÇ9¯«ªúA\Éq	ñTBç9ªªêêH$ i-=BÇ9ÿÿ¯¯I*À¨�÷ûçè9Ç9ªª€F.÷à
Æ5èAç9úúÿ®J$$A¥�sBÇ9ÿÿúêã$¯ðŸÿÿ$E‹è9-•UUåA�E‹ç95åâI’$ÛE‹%ƒªÿåâÛ2`¶vE‹%ƒ*þþªåáŽIÛ�@E‹%ƒ«¿åâÖ
íÐE‹%ƒþêàøæä2 ™$E‹%ƒ¿ÿÿ«åã$I’’E‹%ƒ¾¿¿ªäáÍÖÍ°E‹ƒ  €äáÍÐaE‹ƒ  ªªâŠ(E‹%ƒ@ä,P�>N’$%‹äzx\ÿÿ>'.`o¿ý$EƒCrªªªª/'ø¯?ýÿäEƒcrªªªª('@�Eƒcrªªªª(' {äz



('$ƒäz¯¯¯¯('€ A‚ŠF{ÿÿÿÿâ()�1e‹ƒ



âáI’$H’$“„ªªªªâáH’A’“„ªªªªâá	�e‹E‹ª¨¨¨É)z¢'x‚'E‹äzüüüü;)@8®ÿÿ{äz/)'@’`‚„ƒäzÿªûû-(�äv{{äzàà  3-�àIé�äzçA€`XV83ñOñBè9üÿÿÿ75’$HçA	2ªªªª86	È€dÈ0Årè9UUÕ5ã61p)�%‹ç9

äâ!A’$€†“£rªªªªäãI‚	 †“£rªªªªããI’$I’$†“£rªªªªäãH I$E‹%ƒªªªªäâI2$C’E‹%ƒªªªªãâ$@…“¥rªªªªãâ’€$…“¥rªªªªäâLÂ„	E‹%ƒªªªªä7@€=%ƒÈ1ÀpÕ7pâ$I’${è9\WUU87A$(Bf1ªªªª‰7I’$I’fZç9UUUä8I‘%‹ç95
æâ’
Ð¤“$E‹ƒ¯¯ªªéâÿsû1ù
E‹äz*ªêúéÞ7g“c�9e“ƒzú­%èÝ£P¯�e‹ƒ~zpàèæ	C0"f‹bjªªªªæãÛÚb-Ú¬%ƒ{ áÜX¡D³‡V…“E‹mÃÃmçâB39�ãÕE‹ƒ¯¯®®æâ±C±dE‹ƒúúúúäáXº¶k»¶E‹%ƒ«ªªªæ1`ÀŽ%%ƒç9€`XµðÓ?öc?¦jèATUUUTññBÇ9xxxxU9Ðª­Îã$ç9Ç9¯«H1¤`ù¤è9Ç9ÿúúêS9OìÄÜDç9Ç9êþVLŸ�‰‚nËèA¥)ªªªªT:À¶mNâ$ç9Ç9¯ªQ2P+þ~ìÇç9Ç9
SD&ï-…NÀ(B&)ªªªªâ,ÉŸÄÉ•e“ç9UU•%ãV E‹B	äâ@	�E‹%ƒþþú äâ	†	H’E‹%ƒ¯«ªªäâ@$�„E‹%ƒÿþú åá’-R6KE‹%ƒ¯«zxæä@’DB&E‹ƒÿÿ¯¯çå$H€I0fƒ‚‚ªªªªæå	’Æ‹âyªªªªæåI’ E‹ƒªª¿«æãØÖÉ–nE‹ƒÿªà åá€
Ù�ÑE‹%ƒãÜ�ùëÓÿ…“E‹

àÜ¦[6e
…“e‹  àÞL�„I…“e‹€€ªãÞ�+ÙvÜÆ…“E‹¥­Šªäß›8�½%e“E‹¥¥�æãÉPPE‹ƒ¨üüüæÝ�Ñ€e“ƒ
-µÕçÞ©ô
å´I…“ƒxxúÿçÞP
9š³>…“ƒ---àÝKÖmÛ¦…“e‹€€åÜ‚$Imû<…“%‹××ªåÜ›0
v»…“%‹ €æÛX°6 …“%ƒ-÷WÞ
4hÒ$e“BÀp\WG/pK¹�<)BÇ9úú¨¨"(7'~ò$)BBU­«ªÜ’äÉ—…“BUU•%ß!0€­…“:	ãEã�…“%ƒ¯//·àÝÐ¶m¶v…“e‹º€€ãg€,ÀÈ…“%ƒ€Àoï��DþìÃ>E‹äz%¥µÕ“ð—Iž$e“%ƒ¢¯ÕUÞ0	7™ä…“%ƒ¯ÕßU�…“E‹+ßÜKÛ¶k“…“E‹ ÞÜC2$Cä›è‚ªªªªàÜ&a1e
…“E‹€€ ãÞ@4­³m…“E‹%%
ªäÞ±C¶M¶…“E‹XX ªàÝk‹6[‚­…“E‹
áÝK1IÚ…“E‹º 
ÞÜ ‰�`ˆ�ä›è‚ªªªªÝÜ€Aä›è‚ªªªªÝÜ 	ä›è‚ªªªªæÝ©y•W…“ƒpðààçäÍ�Û0E‹ƒúúÿÿèä�!"-ÑE‹ƒ¿¿¿¿àÜJ‚Ø°­Ø…“E‹ÝÜA@ä›è‚ªªªªÝÜä›è‚ªªªªÝÜ	€$@ ä›è‚ªªªªÝÜ@’ä›è‚ªªªªÝÜ€ä›ƒªªªªÝÜ‚ä›ƒªªªªÝÜ@€€ä›ƒªªªªÝÜ	€Aä›ƒªªªªÝÜ’�ä›ƒªªªªÝÜ@ H$ä›ƒªªªªÝÜH€ä›ƒªªªªÝÜ€ä›ƒªªªªÝÜ ä›ƒªªªªÝÜH�ä›ƒªªªªÝÜH  ä›è‚ªªªªÝÜ� €ä›è‚ªªªªÞÜI&!C†ä›è‚ªªªªÞÜ�ä›è‚ªªªªÞÜ!À$É�ä›è‚ªªªªßÝ$	2dÂ„Æ›ƒªªªªßÜmÛ6k;¬ä›è‚ªªªªÞÜdÈ�dH�ä›è‚ªªªªÞÜÁ$I2ä›è‚ªªªªÞÝI’	ä›è‚ªªªªßÜk»µ[3´Ä›ƒªªªªâÜîàN1—…“E‹à  €âÞ ã81I…“E‹*¨ÞÞÜ ’`†ä›è‚ªªªªáÜ�`·qkw…“E‹¨åÞ¦ÿi§…“%ƒzx ŠçäÝ: Ý–mE‹ƒ¾¿þüèá9•ì´Ie‹äzààêêèç$’$f‹‚rªªªªèá†‘`"þE‹ƒÿ¿æà°	S%e‹äzêª

çå I€E‹ƒÿÿþþçäíÚ¬ÛŠ¡E‹ƒºº¿¿æÞ«½>íD
e“%ƒ

úzçÞ®”­¤Ie“ƒxxz_çàbÝ©ie‹ƒ¯ÿæã]×¶i×E‹ƒŒàðçàZ"ùÀˆE‹ƒ¿¿çã@I¶éÄE‹ƒüþ€çå$	‚�fƒ‚‚ªªªªçâZ¢Ù’
hE‹ƒ/¿äâ!A	I’†“ÃzªªªªäÞZ‹9cÉ‘e“E‹­
¯ýãà[;¬C»fe“E‹§µõ¯ãá!™�$I�e‹E‹¨®¾âáA�$A’e‹E‹Š* ãà6ë–¶e‹E‹ÕÞ âßØ°nm·¦e“E‹ÿªªªäà�H‰4í$e‹E‹•—ªäßIåíÖ®e“E‹pZßþåÝ€¤m¶éÄ…“%‹Õÿª‚åâÉÐÙ–¥E‹ƒ€€€åá ID2e‹%ƒªªªäÝ)ÚõSÛ…“%‹­«‚æßÔÚi1ue“%ƒ¿þxxæÝuÌßê
Ù…“%ƒ
æä€E‹%ƒ.ÖVVçâIÒ:›
©E‹%ƒ?•áÜhSÇsÜ8…“e‹ÝÜä›è‚ªªªªåÝ¹K©dJ…“E‹XXX^æÞ­ðK�ôse“%ƒzpð æÞ©ù|Òû…“%ƒ­
æß@ï�Oe“%ƒW^xøçá$�¢3ÆE‹%ƒU­	æß iZ-5e“%ƒUõ¯/çß‚4I®O…“%ƒU_zxæåÆ‹âyªªªªææI’$I’$Æƒâ�ªªªªææI’$I’$Æƒâ�ªªªªæå  E‹ƒ¿¿¿¿æáÛd‰`E‹%ƒâ```çåH’$I2Æ‹âyªªªªæáÐª9E‹%ƒUõ-æÝ�#¹[Ir…“%ƒ
-¯êæß©Ð	 e“%ƒx~_Wæå€ f‹¢zªªªªäºhÇð/ÛE‹ÃIÜÜTVæÇ %ƒRæãÀ†m²-E‹%ƒ½½?/åàºMÎfoe‹ƒêª  ã±´�ùie“ÃIW\`€¼«5ç—Ï�?CZÃIÿÿüÝª6f£7ž;%ƒãQ…ÅM}¼ªÀI·�<ãQÃIÿþºª´m¶Ÿ$ãQ¢Iªª¿ªœPN·›üãQÃIþ Àª m¶m'ãQÃIUÿªÀª˜3>þ“$ãQÃI-Àª±�sÉ�ÜãQÃIxð€€À¯°	ïOãQÃIUW~úÀ´	m‹9ãIÃIýõý%¿´*`�–÷ãIÃIõßÿ¸±ªÊ³ÿû?DZAAªªªªäªI’ü¹g
%ƒãQUU•ä­)@E‹R
äÝÚ8�¬…“E‹
%%µæÝ±S¹k·…“%ƒpð€ æß$­¾ï?…“%ƒÕÿ**áÜX7ÇvlÛ…“E‹+çÜ÷ñp…“ƒppppçåA	‘�%‹ƒÿÿððçå$H À„fƒ‚‚ªªªªçæI€�$fƒ‚‚ªªªªçå‚ 2fƒ‚‚ªªªªçØ°)E‹„jªª `çÁ€0hòÿe“ÃIâ^UÍµèC:9ndjÃITUUUÄ²ÿûÇZ	qãIÃIÀ€õõáÁùŸÿùÄz£IUUU-çÁò¿¯ %‹ÃIUÕ-çÅñ H%‹ãQµæß�£9\Í�e“ƒ--ªúçß©®@Ie‹ƒðàðúçà˜£ùÐ(Ae‹{¯ÿçß÷ûçãù…“ƒªŠ+­æßÀÊ�9ýÛe“%ƒµÞ¨ªçÞÿðOùoe“ƒpppøçáÐ¦µkÛ$E‹ƒ¯«æ¹˜
Úð¯ä%ƒÃI\\\TçÄ1pƒÃI
	çä€m[²%E‹ƒÿÿ¯çå`H��%ƒäzª¨çæ’ f‹‚rªªªªçæ€@’f‹‚rªªªªèçI’@€ F‹‚jªªªªèä¶$€$(%ƒäz ªªêàG�õzÒ$äz¢ATVWUaQí4I•�¢A‚AüÿeYõCÖÀŒÄr‚AÕ•5%\)Øƒ=Ð{¤r«ë_!îÓ>Ò@ƒcb`ªªY!y™—›HÄz¢AU\ÀP4m[?˜Ñdb¢AUUUX=
+:¢£ÕÃI‚A¯«««'#ñœOÎþƒÃI
5UUWÄm¿›»ƒãQ¨-å/ð©�E‹äz%çåH2%‹ƒÿþþ¿èà$I#K;e‹ƒ÷ÿªçÞÐªµõÿ<…“ƒ­«âÞ€#:v'…“E‹-+
åÞy™w9÷…“%‹àèèzçäÙPÛ0%‹ƒüþþÿçæ@‚fƒ‚‚ªªªªèåiÑ
¶µ%ƒäz ªª*èÆX0’&I%‹ÃIX`€æÆI’$O9ƒ£IUUUxÈÃ0	“ê$ÃI£AªªªÇ¿jý?õOÃI‚A
€ ÊÄak’åV
ÃI£I¨¨ªªÈÆ!™$IR1ªªªªÉL€`ÃI£AŠ
ªªfUiûÖ-�Í¢A‚AÿÿþühGäØnùtáIå0ªªªªdRìC’âIáIå0ªªªªbT9¹M›¤áIå0ªªªªd:ë£ÕÒCb‚AÕUUh?1wSÛHäz‚A\\Z]h]¹[ÿ›¬ÃI‚Aÿõ•b:˜£õÒÄr‚AÕ
_:ìÇã
µäz¤r
fW÷qÅDLÄz¤rìîþþk_\;ô>(¤r¢AÀ`PjLÒ¶mÿ�Är‚A%%%5i8Z¯9˜õäz¤r
_8®ñà
äz¤r    _J  äzÄr???¿S	ÎíüöF%ƒäz¢¢ú_3$û$M’%ƒäzª«bÏ�ß9ç
%ƒÄr  èzb$ñ›ƒÄrxxUbZ’ h’"éd{„iªªªªb1P-ÚôÃ6äz¤r
\4A·�%ƒ¤rÿÿúðP´M?˜ƒù%ƒäz«+-­3$™äIZ%ƒäzª€€êZÿŸÿœ&HƒÄrþÿ]$y™—›Hƒ¤r¨¨ÿÿ]lÎþZ±ƒÄr¯¿R+±ãÏ&%ƒÄz÷¿¯5P
9š?l%ƒäz¯/¯ï;w·m=%ƒÄzªªª/Jyyodj%ƒäzúú^ÞZ®àNOù»%ƒÄz_úêT’ˆãOç%ƒÄzýõ¯«W¹ðOÜÆqƒÄzzzÿÿV-«Ï:RÌ{Är

**Gÿ�T-Çr%ƒäzzzÿÿP7-ùõ�¤äz¤r
]:ñpO¤»%äz¤r  
_?i›Ï9äz¤rªª

×:öðŸùŸÜ%ƒÄr-¿ÿ~çd E‹Är  «­çã6`¶íØE‹ƒððçã¢ÚvlÇE‹ƒæãIÒ¦C»%E‹ƒæâtLš-ˆE‹ƒ.çäkÛ¥I›bE‹ƒ®¯øøæãC³µÛÐE‹ƒ/ú€çã±mÇ¢
ÙE‹ƒ€€‹¯çä-0[º%E‹ƒþÿ¯¯èæ$IH‚f‹‚rªªªªçàÚiì3'e‹ƒ«¯
çá¢ƒ‘%ÛÚE‹%ƒ-çá®P$é´E‹ƒððèä$A
1[E‹ƒÿÿøøèàš#õÒ&@E‹ƒ¿ÿçÝ­m;¢
Õ…“ƒ
­èÞ~~ÛÜ$e“ƒ€þWçâ^=5P­µE‹ƒçáñ�PvÙve‹ƒpà ªçæ fƒb‚ªªªªçÞb9’¯µ…“ƒ+
-­ãÞàNmÍ…“E‹^èª¥äá°¶Ù–ne‹E‹Uÿþøäâ2LE‹ƒ€çâ‰ë¶“ HE‹ƒ€þÿçå!I�%‹ƒêÿÿÿèåÃ¶aº5fƒ‚‚ªªªªæâ€@¤-ÇE‹ƒ¿ÿæáZµ­k;E‹%ƒãÞš#Õ�¶m…“E‹-­õÿâÞIbÛ�$I…“E‹ªÿÿâÞŽcÛ’I…“E‹ª¿ªáÞ)Ö°­…“E‹¨ººªßÞ@‚$@$…“e‹ßÞI’A‚$Æ›ƒªªªªßÞI� I’$Æ›ƒªªªªßÞ	‚$I’$Æ›ƒªªªªßÞI‚$I’ Æ›ƒªªªªßÞ	’$I$Æ›ƒªªªªßÞI$A’$Æ›ƒªªªªßÞI�$	’$Æ›ƒªªªªßÞI’$A’$Æ›ƒªªªªßÞH’$	�$Æ›ƒªªªªßÞI’ H‚Æ›ƒªªªªßÞ	$I‚$Æ›ƒªªªªßÞI I$Æ›ƒªªªªßÞI�$I€$Æ›ƒªªªªßÞ@’$A€$Æ›ƒªªªªßÞI’I’$Æ›ƒªªªªßÞI$	‚Æ›ƒªªªªßÞI	’$Æ›ƒªªªªßÞI’$I’ Æ›ƒªªªªßÞI’ I�$Æ›ƒªªªªßÞ	 	� Æ›ƒªªªªßÝI�$I2Æ›ƒªªªªßÝ$€$™„Æ›ƒªªªªßÞ�H’$…“e‹ª   ßÞ�I�$…“E‹ªáÞm—tÉ–…“E‹ª€¨èäái›¦é�ne‹E‹¨¨Xøâá€H‚$e‹E‹ºªâàC0 Ie‹E‹
€åÞÏûÄ-Ç	…“E‹‚‚ZWæãÚ­kÒ$E‹%ƒ¼¨
åã	˜@E‹%ƒ àèªæãë‚­Û:lE‹%ƒ*?¿¿ãÝ4K—bƒ¹…“E‹¢¢+-âÝ©�Žg{…“E‹àà€€æávÒ­4@e‹%ƒªÖÖäÝ£/>à-þ…“E‹+


ãÞqçÄ�:@…“E‹  ¾×åÞ-‘s9w…“%‹zøúzæÞÀ°9…“%ƒõµ--ãÞ€0®O…“E‹U_zàãže“ærj***Þ
É¿üXè…“BUVX`4P=>~n»)Bè9ý¯ªêA	/O&ÀBç9¨ úúå/)�Iš$%ƒè9
5ÕUæx%‹gRäái·vk‡6¥‹¥ŠªªªªåáPÐ¤�Äe‹%ƒ
*
åàéÖ
mëÄe‹%ƒ€ æá�$	í–nE‹%ƒèú  æÞ+±âß'…“%ƒ­¯
åá¡`J1Ûe‹%ƒ¨ €äáM»¶Ø2`¥‹¥Šªªªªäâa@†!É¥‹¥Šªªªªçã@¡dJE‹ƒÿþø¸èä¢(	±”PE‹ƒÿÿúðèæ	H’H2f‹‚rªªªªèä�(J6•PE‹ƒÿÿúðèãÛ&i˜£ÙE‹ƒÿÿ//èã“0m¶mÇE‹ƒÿÿçã-Úv›E‹ƒ/€èä¡@@„@I%‹ƒøÿÿþèß’mZ+&e“ƒUõ­	èâb=µ3ÔE‹ƒ//äâ$I†!É¥‹¥Šªªªªäâ	’	�¥‹¥ŠªªªªãâI$‚¥‹¥Šªªªªãâ ¥‹¥ŠªªªªãÅE‹{@ã2O®ÿÐÈe‹çAUVX`UA+�9è9Ç9¯¿ÿ¯Q;›0	š”»è9Ç9úúªªT:b"æW
:Ç9¯¯ÿÿQG¦_ø@Õ(BF1ªªªªIEt"2”�(Bf1ªªªªFmØ�%BÇ9ÿ¯«D0 �mè9ç9ÿþþªD8 Æ	è9ç9¿¿¿êDNêÄÛBÇ9‚ªÿä:�ù�|E‹è9	%•äã†“£rªªªªäàŽEB€e‹E‹`_UÕäÝ 	½é¸…“%‹Uÿ‚€æà4m£ÍÅe‹ƒþª

æä$I‚�e‹ƒÿþ®®æä`H�$IE‹%ƒ«ÿÿÿæå@�I’f‹¢zªªªªæäC0IE‹ƒ??ºúæàöÔLÛe‹ƒààêÿæâi
E‹%ƒ€p^WçR@ %ƒçApÀæNI’$M&%‹Ç9UUW\Vc‹ÙX‚ýBÇ9¯¯¯¯z9¹qÿyò'GRè9UUUåK`±�\ƒÈ9
5åâ@4@²­E‹ƒ

æâ$eR±”E‹ƒ¨  àçäiÚ¬ëº¢E‹%ƒªú¿ßåâØ¶mm¶¶E‹%ƒªŠæäI’0aH‚E‹%ƒªªªþåâM²%Ø
lE‹%ƒ*ªâßX»&X…“E‹¯‹«õäá )Ðb¥“¥zªªªªáK€@e‹hR@áIâ$h4E‹BUW\p8bûÓ(h)Bè9ª®ÿ÷(ùëÇã�Ù)BBzïõõß�É—ä…“B	%•Uâ´e‹{ãàX¬[›$e“E‹¥õÿªâÝ$©Z½&…“E‹ú«
áÝ¢S±hB…“E‹ª  ¨âÜvÜ¸4E…“E‹ àãÝ)ç’’h…“E‹ ¨¿õáÜ«;gšm…“E‹
«ãß!
–@	e“E‹è~^^äÞ­%k2Ú…“E‹¥
	«äà&J!Ûe“E‹^^þþäáX³µmÚve‹E‹­­Šêäám34[‚¥e“E‹¿µõõäßÉO$I…“E‹xZWUãÝ$IZ=:…“E‹Ýÿ+âÞD›I’Ä…“E‹ÿª€áÞMš¤Ý`…“E‹€êªäâC€†“ÃzªªªªäÞ£³¶Û´e“E‹«_UäÞd¢¹›4…“E‹¥_UäßqÛuØue“E‹èÿõõäáIÛ¶Û:e‹E‹ ª×UãáI˜0$e‹E‹  ú_ãÞ’´Iª�9…“E‹_ÿ+)âÞ$J1K…“E‹¿ª èâÝuÒ$jM…“E‹
¯äÜ)gn$…“E‹ øWUäÞ‰ër’@…“E‹ úUUãßtB&$
‘…“E‹ª+«½â,4e“èA€pä
€þþÿ'E‹B`\UUD44@ìè9ç9¾¾¾ª?j‚¹ÛÔ
Bç9
«êêC¥-µØ9Bç9ª¯+/7[Ì{ÛBè9¯¿¾ª,Ii›@RBç9€ ªª@y]Ò$lBç9ªªþÿ@Oò$ÚhBÇ9ª¯A±àJ$‰)Bè9^_UÕ4X»Þ}îä)Bè9ý¯«ª/eé
Þ{Bè9ªêêªD.©0@ÕèAç9úÿÿ®D�ƒ9ÀÊ‰BÇ9++¯º>
îf·ðpBç9ªúà D$íä
¶”“Bç9úúúªD	˜ƒ9ãOÿBÇ9
0yåÝPrBç9€ ª¨HÜ*ˆM:BÇ9ª¿¯ª("‰µ�hIH:ÿÿÿÿ(£Ñ€HJˆ)ªªªª>¹{s¥@
)Bè9úþ__C
9Û’ IBç9 ªÿÿG
‰ks› BÇ9€ úÿN6©DÀ	è9Ç9ªªªªNk‚ýÐ@BÇ9«¯¿ÿGÛ³ýÒBÇ9ªª¯ÿG*îÃùÒè9ç9*ªªÿIìÃ>ÚBÇ9

«ÿLyûÛ
­BÇ9  ª¯6õû¼~×Bè9Š€âúk%Q¶íÓ>'Jè9ÿÿÿäpI•ÿE‹è9
µUä‡e“Æj   ©äß�µ›='e“%‹õý¯«åá‚D‰±ÛE‹%ƒ¾ªäá�I“6E‹ƒ €äà@JŽí$e‹%ƒÿªäß€¦mv›´e“E‹UUzäØ Ú$-E‹ƒª¨äÀýzÒ$E‹äzàøüþC"“6h½9{äzUUõ%-&ø
Ûôÿ{äz««ª¨('@ @€Eƒcrªªªª('$Eƒcrªªªª('$�{äz

('ƒäz¯¯ªª('@H‚ŠF{ÿÿÿÿâ'11e‹{âáI’$H’$“„ªªªªááI’$I’$“„ªªªªâá’€e‹E‹¨¨  á)x‚'p'E‹äzüüøø+*A’$I’$¥ƒÃqªªªª)' 	2`2ƒäzûûûû*'íÐíÐ{è9€À`p3*®ñôRBè9üÿÿÿ82®àé�
çA	2ªªªª86dH	äzè9UUÕ586$	$	‚äzè9
›6É‘$I’$ƒäz5UUUä80�E‹äz	
äãH€ I�†“£rªªªªäãI� I‚ †“£rªªªªäâdB2ƒ�…“¥rªªªªãâ‚ $…“¥rªªªªãâ‚  …“¥rªªªªäâ2$IE‹%ƒªªªªæO@€=%‹çA€`XÎ7pâ$I’$årè9\WUU97$†$@è9ç9ªªúú“7I’$I’†bç9UUUä8	%‹çA5
äãI�$	$E‹$ƒÿÿªªäà�’bB:E‹%ƒ¯¯

éá§ðNiyÿE‹äzúè¨
éáX#Ñ“È‰E‹äz+/¾ªâÜ,E‡ª‹m…“E‹jÂ‰uçâV©iÛE‹ƒ÷þª¨çã±d1KE‹ƒúúúúåáN,š²%E‹%ƒ«ë}æâ¦dJ	8E‹%ƒ^^õ¥æãíÐb–aE‹ƒúúßÞä1`À‚%%‹ç9€`X¯
°mÿ~ò'Æjè9TUUUUìÓÚ7÷
BÇ9+ªøxVñà
“BÇ9xz_UU2Û�X�9è9Ç9ÿõ½½@1}ÞçOúè9ç9ëëëþN7)�œ#õç9Ç9  

R2­ðSÉmûç9Ç9à N0�$	¶ùÄè9Ç9ÿÿÿêS8kÙÃ8`ç9Ç9
®¾ã9ÿÿÿÉ•E‹ç9UU•%äK E‹J	âá	$I’$…“ÅzªªªªäáIÚdi‘nE‹%ƒ€€ààäß’
´X¢&…“%ƒÿõ­­âà$I!’…“Åzªªªªäáé�´Iš&E‹%ƒà€æá´Iö·E‹ƒ÷þ¨æãÀ6´]›¶E‹ƒ¯«*åäH‚ �E‹%ƒªªªªåä’ †“£rªªªªåä	€H‚E‹%ƒêªªªåá€€(1E‹ƒ***
ßÜh‹&h»6…“E‹åÝù±…“%‹ðpppåßÓ†i‹Åe“%‹ÿõ­
åá$A„H�E‹%ƒ>((äÝ}ì¼õd…“E‹‚‚zzæãÁÐ0E‹%ƒT^þþæã0`Û: E‹%ƒUÕ¿¿æà’¶iÉ”e‹ƒ¿ºààåÞuRûÚh…“%ƒ*ÿýàÜ´MÚ²Ñ…“E‹
àÜ±mÇ6E…“e‹€€äÇ €(…“E‹pX§eæ	
õòã$%ƒ:Àp\WH²ä´Û¶)BB©éÿÿ­Ï>ìÃ)BB¿¯¯_ÌI’äÉ•¥›(BUU•%Û4ˆZÃ'e“GR	€ ‰`î$Iò'e‹ƒøþÿõÝù�I•Xe‹ƒ·—??àÛš†nu�­…“e‹à €À`…“E‹jÀ€€i¢#Ús	sE‹äzµ÷^^T
Il›’$%ƒÄz€êUV	¤#Ñ€@%ƒäz/µÕUœ
1‘¼¿k»E‹äzª[_ã<Ðï”¼e“äz ª--àÆ”I…“E‹åÞñ�Où�$…“%‹xx åÞA¶�$…“%‹UUªåÝAeû;…“%‹UUªåÜPµ­›ß…“E‹¥¥ŠäÞS#ÐÓH²…“E‹%%µªÞÜd† †ä›è‚ªªªªÝÜ	ä›è‚ªªªªÝÜ‚$H ä›è‚ªªªªæÝy•SñO…“%ƒààppçß � )%ƒƒüüþ`ç<ÌàÓ?ƒç9à\WÚšà¿Oò$¥›(B*ÕUUÝ0©�X…“(B
5ÝÜ�€ ä›è‚ªªªªÝÜH@€ä›è‚ªªªªÝÜ@€’ä›è‚ªªªªÝÜ  ä›ƒªªªªÝÜ€	ä›ƒªªªªÝÜ 	ä›ƒªªªªÝÜH ä›ƒªªªªÝÜH‚ € ä›ƒªªªªÝÜ@�$�Ä›ƒªªªªÝÜA’ä›ƒªªªªÝÜä›ƒªªªªÝÜ�ä›ƒªªªªÝÜä›è‚ªªªªÝÜ  ä›è‚ªªªªÝÜ� ä›è‚ªªªªÝÜ€I€$ä›è‚ªªªªÞÜd&a‚ä›è‚ªªªªßÜiÒ¶mÑmä›è‚ªªªªÞÝIÄ›ƒªªªªÞÜ�	Ä›ƒªªªªßÜÛZ¬éº®ä›è‚ªªªªÞÜdB’@ä›è‚ªªªªßÝ$A’dH&Æ›ƒªªªªÞÜ&`’ä›è‚ªªªªáÝ1[	Û…“e‹ÀÀ€åÝ‚&©­ÿ?…“%‹÷·*ãÜþãÛöv…“E‹àpäÝ¹{›°…“E‹€àWWåàm¢µõàe“%ƒŠ¯úúçã‘d‰(HE‹ƒüþ¿¿æá°INç¸E‹%ƒUê€çä°
Û�nE‹ƒÿÿÿøèå[Ú¡ë¶ufƒ‚‚ªªªªçßÒ
=Ú#9…“ƒ­---çß‚DI©ð
e“ƒW~xxçå2%ƒäz*ªªæáh�ÅE‹äzªª

çäÛ6lÅ–E‹ƒÿÿþþçãŒdS’E‹ƒòòÿÿæå€f‹¢zªªªªçâX"%�6E‹ƒÿÿçãTLÐ�$	E‹ƒ
¯ÿÿçåAB& 	%‹ƒÿÿçà$qà>e‹äz¾ªæà’&�[B:…“ƒÿ¯¯ªäáX,Ã’ue‹E‹=5µþâÞ6éØ"
ˆe“E‹€€­âß¶vmÚ$…“E‹¿ªªªáÞë°mëÒ­…“e‹ÿúªªáÝ Š6éØ…“E‹ªª àÞ€$’…“e‹¿ªªàÞ`Â$L’$…“e‹
áÝ@J6éÄ…“e‹þèáÞkŠvP…“E‹ŠªúªâßÀ24À¶a…“E‹¯/·ÿáÞMšd…“E‹€€ªÿâÞ‚-9…“E‹w¯
æÞ“0I¿�¼…“%ƒ_ÿ €æÞÐ#µÜÆIe“%ƒ
¯¾þæßÀ	®ðle“%ƒW^úðæß�óß'…“%ƒÕý/
äÝNÒß$7
…“E‹êWäÜù[Û�9…“%‹-åÝ4@'”O…“%ƒßßøðáÞK·d+Ö…“e‹ÃƒóúäÝ4@­û<…“E‹UUªäÝœ´M7•…“E‹_xpæãm›0E‹%ƒ x^Wæä`€E‹%ƒ/ÕÕUæâ±D
�E‹%ƒàúÿUæä	�$	�E‹%ƒppÿõçå$A’!2Æ‹âyªªªªæå Æ‹âyªªªªæå�Æ‹âyªªªªçäi·m†a%‹%ƒz_ÿæÝ‰P9…“%ƒÕõ-
áÜX7;š-¬…“E‹

ŠæÝwS­D	…“%ƒààz^æå €f‹¢zªªªªæØ’$i E‹¤rªjÍ·0Ù·þï?djÃITWUUæ®&ðÏ•¤%ƒÃI
%5•æß€¦‘mì'…“%ƒõÿª
äâ@0E‹%ƒ ª¨äÜ’I½>…“E‹UÕ-
á«`ì€`…“Z\`€«ª�$H’$DZAAªªªª«ª@	€$DZAAªªªª«ª’�$DZAAªªªª¯ªvàIšÄDZAAªªªª·ª@8î“çãQÃI´ªOÛéãQÃI  »«ùtÿö·ãQÃIððð º«›0Rýë¼ãQÃIÿë‚€Í­ìß>íc¤rÃIUÕÕ-ßªÿŸ$y%…“ãQUUµä«‰e
E‹R•	äâ	†“ÃrªªªªäÝhZ
9…“E‹UU¥%åÞ“´©ðNe“%ƒÿ~øèåã$LB&E‹ƒ¨ÿæá›
ikíÄE‹%ƒ*¿äÜÍOÛÚ$…“E‹ÿUçÜñà0…“ƒpx~ÿçäÛ`ÀÖ4E‹ƒÿÿÿªçãŽM‡%AE‹ƒ‚‚ÿÿæãÀŠ%X‚%E‹ƒ/æ´`¯>%‹ãQ€pVâ®Xk»¿�ÜƒÃIXUUUÆ½$©’#õÃI¢Aª*

æ¼ÿŸüÉ›{ÃIUUÕ%ç½Oš
%‹ãQÕ
çà$‰ÒŠµE‹äz©ª

æâ´`¶‹E‹ƒðð° çà;¶¿›˜e‹ƒ¯Š€€çäéZ°
%‹ƒªþþþçå!€fƒ‚‚ªª