guideai-app 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GuideAI.js","mappings":"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","sources":["webpack://GuideAI/webpack/universalModuleDefinition","webpack://GuideAI/external umd {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"React\",\"root\":\"React\"}","webpack://GuideAI/./node_modules/openai/internal/qs/stringify.js","webpack://GuideAI/./node_modules/openai/_shims/web-runtime.js","webpack://GuideAI/./node_modules/html2canvas/dist/html2canvas.js","webpack://GuideAI/./node_modules/openai/lib/EventStream.js","webpack://GuideAI/./node_modules/openai/resources/responses/responses.js","webpack://GuideAI/./node_modules/openai/lib/AbstractChatCompletionRunner.js","webpack://GuideAI/./node_modules/openai/resources/embeddings.js","webpack://GuideAI/./node_modules/openai/resources/audio/audio.js","webpack://GuideAI/./node_modules/openai/resources/beta/chat/chat.js","webpack://GuideAI/./node_modules/openai/internal/qs/index.js","webpack://GuideAI/./node_modules/openai/resources/files.js","webpack://GuideAI/./node_modules/@openai/realtime-api-beta/lib/utils.js","webpack://GuideAI/./node_modules/@openai/realtime-api-beta/lib/event_handler.js","webpack://GuideAI/./node_modules/@openai/realtime-api-beta/lib/api.js","webpack://GuideAI/./node_modules/@openai/realtime-api-beta/lib/conversation.js","webpack://GuideAI/./node_modules/@openai/realtime-api-beta/lib/client.js","webpack://GuideAI/./node_modules/openai/resources/fine-tuning/jobs/jobs.js","webpack://GuideAI/./node_modules/openai/resources/beta/threads/runs/runs.js","webpack://GuideAI/./node_modules/openai/index.js","webpack://GuideAI/./node_modules/openai/_shims/index.js","webpack://GuideAI/./node_modules/openai/pagination.js","webpack://GuideAI/./node_modules/openai/resources/batches.js","webpack://GuideAI/./node_modules/openai/resources/beta/threads/threads.js","webpack://GuideAI/./node_modules/openai/resources/chat/completions/index.js","webpack://GuideAI/./node_modules/openai/resource.js","webpack://GuideAI/./node_modules/openai/resources/beta/assistants.js","webpack://GuideAI/./node_modules/openai/resources/uploads/uploads.js","webpack://GuideAI/./node_modules/openai/resources/chat/completions/completions.js","webpack://GuideAI/./node_modules/openai/resources/uploads/parts.js","webpack://GuideAI/./node_modules/openai/_shims/registry.js","webpack://GuideAI/./node_modules/openai/resources/vector-stores/file-batches.js","webpack://GuideAI/./node_modules/openai/lib/Util.js","webpack://GuideAI/./node_modules/openai/lib/parser.js","webpack://GuideAI/./node_modules/openai/resources/fine-tuning/fine-tuning.js","webpack://GuideAI/./node_modules/openai/_vendor/partial-json-parser/parser.js","webpack://GuideAI/./node_modules/openai/resources/audio/transcriptions.js","webpack://GuideAI/./node_modules/openai/resources/beta/realtime/realtime.js","webpack://GuideAI/./node_modules/openai/resources/vector-stores/files.js","webpack://GuideAI/./node_modules/openai/resources/beta/realtime/sessions.js","webpack://GuideAI/./node_modules/openai/resources/index.js","webpack://GuideAI/./node_modules/openai/resources/fine-tuning/jobs/checkpoints.js","webpack://GuideAI/./node_modules/openai/uploads.js","webpack://GuideAI/./node_modules/openai/resources/vector-stores/vector-stores.js","webpack://GuideAI/./node_modules/openai/_shims/MultipartBody.js","webpack://GuideAI/./node_modules/openai/lib/ChatCompletionRunner.js","webpack://GuideAI/./node_modules/openai/lib/RunnableFunction.js","webpack://GuideAI/./node_modules/openai/resources/moderations.js","webpack://GuideAI/./node_modules/openai/resources/audio/speech.js","webpack://GuideAI/./node_modules/openai/lib/ChatCompletionStream.js","webpack://GuideAI/./node_modules/openai/internal/qs/formats.js","webpack://GuideAI/./node_modules/openai/version.js","webpack://GuideAI/./node_modules/openai/resources/shared.js","webpack://GuideAI/./node_modules/openai/resources/responses/input-items.js","webpack://GuideAI/./node_modules/openai/resources/beta/threads/messages.js","webpack://GuideAI/./node_modules/openai/resources/chat/chat.js","webpack://GuideAI/./node_modules/openai/resources/beta/beta.js","webpack://GuideAI/./node_modules/openai/lib/chatCompletionUtils.js","webpack://GuideAI/./node_modules/@google/generative-ai/dist/index.js","webpack://GuideAI/./node_modules/openai/lib/responses/ResponseStream.js","webpack://GuideAI/./node_modules/openai/internal/stream-utils.js","webpack://GuideAI/./node_modules/openai/streaming.js","webpack://GuideAI/./node_modules/openai/resources/images.js","webpack://GuideAI/./node_modules/openai/resources/audio/translations.js","webpack://GuideAI/./node_modules/openai/lib/ChatCompletionStreamingRunner.js","webpack://GuideAI/./node_modules/openai/resources/beta/threads/runs/steps.js","webpack://GuideAI/./node_modules/openai/lib/ResponsesParser.js","webpack://GuideAI/./node_modules/openai/resources/chat/index.js","webpack://GuideAI/./node_modules/openai/resources/beta/chat/completions.js","webpack://GuideAI/./src/GuideAI.tsx","webpack://GuideAI/./node_modules/openai/internal/qs/utils.js","webpack://GuideAI/./node_modules/openai/core.js","webpack://GuideAI/./node_modules/openai/lib/AssistantStream.js","webpack://GuideAI/./node_modules/openai/_shims/auto/runtime.js","webpack://GuideAI/./node_modules/openai/resources/completions.js","webpack://GuideAI/./node_modules/openai/resources/models.js","webpack://GuideAI/./node_modules/openai/resources/chat/completions/messages.js","webpack://GuideAI/./node_modules/openai/error.js","webpack://GuideAI/./node_modules/openai/internal/decoders/line.js","webpack://GuideAI/webpack/bootstrap","webpack://GuideAI/webpack/runtime/define property getters","webpack://GuideAI/webpack/runtime/hasOwnProperty shorthand","webpack://GuideAI/webpack/runtime/make namespace object","webpack://GuideAI/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"React\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"GuideAI\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"GuideAI\"] = factory(root[\"React\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE__156__) => {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__156__;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringify = void 0;\nconst utils_1 = require(\"./utils.js\");\nconst formats_1 = require(\"./formats.js\");\nconst has = Object.prototype.hasOwnProperty;\nconst array_prefix_generators = {\n brackets(prefix) {\n return String(prefix) + '[]';\n },\n comma: 'comma',\n indices(prefix, key) {\n return String(prefix) + '[' + key + ']';\n },\n repeat(prefix) {\n return String(prefix);\n },\n};\nconst is_array = Array.isArray;\nconst push = Array.prototype.push;\nconst push_to_array = function (arr, value_or_array) {\n push.apply(arr, is_array(value_or_array) ? value_or_array : [value_or_array]);\n};\nconst to_ISO = Date.prototype.toISOString;\nconst defaults = {\n addQueryPrefix: false,\n allowDots: false,\n allowEmptyArrays: false,\n arrayFormat: 'indices',\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encodeDotInKeys: false,\n encoder: utils_1.encode,\n encodeValuesOnly: false,\n format: formats_1.default_format,\n formatter: formats_1.formatters[formats_1.default_format],\n /** @deprecated */\n indices: false,\n serializeDate(date) {\n return to_ISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false,\n};\nfunction is_non_nullish_primitive(v) {\n return (typeof v === 'string' ||\n typeof v === 'number' ||\n typeof v === 'boolean' ||\n typeof v === 'symbol' ||\n typeof v === 'bigint');\n}\nconst sentinel = {};\nfunction inner_stringify(object, prefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, sideChannel) {\n let obj = object;\n let tmp_sc = sideChannel;\n let step = 0;\n let find_flag = false;\n while ((tmp_sc = tmp_sc.get(sentinel)) !== void undefined && !find_flag) {\n // Where object last appeared in the ref tree\n const pos = tmp_sc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n }\n else {\n find_flag = true; // Break while\n }\n }\n if (typeof tmp_sc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n }\n else if (obj instanceof Date) {\n obj = serializeDate?.(obj);\n }\n else if (generateArrayPrefix === 'comma' && is_array(obj)) {\n obj = (0, utils_1.maybe_map)(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate?.(value);\n }\n return value;\n });\n }\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ?\n // @ts-expect-error\n encoder(prefix, defaults.encoder, charset, 'key', format)\n : prefix;\n }\n obj = '';\n }\n if (is_non_nullish_primitive(obj) || (0, utils_1.is_buffer)(obj)) {\n if (encoder) {\n const key_value = encodeValuesOnly ? prefix\n // @ts-expect-error\n : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [\n formatter?.(key_value) +\n '=' +\n // @ts-expect-error\n formatter?.(encoder(obj, defaults.encoder, charset, 'value', format)),\n ];\n }\n return [formatter?.(prefix) + '=' + formatter?.(String(obj))];\n }\n const values = [];\n if (typeof obj === 'undefined') {\n return values;\n }\n let obj_keys;\n if (generateArrayPrefix === 'comma' && is_array(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n // @ts-expect-error values only\n obj = (0, utils_1.maybe_map)(obj, encoder);\n }\n obj_keys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n }\n else if (is_array(filter)) {\n obj_keys = filter;\n }\n else {\n const keys = Object.keys(obj);\n obj_keys = sort ? keys.sort(sort) : keys;\n }\n const encoded_prefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n const adjusted_prefix = commaRoundTrip && is_array(obj) && obj.length === 1 ? encoded_prefix + '[]' : encoded_prefix;\n if (allowEmptyArrays && is_array(obj) && obj.length === 0) {\n return adjusted_prefix + '[]';\n }\n for (let j = 0; j < obj_keys.length; ++j) {\n const key = obj_keys[j];\n const value = \n // @ts-ignore\n typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n if (skipNulls && value === null) {\n continue;\n }\n // @ts-ignore\n const encoded_key = allowDots && encodeDotInKeys ? key.replace(/\\./g, '%2E') : key;\n const key_prefix = is_array(obj) ?\n typeof generateArrayPrefix === 'function' ?\n generateArrayPrefix(adjusted_prefix, encoded_key)\n : adjusted_prefix\n : adjusted_prefix + (allowDots ? '.' + encoded_key : '[' + encoded_key + ']');\n sideChannel.set(object, step);\n const valueSideChannel = new WeakMap();\n valueSideChannel.set(sentinel, sideChannel);\n push_to_array(values, inner_stringify(value, key_prefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, \n // @ts-ignore\n generateArrayPrefix === 'comma' && encodeValuesOnly && is_array(obj) ? null : encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, valueSideChannel));\n }\n return values;\n}\nfunction normalize_stringify_options(opts = defaults) {\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n const charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n let format = formats_1.default_format;\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats_1.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n const formatter = formats_1.formatters[format];\n let filter = defaults.filter;\n if (typeof opts.filter === 'function' || is_array(opts.filter)) {\n filter = opts.filter;\n }\n let arrayFormat;\n if (opts.arrayFormat && opts.arrayFormat in array_prefix_generators) {\n arrayFormat = opts.arrayFormat;\n }\n else if ('indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n }\n else {\n arrayFormat = defaults.arrayFormat;\n }\n if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n const allowDots = typeof opts.allowDots === 'undefined' ?\n !!opts.encodeDotInKeys === true ?\n true\n : defaults.allowDots\n : !!opts.allowDots;\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n // @ts-ignore\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n arrayFormat: arrayFormat,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n commaRoundTrip: !!opts.commaRoundTrip,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n // @ts-ignore\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n };\n}\nfunction stringify(object, opts = {}) {\n let obj = object;\n const options = normalize_stringify_options(opts);\n let obj_keys;\n let filter;\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n }\n else if (is_array(options.filter)) {\n filter = options.filter;\n obj_keys = filter;\n }\n const keys = [];\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n const generateArrayPrefix = array_prefix_generators[options.arrayFormat];\n const commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n if (!obj_keys) {\n obj_keys = Object.keys(obj);\n }\n if (options.sort) {\n obj_keys.sort(options.sort);\n }\n const sideChannel = new WeakMap();\n for (let i = 0; i < obj_keys.length; ++i) {\n const key = obj_keys[i];\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n push_to_array(keys, inner_stringify(obj[key], key, \n // @ts-expect-error\n generateArrayPrefix, commaRoundTrip, options.allowEmptyArrays, options.strictNullHandling, options.skipNulls, options.encodeDotInKeys, options.encode ? options.encoder : null, options.filter, options.sort, options.allowDots, options.serializeDate, options.format, options.formatter, options.encodeValuesOnly, options.charset, sideChannel));\n }\n const joined = keys.join(options.delimiter);\n let prefix = options.addQueryPrefix === true ? '?' : '';\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('&#10003;'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n }\n else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n return joined.length > 0 ? prefix + joined : '';\n}\nexports.stringify = stringify;\n//# sourceMappingURL=stringify.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntime = void 0;\n/**\n * Disclaimer: modules in _shims aren't intended to be imported by SDK users.\n */\nconst MultipartBody_1 = require(\"./MultipartBody.js\");\nfunction getRuntime({ manuallyImported } = {}) {\n const recommendation = manuallyImported ?\n `You may need to use polyfills`\n : `Add one of these imports before your first \\`import … from 'openai'\\`:\n- \\`import 'openai/shims/node'\\` (if you're running on Node)\n- \\`import 'openai/shims/web'\\` (otherwise)\n`;\n let _fetch, _Request, _Response, _Headers;\n try {\n // @ts-ignore\n _fetch = fetch;\n // @ts-ignore\n _Request = Request;\n // @ts-ignore\n _Response = Response;\n // @ts-ignore\n _Headers = Headers;\n }\n catch (error) {\n throw new Error(`this environment is missing the following Web Fetch API type: ${error.message}. ${recommendation}`);\n }\n return {\n kind: 'web',\n fetch: _fetch,\n Request: _Request,\n Response: _Response,\n Headers: _Headers,\n FormData: \n // @ts-ignore\n typeof FormData !== 'undefined' ? FormData : (class FormData {\n // @ts-ignore\n constructor() {\n throw new Error(`file uploads aren't supported in this environment yet as 'FormData' is undefined. ${recommendation}`);\n }\n }),\n Blob: typeof Blob !== 'undefined' ? Blob : (class Blob {\n constructor() {\n throw new Error(`file uploads aren't supported in this environment yet as 'Blob' is undefined. ${recommendation}`);\n }\n }),\n File: \n // @ts-ignore\n typeof File !== 'undefined' ? File : (class File {\n // @ts-ignore\n constructor() {\n throw new Error(`file uploads aren't supported in this environment yet as 'File' is undefined. ${recommendation}`);\n }\n }),\n ReadableStream: \n // @ts-ignore\n typeof ReadableStream !== 'undefined' ? ReadableStream : (class ReadableStream {\n // @ts-ignore\n constructor() {\n throw new Error(`streaming isn't supported in this environment yet as 'ReadableStream' is undefined. ${recommendation}`);\n }\n }),\n getMultipartRequestOptions: async (\n // @ts-ignore\n form, opts) => ({\n ...opts,\n body: new MultipartBody_1.MultipartBody(form),\n }),\n getDefaultAgent: (url) => undefined,\n fileFromPath: () => {\n throw new Error('The `fileFromPath` function is only supported in Node. See the README for more details: https://www.github.com/openai/openai-node#file-uploads');\n },\n isFsReadStream: (value) => false,\n };\n}\nexports.getRuntime = getRuntime;\n//# sourceMappingURL=web-runtime.js.map","/*!\n * html2canvas 1.4.1 <https://html2canvas.hertzen.com>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.html2canvas = factory());\n}(this, (function () { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\r\n /* global Reflect, Promise */\r\n\r\n var extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n\r\n function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n }\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\r\n\r\n function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n }\r\n\r\n function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n }\r\n\r\n function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n }\n\n var Bounds = /** @class */ (function () {\n function Bounds(left, top, width, height) {\n this.left = left;\n this.top = top;\n this.width = width;\n this.height = height;\n }\n Bounds.prototype.add = function (x, y, w, h) {\n return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n };\n Bounds.fromClientRect = function (context, clientRect) {\n return new Bounds(clientRect.left + context.windowBounds.left, clientRect.top + context.windowBounds.top, clientRect.width, clientRect.height);\n };\n Bounds.fromDOMRectList = function (context, domRectList) {\n var domRect = Array.from(domRectList).find(function (rect) { return rect.width !== 0; });\n return domRect\n ? new Bounds(domRect.left + context.windowBounds.left, domRect.top + context.windowBounds.top, domRect.width, domRect.height)\n : Bounds.EMPTY;\n };\n Bounds.EMPTY = new Bounds(0, 0, 0, 0);\n return Bounds;\n }());\n var parseBounds = function (context, node) {\n return Bounds.fromClientRect(context, node.getBoundingClientRect());\n };\n var parseDocumentSize = function (document) {\n var body = document.body;\n var documentElement = document.documentElement;\n if (!body || !documentElement) {\n throw new Error(\"Unable to get document size\");\n }\n var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));\n var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));\n return new Bounds(0, 0, width, height);\n };\n\n /*\n * css-line-break 2.1.0 <https://github.com/niklasvh/css-line-break#readme>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n var toCodePoints$1 = function (str) {\n var codePoints = [];\n var i = 0;\n var length = str.length;\n while (i < length) {\n var value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n var extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n }\n else {\n codePoints.push(value);\n i--;\n }\n }\n else {\n codePoints.push(value);\n }\n }\n return codePoints;\n };\n var fromCodePoint$1 = function () {\n var codePoints = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n if (String.fromCodePoint) {\n return String.fromCodePoint.apply(String, codePoints);\n }\n var length = codePoints.length;\n if (!length) {\n return '';\n }\n var codeUnits = [];\n var index = -1;\n var result = '';\n while (++index < length) {\n var codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n }\n else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode.apply(String, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n };\n var chars$2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n // Use a lookup table to find the index.\n var lookup$2 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n for (var i$2 = 0; i$2 < chars$2.length; i$2++) {\n lookup$2[chars$2.charCodeAt(i$2)] = i$2;\n }\n\n /*\n * utrie 1.0.2 <https://github.com/niklasvh/utrie>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n var chars$1$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n // Use a lookup table to find the index.\n var lookup$1$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n for (var i$1$1 = 0; i$1$1 < chars$1$1.length; i$1$1++) {\n lookup$1$1[chars$1$1.charCodeAt(i$1$1)] = i$1$1;\n }\n var decode$1 = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var buffer = typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup$1$1[base64.charCodeAt(i)];\n encoded2 = lookup$1$1[base64.charCodeAt(i + 1)];\n encoded3 = lookup$1$1[base64.charCodeAt(i + 2)];\n encoded4 = lookup$1$1[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return buffer;\n };\n var polyUint16Array$1 = function (buffer) {\n var length = buffer.length;\n var bytes = [];\n for (var i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n };\n var polyUint32Array$1 = function (buffer) {\n var length = buffer.length;\n var bytes = [];\n for (var i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n };\n\n /** Shift size for getting the index-2 table offset. */\n var UTRIE2_SHIFT_2$1 = 5;\n /** Shift size for getting the index-1 table offset. */\n var UTRIE2_SHIFT_1$1 = 6 + 5;\n /**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\n var UTRIE2_INDEX_SHIFT$1 = 2;\n /**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\n var UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1;\n /**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\n var UTRIE2_LSCP_INDEX_2_OFFSET$1 = 0x10000 >> UTRIE2_SHIFT_2$1;\n /** Number of entries in a data block. 32=0x20 */\n var UTRIE2_DATA_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_2$1;\n /** Mask for getting the lower bits for the in-data-block offset. */\n var UTRIE2_DATA_MASK$1 = UTRIE2_DATA_BLOCK_LENGTH$1 - 1;\n var UTRIE2_LSCP_INDEX_2_LENGTH$1 = 0x400 >> UTRIE2_SHIFT_2$1;\n /** Count the lengths of both BMP pieces. 2080=0x820 */\n var UTRIE2_INDEX_2_BMP_LENGTH$1 = UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1;\n /**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\n var UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1;\n var UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n /**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\n var UTRIE2_INDEX_1_OFFSET$1 = UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1;\n /**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\n var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 = 0x10000 >> UTRIE2_SHIFT_1$1;\n /** Number of entries in an index-2 block. 64=0x40 */\n var UTRIE2_INDEX_2_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_1_2$1;\n /** Mask for getting the lower bits for the in-index-2-block offset. */\n var UTRIE2_INDEX_2_MASK$1 = UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1;\n var slice16$1 = function (view, start, end) {\n if (view.slice) {\n return view.slice(start, end);\n }\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n };\n var slice32$1 = function (view, start, end) {\n if (view.slice) {\n return view.slice(start, end);\n }\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n };\n var createTrieFromBase64$1 = function (base64, _byteLength) {\n var buffer = decode$1(base64);\n var view32 = Array.isArray(buffer) ? polyUint32Array$1(buffer) : new Uint32Array(buffer);\n var view16 = Array.isArray(buffer) ? polyUint16Array$1(buffer) : new Uint16Array(buffer);\n var headerLength = 24;\n var index = slice16$1(view16, headerLength / 2, view32[4] / 2);\n var data = view32[5] === 2\n ? slice16$1(view16, (headerLength + view32[4]) / 2)\n : slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4));\n return new Trie$1(view32[0], view32[1], view32[2], view32[3], index, data);\n };\n var Trie$1 = /** @class */ (function () {\n function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n Trie.prototype.get = function (codePoint) {\n var ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2$1];\n ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n return this.data[ix];\n }\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET$1 + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2$1)];\n ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n return this.data[ix];\n }\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET$1 - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 + (codePoint >> UTRIE2_SHIFT_1$1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2$1) & UTRIE2_INDEX_2_MASK$1;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n };\n return Trie;\n }());\n\n /*\n * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n var chars$3 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n // Use a lookup table to find the index.\n var lookup$3 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n for (var i$3 = 0; i$3 < chars$3.length; i$3++) {\n lookup$3[chars$3.charCodeAt(i$3)] = i$3;\n }\n\n var base64$1 = 'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';\n\n var LETTER_NUMBER_MODIFIER = 50;\n // Non-tailorable Line Breaking Classes\n var BK = 1; // Cause a line break (after)\n var CR$1 = 2; // Cause a line break (after), except between CR and LF\n var LF$1 = 3; // Cause a line break (after)\n var CM = 4; // Prohibit a line break between the character and the preceding character\n var NL = 5; // Cause a line break (after)\n var WJ = 7; // Prohibit line breaks before and after\n var ZW = 8; // Provide a break opportunity\n var GL = 9; // Prohibit line breaks before and after\n var SP = 10; // Enable indirect line breaks\n var ZWJ$1 = 11; // Prohibit line breaks within joiner sequences\n // Break Opportunities\n var B2 = 12; // Provide a line break opportunity before and after the character\n var BA = 13; // Generally provide a line break opportunity after the character\n var BB = 14; // Generally provide a line break opportunity before the character\n var HY = 15; // Provide a line break opportunity after the character, except in numeric context\n var CB = 16; // Provide a line break opportunity contingent on additional information\n // Characters Prohibiting Certain Breaks\n var CL = 17; // Prohibit line breaks before\n var CP = 18; // Prohibit line breaks before\n var EX = 19; // Prohibit line breaks before\n var IN = 20; // Allow only indirect line breaks between pairs\n var NS = 21; // Allow only indirect line breaks before\n var OP = 22; // Prohibit line breaks after\n var QU = 23; // Act like they are both opening and closing\n // Numeric Context\n var IS = 24; // Prevent breaks after any and before numeric\n var NU = 25; // Form numeric expressions for line breaking purposes\n var PO = 26; // Do not break following a numeric expression\n var PR = 27; // Do not break in front of a numeric expression\n var SY = 28; // Prevent a break before; and allow a break after\n // Other Characters\n var AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\n var AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\n var CJ = 31; // Treat as NS or ID for strict or normal breaking.\n var EB = 32; // Do not break from following Emoji Modifier\n var EM = 33; // Do not break from preceding Emoji Base\n var H2 = 34; // Form Korean syllable blocks\n var H3 = 35; // Form Korean syllable blocks\n var HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\n var ID = 37; // Break before or after; except in some numeric context\n var JL = 38; // Form Korean syllable blocks\n var JV = 39; // Form Korean syllable blocks\n var JT = 40; // Form Korean syllable blocks\n var RI$1 = 41; // Keep pairs together. For pairs; break before and after other classes\n var SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\n var XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\n var ea_OP = [0x2329, 0xff08];\n var BREAK_MANDATORY = '!';\n var BREAK_NOT_ALLOWED$1 = '×';\n var BREAK_ALLOWED$1 = '÷';\n var UnicodeTrie$1 = createTrieFromBase64$1(base64$1);\n var ALPHABETICS = [AL, HL];\n var HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL];\n var SPACE$1 = [SP, ZW];\n var PREFIX_POSTFIX = [PR, PO];\n var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1);\n var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\n var HYPHEN = [HY, BA];\n var codePointsToCharacterClasses = function (codePoints, lineBreak) {\n if (lineBreak === void 0) { lineBreak = 'strict'; }\n var types = [];\n var indices = [];\n var categories = [];\n codePoints.forEach(function (codePoint, index) {\n var classType = UnicodeTrie$1.get(codePoint);\n if (classType > LETTER_NUMBER_MODIFIER) {\n categories.push(true);\n classType -= LETTER_NUMBER_MODIFIER;\n }\n else {\n categories.push(false);\n }\n if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n indices.push(index);\n return types.push(CB);\n }\n }\n if (classType === CM || classType === ZWJ$1) {\n // LB10 Treat any remaining combining mark or ZWJ as AL.\n if (index === 0) {\n indices.push(index);\n return types.push(AL);\n }\n // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n // the base character in all of the following rules. Treat ZWJ as if it were CM.\n var prev = types[index - 1];\n if (LINE_BREAKS.indexOf(prev) === -1) {\n indices.push(indices[index - 1]);\n return types.push(prev);\n }\n indices.push(index);\n return types.push(AL);\n }\n indices.push(index);\n if (classType === CJ) {\n return types.push(lineBreak === 'strict' ? NS : ID);\n }\n if (classType === SA) {\n return types.push(AL);\n }\n if (classType === AI) {\n return types.push(AL);\n }\n // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n // to take into account the actual line breaking properties for these characters.\n if (classType === XX) {\n if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\n return types.push(ID);\n }\n else {\n return types.push(AL);\n }\n }\n types.push(classType);\n });\n return [indices, types, categories];\n };\n var isAdjacentWithSpaceIgnored = function (a, b, currentIndex, classTypes) {\n var current = classTypes[currentIndex];\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n var i = currentIndex;\n while (i <= classTypes.length) {\n i++;\n var next = classTypes[i];\n if (next === b) {\n return true;\n }\n if (next !== SP) {\n break;\n }\n }\n }\n if (current === SP) {\n var i = currentIndex;\n while (i > 0) {\n i--;\n var prev = classTypes[i];\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n var n = currentIndex;\n while (n <= classTypes.length) {\n n++;\n var next = classTypes[n];\n if (next === b) {\n return true;\n }\n if (next !== SP) {\n break;\n }\n }\n }\n if (prev !== SP) {\n break;\n }\n }\n }\n return false;\n };\n var previousNonSpaceClassType = function (currentIndex, classTypes) {\n var i = currentIndex;\n while (i >= 0) {\n var type = classTypes[i];\n if (type === SP) {\n i--;\n }\n else {\n return type;\n }\n }\n return 0;\n };\n var _lineBreakAtIndex = function (codePoints, classTypes, indicies, index, forbiddenBreaks) {\n if (indicies[index] === 0) {\n return BREAK_NOT_ALLOWED$1;\n }\n var currentIndex = index - 1;\n if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n return BREAK_NOT_ALLOWED$1;\n }\n var beforeIndex = currentIndex - 1;\n var afterIndex = currentIndex + 1;\n var current = classTypes[currentIndex];\n // LB4 Always break after hard line breaks.\n // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n var next = classTypes[afterIndex];\n if (current === CR$1 && next === LF$1) {\n return BREAK_NOT_ALLOWED$1;\n }\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n return BREAK_MANDATORY;\n }\n // LB6 Do not break before hard line breaks.\n if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB7 Do not break before spaces or zero width space.\n if (SPACE$1.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n return BREAK_ALLOWED$1;\n }\n // LB8a Do not break after a zero width joiner.\n if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // zwj emojis\n if ((current === EB || current === EM) && UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB11 Do not break before or after Word joiner and related characters.\n if (current === WJ || next === WJ) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB12 Do not break after NBSP and related characters.\n if (current === GL) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB14 Do not break after ‘[’, even after spaces.\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB15 Do not break within ‘”[’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB17 Do not break within ‘——’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB18 Break after spaces.\n if (current === SP) {\n return BREAK_ALLOWED$1;\n }\n // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n if (current === QU || next === QU) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB20 Break before and after unresolved CB.\n if (next === CB || current === CB) {\n return BREAK_ALLOWED$1;\n }\n // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB21a Don't break after Hebrew + Hyphen.\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB21b Don’t break between Solidus and Hebrew letters.\n if (current === SY && next === HL) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB22 Do not break before ellipsis.\n if (next === IN) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB23 Do not break between digits and letters.\n if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n if ((current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\n ([ID, EB, EM].indexOf(current) !== -1 && next === PO)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n if ((ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\n (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB25 Do not break between the following pairs of classes relevant to numbers:\n if (\n // (PR | PO) × ( OP | HY )? NU\n ([PR, PO].indexOf(current) !== -1 &&\n (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\n // ( OP | HY ) × NU\n ([OP, HY].indexOf(current) !== -1 && next === NU) ||\n // NU ×\t(NU | SY | IS)\n (current === NU && [NU, SY, IS].indexOf(next) !== -1)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n var prevIndex = currentIndex;\n while (prevIndex >= 0) {\n var type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED$1;\n }\n else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n }\n else {\n break;\n }\n }\n }\n // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n if ([PR, PO].indexOf(next) !== -1) {\n var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n while (prevIndex >= 0) {\n var type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED$1;\n }\n else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n }\n else {\n break;\n }\n }\n }\n // LB26 Do not break a Korean syllable.\n if ((JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\n ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\n ([JT, H3].indexOf(current) !== -1 && next === JT)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB27 Treat a Korean Syllable Block the same as ID.\n if ((KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\n (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB28 Do not break between alphabetics (“at”).\n if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n if ((ALPHABETICS.concat(NU).indexOf(current) !== -1 &&\n next === OP &&\n ea_OP.indexOf(codePoints[afterIndex]) === -1) ||\n (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n // indicators preceding the position of the break.\n if (current === RI$1 && next === RI$1) {\n var i = indicies[currentIndex];\n var count = 1;\n while (i > 0) {\n i--;\n if (classTypes[i] === RI$1) {\n count++;\n }\n else {\n break;\n }\n }\n if (count % 2 !== 0) {\n return BREAK_NOT_ALLOWED$1;\n }\n }\n // LB30b Do not break between an emoji base and an emoji modifier.\n if (current === EB && next === EM) {\n return BREAK_NOT_ALLOWED$1;\n }\n return BREAK_ALLOWED$1;\n };\n var cssFormattedClasses = function (codePoints, options) {\n if (!options) {\n options = { lineBreak: 'normal', wordBreak: 'normal' };\n }\n var _a = codePointsToCharacterClasses(codePoints, options.lineBreak), indicies = _a[0], classTypes = _a[1], isLetterNumber = _a[2];\n if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n classTypes = classTypes.map(function (type) { return ([NU, AL, SA].indexOf(type) !== -1 ? ID : type); });\n }\n var forbiddenBreakpoints = options.wordBreak === 'keep-all'\n ? isLetterNumber.map(function (letterNumber, i) {\n return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n })\n : undefined;\n return [indicies, classTypes, forbiddenBreakpoints];\n };\n var Break = /** @class */ (function () {\n function Break(codePoints, lineBreak, start, end) {\n this.codePoints = codePoints;\n this.required = lineBreak === BREAK_MANDATORY;\n this.start = start;\n this.end = end;\n }\n Break.prototype.slice = function () {\n return fromCodePoint$1.apply(void 0, this.codePoints.slice(this.start, this.end));\n };\n return Break;\n }());\n var LineBreaker = function (str, options) {\n var codePoints = toCodePoints$1(str);\n var _a = cssFormattedClasses(codePoints, options), indicies = _a[0], classTypes = _a[1], forbiddenBreakpoints = _a[2];\n var length = codePoints.length;\n var lastEnd = 0;\n var nextIndex = 0;\n return {\n next: function () {\n if (nextIndex >= length) {\n return { done: true, value: null };\n }\n var lineBreak = BREAK_NOT_ALLOWED$1;\n while (nextIndex < length &&\n (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\n BREAK_NOT_ALLOWED$1) { }\n if (lineBreak !== BREAK_NOT_ALLOWED$1 || nextIndex === length) {\n var value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n lastEnd = nextIndex;\n return { value: value, done: false };\n }\n return { done: true, value: null };\n },\n };\n };\n\n // https://www.w3.org/TR/css-syntax-3\n var FLAG_UNRESTRICTED = 1 << 0;\n var FLAG_ID = 1 << 1;\n var FLAG_INTEGER = 1 << 2;\n var FLAG_NUMBER = 1 << 3;\n var LINE_FEED = 0x000a;\n var SOLIDUS = 0x002f;\n var REVERSE_SOLIDUS = 0x005c;\n var CHARACTER_TABULATION = 0x0009;\n var SPACE = 0x0020;\n var QUOTATION_MARK = 0x0022;\n var EQUALS_SIGN = 0x003d;\n var NUMBER_SIGN = 0x0023;\n var DOLLAR_SIGN = 0x0024;\n var PERCENTAGE_SIGN = 0x0025;\n var APOSTROPHE = 0x0027;\n var LEFT_PARENTHESIS = 0x0028;\n var RIGHT_PARENTHESIS = 0x0029;\n var LOW_LINE = 0x005f;\n var HYPHEN_MINUS = 0x002d;\n var EXCLAMATION_MARK = 0x0021;\n var LESS_THAN_SIGN = 0x003c;\n var GREATER_THAN_SIGN = 0x003e;\n var COMMERCIAL_AT = 0x0040;\n var LEFT_SQUARE_BRACKET = 0x005b;\n var RIGHT_SQUARE_BRACKET = 0x005d;\n var CIRCUMFLEX_ACCENT = 0x003d;\n var LEFT_CURLY_BRACKET = 0x007b;\n var QUESTION_MARK = 0x003f;\n var RIGHT_CURLY_BRACKET = 0x007d;\n var VERTICAL_LINE = 0x007c;\n var TILDE = 0x007e;\n var CONTROL = 0x0080;\n var REPLACEMENT_CHARACTER = 0xfffd;\n var ASTERISK = 0x002a;\n var PLUS_SIGN = 0x002b;\n var COMMA = 0x002c;\n var COLON = 0x003a;\n var SEMICOLON = 0x003b;\n var FULL_STOP = 0x002e;\n var NULL = 0x0000;\n var BACKSPACE = 0x0008;\n var LINE_TABULATION = 0x000b;\n var SHIFT_OUT = 0x000e;\n var INFORMATION_SEPARATOR_ONE = 0x001f;\n var DELETE = 0x007f;\n var EOF = -1;\n var ZERO = 0x0030;\n var a = 0x0061;\n var e = 0x0065;\n var f = 0x0066;\n var u = 0x0075;\n var z = 0x007a;\n var A = 0x0041;\n var E = 0x0045;\n var F = 0x0046;\n var U = 0x0055;\n var Z = 0x005a;\n var isDigit = function (codePoint) { return codePoint >= ZERO && codePoint <= 0x0039; };\n var isSurrogateCodePoint = function (codePoint) { return codePoint >= 0xd800 && codePoint <= 0xdfff; };\n var isHex = function (codePoint) {\n return isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\n };\n var isLowerCaseLetter = function (codePoint) { return codePoint >= a && codePoint <= z; };\n var isUpperCaseLetter = function (codePoint) { return codePoint >= A && codePoint <= Z; };\n var isLetter = function (codePoint) { return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint); };\n var isNonASCIICodePoint = function (codePoint) { return codePoint >= CONTROL; };\n var isWhiteSpace = function (codePoint) {\n return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\n };\n var isNameStartCodePoint = function (codePoint) {\n return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\n };\n var isNameCodePoint = function (codePoint) {\n return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\n };\n var isNonPrintableCodePoint = function (codePoint) {\n return ((codePoint >= NULL && codePoint <= BACKSPACE) ||\n codePoint === LINE_TABULATION ||\n (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\n codePoint === DELETE);\n };\n var isValidEscape = function (c1, c2) {\n if (c1 !== REVERSE_SOLIDUS) {\n return false;\n }\n return c2 !== LINE_FEED;\n };\n var isIdentifierStart = function (c1, c2, c3) {\n if (c1 === HYPHEN_MINUS) {\n return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n }\n else if (isNameStartCodePoint(c1)) {\n return true;\n }\n else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n return true;\n }\n return false;\n };\n var isNumberStart = function (c1, c2, c3) {\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n if (isDigit(c2)) {\n return true;\n }\n return c2 === FULL_STOP && isDigit(c3);\n }\n if (c1 === FULL_STOP) {\n return isDigit(c2);\n }\n return isDigit(c1);\n };\n var stringToNumber = function (codePoints) {\n var c = 0;\n var sign = 1;\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n sign = -1;\n }\n c++;\n }\n var integers = [];\n while (isDigit(codePoints[c])) {\n integers.push(codePoints[c++]);\n }\n var int = integers.length ? parseInt(fromCodePoint$1.apply(void 0, integers), 10) : 0;\n if (codePoints[c] === FULL_STOP) {\n c++;\n }\n var fraction = [];\n while (isDigit(codePoints[c])) {\n fraction.push(codePoints[c++]);\n }\n var fracd = fraction.length;\n var frac = fracd ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10) : 0;\n if (codePoints[c] === E || codePoints[c] === e) {\n c++;\n }\n var expsign = 1;\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n expsign = -1;\n }\n c++;\n }\n var exponent = [];\n while (isDigit(codePoints[c])) {\n exponent.push(codePoints[c++]);\n }\n var exp = exponent.length ? parseInt(fromCodePoint$1.apply(void 0, exponent), 10) : 0;\n return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n };\n var LEFT_PARENTHESIS_TOKEN = {\n type: 2 /* LEFT_PARENTHESIS_TOKEN */\n };\n var RIGHT_PARENTHESIS_TOKEN = {\n type: 3 /* RIGHT_PARENTHESIS_TOKEN */\n };\n var COMMA_TOKEN = { type: 4 /* COMMA_TOKEN */ };\n var SUFFIX_MATCH_TOKEN = { type: 13 /* SUFFIX_MATCH_TOKEN */ };\n var PREFIX_MATCH_TOKEN = { type: 8 /* PREFIX_MATCH_TOKEN */ };\n var COLUMN_TOKEN = { type: 21 /* COLUMN_TOKEN */ };\n var DASH_MATCH_TOKEN = { type: 9 /* DASH_MATCH_TOKEN */ };\n var INCLUDE_MATCH_TOKEN = { type: 10 /* INCLUDE_MATCH_TOKEN */ };\n var LEFT_CURLY_BRACKET_TOKEN = {\n type: 11 /* LEFT_CURLY_BRACKET_TOKEN */\n };\n var RIGHT_CURLY_BRACKET_TOKEN = {\n type: 12 /* RIGHT_CURLY_BRACKET_TOKEN */\n };\n var SUBSTRING_MATCH_TOKEN = { type: 14 /* SUBSTRING_MATCH_TOKEN */ };\n var BAD_URL_TOKEN = { type: 23 /* BAD_URL_TOKEN */ };\n var BAD_STRING_TOKEN = { type: 1 /* BAD_STRING_TOKEN */ };\n var CDO_TOKEN = { type: 25 /* CDO_TOKEN */ };\n var CDC_TOKEN = { type: 24 /* CDC_TOKEN */ };\n var COLON_TOKEN = { type: 26 /* COLON_TOKEN */ };\n var SEMICOLON_TOKEN = { type: 27 /* SEMICOLON_TOKEN */ };\n var LEFT_SQUARE_BRACKET_TOKEN = {\n type: 28 /* LEFT_SQUARE_BRACKET_TOKEN */\n };\n var RIGHT_SQUARE_BRACKET_TOKEN = {\n type: 29 /* RIGHT_SQUARE_BRACKET_TOKEN */\n };\n var WHITESPACE_TOKEN = { type: 31 /* WHITESPACE_TOKEN */ };\n var EOF_TOKEN = { type: 32 /* EOF_TOKEN */ };\n var Tokenizer = /** @class */ (function () {\n function Tokenizer() {\n this._value = [];\n }\n Tokenizer.prototype.write = function (chunk) {\n this._value = this._value.concat(toCodePoints$1(chunk));\n };\n Tokenizer.prototype.read = function () {\n var tokens = [];\n var token = this.consumeToken();\n while (token !== EOF_TOKEN) {\n tokens.push(token);\n token = this.consumeToken();\n }\n return tokens;\n };\n Tokenizer.prototype.consumeToken = function () {\n var codePoint = this.consumeCodePoint();\n switch (codePoint) {\n case QUOTATION_MARK:\n return this.consumeStringToken(QUOTATION_MARK);\n case NUMBER_SIGN:\n var c1 = this.peekCodePoint(0);\n var c2 = this.peekCodePoint(1);\n var c3 = this.peekCodePoint(2);\n if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n var flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n var value = this.consumeName();\n return { type: 5 /* HASH_TOKEN */, value: value, flags: flags };\n }\n break;\n case DOLLAR_SIGN:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUFFIX_MATCH_TOKEN;\n }\n break;\n case APOSTROPHE:\n return this.consumeStringToken(APOSTROPHE);\n case LEFT_PARENTHESIS:\n return LEFT_PARENTHESIS_TOKEN;\n case RIGHT_PARENTHESIS:\n return RIGHT_PARENTHESIS_TOKEN;\n case ASTERISK:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUBSTRING_MATCH_TOKEN;\n }\n break;\n case PLUS_SIGN:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case COMMA:\n return COMMA_TOKEN;\n case HYPHEN_MINUS:\n var e1 = codePoint;\n var e2 = this.peekCodePoint(0);\n var e3 = this.peekCodePoint(1);\n if (isNumberStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n if (isIdentifierStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDC_TOKEN;\n }\n break;\n case FULL_STOP:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case SOLIDUS:\n if (this.peekCodePoint(0) === ASTERISK) {\n this.consumeCodePoint();\n while (true) {\n var c = this.consumeCodePoint();\n if (c === ASTERISK) {\n c = this.consumeCodePoint();\n if (c === SOLIDUS) {\n return this.consumeToken();\n }\n }\n if (c === EOF) {\n return this.consumeToken();\n }\n }\n }\n break;\n case COLON:\n return COLON_TOKEN;\n case SEMICOLON:\n return SEMICOLON_TOKEN;\n case LESS_THAN_SIGN:\n if (this.peekCodePoint(0) === EXCLAMATION_MARK &&\n this.peekCodePoint(1) === HYPHEN_MINUS &&\n this.peekCodePoint(2) === HYPHEN_MINUS) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDO_TOKEN;\n }\n break;\n case COMMERCIAL_AT:\n var a1 = this.peekCodePoint(0);\n var a2 = this.peekCodePoint(1);\n var a3 = this.peekCodePoint(2);\n if (isIdentifierStart(a1, a2, a3)) {\n var value = this.consumeName();\n return { type: 7 /* AT_KEYWORD_TOKEN */, value: value };\n }\n break;\n case LEFT_SQUARE_BRACKET:\n return LEFT_SQUARE_BRACKET_TOKEN;\n case REVERSE_SOLIDUS:\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n break;\n case RIGHT_SQUARE_BRACKET:\n return RIGHT_SQUARE_BRACKET_TOKEN;\n case CIRCUMFLEX_ACCENT:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return PREFIX_MATCH_TOKEN;\n }\n break;\n case LEFT_CURLY_BRACKET:\n return LEFT_CURLY_BRACKET_TOKEN;\n case RIGHT_CURLY_BRACKET:\n return RIGHT_CURLY_BRACKET_TOKEN;\n case u:\n case U:\n var u1 = this.peekCodePoint(0);\n var u2 = this.peekCodePoint(1);\n if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n this.consumeCodePoint();\n this.consumeUnicodeRangeToken();\n }\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n case VERTICAL_LINE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return DASH_MATCH_TOKEN;\n }\n if (this.peekCodePoint(0) === VERTICAL_LINE) {\n this.consumeCodePoint();\n return COLUMN_TOKEN;\n }\n break;\n case TILDE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return INCLUDE_MATCH_TOKEN;\n }\n break;\n case EOF:\n return EOF_TOKEN;\n }\n if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n return WHITESPACE_TOKEN;\n }\n if (isDigit(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n if (isNameStartCodePoint(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n return { type: 6 /* DELIM_TOKEN */, value: fromCodePoint$1(codePoint) };\n };\n Tokenizer.prototype.consumeCodePoint = function () {\n var value = this._value.shift();\n return typeof value === 'undefined' ? -1 : value;\n };\n Tokenizer.prototype.reconsumeCodePoint = function (codePoint) {\n this._value.unshift(codePoint);\n };\n Tokenizer.prototype.peekCodePoint = function (delta) {\n if (delta >= this._value.length) {\n return -1;\n }\n return this._value[delta];\n };\n Tokenizer.prototype.consumeUnicodeRangeToken = function () {\n var digits = [];\n var codePoint = this.consumeCodePoint();\n while (isHex(codePoint) && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n var questionMarks = false;\n while (codePoint === QUESTION_MARK && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n questionMarks = true;\n }\n if (questionMarks) {\n var start_1 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? ZERO : digit); })), 16);\n var end = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? F : digit); })), 16);\n return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start_1, end: end };\n }\n var start = parseInt(fromCodePoint$1.apply(void 0, digits), 16);\n if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n this.consumeCodePoint();\n codePoint = this.consumeCodePoint();\n var endDigits = [];\n while (isHex(codePoint) && endDigits.length < 6) {\n endDigits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n var end = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16);\n return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start, end: end };\n }\n else {\n return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start, end: start };\n }\n };\n Tokenizer.prototype.consumeIdentLikeToken = function () {\n var value = this.consumeName();\n if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return this.consumeUrlToken();\n }\n else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return { type: 19 /* FUNCTION_TOKEN */, value: value };\n }\n return { type: 20 /* IDENT_TOKEN */, value: value };\n };\n Tokenizer.prototype.consumeUrlToken = function () {\n var value = [];\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF) {\n return { type: 22 /* URL_TOKEN */, value: '' };\n }\n var next = this.peekCodePoint(0);\n if (next === APOSTROPHE || next === QUOTATION_MARK) {\n var stringToken = this.consumeStringToken(this.consumeCodePoint());\n if (stringToken.type === 0 /* STRING_TOKEN */) {\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return { type: 22 /* URL_TOKEN */, value: stringToken.value };\n }\n }\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n while (true) {\n var codePoint = this.consumeCodePoint();\n if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n return { type: 22 /* URL_TOKEN */, value: fromCodePoint$1.apply(void 0, value) };\n }\n else if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return { type: 22 /* URL_TOKEN */, value: fromCodePoint$1.apply(void 0, value) };\n }\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n else if (codePoint === QUOTATION_MARK ||\n codePoint === APOSTROPHE ||\n codePoint === LEFT_PARENTHESIS ||\n isNonPrintableCodePoint(codePoint)) {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n else if (codePoint === REVERSE_SOLIDUS) {\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n value.push(this.consumeEscapedCodePoint());\n }\n else {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n }\n else {\n value.push(codePoint);\n }\n }\n };\n Tokenizer.prototype.consumeWhiteSpace = function () {\n while (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n };\n Tokenizer.prototype.consumeBadUrlRemnants = function () {\n while (true) {\n var codePoint = this.consumeCodePoint();\n if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n return;\n }\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.consumeEscapedCodePoint();\n }\n }\n };\n Tokenizer.prototype.consumeStringSlice = function (count) {\n var SLICE_STACK_SIZE = 50000;\n var value = '';\n while (count > 0) {\n var amount = Math.min(SLICE_STACK_SIZE, count);\n value += fromCodePoint$1.apply(void 0, this._value.splice(0, amount));\n count -= amount;\n }\n this._value.shift();\n return value;\n };\n Tokenizer.prototype.consumeStringToken = function (endingCodePoint) {\n var value = '';\n var i = 0;\n do {\n var codePoint = this._value[i];\n if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n value += this.consumeStringSlice(i);\n return { type: 0 /* STRING_TOKEN */, value: value };\n }\n if (codePoint === LINE_FEED) {\n this._value.splice(0, i);\n return BAD_STRING_TOKEN;\n }\n if (codePoint === REVERSE_SOLIDUS) {\n var next = this._value[i + 1];\n if (next !== EOF && next !== undefined) {\n if (next === LINE_FEED) {\n value += this.consumeStringSlice(i);\n i = -1;\n this._value.shift();\n }\n else if (isValidEscape(codePoint, next)) {\n value += this.consumeStringSlice(i);\n value += fromCodePoint$1(this.consumeEscapedCodePoint());\n i = -1;\n }\n }\n }\n i++;\n } while (true);\n };\n Tokenizer.prototype.consumeNumber = function () {\n var repr = [];\n var type = FLAG_INTEGER;\n var c1 = this.peekCodePoint(0);\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n repr.push(this.consumeCodePoint());\n }\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n c1 = this.peekCodePoint(0);\n var c2 = this.peekCodePoint(1);\n if (c1 === FULL_STOP && isDigit(c2)) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n c1 = this.peekCodePoint(0);\n c2 = this.peekCodePoint(1);\n var c3 = this.peekCodePoint(2);\n if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n return [stringToNumber(repr), type];\n };\n Tokenizer.prototype.consumeNumericToken = function () {\n var _a = this.consumeNumber(), number = _a[0], flags = _a[1];\n var c1 = this.peekCodePoint(0);\n var c2 = this.peekCodePoint(1);\n var c3 = this.peekCodePoint(2);\n if (isIdentifierStart(c1, c2, c3)) {\n var unit = this.consumeName();\n return { type: 15 /* DIMENSION_TOKEN */, number: number, flags: flags, unit: unit };\n }\n if (c1 === PERCENTAGE_SIGN) {\n this.consumeCodePoint();\n return { type: 16 /* PERCENTAGE_TOKEN */, number: number, flags: flags };\n }\n return { type: 17 /* NUMBER_TOKEN */, number: number, flags: flags };\n };\n Tokenizer.prototype.consumeEscapedCodePoint = function () {\n var codePoint = this.consumeCodePoint();\n if (isHex(codePoint)) {\n var hex = fromCodePoint$1(codePoint);\n while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n hex += fromCodePoint$1(this.consumeCodePoint());\n }\n if (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n var hexCodePoint = parseInt(hex, 16);\n if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n return REPLACEMENT_CHARACTER;\n }\n return hexCodePoint;\n }\n if (codePoint === EOF) {\n return REPLACEMENT_CHARACTER;\n }\n return codePoint;\n };\n Tokenizer.prototype.consumeName = function () {\n var result = '';\n while (true) {\n var codePoint = this.consumeCodePoint();\n if (isNameCodePoint(codePoint)) {\n result += fromCodePoint$1(codePoint);\n }\n else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n result += fromCodePoint$1(this.consumeEscapedCodePoint());\n }\n else {\n this.reconsumeCodePoint(codePoint);\n return result;\n }\n }\n };\n return Tokenizer;\n }());\n\n var Parser = /** @class */ (function () {\n function Parser(tokens) {\n this._tokens = tokens;\n }\n Parser.create = function (value) {\n var tokenizer = new Tokenizer();\n tokenizer.write(value);\n return new Parser(tokenizer.read());\n };\n Parser.parseValue = function (value) {\n return Parser.create(value).parseComponentValue();\n };\n Parser.parseValues = function (value) {\n return Parser.create(value).parseComponentValues();\n };\n Parser.prototype.parseComponentValue = function () {\n var token = this.consumeToken();\n while (token.type === 31 /* WHITESPACE_TOKEN */) {\n token = this.consumeToken();\n }\n if (token.type === 32 /* EOF_TOKEN */) {\n throw new SyntaxError(\"Error parsing CSS component value, unexpected EOF\");\n }\n this.reconsumeToken(token);\n var value = this.consumeComponentValue();\n do {\n token = this.consumeToken();\n } while (token.type === 31 /* WHITESPACE_TOKEN */);\n if (token.type === 32 /* EOF_TOKEN */) {\n return value;\n }\n throw new SyntaxError(\"Error parsing CSS component value, multiple values found when expecting only one\");\n };\n Parser.prototype.parseComponentValues = function () {\n var values = [];\n while (true) {\n var value = this.consumeComponentValue();\n if (value.type === 32 /* EOF_TOKEN */) {\n return values;\n }\n values.push(value);\n values.push();\n }\n };\n Parser.prototype.consumeComponentValue = function () {\n var token = this.consumeToken();\n switch (token.type) {\n case 11 /* LEFT_CURLY_BRACKET_TOKEN */:\n case 28 /* LEFT_SQUARE_BRACKET_TOKEN */:\n case 2 /* LEFT_PARENTHESIS_TOKEN */:\n return this.consumeSimpleBlock(token.type);\n case 19 /* FUNCTION_TOKEN */:\n return this.consumeFunction(token);\n }\n return token;\n };\n Parser.prototype.consumeSimpleBlock = function (type) {\n var block = { type: type, values: [] };\n var token = this.consumeToken();\n while (true) {\n if (token.type === 32 /* EOF_TOKEN */ || isEndingTokenFor(token, type)) {\n return block;\n }\n this.reconsumeToken(token);\n block.values.push(this.consumeComponentValue());\n token = this.consumeToken();\n }\n };\n Parser.prototype.consumeFunction = function (functionToken) {\n var cssFunction = {\n name: functionToken.value,\n values: [],\n type: 18 /* FUNCTION */\n };\n while (true) {\n var token = this.consumeToken();\n if (token.type === 32 /* EOF_TOKEN */ || token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */) {\n return cssFunction;\n }\n this.reconsumeToken(token);\n cssFunction.values.push(this.consumeComponentValue());\n }\n };\n Parser.prototype.consumeToken = function () {\n var token = this._tokens.shift();\n return typeof token === 'undefined' ? EOF_TOKEN : token;\n };\n Parser.prototype.reconsumeToken = function (token) {\n this._tokens.unshift(token);\n };\n return Parser;\n }());\n var isDimensionToken = function (token) { return token.type === 15 /* DIMENSION_TOKEN */; };\n var isNumberToken = function (token) { return token.type === 17 /* NUMBER_TOKEN */; };\n var isIdentToken = function (token) { return token.type === 20 /* IDENT_TOKEN */; };\n var isStringToken = function (token) { return token.type === 0 /* STRING_TOKEN */; };\n var isIdentWithValue = function (token, value) {\n return isIdentToken(token) && token.value === value;\n };\n var nonWhiteSpace = function (token) { return token.type !== 31 /* WHITESPACE_TOKEN */; };\n var nonFunctionArgSeparator = function (token) {\n return token.type !== 31 /* WHITESPACE_TOKEN */ && token.type !== 4 /* COMMA_TOKEN */;\n };\n var parseFunctionArgs = function (tokens) {\n var args = [];\n var arg = [];\n tokens.forEach(function (token) {\n if (token.type === 4 /* COMMA_TOKEN */) {\n if (arg.length === 0) {\n throw new Error(\"Error parsing function args, zero tokens for arg\");\n }\n args.push(arg);\n arg = [];\n return;\n }\n if (token.type !== 31 /* WHITESPACE_TOKEN */) {\n arg.push(token);\n }\n });\n if (arg.length) {\n args.push(arg);\n }\n return args;\n };\n var isEndingTokenFor = function (token, type) {\n if (type === 11 /* LEFT_CURLY_BRACKET_TOKEN */ && token.type === 12 /* RIGHT_CURLY_BRACKET_TOKEN */) {\n return true;\n }\n if (type === 28 /* LEFT_SQUARE_BRACKET_TOKEN */ && token.type === 29 /* RIGHT_SQUARE_BRACKET_TOKEN */) {\n return true;\n }\n return type === 2 /* LEFT_PARENTHESIS_TOKEN */ && token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */;\n };\n\n var isLength = function (token) {\n return token.type === 17 /* NUMBER_TOKEN */ || token.type === 15 /* DIMENSION_TOKEN */;\n };\n\n var isLengthPercentage = function (token) {\n return token.type === 16 /* PERCENTAGE_TOKEN */ || isLength(token);\n };\n var parseLengthPercentageTuple = function (tokens) {\n return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\n };\n var ZERO_LENGTH = {\n type: 17 /* NUMBER_TOKEN */,\n number: 0,\n flags: FLAG_INTEGER\n };\n var FIFTY_PERCENT = {\n type: 16 /* PERCENTAGE_TOKEN */,\n number: 50,\n flags: FLAG_INTEGER\n };\n var HUNDRED_PERCENT = {\n type: 16 /* PERCENTAGE_TOKEN */,\n number: 100,\n flags: FLAG_INTEGER\n };\n var getAbsoluteValueForTuple = function (tuple, width, height) {\n var x = tuple[0], y = tuple[1];\n return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n };\n var getAbsoluteValue = function (token, parent) {\n if (token.type === 16 /* PERCENTAGE_TOKEN */) {\n return (token.number / 100) * parent;\n }\n if (isDimensionToken(token)) {\n switch (token.unit) {\n case 'rem':\n case 'em':\n return 16 * token.number; // TODO use correct font-size\n case 'px':\n default:\n return token.number;\n }\n }\n return token.number;\n };\n\n var DEG = 'deg';\n var GRAD = 'grad';\n var RAD = 'rad';\n var TURN = 'turn';\n var angle = {\n name: 'angle',\n parse: function (_context, value) {\n if (value.type === 15 /* DIMENSION_TOKEN */) {\n switch (value.unit) {\n case DEG:\n return (Math.PI * value.number) / 180;\n case GRAD:\n return (Math.PI / 200) * value.number;\n case RAD:\n return value.number;\n case TURN:\n return Math.PI * 2 * value.number;\n }\n }\n throw new Error(\"Unsupported angle type\");\n }\n };\n var isAngle = function (value) {\n if (value.type === 15 /* DIMENSION_TOKEN */) {\n if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n return true;\n }\n }\n return false;\n };\n var parseNamedSide = function (tokens) {\n var sideOrCorner = tokens\n .filter(isIdentToken)\n .map(function (ident) { return ident.value; })\n .join(' ');\n switch (sideOrCorner) {\n case 'to bottom right':\n case 'to right bottom':\n case 'left top':\n case 'top left':\n return [ZERO_LENGTH, ZERO_LENGTH];\n case 'to top':\n case 'bottom':\n return deg(0);\n case 'to bottom left':\n case 'to left bottom':\n case 'right top':\n case 'top right':\n return [ZERO_LENGTH, HUNDRED_PERCENT];\n case 'to right':\n case 'left':\n return deg(90);\n case 'to top left':\n case 'to left top':\n case 'right bottom':\n case 'bottom right':\n return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n case 'to bottom':\n case 'top':\n return deg(180);\n case 'to top right':\n case 'to right top':\n case 'left bottom':\n case 'bottom left':\n return [HUNDRED_PERCENT, ZERO_LENGTH];\n case 'to left':\n case 'right':\n return deg(270);\n }\n return 0;\n };\n var deg = function (deg) { return (Math.PI * deg) / 180; };\n\n var color$1 = {\n name: 'color',\n parse: function (context, value) {\n if (value.type === 18 /* FUNCTION */) {\n var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n if (typeof colorFunction === 'undefined') {\n throw new Error(\"Attempting to parse an unsupported color function \\\"\" + value.name + \"\\\"\");\n }\n return colorFunction(context, value.values);\n }\n if (value.type === 5 /* HASH_TOKEN */) {\n if (value.value.length === 3) {\n var r = value.value.substring(0, 1);\n var g = value.value.substring(1, 2);\n var b = value.value.substring(2, 3);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n }\n if (value.value.length === 4) {\n var r = value.value.substring(0, 1);\n var g = value.value.substring(1, 2);\n var b = value.value.substring(2, 3);\n var a = value.value.substring(3, 4);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\n }\n if (value.value.length === 6) {\n var r = value.value.substring(0, 2);\n var g = value.value.substring(2, 4);\n var b = value.value.substring(4, 6);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n }\n if (value.value.length === 8) {\n var r = value.value.substring(0, 2);\n var g = value.value.substring(2, 4);\n var b = value.value.substring(4, 6);\n var a = value.value.substring(6, 8);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\n }\n }\n if (value.type === 20 /* IDENT_TOKEN */) {\n var namedColor = COLORS[value.value.toUpperCase()];\n if (typeof namedColor !== 'undefined') {\n return namedColor;\n }\n }\n return COLORS.TRANSPARENT;\n }\n };\n var isTransparent = function (color) { return (0xff & color) === 0; };\n var asString = function (color) {\n var alpha = 0xff & color;\n var blue = 0xff & (color >> 8);\n var green = 0xff & (color >> 16);\n var red = 0xff & (color >> 24);\n return alpha < 255 ? \"rgba(\" + red + \",\" + green + \",\" + blue + \",\" + alpha / 255 + \")\" : \"rgb(\" + red + \",\" + green + \",\" + blue + \")\";\n };\n var pack = function (r, g, b, a) {\n return ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\n };\n var getTokenColorValue = function (token, i) {\n if (token.type === 17 /* NUMBER_TOKEN */) {\n return token.number;\n }\n if (token.type === 16 /* PERCENTAGE_TOKEN */) {\n var max = i === 3 ? 1 : 255;\n return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\n }\n return 0;\n };\n var rgb = function (_context, args) {\n var tokens = args.filter(nonFunctionArgSeparator);\n if (tokens.length === 3) {\n var _a = tokens.map(getTokenColorValue), r = _a[0], g = _a[1], b = _a[2];\n return pack(r, g, b, 1);\n }\n if (tokens.length === 4) {\n var _b = tokens.map(getTokenColorValue), r = _b[0], g = _b[1], b = _b[2], a = _b[3];\n return pack(r, g, b, a);\n }\n return 0;\n };\n function hue2rgb(t1, t2, hue) {\n if (hue < 0) {\n hue += 1;\n }\n if (hue >= 1) {\n hue -= 1;\n }\n if (hue < 1 / 6) {\n return (t2 - t1) * hue * 6 + t1;\n }\n else if (hue < 1 / 2) {\n return t2;\n }\n else if (hue < 2 / 3) {\n return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n }\n else {\n return t1;\n }\n }\n var hsl = function (context, args) {\n var tokens = args.filter(nonFunctionArgSeparator);\n var hue = tokens[0], saturation = tokens[1], lightness = tokens[2], alpha = tokens[3];\n var h = (hue.type === 17 /* NUMBER_TOKEN */ ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);\n var s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n var l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n var a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n if (s === 0) {\n return pack(l * 255, l * 255, l * 255, 1);\n }\n var t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var t1 = l * 2 - t2;\n var r = hue2rgb(t1, t2, h + 1 / 3);\n var g = hue2rgb(t1, t2, h);\n var b = hue2rgb(t1, t2, h - 1 / 3);\n return pack(r * 255, g * 255, b * 255, a);\n };\n var SUPPORTED_COLOR_FUNCTIONS = {\n hsl: hsl,\n hsla: hsl,\n rgb: rgb,\n rgba: rgb\n };\n var parseColor = function (context, value) {\n return color$1.parse(context, Parser.create(value).parseComponentValue());\n };\n var COLORS = {\n ALICEBLUE: 0xf0f8ffff,\n ANTIQUEWHITE: 0xfaebd7ff,\n AQUA: 0x00ffffff,\n AQUAMARINE: 0x7fffd4ff,\n AZURE: 0xf0ffffff,\n BEIGE: 0xf5f5dcff,\n BISQUE: 0xffe4c4ff,\n BLACK: 0x000000ff,\n BLANCHEDALMOND: 0xffebcdff,\n BLUE: 0x0000ffff,\n BLUEVIOLET: 0x8a2be2ff,\n BROWN: 0xa52a2aff,\n BURLYWOOD: 0xdeb887ff,\n CADETBLUE: 0x5f9ea0ff,\n CHARTREUSE: 0x7fff00ff,\n CHOCOLATE: 0xd2691eff,\n CORAL: 0xff7f50ff,\n CORNFLOWERBLUE: 0x6495edff,\n CORNSILK: 0xfff8dcff,\n CRIMSON: 0xdc143cff,\n CYAN: 0x00ffffff,\n DARKBLUE: 0x00008bff,\n DARKCYAN: 0x008b8bff,\n DARKGOLDENROD: 0xb886bbff,\n DARKGRAY: 0xa9a9a9ff,\n DARKGREEN: 0x006400ff,\n DARKGREY: 0xa9a9a9ff,\n DARKKHAKI: 0xbdb76bff,\n DARKMAGENTA: 0x8b008bff,\n DARKOLIVEGREEN: 0x556b2fff,\n DARKORANGE: 0xff8c00ff,\n DARKORCHID: 0x9932ccff,\n DARKRED: 0x8b0000ff,\n DARKSALMON: 0xe9967aff,\n DARKSEAGREEN: 0x8fbc8fff,\n DARKSLATEBLUE: 0x483d8bff,\n DARKSLATEGRAY: 0x2f4f4fff,\n DARKSLATEGREY: 0x2f4f4fff,\n DARKTURQUOISE: 0x00ced1ff,\n DARKVIOLET: 0x9400d3ff,\n DEEPPINK: 0xff1493ff,\n DEEPSKYBLUE: 0x00bfffff,\n DIMGRAY: 0x696969ff,\n DIMGREY: 0x696969ff,\n DODGERBLUE: 0x1e90ffff,\n FIREBRICK: 0xb22222ff,\n FLORALWHITE: 0xfffaf0ff,\n FORESTGREEN: 0x228b22ff,\n FUCHSIA: 0xff00ffff,\n GAINSBORO: 0xdcdcdcff,\n GHOSTWHITE: 0xf8f8ffff,\n GOLD: 0xffd700ff,\n GOLDENROD: 0xdaa520ff,\n GRAY: 0x808080ff,\n GREEN: 0x008000ff,\n GREENYELLOW: 0xadff2fff,\n GREY: 0x808080ff,\n HONEYDEW: 0xf0fff0ff,\n HOTPINK: 0xff69b4ff,\n INDIANRED: 0xcd5c5cff,\n INDIGO: 0x4b0082ff,\n IVORY: 0xfffff0ff,\n KHAKI: 0xf0e68cff,\n LAVENDER: 0xe6e6faff,\n LAVENDERBLUSH: 0xfff0f5ff,\n LAWNGREEN: 0x7cfc00ff,\n LEMONCHIFFON: 0xfffacdff,\n LIGHTBLUE: 0xadd8e6ff,\n LIGHTCORAL: 0xf08080ff,\n LIGHTCYAN: 0xe0ffffff,\n LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n LIGHTGRAY: 0xd3d3d3ff,\n LIGHTGREEN: 0x90ee90ff,\n LIGHTGREY: 0xd3d3d3ff,\n LIGHTPINK: 0xffb6c1ff,\n LIGHTSALMON: 0xffa07aff,\n LIGHTSEAGREEN: 0x20b2aaff,\n LIGHTSKYBLUE: 0x87cefaff,\n LIGHTSLATEGRAY: 0x778899ff,\n LIGHTSLATEGREY: 0x778899ff,\n LIGHTSTEELBLUE: 0xb0c4deff,\n LIGHTYELLOW: 0xffffe0ff,\n LIME: 0x00ff00ff,\n LIMEGREEN: 0x32cd32ff,\n LINEN: 0xfaf0e6ff,\n MAGENTA: 0xff00ffff,\n MAROON: 0x800000ff,\n MEDIUMAQUAMARINE: 0x66cdaaff,\n MEDIUMBLUE: 0x0000cdff,\n MEDIUMORCHID: 0xba55d3ff,\n MEDIUMPURPLE: 0x9370dbff,\n MEDIUMSEAGREEN: 0x3cb371ff,\n MEDIUMSLATEBLUE: 0x7b68eeff,\n MEDIUMSPRINGGREEN: 0x00fa9aff,\n MEDIUMTURQUOISE: 0x48d1ccff,\n MEDIUMVIOLETRED: 0xc71585ff,\n MIDNIGHTBLUE: 0x191970ff,\n MINTCREAM: 0xf5fffaff,\n MISTYROSE: 0xffe4e1ff,\n MOCCASIN: 0xffe4b5ff,\n NAVAJOWHITE: 0xffdeadff,\n NAVY: 0x000080ff,\n OLDLACE: 0xfdf5e6ff,\n OLIVE: 0x808000ff,\n OLIVEDRAB: 0x6b8e23ff,\n ORANGE: 0xffa500ff,\n ORANGERED: 0xff4500ff,\n ORCHID: 0xda70d6ff,\n PALEGOLDENROD: 0xeee8aaff,\n PALEGREEN: 0x98fb98ff,\n PALETURQUOISE: 0xafeeeeff,\n PALEVIOLETRED: 0xdb7093ff,\n PAPAYAWHIP: 0xffefd5ff,\n PEACHPUFF: 0xffdab9ff,\n PERU: 0xcd853fff,\n PINK: 0xffc0cbff,\n PLUM: 0xdda0ddff,\n POWDERBLUE: 0xb0e0e6ff,\n PURPLE: 0x800080ff,\n REBECCAPURPLE: 0x663399ff,\n RED: 0xff0000ff,\n ROSYBROWN: 0xbc8f8fff,\n ROYALBLUE: 0x4169e1ff,\n SADDLEBROWN: 0x8b4513ff,\n SALMON: 0xfa8072ff,\n SANDYBROWN: 0xf4a460ff,\n SEAGREEN: 0x2e8b57ff,\n SEASHELL: 0xfff5eeff,\n SIENNA: 0xa0522dff,\n SILVER: 0xc0c0c0ff,\n SKYBLUE: 0x87ceebff,\n SLATEBLUE: 0x6a5acdff,\n SLATEGRAY: 0x708090ff,\n SLATEGREY: 0x708090ff,\n SNOW: 0xfffafaff,\n SPRINGGREEN: 0x00ff7fff,\n STEELBLUE: 0x4682b4ff,\n TAN: 0xd2b48cff,\n TEAL: 0x008080ff,\n THISTLE: 0xd8bfd8ff,\n TOMATO: 0xff6347ff,\n TRANSPARENT: 0x00000000,\n TURQUOISE: 0x40e0d0ff,\n VIOLET: 0xee82eeff,\n WHEAT: 0xf5deb3ff,\n WHITE: 0xffffffff,\n WHITESMOKE: 0xf5f5f5ff,\n YELLOW: 0xffff00ff,\n YELLOWGREEN: 0x9acd32ff\n };\n\n var backgroundClip = {\n name: 'background-clip',\n initialValue: 'border-box',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return tokens.map(function (token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return 1 /* PADDING_BOX */;\n case 'content-box':\n return 2 /* CONTENT_BOX */;\n }\n }\n return 0 /* BORDER_BOX */;\n });\n }\n };\n\n var backgroundColor = {\n name: \"background-color\",\n initialValue: 'transparent',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'color'\n };\n\n var parseColorStop = function (context, args) {\n var color = color$1.parse(context, args[0]);\n var stop = args[1];\n return stop && isLengthPercentage(stop) ? { color: color, stop: stop } : { color: color, stop: null };\n };\n var processColorStops = function (stops, lineLength) {\n var first = stops[0];\n var last = stops[stops.length - 1];\n if (first.stop === null) {\n first.stop = ZERO_LENGTH;\n }\n if (last.stop === null) {\n last.stop = HUNDRED_PERCENT;\n }\n var processStops = [];\n var previous = 0;\n for (var i = 0; i < stops.length; i++) {\n var stop_1 = stops[i].stop;\n if (stop_1 !== null) {\n var absoluteValue = getAbsoluteValue(stop_1, lineLength);\n if (absoluteValue > previous) {\n processStops.push(absoluteValue);\n }\n else {\n processStops.push(previous);\n }\n previous = absoluteValue;\n }\n else {\n processStops.push(null);\n }\n }\n var gapBegin = null;\n for (var i = 0; i < processStops.length; i++) {\n var stop_2 = processStops[i];\n if (stop_2 === null) {\n if (gapBegin === null) {\n gapBegin = i;\n }\n }\n else if (gapBegin !== null) {\n var gapLength = i - gapBegin;\n var beforeGap = processStops[gapBegin - 1];\n var gapValue = (stop_2 - beforeGap) / (gapLength + 1);\n for (var g = 1; g <= gapLength; g++) {\n processStops[gapBegin + g - 1] = gapValue * g;\n }\n gapBegin = null;\n }\n }\n return stops.map(function (_a, i) {\n var color = _a.color;\n return { color: color, stop: Math.max(Math.min(1, processStops[i] / lineLength), 0) };\n });\n };\n var getAngleFromCorner = function (corner, width, height) {\n var centerX = width / 2;\n var centerY = height / 2;\n var x = getAbsoluteValue(corner[0], width) - centerX;\n var y = centerY - getAbsoluteValue(corner[1], height);\n return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n };\n var calculateGradientDirection = function (angle, width, height) {\n var radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n var halfLineLength = lineLength / 2;\n var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n };\n var distance = function (a, b) { return Math.sqrt(a * a + b * b); };\n var findCorner = function (width, height, x, y, closest) {\n var corners = [\n [0, 0],\n [0, height],\n [width, 0],\n [width, height]\n ];\n return corners.reduce(function (stat, corner) {\n var cx = corner[0], cy = corner[1];\n var d = distance(x - cx, y - cy);\n if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n return {\n optimumCorner: corner,\n optimumDistance: d\n };\n }\n return stat;\n }, {\n optimumDistance: closest ? Infinity : -Infinity,\n optimumCorner: null\n }).optimumCorner;\n };\n var calculateRadius = function (gradient, x, y, width, height) {\n var rx = 0;\n var ry = 0;\n switch (gradient.size) {\n case 0 /* CLOSEST_SIDE */:\n // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n if (gradient.shape === 0 /* CIRCLE */) {\n rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n }\n else if (gradient.shape === 1 /* ELLIPSE */) {\n rx = Math.min(Math.abs(x), Math.abs(x - width));\n ry = Math.min(Math.abs(y), Math.abs(y - height));\n }\n break;\n case 2 /* CLOSEST_CORNER */:\n // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n if (gradient.shape === 0 /* CIRCLE */) {\n rx = ry = Math.min(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));\n }\n else if (gradient.shape === 1 /* ELLIPSE */) {\n // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n var c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n var _a = findCorner(width, height, x, y, true), cx = _a[0], cy = _a[1];\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n case 1 /* FARTHEST_SIDE */:\n // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n if (gradient.shape === 0 /* CIRCLE */) {\n rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n }\n else if (gradient.shape === 1 /* ELLIPSE */) {\n rx = Math.max(Math.abs(x), Math.abs(x - width));\n ry = Math.max(Math.abs(y), Math.abs(y - height));\n }\n break;\n case 3 /* FARTHEST_CORNER */:\n // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n if (gradient.shape === 0 /* CIRCLE */) {\n rx = ry = Math.max(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));\n }\n else if (gradient.shape === 1 /* ELLIPSE */) {\n // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n var c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n var _b = findCorner(width, height, x, y, false), cx = _b[0], cy = _b[1];\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n }\n if (Array.isArray(gradient.size)) {\n rx = getAbsoluteValue(gradient.size[0], width);\n ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n }\n return [rx, ry];\n };\n\n var linearGradient = function (context, tokens) {\n var angle$1 = deg(180);\n var stops = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n if (i === 0) {\n var firstToken = arg[0];\n if (firstToken.type === 20 /* IDENT_TOKEN */ && firstToken.value === 'to') {\n angle$1 = parseNamedSide(arg);\n return;\n }\n else if (isAngle(firstToken)) {\n angle$1 = angle.parse(context, firstToken);\n return;\n }\n }\n var colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n return { angle: angle$1, stops: stops, type: 1 /* LINEAR_GRADIENT */ };\n };\n\n var prefixLinearGradient = function (context, tokens) {\n var angle$1 = deg(180);\n var stops = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n if (i === 0) {\n var firstToken = arg[0];\n if (firstToken.type === 20 /* IDENT_TOKEN */ &&\n ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1) {\n angle$1 = parseNamedSide(arg);\n return;\n }\n else if (isAngle(firstToken)) {\n angle$1 = (angle.parse(context, firstToken) + deg(270)) % deg(360);\n return;\n }\n }\n var colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n return {\n angle: angle$1,\n stops: stops,\n type: 1 /* LINEAR_GRADIENT */\n };\n };\n\n var webkitGradient = function (context, tokens) {\n var angle = deg(180);\n var stops = [];\n var type = 1 /* LINEAR_GRADIENT */;\n var shape = 0 /* CIRCLE */;\n var size = 3 /* FARTHEST_CORNER */;\n var position = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n var firstToken = arg[0];\n if (i === 0) {\n if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n type = 1 /* LINEAR_GRADIENT */;\n return;\n }\n else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n type = 2 /* RADIAL_GRADIENT */;\n return;\n }\n }\n if (firstToken.type === 18 /* FUNCTION */) {\n if (firstToken.name === 'from') {\n var color = color$1.parse(context, firstToken.values[0]);\n stops.push({ stop: ZERO_LENGTH, color: color });\n }\n else if (firstToken.name === 'to') {\n var color = color$1.parse(context, firstToken.values[0]);\n stops.push({ stop: HUNDRED_PERCENT, color: color });\n }\n else if (firstToken.name === 'color-stop') {\n var values = firstToken.values.filter(nonFunctionArgSeparator);\n if (values.length === 2) {\n var color = color$1.parse(context, values[1]);\n var stop_1 = values[0];\n if (isNumberToken(stop_1)) {\n stops.push({\n stop: { type: 16 /* PERCENTAGE_TOKEN */, number: stop_1.number * 100, flags: stop_1.flags },\n color: color\n });\n }\n }\n }\n }\n });\n return type === 1 /* LINEAR_GRADIENT */\n ? {\n angle: (angle + deg(180)) % deg(360),\n stops: stops,\n type: type\n }\n : { size: size, shape: shape, stops: stops, position: position, type: type };\n };\n\n var CLOSEST_SIDE = 'closest-side';\n var FARTHEST_SIDE = 'farthest-side';\n var CLOSEST_CORNER = 'closest-corner';\n var FARTHEST_CORNER = 'farthest-corner';\n var CIRCLE = 'circle';\n var ELLIPSE = 'ellipse';\n var COVER = 'cover';\n var CONTAIN = 'contain';\n var radialGradient = function (context, tokens) {\n var shape = 0 /* CIRCLE */;\n var size = 3 /* FARTHEST_CORNER */;\n var stops = [];\n var position = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n var isColorStop = true;\n if (i === 0) {\n var isAtPosition_1 = false;\n isColorStop = arg.reduce(function (acc, token) {\n if (isAtPosition_1) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return acc;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return acc;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return acc;\n }\n }\n else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n }\n }\n else if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = 0 /* CIRCLE */;\n return false;\n case ELLIPSE:\n shape = 1 /* ELLIPSE */;\n return false;\n case 'at':\n isAtPosition_1 = true;\n return false;\n case CLOSEST_SIDE:\n size = 0 /* CLOSEST_SIDE */;\n return false;\n case COVER:\n case FARTHEST_SIDE:\n size = 1 /* FARTHEST_SIDE */;\n return false;\n case CONTAIN:\n case CLOSEST_CORNER:\n size = 2 /* CLOSEST_CORNER */;\n return false;\n case FARTHEST_CORNER:\n size = 3 /* FARTHEST_CORNER */;\n return false;\n }\n }\n else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n if (isColorStop) {\n var colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n return { size: size, shape: shape, stops: stops, position: position, type: 2 /* RADIAL_GRADIENT */ };\n };\n\n var prefixRadialGradient = function (context, tokens) {\n var shape = 0 /* CIRCLE */;\n var size = 3 /* FARTHEST_CORNER */;\n var stops = [];\n var position = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n var isColorStop = true;\n if (i === 0) {\n isColorStop = arg.reduce(function (acc, token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return false;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return false;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return false;\n }\n }\n else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n else if (i === 1) {\n isColorStop = arg.reduce(function (acc, token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = 0 /* CIRCLE */;\n return false;\n case ELLIPSE:\n shape = 1 /* ELLIPSE */;\n return false;\n case CONTAIN:\n case CLOSEST_SIDE:\n size = 0 /* CLOSEST_SIDE */;\n return false;\n case FARTHEST_SIDE:\n size = 1 /* FARTHEST_SIDE */;\n return false;\n case CLOSEST_CORNER:\n size = 2 /* CLOSEST_CORNER */;\n return false;\n case COVER:\n case FARTHEST_CORNER:\n size = 3 /* FARTHEST_CORNER */;\n return false;\n }\n }\n else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n if (isColorStop) {\n var colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n return { size: size, shape: shape, stops: stops, position: position, type: 2 /* RADIAL_GRADIENT */ };\n };\n\n var isLinearGradient = function (background) {\n return background.type === 1 /* LINEAR_GRADIENT */;\n };\n var isRadialGradient = function (background) {\n return background.type === 2 /* RADIAL_GRADIENT */;\n };\n var image = {\n name: 'image',\n parse: function (context, value) {\n if (value.type === 22 /* URL_TOKEN */) {\n var image_1 = { url: value.value, type: 0 /* URL */ };\n context.cache.addImage(value.value);\n return image_1;\n }\n if (value.type === 18 /* FUNCTION */) {\n var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n if (typeof imageFunction === 'undefined') {\n throw new Error(\"Attempting to parse an unsupported image function \\\"\" + value.name + \"\\\"\");\n }\n return imageFunction(context, value.values);\n }\n throw new Error(\"Unsupported image type \" + value.type);\n }\n };\n function isSupportedImage(value) {\n return (!(value.type === 20 /* IDENT_TOKEN */ && value.value === 'none') &&\n (value.type !== 18 /* FUNCTION */ || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]));\n }\n var SUPPORTED_IMAGE_FUNCTIONS = {\n 'linear-gradient': linearGradient,\n '-moz-linear-gradient': prefixLinearGradient,\n '-ms-linear-gradient': prefixLinearGradient,\n '-o-linear-gradient': prefixLinearGradient,\n '-webkit-linear-gradient': prefixLinearGradient,\n 'radial-gradient': radialGradient,\n '-moz-radial-gradient': prefixRadialGradient,\n '-ms-radial-gradient': prefixRadialGradient,\n '-o-radial-gradient': prefixRadialGradient,\n '-webkit-radial-gradient': prefixRadialGradient,\n '-webkit-gradient': webkitGradient\n };\n\n var backgroundImage = {\n name: 'background-image',\n initialValue: 'none',\n type: 1 /* LIST */,\n prefix: false,\n parse: function (context, tokens) {\n if (tokens.length === 0) {\n return [];\n }\n var first = tokens[0];\n if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n return [];\n }\n return tokens\n .filter(function (value) { return nonFunctionArgSeparator(value) && isSupportedImage(value); })\n .map(function (value) { return image.parse(context, value); });\n }\n };\n\n var backgroundOrigin = {\n name: 'background-origin',\n initialValue: 'border-box',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return tokens.map(function (token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return 1 /* PADDING_BOX */;\n case 'content-box':\n return 2 /* CONTENT_BOX */;\n }\n }\n return 0 /* BORDER_BOX */;\n });\n }\n };\n\n var backgroundPosition = {\n name: 'background-position',\n initialValue: '0% 0%',\n type: 1 /* LIST */,\n prefix: false,\n parse: function (_context, tokens) {\n return parseFunctionArgs(tokens)\n .map(function (values) { return values.filter(isLengthPercentage); })\n .map(parseLengthPercentageTuple);\n }\n };\n\n var backgroundRepeat = {\n name: 'background-repeat',\n initialValue: 'repeat',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return parseFunctionArgs(tokens)\n .map(function (values) {\n return values\n .filter(isIdentToken)\n .map(function (token) { return token.value; })\n .join(' ');\n })\n .map(parseBackgroundRepeat);\n }\n };\n var parseBackgroundRepeat = function (value) {\n switch (value) {\n case 'no-repeat':\n return 1 /* NO_REPEAT */;\n case 'repeat-x':\n case 'repeat no-repeat':\n return 2 /* REPEAT_X */;\n case 'repeat-y':\n case 'no-repeat repeat':\n return 3 /* REPEAT_Y */;\n case 'repeat':\n default:\n return 0 /* REPEAT */;\n }\n };\n\n var BACKGROUND_SIZE;\n (function (BACKGROUND_SIZE) {\n BACKGROUND_SIZE[\"AUTO\"] = \"auto\";\n BACKGROUND_SIZE[\"CONTAIN\"] = \"contain\";\n BACKGROUND_SIZE[\"COVER\"] = \"cover\";\n })(BACKGROUND_SIZE || (BACKGROUND_SIZE = {}));\n var backgroundSize = {\n name: 'background-size',\n initialValue: '0',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return parseFunctionArgs(tokens).map(function (values) { return values.filter(isBackgroundSizeInfoToken); });\n }\n };\n var isBackgroundSizeInfoToken = function (value) {\n return isIdentToken(value) || isLengthPercentage(value);\n };\n\n var borderColorForSide = function (side) { return ({\n name: \"border-\" + side + \"-color\",\n initialValue: 'transparent',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'color'\n }); };\n var borderTopColor = borderColorForSide('top');\n var borderRightColor = borderColorForSide('right');\n var borderBottomColor = borderColorForSide('bottom');\n var borderLeftColor = borderColorForSide('left');\n\n var borderRadiusForSide = function (side) { return ({\n name: \"border-radius-\" + side,\n initialValue: '0 0',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return parseLengthPercentageTuple(tokens.filter(isLengthPercentage));\n }\n }); };\n var borderTopLeftRadius = borderRadiusForSide('top-left');\n var borderTopRightRadius = borderRadiusForSide('top-right');\n var borderBottomRightRadius = borderRadiusForSide('bottom-right');\n var borderBottomLeftRadius = borderRadiusForSide('bottom-left');\n\n var borderStyleForSide = function (side) { return ({\n name: \"border-\" + side + \"-style\",\n initialValue: 'solid',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, style) {\n switch (style) {\n case 'none':\n return 0 /* NONE */;\n case 'dashed':\n return 2 /* DASHED */;\n case 'dotted':\n return 3 /* DOTTED */;\n case 'double':\n return 4 /* DOUBLE */;\n }\n return 1 /* SOLID */;\n }\n }); };\n var borderTopStyle = borderStyleForSide('top');\n var borderRightStyle = borderStyleForSide('right');\n var borderBottomStyle = borderStyleForSide('bottom');\n var borderLeftStyle = borderStyleForSide('left');\n\n var borderWidthForSide = function (side) { return ({\n name: \"border-\" + side + \"-width\",\n initialValue: '0',\n type: 0 /* VALUE */,\n prefix: false,\n parse: function (_context, token) {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n }); };\n var borderTopWidth = borderWidthForSide('top');\n var borderRightWidth = borderWidthForSide('right');\n var borderBottomWidth = borderWidthForSide('bottom');\n var borderLeftWidth = borderWidthForSide('left');\n\n var color = {\n name: \"color\",\n initialValue: 'transparent',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'color'\n };\n\n var direction = {\n name: 'direction',\n initialValue: 'ltr',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, direction) {\n switch (direction) {\n case 'rtl':\n return 1 /* RTL */;\n case 'ltr':\n default:\n return 0 /* LTR */;\n }\n }\n };\n\n var display = {\n name: 'display',\n initialValue: 'inline-block',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return tokens.filter(isIdentToken).reduce(function (bit, token) {\n return bit | parseDisplayValue(token.value);\n }, 0 /* NONE */);\n }\n };\n var parseDisplayValue = function (display) {\n switch (display) {\n case 'block':\n case '-webkit-box':\n return 2 /* BLOCK */;\n case 'inline':\n return 4 /* INLINE */;\n case 'run-in':\n return 8 /* RUN_IN */;\n case 'flow':\n return 16 /* FLOW */;\n case 'flow-root':\n return 32 /* FLOW_ROOT */;\n case 'table':\n return 64 /* TABLE */;\n case 'flex':\n case '-webkit-flex':\n return 128 /* FLEX */;\n case 'grid':\n case '-ms-grid':\n return 256 /* GRID */;\n case 'ruby':\n return 512 /* RUBY */;\n case 'subgrid':\n return 1024 /* SUBGRID */;\n case 'list-item':\n return 2048 /* LIST_ITEM */;\n case 'table-row-group':\n return 4096 /* TABLE_ROW_GROUP */;\n case 'table-header-group':\n return 8192 /* TABLE_HEADER_GROUP */;\n case 'table-footer-group':\n return 16384 /* TABLE_FOOTER_GROUP */;\n case 'table-row':\n return 32768 /* TABLE_ROW */;\n case 'table-cell':\n return 65536 /* TABLE_CELL */;\n case 'table-column-group':\n return 131072 /* TABLE_COLUMN_GROUP */;\n case 'table-column':\n return 262144 /* TABLE_COLUMN */;\n case 'table-caption':\n return 524288 /* TABLE_CAPTION */;\n case 'ruby-base':\n return 1048576 /* RUBY_BASE */;\n case 'ruby-text':\n return 2097152 /* RUBY_TEXT */;\n case 'ruby-base-container':\n return 4194304 /* RUBY_BASE_CONTAINER */;\n case 'ruby-text-container':\n return 8388608 /* RUBY_TEXT_CONTAINER */;\n case 'contents':\n return 16777216 /* CONTENTS */;\n case 'inline-block':\n return 33554432 /* INLINE_BLOCK */;\n case 'inline-list-item':\n return 67108864 /* INLINE_LIST_ITEM */;\n case 'inline-table':\n return 134217728 /* INLINE_TABLE */;\n case 'inline-flex':\n return 268435456 /* INLINE_FLEX */;\n case 'inline-grid':\n return 536870912 /* INLINE_GRID */;\n }\n return 0 /* NONE */;\n };\n\n var float = {\n name: 'float',\n initialValue: 'none',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, float) {\n switch (float) {\n case 'left':\n return 1 /* LEFT */;\n case 'right':\n return 2 /* RIGHT */;\n case 'inline-start':\n return 3 /* INLINE_START */;\n case 'inline-end':\n return 4 /* INLINE_END */;\n }\n return 0 /* NONE */;\n }\n };\n\n var letterSpacing = {\n name: 'letter-spacing',\n initialValue: '0',\n prefix: false,\n type: 0 /* VALUE */,\n parse: function (_context, token) {\n if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'normal') {\n return 0;\n }\n if (token.type === 17 /* NUMBER_TOKEN */) {\n return token.number;\n }\n if (token.type === 15 /* DIMENSION_TOKEN */) {\n return token.number;\n }\n return 0;\n }\n };\n\n var LINE_BREAK;\n (function (LINE_BREAK) {\n LINE_BREAK[\"NORMAL\"] = \"normal\";\n LINE_BREAK[\"STRICT\"] = \"strict\";\n })(LINE_BREAK || (LINE_BREAK = {}));\n var lineBreak = {\n name: 'line-break',\n initialValue: 'normal',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, lineBreak) {\n switch (lineBreak) {\n case 'strict':\n return LINE_BREAK.STRICT;\n case 'normal':\n default:\n return LINE_BREAK.NORMAL;\n }\n }\n };\n\n var lineHeight = {\n name: 'line-height',\n initialValue: 'normal',\n prefix: false,\n type: 4 /* TOKEN_VALUE */\n };\n var computeLineHeight = function (token, fontSize) {\n if (isIdentToken(token) && token.value === 'normal') {\n return 1.2 * fontSize;\n }\n else if (token.type === 17 /* NUMBER_TOKEN */) {\n return fontSize * token.number;\n }\n else if (isLengthPercentage(token)) {\n return getAbsoluteValue(token, fontSize);\n }\n return fontSize;\n };\n\n var listStyleImage = {\n name: 'list-style-image',\n initialValue: 'none',\n type: 0 /* VALUE */,\n prefix: false,\n parse: function (context, token) {\n if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'none') {\n return null;\n }\n return image.parse(context, token);\n }\n };\n\n var listStylePosition = {\n name: 'list-style-position',\n initialValue: 'outside',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, position) {\n switch (position) {\n case 'inside':\n return 0 /* INSIDE */;\n case 'outside':\n default:\n return 1 /* OUTSIDE */;\n }\n }\n };\n\n var listStyleType = {\n name: 'list-style-type',\n initialValue: 'none',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, type) {\n switch (type) {\n case 'disc':\n return 0 /* DISC */;\n case 'circle':\n return 1 /* CIRCLE */;\n case 'square':\n return 2 /* SQUARE */;\n case 'decimal':\n return 3 /* DECIMAL */;\n case 'cjk-decimal':\n return 4 /* CJK_DECIMAL */;\n case 'decimal-leading-zero':\n return 5 /* DECIMAL_LEADING_ZERO */;\n case 'lower-roman':\n return 6 /* LOWER_ROMAN */;\n case 'upper-roman':\n return 7 /* UPPER_ROMAN */;\n case 'lower-greek':\n return 8 /* LOWER_GREEK */;\n case 'lower-alpha':\n return 9 /* LOWER_ALPHA */;\n case 'upper-alpha':\n return 10 /* UPPER_ALPHA */;\n case 'arabic-indic':\n return 11 /* ARABIC_INDIC */;\n case 'armenian':\n return 12 /* ARMENIAN */;\n case 'bengali':\n return 13 /* BENGALI */;\n case 'cambodian':\n return 14 /* CAMBODIAN */;\n case 'cjk-earthly-branch':\n return 15 /* CJK_EARTHLY_BRANCH */;\n case 'cjk-heavenly-stem':\n return 16 /* CJK_HEAVENLY_STEM */;\n case 'cjk-ideographic':\n return 17 /* CJK_IDEOGRAPHIC */;\n case 'devanagari':\n return 18 /* DEVANAGARI */;\n case 'ethiopic-numeric':\n return 19 /* ETHIOPIC_NUMERIC */;\n case 'georgian':\n return 20 /* GEORGIAN */;\n case 'gujarati':\n return 21 /* GUJARATI */;\n case 'gurmukhi':\n return 22 /* GURMUKHI */;\n case 'hebrew':\n return 22 /* HEBREW */;\n case 'hiragana':\n return 23 /* HIRAGANA */;\n case 'hiragana-iroha':\n return 24 /* HIRAGANA_IROHA */;\n case 'japanese-formal':\n return 25 /* JAPANESE_FORMAL */;\n case 'japanese-informal':\n return 26 /* JAPANESE_INFORMAL */;\n case 'kannada':\n return 27 /* KANNADA */;\n case 'katakana':\n return 28 /* KATAKANA */;\n case 'katakana-iroha':\n return 29 /* KATAKANA_IROHA */;\n case 'khmer':\n return 30 /* KHMER */;\n case 'korean-hangul-formal':\n return 31 /* KOREAN_HANGUL_FORMAL */;\n case 'korean-hanja-formal':\n return 32 /* KOREAN_HANJA_FORMAL */;\n case 'korean-hanja-informal':\n return 33 /* KOREAN_HANJA_INFORMAL */;\n case 'lao':\n return 34 /* LAO */;\n case 'lower-armenian':\n return 35 /* LOWER_ARMENIAN */;\n case 'malayalam':\n return 36 /* MALAYALAM */;\n case 'mongolian':\n return 37 /* MONGOLIAN */;\n case 'myanmar':\n return 38 /* MYANMAR */;\n case 'oriya':\n return 39 /* ORIYA */;\n case 'persian':\n return 40 /* PERSIAN */;\n case 'simp-chinese-formal':\n return 41 /* SIMP_CHINESE_FORMAL */;\n case 'simp-chinese-informal':\n return 42 /* SIMP_CHINESE_INFORMAL */;\n case 'tamil':\n return 43 /* TAMIL */;\n case 'telugu':\n return 44 /* TELUGU */;\n case 'thai':\n return 45 /* THAI */;\n case 'tibetan':\n return 46 /* TIBETAN */;\n case 'trad-chinese-formal':\n return 47 /* TRAD_CHINESE_FORMAL */;\n case 'trad-chinese-informal':\n return 48 /* TRAD_CHINESE_INFORMAL */;\n case 'upper-armenian':\n return 49 /* UPPER_ARMENIAN */;\n case 'disclosure-open':\n return 50 /* DISCLOSURE_OPEN */;\n case 'disclosure-closed':\n return 51 /* DISCLOSURE_CLOSED */;\n case 'none':\n default:\n return -1 /* NONE */;\n }\n }\n };\n\n var marginForSide = function (side) { return ({\n name: \"margin-\" + side,\n initialValue: '0',\n prefix: false,\n type: 4 /* TOKEN_VALUE */\n }); };\n var marginTop = marginForSide('top');\n var marginRight = marginForSide('right');\n var marginBottom = marginForSide('bottom');\n var marginLeft = marginForSide('left');\n\n var overflow = {\n name: 'overflow',\n initialValue: 'visible',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return tokens.filter(isIdentToken).map(function (overflow) {\n switch (overflow.value) {\n case 'hidden':\n return 1 /* HIDDEN */;\n case 'scroll':\n return 2 /* SCROLL */;\n case 'clip':\n return 3 /* CLIP */;\n case 'auto':\n return 4 /* AUTO */;\n case 'visible':\n default:\n return 0 /* VISIBLE */;\n }\n });\n }\n };\n\n var overflowWrap = {\n name: 'overflow-wrap',\n initialValue: 'normal',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, overflow) {\n switch (overflow) {\n case 'break-word':\n return \"break-word\" /* BREAK_WORD */;\n case 'normal':\n default:\n return \"normal\" /* NORMAL */;\n }\n }\n };\n\n var paddingForSide = function (side) { return ({\n name: \"padding-\" + side,\n initialValue: '0',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'length-percentage'\n }); };\n var paddingTop = paddingForSide('top');\n var paddingRight = paddingForSide('right');\n var paddingBottom = paddingForSide('bottom');\n var paddingLeft = paddingForSide('left');\n\n var textAlign = {\n name: 'text-align',\n initialValue: 'left',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, textAlign) {\n switch (textAlign) {\n case 'right':\n return 2 /* RIGHT */;\n case 'center':\n case 'justify':\n return 1 /* CENTER */;\n case 'left':\n default:\n return 0 /* LEFT */;\n }\n }\n };\n\n var position = {\n name: 'position',\n initialValue: 'static',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, position) {\n switch (position) {\n case 'relative':\n return 1 /* RELATIVE */;\n case 'absolute':\n return 2 /* ABSOLUTE */;\n case 'fixed':\n return 3 /* FIXED */;\n case 'sticky':\n return 4 /* STICKY */;\n }\n return 0 /* STATIC */;\n }\n };\n\n var textShadow = {\n name: 'text-shadow',\n initialValue: 'none',\n type: 1 /* LIST */,\n prefix: false,\n parse: function (context, tokens) {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n return parseFunctionArgs(tokens).map(function (values) {\n var shadow = {\n color: COLORS.TRANSPARENT,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH\n };\n var c = 0;\n for (var i = 0; i < values.length; i++) {\n var token = values[i];\n if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n }\n else if (c === 1) {\n shadow.offsetY = token;\n }\n else {\n shadow.blur = token;\n }\n c++;\n }\n else {\n shadow.color = color$1.parse(context, token);\n }\n }\n return shadow;\n });\n }\n };\n\n var textTransform = {\n name: 'text-transform',\n initialValue: 'none',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, textTransform) {\n switch (textTransform) {\n case 'uppercase':\n return 2 /* UPPERCASE */;\n case 'lowercase':\n return 1 /* LOWERCASE */;\n case 'capitalize':\n return 3 /* CAPITALIZE */;\n }\n return 0 /* NONE */;\n }\n };\n\n var transform$1 = {\n name: 'transform',\n initialValue: 'none',\n prefix: true,\n type: 0 /* VALUE */,\n parse: function (_context, token) {\n if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'none') {\n return null;\n }\n if (token.type === 18 /* FUNCTION */) {\n var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n if (typeof transformFunction === 'undefined') {\n throw new Error(\"Attempting to parse an unsupported transform function \\\"\" + token.name + \"\\\"\");\n }\n return transformFunction(token.values);\n }\n return null;\n }\n };\n var matrix = function (args) {\n var values = args.filter(function (arg) { return arg.type === 17 /* NUMBER_TOKEN */; }).map(function (arg) { return arg.number; });\n return values.length === 6 ? values : null;\n };\n // doesn't support 3D transforms at the moment\n var matrix3d = function (args) {\n var values = args.filter(function (arg) { return arg.type === 17 /* NUMBER_TOKEN */; }).map(function (arg) { return arg.number; });\n var a1 = values[0], b1 = values[1]; values[2]; values[3]; var a2 = values[4], b2 = values[5]; values[6]; values[7]; values[8]; values[9]; values[10]; values[11]; var a4 = values[12], b4 = values[13]; values[14]; values[15];\n return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n };\n var SUPPORTED_TRANSFORM_FUNCTIONS = {\n matrix: matrix,\n matrix3d: matrix3d\n };\n\n var DEFAULT_VALUE = {\n type: 16 /* PERCENTAGE_TOKEN */,\n number: 50,\n flags: FLAG_INTEGER\n };\n var DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE];\n var transformOrigin = {\n name: 'transform-origin',\n initialValue: '50% 50%',\n prefix: true,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n var origins = tokens.filter(isLengthPercentage);\n if (origins.length !== 2) {\n return DEFAULT;\n }\n return [origins[0], origins[1]];\n }\n };\n\n var visibility = {\n name: 'visible',\n initialValue: 'none',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, visibility) {\n switch (visibility) {\n case 'hidden':\n return 1 /* HIDDEN */;\n case 'collapse':\n return 2 /* COLLAPSE */;\n case 'visible':\n default:\n return 0 /* VISIBLE */;\n }\n }\n };\n\n var WORD_BREAK;\n (function (WORD_BREAK) {\n WORD_BREAK[\"NORMAL\"] = \"normal\";\n WORD_BREAK[\"BREAK_ALL\"] = \"break-all\";\n WORD_BREAK[\"KEEP_ALL\"] = \"keep-all\";\n })(WORD_BREAK || (WORD_BREAK = {}));\n var wordBreak = {\n name: 'word-break',\n initialValue: 'normal',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, wordBreak) {\n switch (wordBreak) {\n case 'break-all':\n return WORD_BREAK.BREAK_ALL;\n case 'keep-all':\n return WORD_BREAK.KEEP_ALL;\n case 'normal':\n default:\n return WORD_BREAK.NORMAL;\n }\n }\n };\n\n var zIndex = {\n name: 'z-index',\n initialValue: 'auto',\n prefix: false,\n type: 0 /* VALUE */,\n parse: function (_context, token) {\n if (token.type === 20 /* IDENT_TOKEN */) {\n return { auto: true, order: 0 };\n }\n if (isNumberToken(token)) {\n return { auto: false, order: token.number };\n }\n throw new Error(\"Invalid z-index number parsed\");\n }\n };\n\n var time = {\n name: 'time',\n parse: function (_context, value) {\n if (value.type === 15 /* DIMENSION_TOKEN */) {\n switch (value.unit.toLowerCase()) {\n case 's':\n return 1000 * value.number;\n case 'ms':\n return value.number;\n }\n }\n throw new Error(\"Unsupported time type\");\n }\n };\n\n var opacity = {\n name: 'opacity',\n initialValue: '1',\n type: 0 /* VALUE */,\n prefix: false,\n parse: function (_context, token) {\n if (isNumberToken(token)) {\n return token.number;\n }\n return 1;\n }\n };\n\n var textDecorationColor = {\n name: \"text-decoration-color\",\n initialValue: 'transparent',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'color'\n };\n\n var textDecorationLine = {\n name: 'text-decoration-line',\n initialValue: 'none',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return tokens\n .filter(isIdentToken)\n .map(function (token) {\n switch (token.value) {\n case 'underline':\n return 1 /* UNDERLINE */;\n case 'overline':\n return 2 /* OVERLINE */;\n case 'line-through':\n return 3 /* LINE_THROUGH */;\n case 'none':\n return 4 /* BLINK */;\n }\n return 0 /* NONE */;\n })\n .filter(function (line) { return line !== 0 /* NONE */; });\n }\n };\n\n var fontFamily = {\n name: \"font-family\",\n initialValue: '',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n var accumulator = [];\n var results = [];\n tokens.forEach(function (token) {\n switch (token.type) {\n case 20 /* IDENT_TOKEN */:\n case 0 /* STRING_TOKEN */:\n accumulator.push(token.value);\n break;\n case 17 /* NUMBER_TOKEN */:\n accumulator.push(token.number.toString());\n break;\n case 4 /* COMMA_TOKEN */:\n results.push(accumulator.join(' '));\n accumulator.length = 0;\n break;\n }\n });\n if (accumulator.length) {\n results.push(accumulator.join(' '));\n }\n return results.map(function (result) { return (result.indexOf(' ') === -1 ? result : \"'\" + result + \"'\"); });\n }\n };\n\n var fontSize = {\n name: \"font-size\",\n initialValue: '0',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'length'\n };\n\n var fontWeight = {\n name: 'font-weight',\n initialValue: 'normal',\n type: 0 /* VALUE */,\n prefix: false,\n parse: function (_context, token) {\n if (isNumberToken(token)) {\n return token.number;\n }\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'bold':\n return 700;\n case 'normal':\n default:\n return 400;\n }\n }\n return 400;\n }\n };\n\n var fontVariant = {\n name: 'font-variant',\n initialValue: 'none',\n type: 1 /* LIST */,\n prefix: false,\n parse: function (_context, tokens) {\n return tokens.filter(isIdentToken).map(function (token) { return token.value; });\n }\n };\n\n var fontStyle = {\n name: 'font-style',\n initialValue: 'normal',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, overflow) {\n switch (overflow) {\n case 'oblique':\n return \"oblique\" /* OBLIQUE */;\n case 'italic':\n return \"italic\" /* ITALIC */;\n case 'normal':\n default:\n return \"normal\" /* NORMAL */;\n }\n }\n };\n\n var contains = function (bit, value) { return (bit & value) !== 0; };\n\n var content = {\n name: 'content',\n initialValue: 'none',\n type: 1 /* LIST */,\n prefix: false,\n parse: function (_context, tokens) {\n if (tokens.length === 0) {\n return [];\n }\n var first = tokens[0];\n if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n return [];\n }\n return tokens;\n }\n };\n\n var counterIncrement = {\n name: 'counter-increment',\n initialValue: 'none',\n prefix: true,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n if (tokens.length === 0) {\n return null;\n }\n var first = tokens[0];\n if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n return null;\n }\n var increments = [];\n var filtered = tokens.filter(nonWhiteSpace);\n for (var i = 0; i < filtered.length; i++) {\n var counter = filtered[i];\n var next = filtered[i + 1];\n if (counter.type === 20 /* IDENT_TOKEN */) {\n var increment = next && isNumberToken(next) ? next.number : 1;\n increments.push({ counter: counter.value, increment: increment });\n }\n }\n return increments;\n }\n };\n\n var counterReset = {\n name: 'counter-reset',\n initialValue: 'none',\n prefix: true,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n if (tokens.length === 0) {\n return [];\n }\n var resets = [];\n var filtered = tokens.filter(nonWhiteSpace);\n for (var i = 0; i < filtered.length; i++) {\n var counter = filtered[i];\n var next = filtered[i + 1];\n if (isIdentToken(counter) && counter.value !== 'none') {\n var reset = next && isNumberToken(next) ? next.number : 0;\n resets.push({ counter: counter.value, reset: reset });\n }\n }\n return resets;\n }\n };\n\n var duration = {\n name: 'duration',\n initialValue: '0s',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (context, tokens) {\n return tokens.filter(isDimensionToken).map(function (token) { return time.parse(context, token); });\n }\n };\n\n var quotes = {\n name: 'quotes',\n initialValue: 'none',\n prefix: true,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n if (tokens.length === 0) {\n return null;\n }\n var first = tokens[0];\n if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n return null;\n }\n var quotes = [];\n var filtered = tokens.filter(isStringToken);\n if (filtered.length % 2 !== 0) {\n return null;\n }\n for (var i = 0; i < filtered.length; i += 2) {\n var open_1 = filtered[i].value;\n var close_1 = filtered[i + 1].value;\n quotes.push({ open: open_1, close: close_1 });\n }\n return quotes;\n }\n };\n var getQuote = function (quotes, depth, open) {\n if (!quotes) {\n return '';\n }\n var quote = quotes[Math.min(depth, quotes.length - 1)];\n if (!quote) {\n return '';\n }\n return open ? quote.open : quote.close;\n };\n\n var boxShadow = {\n name: 'box-shadow',\n initialValue: 'none',\n type: 1 /* LIST */,\n prefix: false,\n parse: function (context, tokens) {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n return parseFunctionArgs(tokens).map(function (values) {\n var shadow = {\n color: 0x000000ff,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH,\n spread: ZERO_LENGTH,\n inset: false\n };\n var c = 0;\n for (var i = 0; i < values.length; i++) {\n var token = values[i];\n if (isIdentWithValue(token, 'inset')) {\n shadow.inset = true;\n }\n else if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n }\n else if (c === 1) {\n shadow.offsetY = token;\n }\n else if (c === 2) {\n shadow.blur = token;\n }\n else {\n shadow.spread = token;\n }\n c++;\n }\n else {\n shadow.color = color$1.parse(context, token);\n }\n }\n return shadow;\n });\n }\n };\n\n var paintOrder = {\n name: 'paint-order',\n initialValue: 'normal',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n var DEFAULT_VALUE = [0 /* FILL */, 1 /* STROKE */, 2 /* MARKERS */];\n var layers = [];\n tokens.filter(isIdentToken).forEach(function (token) {\n switch (token.value) {\n case 'stroke':\n layers.push(1 /* STROKE */);\n break;\n case 'fill':\n layers.push(0 /* FILL */);\n break;\n case 'markers':\n layers.push(2 /* MARKERS */);\n break;\n }\n });\n DEFAULT_VALUE.forEach(function (value) {\n if (layers.indexOf(value) === -1) {\n layers.push(value);\n }\n });\n return layers;\n }\n };\n\n var webkitTextStrokeColor = {\n name: \"-webkit-text-stroke-color\",\n initialValue: 'currentcolor',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'color'\n };\n\n var webkitTextStrokeWidth = {\n name: \"-webkit-text-stroke-width\",\n initialValue: '0',\n type: 0 /* VALUE */,\n prefix: false,\n parse: function (_context, token) {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n };\n\n var CSSParsedDeclaration = /** @class */ (function () {\n function CSSParsedDeclaration(context, declaration) {\n var _a, _b;\n this.animationDuration = parse(context, duration, declaration.animationDuration);\n this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\n this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\n this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\n this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\n this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\n this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\n this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\n this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\n this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\n this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\n this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\n this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\n this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\n this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\n this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\n this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\n this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\n this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\n this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\n this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\n this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\n this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\n this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\n this.color = parse(context, color, declaration.color);\n this.direction = parse(context, direction, declaration.direction);\n this.display = parse(context, display, declaration.display);\n this.float = parse(context, float, declaration.cssFloat);\n this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\n this.fontSize = parse(context, fontSize, declaration.fontSize);\n this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\n this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\n this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\n this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\n this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\n this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\n this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\n this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\n this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\n this.marginTop = parse(context, marginTop, declaration.marginTop);\n this.marginRight = parse(context, marginRight, declaration.marginRight);\n this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\n this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\n this.opacity = parse(context, opacity, declaration.opacity);\n var overflowTuple = parse(context, overflow, declaration.overflow);\n this.overflowX = overflowTuple[0];\n this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\n this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\n this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\n this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\n this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\n this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\n this.position = parse(context, position, declaration.position);\n this.textAlign = parse(context, textAlign, declaration.textAlign);\n this.textDecorationColor = parse(context, textDecorationColor, (_a = declaration.textDecorationColor) !== null && _a !== void 0 ? _a : declaration.color);\n this.textDecorationLine = parse(context, textDecorationLine, (_b = declaration.textDecorationLine) !== null && _b !== void 0 ? _b : declaration.textDecoration);\n this.textShadow = parse(context, textShadow, declaration.textShadow);\n this.textTransform = parse(context, textTransform, declaration.textTransform);\n this.transform = parse(context, transform$1, declaration.transform);\n this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\n this.visibility = parse(context, visibility, declaration.visibility);\n this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\n this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\n this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\n this.zIndex = parse(context, zIndex, declaration.zIndex);\n }\n CSSParsedDeclaration.prototype.isVisible = function () {\n return this.display > 0 && this.opacity > 0 && this.visibility === 0 /* VISIBLE */;\n };\n CSSParsedDeclaration.prototype.isTransparent = function () {\n return isTransparent(this.backgroundColor);\n };\n CSSParsedDeclaration.prototype.isTransformed = function () {\n return this.transform !== null;\n };\n CSSParsedDeclaration.prototype.isPositioned = function () {\n return this.position !== 0 /* STATIC */;\n };\n CSSParsedDeclaration.prototype.isPositionedWithZIndex = function () {\n return this.isPositioned() && !this.zIndex.auto;\n };\n CSSParsedDeclaration.prototype.isFloating = function () {\n return this.float !== 0 /* NONE */;\n };\n CSSParsedDeclaration.prototype.isInlineLevel = function () {\n return (contains(this.display, 4 /* INLINE */) ||\n contains(this.display, 33554432 /* INLINE_BLOCK */) ||\n contains(this.display, 268435456 /* INLINE_FLEX */) ||\n contains(this.display, 536870912 /* INLINE_GRID */) ||\n contains(this.display, 67108864 /* INLINE_LIST_ITEM */) ||\n contains(this.display, 134217728 /* INLINE_TABLE */));\n };\n return CSSParsedDeclaration;\n }());\n var CSSParsedPseudoDeclaration = /** @class */ (function () {\n function CSSParsedPseudoDeclaration(context, declaration) {\n this.content = parse(context, content, declaration.content);\n this.quotes = parse(context, quotes, declaration.quotes);\n }\n return CSSParsedPseudoDeclaration;\n }());\n var CSSParsedCounterDeclaration = /** @class */ (function () {\n function CSSParsedCounterDeclaration(context, declaration) {\n this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\n this.counterReset = parse(context, counterReset, declaration.counterReset);\n }\n return CSSParsedCounterDeclaration;\n }());\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parse = function (context, descriptor, style) {\n var tokenizer = new Tokenizer();\n var value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n tokenizer.write(value);\n var parser = new Parser(tokenizer.read());\n switch (descriptor.type) {\n case 2 /* IDENT_VALUE */:\n var token = parser.parseComponentValue();\n return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\n case 0 /* VALUE */:\n return descriptor.parse(context, parser.parseComponentValue());\n case 1 /* LIST */:\n return descriptor.parse(context, parser.parseComponentValues());\n case 4 /* TOKEN_VALUE */:\n return parser.parseComponentValue();\n case 3 /* TYPE_VALUE */:\n switch (descriptor.format) {\n case 'angle':\n return angle.parse(context, parser.parseComponentValue());\n case 'color':\n return color$1.parse(context, parser.parseComponentValue());\n case 'image':\n return image.parse(context, parser.parseComponentValue());\n case 'length':\n var length_1 = parser.parseComponentValue();\n return isLength(length_1) ? length_1 : ZERO_LENGTH;\n case 'length-percentage':\n var value_1 = parser.parseComponentValue();\n return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH;\n case 'time':\n return time.parse(context, parser.parseComponentValue());\n }\n break;\n }\n };\n\n var elementDebuggerAttribute = 'data-html2canvas-debug';\n var getElementDebugType = function (element) {\n var attribute = element.getAttribute(elementDebuggerAttribute);\n switch (attribute) {\n case 'all':\n return 1 /* ALL */;\n case 'clone':\n return 2 /* CLONE */;\n case 'parse':\n return 3 /* PARSE */;\n case 'render':\n return 4 /* RENDER */;\n default:\n return 0 /* NONE */;\n }\n };\n var isDebugging = function (element, type) {\n var elementType = getElementDebugType(element);\n return elementType === 1 /* ALL */ || type === elementType;\n };\n\n var ElementContainer = /** @class */ (function () {\n function ElementContainer(context, element) {\n this.context = context;\n this.textNodes = [];\n this.elements = [];\n this.flags = 0;\n if (isDebugging(element, 3 /* PARSE */)) {\n debugger;\n }\n this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\n if (isHTMLElementNode(element)) {\n if (this.styles.animationDuration.some(function (duration) { return duration > 0; })) {\n element.style.animationDuration = '0s';\n }\n if (this.styles.transform !== null) {\n // getBoundingClientRect takes transforms into account\n element.style.transform = 'none';\n }\n }\n this.bounds = parseBounds(this.context, element);\n if (isDebugging(element, 4 /* RENDER */)) {\n this.flags |= 16 /* DEBUG_RENDER */;\n }\n }\n return ElementContainer;\n }());\n\n /*\n * text-segmentation 1.0.3 <https://github.com/niklasvh/text-segmentation>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n var base64 = 'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';\n\n /*\n * utrie 1.0.2 <https://github.com/niklasvh/utrie>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n var chars$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n // Use a lookup table to find the index.\n var lookup$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n for (var i$1 = 0; i$1 < chars$1.length; i$1++) {\n lookup$1[chars$1.charCodeAt(i$1)] = i$1;\n }\n var decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var buffer = typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup$1[base64.charCodeAt(i)];\n encoded2 = lookup$1[base64.charCodeAt(i + 1)];\n encoded3 = lookup$1[base64.charCodeAt(i + 2)];\n encoded4 = lookup$1[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return buffer;\n };\n var polyUint16Array = function (buffer) {\n var length = buffer.length;\n var bytes = [];\n for (var i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n };\n var polyUint32Array = function (buffer) {\n var length = buffer.length;\n var bytes = [];\n for (var i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n };\n\n /** Shift size for getting the index-2 table offset. */\n var UTRIE2_SHIFT_2 = 5;\n /** Shift size for getting the index-1 table offset. */\n var UTRIE2_SHIFT_1 = 6 + 5;\n /**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\n var UTRIE2_INDEX_SHIFT = 2;\n /**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\n var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n /**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\n var UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n /** Number of entries in a data block. 32=0x20 */\n var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n /** Mask for getting the lower bits for the in-data-block offset. */\n var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n var UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n /** Count the lengths of both BMP pieces. 2080=0x820 */\n var UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n /**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\n var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\n var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n /**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\n var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n /**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\n var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n /** Number of entries in an index-2 block. 64=0x40 */\n var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n /** Mask for getting the lower bits for the in-index-2-block offset. */\n var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n var slice16 = function (view, start, end) {\n if (view.slice) {\n return view.slice(start, end);\n }\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n };\n var slice32 = function (view, start, end) {\n if (view.slice) {\n return view.slice(start, end);\n }\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n };\n var createTrieFromBase64 = function (base64, _byteLength) {\n var buffer = decode(base64);\n var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n var headerLength = 24;\n var index = slice16(view16, headerLength / 2, view32[4] / 2);\n var data = view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n };\n var Trie = /** @class */ (function () {\n function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n Trie.prototype.get = function (codePoint) {\n var ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n };\n return Trie;\n }());\n\n /*\n * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n // Use a lookup table to find the index.\n var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n var Prepend = 1;\n var CR = 2;\n var LF = 3;\n var Control = 4;\n var Extend = 5;\n var SpacingMark = 7;\n var L = 8;\n var V = 9;\n var T = 10;\n var LV = 11;\n var LVT = 12;\n var ZWJ = 13;\n var Extended_Pictographic = 14;\n var RI = 15;\n var toCodePoints = function (str) {\n var codePoints = [];\n var i = 0;\n var length = str.length;\n while (i < length) {\n var value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n var extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n }\n else {\n codePoints.push(value);\n i--;\n }\n }\n else {\n codePoints.push(value);\n }\n }\n return codePoints;\n };\n var fromCodePoint = function () {\n var codePoints = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n if (String.fromCodePoint) {\n return String.fromCodePoint.apply(String, codePoints);\n }\n var length = codePoints.length;\n if (!length) {\n return '';\n }\n var codeUnits = [];\n var index = -1;\n var result = '';\n while (++index < length) {\n var codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n }\n else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode.apply(String, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n };\n var UnicodeTrie = createTrieFromBase64(base64);\n var BREAK_NOT_ALLOWED = '×';\n var BREAK_ALLOWED = '÷';\n var codePointToClass = function (codePoint) { return UnicodeTrie.get(codePoint); };\n var _graphemeBreakAtIndex = function (_codePoints, classTypes, index) {\n var prevIndex = index - 2;\n var prev = classTypes[prevIndex];\n var current = classTypes[index - 1];\n var next = classTypes[index];\n // GB3 Do not break between a CR and LF\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n // GB4 Otherwise, break before and after controls.\n if (current === CR || current === LF || current === Control) {\n return BREAK_ALLOWED;\n }\n // GB5\n if (next === CR || next === LF || next === Control) {\n return BREAK_ALLOWED;\n }\n // Do not break Hangul syllable sequences.\n // GB6\n if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n // GB7\n if ((current === LV || current === V) && (next === V || next === T)) {\n return BREAK_NOT_ALLOWED;\n }\n // GB8\n if ((current === LVT || current === T) && next === T) {\n return BREAK_NOT_ALLOWED;\n }\n // GB9 Do not break before extending characters or ZWJ.\n if (next === ZWJ || next === Extend) {\n return BREAK_NOT_ALLOWED;\n }\n // Do not break before SpacingMarks, or after Prepend characters.\n // GB9a\n if (next === SpacingMark) {\n return BREAK_NOT_ALLOWED;\n }\n // GB9a\n if (current === Prepend) {\n return BREAK_NOT_ALLOWED;\n }\n // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\n if (current === ZWJ && next === Extended_Pictographic) {\n while (prev === Extend) {\n prev = classTypes[--prevIndex];\n }\n if (prev === Extended_Pictographic) {\n return BREAK_NOT_ALLOWED;\n }\n }\n // GB12 Do not break within emoji flag sequences.\n // That is, do not break between regional indicator (RI) symbols\n // if there is an odd number of RI characters before the break point.\n if (current === RI && next === RI) {\n var countRI = 0;\n while (prev === RI) {\n countRI++;\n prev = classTypes[--prevIndex];\n }\n if (countRI % 2 === 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n return BREAK_ALLOWED;\n };\n var GraphemeBreaker = function (str) {\n var codePoints = toCodePoints(str);\n var length = codePoints.length;\n var index = 0;\n var lastEnd = 0;\n var classTypes = codePoints.map(codePointToClass);\n return {\n next: function () {\n if (index >= length) {\n return { done: true, value: null };\n }\n var graphemeBreak = BREAK_NOT_ALLOWED;\n while (index < length &&\n (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED) { }\n if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\n var value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\n lastEnd = index;\n return { value: value, done: false };\n }\n return { done: true, value: null };\n },\n };\n };\n var splitGraphemes = function (str) {\n var breaker = GraphemeBreaker(str);\n var graphemes = [];\n var bk;\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n graphemes.push(bk.value.slice());\n }\n }\n return graphemes;\n };\n\n var testRangeBounds = function (document) {\n var TEST_HEIGHT = 123;\n if (document.createRange) {\n var range = document.createRange();\n if (range.getBoundingClientRect) {\n var testElement = document.createElement('boundtest');\n testElement.style.height = TEST_HEIGHT + \"px\";\n testElement.style.display = 'block';\n document.body.appendChild(testElement);\n range.selectNode(testElement);\n var rangeBounds = range.getBoundingClientRect();\n var rangeHeight = Math.round(rangeBounds.height);\n document.body.removeChild(testElement);\n if (rangeHeight === TEST_HEIGHT) {\n return true;\n }\n }\n }\n return false;\n };\n var testIOSLineBreak = function (document) {\n var testElement = document.createElement('boundtest');\n testElement.style.width = '50px';\n testElement.style.display = 'block';\n testElement.style.fontSize = '12px';\n testElement.style.letterSpacing = '0px';\n testElement.style.wordSpacing = '0px';\n document.body.appendChild(testElement);\n var range = document.createRange();\n testElement.innerHTML = typeof ''.repeat === 'function' ? '&#128104;'.repeat(10) : '';\n var node = testElement.firstChild;\n var textList = toCodePoints$1(node.data).map(function (i) { return fromCodePoint$1(i); });\n var offset = 0;\n var prev = {};\n // ios 13 does not handle range getBoundingClientRect line changes correctly #2177\n var supports = textList.every(function (text, i) {\n range.setStart(node, offset);\n range.setEnd(node, offset + text.length);\n var rect = range.getBoundingClientRect();\n offset += text.length;\n var boundAhead = rect.x > prev.x || rect.y > prev.y;\n prev = rect;\n if (i === 0) {\n return true;\n }\n return boundAhead;\n });\n document.body.removeChild(testElement);\n return supports;\n };\n var testCORS = function () { return typeof new Image().crossOrigin !== 'undefined'; };\n var testResponseType = function () { return typeof new XMLHttpRequest().responseType === 'string'; };\n var testSVG = function (document) {\n var img = new Image();\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (!ctx) {\n return false;\n }\n img.src = \"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>\";\n try {\n ctx.drawImage(img, 0, 0);\n canvas.toDataURL();\n }\n catch (e) {\n return false;\n }\n return true;\n };\n var isGreenPixel = function (data) {\n return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\n };\n var testForeignObject = function (document) {\n var canvas = document.createElement('canvas');\n var size = 100;\n canvas.width = size;\n canvas.height = size;\n var ctx = canvas.getContext('2d');\n if (!ctx) {\n return Promise.reject(false);\n }\n ctx.fillStyle = 'rgb(0, 255, 0)';\n ctx.fillRect(0, 0, size, size);\n var img = new Image();\n var greenImageSrc = canvas.toDataURL();\n img.src = greenImageSrc;\n var svg = createForeignObjectSVG(size, size, 0, 0, img);\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n return loadSerializedSVG$1(svg)\n .then(function (img) {\n ctx.drawImage(img, 0, 0);\n var data = ctx.getImageData(0, 0, size, size).data;\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n var node = document.createElement('div');\n node.style.backgroundImage = \"url(\" + greenImageSrc + \")\";\n node.style.height = size + \"px\";\n // Firefox 55 does not render inline <img /> tags\n return isGreenPixel(data)\n ? loadSerializedSVG$1(createForeignObjectSVG(size, size, 0, 0, node))\n : Promise.reject(false);\n })\n .then(function (img) {\n ctx.drawImage(img, 0, 0);\n // Edge does not render background-images\n return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\n })\n .catch(function () { return false; });\n };\n var createForeignObjectSVG = function (width, height, x, y, node) {\n var xmlns = 'http://www.w3.org/2000/svg';\n var svg = document.createElementNS(xmlns, 'svg');\n var foreignObject = document.createElementNS(xmlns, 'foreignObject');\n svg.setAttributeNS(null, 'width', width.toString());\n svg.setAttributeNS(null, 'height', height.toString());\n foreignObject.setAttributeNS(null, 'width', '100%');\n foreignObject.setAttributeNS(null, 'height', '100%');\n foreignObject.setAttributeNS(null, 'x', x.toString());\n foreignObject.setAttributeNS(null, 'y', y.toString());\n foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\n svg.appendChild(foreignObject);\n foreignObject.appendChild(node);\n return svg;\n };\n var loadSerializedSVG$1 = function (svg) {\n return new Promise(function (resolve, reject) {\n var img = new Image();\n img.onload = function () { return resolve(img); };\n img.onerror = reject;\n img.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(new XMLSerializer().serializeToString(svg));\n });\n };\n var FEATURES = {\n get SUPPORT_RANGE_BOUNDS() {\n var value = testRangeBounds(document);\n Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value: value });\n return value;\n },\n get SUPPORT_WORD_BREAKING() {\n var value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);\n Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', { value: value });\n return value;\n },\n get SUPPORT_SVG_DRAWING() {\n var value = testSVG(document);\n Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value: value });\n return value;\n },\n get SUPPORT_FOREIGNOBJECT_DRAWING() {\n var value = typeof Array.from === 'function' && typeof window.fetch === 'function'\n ? testForeignObject(document)\n : Promise.resolve(false);\n Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value: value });\n return value;\n },\n get SUPPORT_CORS_IMAGES() {\n var value = testCORS();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value: value });\n return value;\n },\n get SUPPORT_RESPONSE_TYPE() {\n var value = testResponseType();\n Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value: value });\n return value;\n },\n get SUPPORT_CORS_XHR() {\n var value = 'withCredentials' in new XMLHttpRequest();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value: value });\n return value;\n },\n get SUPPORT_NATIVE_TEXT_SEGMENTATION() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = !!(typeof Intl !== 'undefined' && Intl.Segmenter);\n Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', { value: value });\n return value;\n }\n };\n\n var TextBounds = /** @class */ (function () {\n function TextBounds(text, bounds) {\n this.text = text;\n this.bounds = bounds;\n }\n return TextBounds;\n }());\n var parseTextBounds = function (context, value, styles, node) {\n var textList = breakText(value, styles);\n var textBounds = [];\n var offset = 0;\n textList.forEach(function (text) {\n if (styles.textDecorationLine.length || text.trim().length > 0) {\n if (FEATURES.SUPPORT_RANGE_BOUNDS) {\n var clientRects = createRange(node, offset, text.length).getClientRects();\n if (clientRects.length > 1) {\n var subSegments = segmentGraphemes(text);\n var subOffset_1 = 0;\n subSegments.forEach(function (subSegment) {\n textBounds.push(new TextBounds(subSegment, Bounds.fromDOMRectList(context, createRange(node, subOffset_1 + offset, subSegment.length).getClientRects())));\n subOffset_1 += subSegment.length;\n });\n }\n else {\n textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));\n }\n }\n else {\n var replacementNode = node.splitText(text.length);\n textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));\n node = replacementNode;\n }\n }\n else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\n node = node.splitText(text.length);\n }\n offset += text.length;\n });\n return textBounds;\n };\n var getWrapperBounds = function (context, node) {\n var ownerDocument = node.ownerDocument;\n if (ownerDocument) {\n var wrapper = ownerDocument.createElement('html2canvaswrapper');\n wrapper.appendChild(node.cloneNode(true));\n var parentNode = node.parentNode;\n if (parentNode) {\n parentNode.replaceChild(wrapper, node);\n var bounds = parseBounds(context, wrapper);\n if (wrapper.firstChild) {\n parentNode.replaceChild(wrapper.firstChild, wrapper);\n }\n return bounds;\n }\n }\n return Bounds.EMPTY;\n };\n var createRange = function (node, offset, length) {\n var ownerDocument = node.ownerDocument;\n if (!ownerDocument) {\n throw new Error('Node has no owner document');\n }\n var range = ownerDocument.createRange();\n range.setStart(node, offset);\n range.setEnd(node, offset + length);\n return range;\n };\n var segmentGraphemes = function (value) {\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var segmenter = new Intl.Segmenter(void 0, { granularity: 'grapheme' });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from(segmenter.segment(value)).map(function (segment) { return segment.segment; });\n }\n return splitGraphemes(value);\n };\n var segmentWords = function (value, styles) {\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var segmenter = new Intl.Segmenter(void 0, {\n granularity: 'word'\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from(segmenter.segment(value)).map(function (segment) { return segment.segment; });\n }\n return breakWords(value, styles);\n };\n var breakText = function (value, styles) {\n return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);\n };\n // https://drafts.csswg.org/css-text/#word-separator\n var wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];\n var breakWords = function (str, styles) {\n var breaker = LineBreaker(str, {\n lineBreak: styles.lineBreak,\n wordBreak: styles.overflowWrap === \"break-word\" /* BREAK_WORD */ ? 'break-word' : styles.wordBreak\n });\n var words = [];\n var bk;\n var _loop_1 = function () {\n if (bk.value) {\n var value = bk.value.slice();\n var codePoints = toCodePoints$1(value);\n var word_1 = '';\n codePoints.forEach(function (codePoint) {\n if (wordSeparators.indexOf(codePoint) === -1) {\n word_1 += fromCodePoint$1(codePoint);\n }\n else {\n if (word_1.length) {\n words.push(word_1);\n }\n words.push(fromCodePoint$1(codePoint));\n word_1 = '';\n }\n });\n if (word_1.length) {\n words.push(word_1);\n }\n }\n };\n while (!(bk = breaker.next()).done) {\n _loop_1();\n }\n return words;\n };\n\n var TextContainer = /** @class */ (function () {\n function TextContainer(context, node, styles) {\n this.text = transform(node.data, styles.textTransform);\n this.textBounds = parseTextBounds(context, this.text, styles, node);\n }\n return TextContainer;\n }());\n var transform = function (text, transform) {\n switch (transform) {\n case 1 /* LOWERCASE */:\n return text.toLowerCase();\n case 3 /* CAPITALIZE */:\n return text.replace(CAPITALIZE, capitalize);\n case 2 /* UPPERCASE */:\n return text.toUpperCase();\n default:\n return text;\n }\n };\n var CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\n var capitalize = function (m, p1, p2) {\n if (m.length > 0) {\n return p1 + p2.toUpperCase();\n }\n return m;\n };\n\n var ImageElementContainer = /** @class */ (function (_super) {\n __extends(ImageElementContainer, _super);\n function ImageElementContainer(context, img) {\n var _this = _super.call(this, context, img) || this;\n _this.src = img.currentSrc || img.src;\n _this.intrinsicWidth = img.naturalWidth;\n _this.intrinsicHeight = img.naturalHeight;\n _this.context.cache.addImage(_this.src);\n return _this;\n }\n return ImageElementContainer;\n }(ElementContainer));\n\n var CanvasElementContainer = /** @class */ (function (_super) {\n __extends(CanvasElementContainer, _super);\n function CanvasElementContainer(context, canvas) {\n var _this = _super.call(this, context, canvas) || this;\n _this.canvas = canvas;\n _this.intrinsicWidth = canvas.width;\n _this.intrinsicHeight = canvas.height;\n return _this;\n }\n return CanvasElementContainer;\n }(ElementContainer));\n\n var SVGElementContainer = /** @class */ (function (_super) {\n __extends(SVGElementContainer, _super);\n function SVGElementContainer(context, img) {\n var _this = _super.call(this, context, img) || this;\n var s = new XMLSerializer();\n var bounds = parseBounds(context, img);\n img.setAttribute('width', bounds.width + \"px\");\n img.setAttribute('height', bounds.height + \"px\");\n _this.svg = \"data:image/svg+xml,\" + encodeURIComponent(s.serializeToString(img));\n _this.intrinsicWidth = img.width.baseVal.value;\n _this.intrinsicHeight = img.height.baseVal.value;\n _this.context.cache.addImage(_this.svg);\n return _this;\n }\n return SVGElementContainer;\n }(ElementContainer));\n\n var LIElementContainer = /** @class */ (function (_super) {\n __extends(LIElementContainer, _super);\n function LIElementContainer(context, element) {\n var _this = _super.call(this, context, element) || this;\n _this.value = element.value;\n return _this;\n }\n return LIElementContainer;\n }(ElementContainer));\n\n var OLElementContainer = /** @class */ (function (_super) {\n __extends(OLElementContainer, _super);\n function OLElementContainer(context, element) {\n var _this = _super.call(this, context, element) || this;\n _this.start = element.start;\n _this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\n return _this;\n }\n return OLElementContainer;\n }(ElementContainer));\n\n var CHECKBOX_BORDER_RADIUS = [\n {\n type: 15 /* DIMENSION_TOKEN */,\n flags: 0,\n unit: 'px',\n number: 3\n }\n ];\n var RADIO_BORDER_RADIUS = [\n {\n type: 16 /* PERCENTAGE_TOKEN */,\n flags: 0,\n number: 50\n }\n ];\n var reformatInputBounds = function (bounds) {\n if (bounds.width > bounds.height) {\n return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);\n }\n else if (bounds.width < bounds.height) {\n return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);\n }\n return bounds;\n };\n var getInputValue = function (node) {\n var value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\\u2022') : node.value;\n return value.length === 0 ? node.placeholder || '' : value;\n };\n var CHECKBOX = 'checkbox';\n var RADIO = 'radio';\n var PASSWORD = 'password';\n var INPUT_COLOR = 0x2a2a2aff;\n var InputElementContainer = /** @class */ (function (_super) {\n __extends(InputElementContainer, _super);\n function InputElementContainer(context, input) {\n var _this = _super.call(this, context, input) || this;\n _this.type = input.type.toLowerCase();\n _this.checked = input.checked;\n _this.value = getInputValue(input);\n if (_this.type === CHECKBOX || _this.type === RADIO) {\n _this.styles.backgroundColor = 0xdededeff;\n _this.styles.borderTopColor =\n _this.styles.borderRightColor =\n _this.styles.borderBottomColor =\n _this.styles.borderLeftColor =\n 0xa5a5a5ff;\n _this.styles.borderTopWidth =\n _this.styles.borderRightWidth =\n _this.styles.borderBottomWidth =\n _this.styles.borderLeftWidth =\n 1;\n _this.styles.borderTopStyle =\n _this.styles.borderRightStyle =\n _this.styles.borderBottomStyle =\n _this.styles.borderLeftStyle =\n 1 /* SOLID */;\n _this.styles.backgroundClip = [0 /* BORDER_BOX */];\n _this.styles.backgroundOrigin = [0 /* BORDER_BOX */];\n _this.bounds = reformatInputBounds(_this.bounds);\n }\n switch (_this.type) {\n case CHECKBOX:\n _this.styles.borderTopRightRadius =\n _this.styles.borderTopLeftRadius =\n _this.styles.borderBottomRightRadius =\n _this.styles.borderBottomLeftRadius =\n CHECKBOX_BORDER_RADIUS;\n break;\n case RADIO:\n _this.styles.borderTopRightRadius =\n _this.styles.borderTopLeftRadius =\n _this.styles.borderBottomRightRadius =\n _this.styles.borderBottomLeftRadius =\n RADIO_BORDER_RADIUS;\n break;\n }\n return _this;\n }\n return InputElementContainer;\n }(ElementContainer));\n\n var SelectElementContainer = /** @class */ (function (_super) {\n __extends(SelectElementContainer, _super);\n function SelectElementContainer(context, element) {\n var _this = _super.call(this, context, element) || this;\n var option = element.options[element.selectedIndex || 0];\n _this.value = option ? option.text || '' : '';\n return _this;\n }\n return SelectElementContainer;\n }(ElementContainer));\n\n var TextareaElementContainer = /** @class */ (function (_super) {\n __extends(TextareaElementContainer, _super);\n function TextareaElementContainer(context, element) {\n var _this = _super.call(this, context, element) || this;\n _this.value = element.value;\n return _this;\n }\n return TextareaElementContainer;\n }(ElementContainer));\n\n var IFrameElementContainer = /** @class */ (function (_super) {\n __extends(IFrameElementContainer, _super);\n function IFrameElementContainer(context, iframe) {\n var _this = _super.call(this, context, iframe) || this;\n _this.src = iframe.src;\n _this.width = parseInt(iframe.width, 10) || 0;\n _this.height = parseInt(iframe.height, 10) || 0;\n _this.backgroundColor = _this.styles.backgroundColor;\n try {\n if (iframe.contentWindow &&\n iframe.contentWindow.document &&\n iframe.contentWindow.document.documentElement) {\n _this.tree = parseTree(context, iframe.contentWindow.document.documentElement);\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n var documentBackgroundColor = iframe.contentWindow.document.documentElement\n ? parseColor(context, getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor)\n : COLORS.TRANSPARENT;\n var bodyBackgroundColor = iframe.contentWindow.document.body\n ? parseColor(context, getComputedStyle(iframe.contentWindow.document.body).backgroundColor)\n : COLORS.TRANSPARENT;\n _this.backgroundColor = isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? _this.styles.backgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor;\n }\n }\n catch (e) { }\n return _this;\n }\n return IFrameElementContainer;\n }(ElementContainer));\n\n var LIST_OWNERS = ['OL', 'UL', 'MENU'];\n var parseNodeTree = function (context, node, parent, root) {\n for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) {\n nextNode = childNode.nextSibling;\n if (isTextNode(childNode) && childNode.data.trim().length > 0) {\n parent.textNodes.push(new TextContainer(context, childNode, parent.styles));\n }\n else if (isElementNode(childNode)) {\n if (isSlotElement(childNode) && childNode.assignedNodes) {\n childNode.assignedNodes().forEach(function (childNode) { return parseNodeTree(context, childNode, parent, root); });\n }\n else {\n var container = createContainer(context, childNode);\n if (container.styles.isVisible()) {\n if (createsRealStackingContext(childNode, container, root)) {\n container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;\n }\n else if (createsStackingContext(container.styles)) {\n container.flags |= 2 /* CREATES_STACKING_CONTEXT */;\n }\n if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\n container.flags |= 8 /* IS_LIST_OWNER */;\n }\n parent.elements.push(container);\n childNode.slot;\n if (childNode.shadowRoot) {\n parseNodeTree(context, childNode.shadowRoot, container, root);\n }\n else if (!isTextareaElement(childNode) &&\n !isSVGElement(childNode) &&\n !isSelectElement(childNode)) {\n parseNodeTree(context, childNode, container, root);\n }\n }\n }\n }\n }\n };\n var createContainer = function (context, element) {\n if (isImageElement(element)) {\n return new ImageElementContainer(context, element);\n }\n if (isCanvasElement(element)) {\n return new CanvasElementContainer(context, element);\n }\n if (isSVGElement(element)) {\n return new SVGElementContainer(context, element);\n }\n if (isLIElement(element)) {\n return new LIElementContainer(context, element);\n }\n if (isOLElement(element)) {\n return new OLElementContainer(context, element);\n }\n if (isInputElement(element)) {\n return new InputElementContainer(context, element);\n }\n if (isSelectElement(element)) {\n return new SelectElementContainer(context, element);\n }\n if (isTextareaElement(element)) {\n return new TextareaElementContainer(context, element);\n }\n if (isIFrameElement(element)) {\n return new IFrameElementContainer(context, element);\n }\n return new ElementContainer(context, element);\n };\n var parseTree = function (context, element) {\n var container = createContainer(context, element);\n container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;\n parseNodeTree(context, element, container, container);\n return container;\n };\n var createsRealStackingContext = function (node, container, root) {\n return (container.styles.isPositionedWithZIndex() ||\n container.styles.opacity < 1 ||\n container.styles.isTransformed() ||\n (isBodyElement(node) && root.styles.isTransparent()));\n };\n var createsStackingContext = function (styles) { return styles.isPositioned() || styles.isFloating(); };\n var isTextNode = function (node) { return node.nodeType === Node.TEXT_NODE; };\n var isElementNode = function (node) { return node.nodeType === Node.ELEMENT_NODE; };\n var isHTMLElementNode = function (node) {\n return isElementNode(node) && typeof node.style !== 'undefined' && !isSVGElementNode(node);\n };\n var isSVGElementNode = function (element) {\n return typeof element.className === 'object';\n };\n var isLIElement = function (node) { return node.tagName === 'LI'; };\n var isOLElement = function (node) { return node.tagName === 'OL'; };\n var isInputElement = function (node) { return node.tagName === 'INPUT'; };\n var isHTMLElement = function (node) { return node.tagName === 'HTML'; };\n var isSVGElement = function (node) { return node.tagName === 'svg'; };\n var isBodyElement = function (node) { return node.tagName === 'BODY'; };\n var isCanvasElement = function (node) { return node.tagName === 'CANVAS'; };\n var isVideoElement = function (node) { return node.tagName === 'VIDEO'; };\n var isImageElement = function (node) { return node.tagName === 'IMG'; };\n var isIFrameElement = function (node) { return node.tagName === 'IFRAME'; };\n var isStyleElement = function (node) { return node.tagName === 'STYLE'; };\n var isScriptElement = function (node) { return node.tagName === 'SCRIPT'; };\n var isTextareaElement = function (node) { return node.tagName === 'TEXTAREA'; };\n var isSelectElement = function (node) { return node.tagName === 'SELECT'; };\n var isSlotElement = function (node) { return node.tagName === 'SLOT'; };\n // https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n var isCustomElement = function (node) { return node.tagName.indexOf('-') > 0; };\n\n var CounterState = /** @class */ (function () {\n function CounterState() {\n this.counters = {};\n }\n CounterState.prototype.getCounterValue = function (name) {\n var counter = this.counters[name];\n if (counter && counter.length) {\n return counter[counter.length - 1];\n }\n return 1;\n };\n CounterState.prototype.getCounterValues = function (name) {\n var counter = this.counters[name];\n return counter ? counter : [];\n };\n CounterState.prototype.pop = function (counters) {\n var _this = this;\n counters.forEach(function (counter) { return _this.counters[counter].pop(); });\n };\n CounterState.prototype.parse = function (style) {\n var _this = this;\n var counterIncrement = style.counterIncrement;\n var counterReset = style.counterReset;\n var canReset = true;\n if (counterIncrement !== null) {\n counterIncrement.forEach(function (entry) {\n var counter = _this.counters[entry.counter];\n if (counter && entry.increment !== 0) {\n canReset = false;\n if (!counter.length) {\n counter.push(1);\n }\n counter[Math.max(0, counter.length - 1)] += entry.increment;\n }\n });\n }\n var counterNames = [];\n if (canReset) {\n counterReset.forEach(function (entry) {\n var counter = _this.counters[entry.counter];\n counterNames.push(entry.counter);\n if (!counter) {\n counter = _this.counters[entry.counter] = [];\n }\n counter.push(entry.reset);\n });\n }\n return counterNames;\n };\n return CounterState;\n }());\n var ROMAN_UPPER = {\n integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\n values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\n };\n var ARMENIAN = {\n integers: [\n 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70,\n 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'Ք',\n 'Փ',\n 'Ւ',\n 'Ց',\n 'Ր',\n 'Տ',\n 'Վ',\n 'Ս',\n 'Ռ',\n 'Ջ',\n 'Պ',\n 'Չ',\n 'Ո',\n 'Շ',\n 'Ն',\n 'Յ',\n 'Մ',\n 'Ճ',\n 'Ղ',\n 'Ձ',\n 'Հ',\n 'Կ',\n 'Ծ',\n 'Խ',\n 'Լ',\n 'Ի',\n 'Ժ',\n 'Թ',\n 'Ը',\n 'Է',\n 'Զ',\n 'Ե',\n 'Դ',\n 'Գ',\n 'Բ',\n 'Ա'\n ]\n };\n var HEBREW = {\n integers: [\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20,\n 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'י׳',\n 'ט׳',\n 'ח׳',\n 'ז׳',\n 'ו׳',\n 'ה׳',\n 'ד׳',\n 'ג׳',\n 'ב׳',\n 'א׳',\n 'ת',\n 'ש',\n 'ר',\n 'ק',\n 'צ',\n 'פ',\n 'ע',\n 'ס',\n 'נ',\n 'מ',\n 'ל',\n 'כ',\n 'יט',\n 'יח',\n 'יז',\n 'טז',\n 'טו',\n 'י',\n 'ט',\n 'ח',\n 'ז',\n 'ו',\n 'ה',\n 'ד',\n 'ג',\n 'ב',\n 'א'\n ]\n };\n var GEORGIAN = {\n integers: [\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90,\n 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'ჵ',\n 'ჰ',\n 'ჯ',\n 'ჴ',\n 'ხ',\n 'ჭ',\n 'წ',\n 'ძ',\n 'ც',\n 'ჩ',\n 'შ',\n 'ყ',\n 'ღ',\n 'ქ',\n 'ფ',\n 'ჳ',\n 'ტ',\n 'ს',\n 'რ',\n 'ჟ',\n 'პ',\n 'ო',\n 'ჲ',\n 'ნ',\n 'მ',\n 'ლ',\n 'კ',\n 'ი',\n 'თ',\n 'ჱ',\n 'ზ',\n 'ვ',\n 'ე',\n 'დ',\n 'გ',\n 'ბ',\n 'ა'\n ]\n };\n var createAdditiveCounter = function (value, min, max, symbols, fallback, suffix) {\n if (value < min || value > max) {\n return createCounterText(value, fallback, suffix.length > 0);\n }\n return (symbols.integers.reduce(function (string, integer, index) {\n while (value >= integer) {\n value -= integer;\n string += symbols.values[index];\n }\n return string;\n }, '') + suffix);\n };\n var createCounterStyleWithSymbolResolver = function (value, codePointRangeLength, isNumeric, resolver) {\n var string = '';\n do {\n if (!isNumeric) {\n value--;\n }\n string = resolver(value) + string;\n value /= codePointRangeLength;\n } while (value * codePointRangeLength >= codePointRangeLength);\n return string;\n };\n var createCounterStyleFromRange = function (value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) {\n var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\n return ((value < 0 ? '-' : '') +\n (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function (codePoint) {\n return fromCodePoint$1(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);\n }) +\n suffix));\n };\n var createCounterStyleFromSymbols = function (value, symbols, suffix) {\n if (suffix === void 0) { suffix = '. '; }\n var codePointRangeLength = symbols.length;\n return (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function (codePoint) { return symbols[Math.floor(codePoint % codePointRangeLength)]; }) + suffix);\n };\n var CJK_ZEROS = 1 << 0;\n var CJK_TEN_COEFFICIENTS = 1 << 1;\n var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\n var CJK_HUNDRED_COEFFICIENTS = 1 << 3;\n var createCJKCounter = function (value, numbers, multipliers, negativeSign, suffix, flags) {\n if (value < -9999 || value > 9999) {\n return createCounterText(value, 4 /* CJK_DECIMAL */, suffix.length > 0);\n }\n var tmp = Math.abs(value);\n var string = suffix;\n if (tmp === 0) {\n return numbers[0] + string;\n }\n for (var digit = 0; tmp > 0 && digit <= 4; digit++) {\n var coefficient = tmp % 10;\n if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\n string = numbers[coefficient] + string;\n }\n else if (coefficient > 1 ||\n (coefficient === 1 && digit === 0) ||\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) ||\n (coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))) {\n string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\n }\n else if (coefficient === 1 && digit > 0) {\n string = multipliers[digit - 1] + string;\n }\n tmp = Math.floor(tmp / 10);\n }\n return (value < 0 ? negativeSign : '') + string;\n };\n var CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\n var CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\n var JAPANESE_NEGATIVE = 'マイナス';\n var KOREAN_NEGATIVE = '마이너스';\n var createCounterText = function (value, type, appendSuffix) {\n var defaultSuffix = appendSuffix ? '. ' : '';\n var cjkSuffix = appendSuffix ? '、' : '';\n var koreanSuffix = appendSuffix ? ', ' : '';\n var spaceSuffix = appendSuffix ? ' ' : '';\n switch (type) {\n case 0 /* DISC */:\n return '•' + spaceSuffix;\n case 1 /* CIRCLE */:\n return '◦' + spaceSuffix;\n case 2 /* SQUARE */:\n return '◾' + spaceSuffix;\n case 5 /* DECIMAL_LEADING_ZERO */:\n var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n return string.length < 4 ? \"0\" + string : string;\n case 4 /* CJK_DECIMAL */:\n return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\n case 6 /* LOWER_ROMAN */:\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3 /* DECIMAL */, defaultSuffix).toLowerCase();\n case 7 /* UPPER_ROMAN */:\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3 /* DECIMAL */, defaultSuffix);\n case 8 /* LOWER_GREEK */:\n return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\n case 9 /* LOWER_ALPHA */:\n return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\n case 10 /* UPPER_ALPHA */:\n return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\n case 11 /* ARABIC_INDIC */:\n return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\n case 12 /* ARMENIAN */:\n case 49 /* UPPER_ARMENIAN */:\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3 /* DECIMAL */, defaultSuffix);\n case 35 /* LOWER_ARMENIAN */:\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3 /* DECIMAL */, defaultSuffix).toLowerCase();\n case 13 /* BENGALI */:\n return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\n case 14 /* CAMBODIAN */:\n case 30 /* KHMER */:\n return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\n case 15 /* CJK_EARTHLY_BRANCH */:\n return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\n case 16 /* CJK_HEAVENLY_STEM */:\n return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\n case 17 /* CJK_IDEOGRAPHIC */:\n case 48 /* TRAD_CHINESE_INFORMAL */:\n return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n case 47 /* TRAD_CHINESE_FORMAL */:\n return createCJKCounter(value, '零壹貳參肆伍陸柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n case 42 /* SIMP_CHINESE_INFORMAL */:\n return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n case 41 /* SIMP_CHINESE_FORMAL */:\n return createCJKCounter(value, '零壹贰叁肆伍陆柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n case 26 /* JAPANESE_INFORMAL */:\n return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\n case 25 /* JAPANESE_FORMAL */:\n return createCJKCounter(value, '零壱弐参四伍六七八九', '拾百千万', JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n case 31 /* KOREAN_HANGUL_FORMAL */:\n return createCJKCounter(value, '영일이삼사오육칠팔구', '십백천만', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n case 33 /* KOREAN_HANJA_INFORMAL */:\n return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\n case 32 /* KOREAN_HANJA_FORMAL */:\n return createCJKCounter(value, '零壹貳參四五六七八九', '拾百千', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n case 18 /* DEVANAGARI */:\n return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\n case 20 /* GEORGIAN */:\n return createAdditiveCounter(value, 1, 19999, GEORGIAN, 3 /* DECIMAL */, defaultSuffix);\n case 21 /* GUJARATI */:\n return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\n case 22 /* GURMUKHI */:\n return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\n case 22 /* HEBREW */:\n return createAdditiveCounter(value, 1, 10999, HEBREW, 3 /* DECIMAL */, defaultSuffix);\n case 23 /* HIRAGANA */:\n return createCounterStyleFromSymbols(value, 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん');\n case 24 /* HIRAGANA_IROHA */:\n return createCounterStyleFromSymbols(value, 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす');\n case 27 /* KANNADA */:\n return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\n case 28 /* KATAKANA */:\n return createCounterStyleFromSymbols(value, 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン', cjkSuffix);\n case 29 /* KATAKANA_IROHA */:\n return createCounterStyleFromSymbols(value, 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス', cjkSuffix);\n case 34 /* LAO */:\n return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\n case 37 /* MONGOLIAN */:\n return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\n case 38 /* MYANMAR */:\n return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\n case 39 /* ORIYA */:\n return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\n case 40 /* PERSIAN */:\n return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\n case 43 /* TAMIL */:\n return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\n case 44 /* TELUGU */:\n return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\n case 45 /* THAI */:\n return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\n case 46 /* TIBETAN */:\n return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\n case 3 /* DECIMAL */:\n default:\n return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n }\n };\n\n var IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n var DocumentCloner = /** @class */ (function () {\n function DocumentCloner(context, element, options) {\n this.context = context;\n this.options = options;\n this.scrolledElements = [];\n this.referenceElement = element;\n this.counters = new CounterState();\n this.quoteDepth = 0;\n if (!element.ownerDocument) {\n throw new Error('Cloned element does not have an owner document');\n }\n this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false);\n }\n DocumentCloner.prototype.toIFrame = function (ownerDocument, windowSize) {\n var _this = this;\n var iframe = createIFrameContainer(ownerDocument, windowSize);\n if (!iframe.contentWindow) {\n return Promise.reject(\"Unable to find iframe window\");\n }\n var scrollX = ownerDocument.defaultView.pageXOffset;\n var scrollY = ownerDocument.defaultView.pageYOffset;\n var cloneWindow = iframe.contentWindow;\n var documentClone = cloneWindow.document;\n /* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle\n if window url is about:blank, we can assign the url to current by writing onto the document\n */\n var iframeLoad = iframeLoader(iframe).then(function () { return __awaiter(_this, void 0, void 0, function () {\n var onclone, referenceElement;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.scrolledElements.forEach(restoreNodeScroll);\n if (cloneWindow) {\n cloneWindow.scrollTo(windowSize.left, windowSize.top);\n if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&\n (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)) {\n this.context.logger.warn('Unable to restore scroll position for cloned document');\n this.context.windowBounds = this.context.windowBounds.add(cloneWindow.scrollX - windowSize.left, cloneWindow.scrollY - windowSize.top, 0, 0);\n }\n }\n onclone = this.options.onclone;\n referenceElement = this.clonedReferenceElement;\n if (typeof referenceElement === 'undefined') {\n return [2 /*return*/, Promise.reject(\"Error finding the \" + this.referenceElement.nodeName + \" in the cloned document\")];\n }\n if (!(documentClone.fonts && documentClone.fonts.ready)) return [3 /*break*/, 2];\n return [4 /*yield*/, documentClone.fonts.ready];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n if (!/(AppleWebKit)/g.test(navigator.userAgent)) return [3 /*break*/, 4];\n return [4 /*yield*/, imagesReady(documentClone)];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4:\n if (typeof onclone === 'function') {\n return [2 /*return*/, Promise.resolve()\n .then(function () { return onclone(documentClone, referenceElement); })\n .then(function () { return iframe; })];\n }\n return [2 /*return*/, iframe];\n }\n });\n }); });\n documentClone.open();\n documentClone.write(serializeDoctype(document.doctype) + \"<html></html>\");\n // Chrome scrolls the parent document for some reason after the write to the cloned window???\n restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);\n documentClone.replaceChild(documentClone.adoptNode(this.documentElement), documentClone.documentElement);\n documentClone.close();\n return iframeLoad;\n };\n DocumentCloner.prototype.createElementClone = function (node) {\n if (isDebugging(node, 2 /* CLONE */)) {\n debugger;\n }\n if (isCanvasElement(node)) {\n return this.createCanvasClone(node);\n }\n if (isVideoElement(node)) {\n return this.createVideoClone(node);\n }\n if (isStyleElement(node)) {\n return this.createStyleClone(node);\n }\n var clone = node.cloneNode(false);\n if (isImageElement(clone)) {\n if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {\n clone.src = node.currentSrc;\n clone.srcset = '';\n }\n if (clone.loading === 'lazy') {\n clone.loading = 'eager';\n }\n }\n if (isCustomElement(clone)) {\n return this.createCustomElementClone(clone);\n }\n return clone;\n };\n DocumentCloner.prototype.createCustomElementClone = function (node) {\n var clone = document.createElement('html2canvascustomelement');\n copyCSSStyles(node.style, clone);\n return clone;\n };\n DocumentCloner.prototype.createStyleClone = function (node) {\n try {\n var sheet = node.sheet;\n if (sheet && sheet.cssRules) {\n var css = [].slice.call(sheet.cssRules, 0).reduce(function (css, rule) {\n if (rule && typeof rule.cssText === 'string') {\n return css + rule.cssText;\n }\n return css;\n }, '');\n var style = node.cloneNode(false);\n style.textContent = css;\n return style;\n }\n }\n catch (e) {\n // accessing node.sheet.cssRules throws a DOMException\n this.context.logger.error('Unable to access cssRules property', e);\n if (e.name !== 'SecurityError') {\n throw e;\n }\n }\n return node.cloneNode(false);\n };\n DocumentCloner.prototype.createCanvasClone = function (canvas) {\n var _a;\n if (this.options.inlineImages && canvas.ownerDocument) {\n var img = canvas.ownerDocument.createElement('img');\n try {\n img.src = canvas.toDataURL();\n return img;\n }\n catch (e) {\n this.context.logger.info(\"Unable to inline canvas contents, canvas is tainted\", canvas);\n }\n }\n var clonedCanvas = canvas.cloneNode(false);\n try {\n clonedCanvas.width = canvas.width;\n clonedCanvas.height = canvas.height;\n var ctx = canvas.getContext('2d');\n var clonedCtx = clonedCanvas.getContext('2d');\n if (clonedCtx) {\n if (!this.options.allowTaint && ctx) {\n clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);\n }\n else {\n var gl = (_a = canvas.getContext('webgl2')) !== null && _a !== void 0 ? _a : canvas.getContext('webgl');\n if (gl) {\n var attribs = gl.getContextAttributes();\n if ((attribs === null || attribs === void 0 ? void 0 : attribs.preserveDrawingBuffer) === false) {\n this.context.logger.warn('Unable to clone WebGL context as it has preserveDrawingBuffer=false', canvas);\n }\n }\n clonedCtx.drawImage(canvas, 0, 0);\n }\n }\n return clonedCanvas;\n }\n catch (e) {\n this.context.logger.info(\"Unable to clone canvas as it is tainted\", canvas);\n }\n return clonedCanvas;\n };\n DocumentCloner.prototype.createVideoClone = function (video) {\n var canvas = video.ownerDocument.createElement('canvas');\n canvas.width = video.offsetWidth;\n canvas.height = video.offsetHeight;\n var ctx = canvas.getContext('2d');\n try {\n if (ctx) {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n if (!this.options.allowTaint) {\n ctx.getImageData(0, 0, canvas.width, canvas.height);\n }\n }\n return canvas;\n }\n catch (e) {\n this.context.logger.info(\"Unable to clone video as it is tainted\", video);\n }\n var blankCanvas = video.ownerDocument.createElement('canvas');\n blankCanvas.width = video.offsetWidth;\n blankCanvas.height = video.offsetHeight;\n return blankCanvas;\n };\n DocumentCloner.prototype.appendChildNode = function (clone, child, copyStyles) {\n if (!isElementNode(child) ||\n (!isScriptElement(child) &&\n !child.hasAttribute(IGNORE_ATTRIBUTE) &&\n (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child)))) {\n if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {\n clone.appendChild(this.cloneNode(child, copyStyles));\n }\n }\n };\n DocumentCloner.prototype.cloneChildNodes = function (node, clone, copyStyles) {\n var _this = this;\n for (var child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild; child; child = child.nextSibling) {\n if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === 'function') {\n var assignedNodes = child.assignedNodes();\n if (assignedNodes.length) {\n assignedNodes.forEach(function (assignedNode) { return _this.appendChildNode(clone, assignedNode, copyStyles); });\n }\n }\n else {\n this.appendChildNode(clone, child, copyStyles);\n }\n }\n };\n DocumentCloner.prototype.cloneNode = function (node, copyStyles) {\n if (isTextNode(node)) {\n return document.createTextNode(node.data);\n }\n if (!node.ownerDocument) {\n return node.cloneNode(false);\n }\n var window = node.ownerDocument.defaultView;\n if (window && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {\n var clone = this.createElementClone(node);\n clone.style.transitionProperty = 'none';\n var style = window.getComputedStyle(node);\n var styleBefore = window.getComputedStyle(node, ':before');\n var styleAfter = window.getComputedStyle(node, ':after');\n if (this.referenceElement === node && isHTMLElementNode(clone)) {\n this.clonedReferenceElement = clone;\n }\n if (isBodyElement(clone)) {\n createPseudoHideStyles(clone);\n }\n var counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n var before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);\n if (isCustomElement(node)) {\n copyStyles = true;\n }\n if (!isVideoElement(node)) {\n this.cloneChildNodes(node, clone, copyStyles);\n }\n if (before) {\n clone.insertBefore(before, clone.firstChild);\n }\n var after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);\n if (after) {\n clone.appendChild(after);\n }\n this.counters.pop(counters);\n if ((style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) ||\n copyStyles) {\n copyCSSStyles(style, clone);\n }\n if (node.scrollTop !== 0 || node.scrollLeft !== 0) {\n this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);\n }\n if ((isTextareaElement(node) || isSelectElement(node)) &&\n (isTextareaElement(clone) || isSelectElement(clone))) {\n clone.value = node.value;\n }\n return clone;\n }\n return node.cloneNode(false);\n };\n DocumentCloner.prototype.resolvePseudoContent = function (node, clone, style, pseudoElt) {\n var _this = this;\n if (!style) {\n return;\n }\n var value = style.content;\n var document = clone.ownerDocument;\n if (!document || !value || value === 'none' || value === '-moz-alt-content' || style.display === 'none') {\n return;\n }\n this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n var declaration = new CSSParsedPseudoDeclaration(this.context, style);\n var anonymousReplacedElement = document.createElement('html2canvaspseudoelement');\n copyCSSStyles(style, anonymousReplacedElement);\n declaration.content.forEach(function (token) {\n if (token.type === 0 /* STRING_TOKEN */) {\n anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n }\n else if (token.type === 22 /* URL_TOKEN */) {\n var img = document.createElement('img');\n img.src = token.value;\n img.style.opacity = '1';\n anonymousReplacedElement.appendChild(img);\n }\n else if (token.type === 18 /* FUNCTION */) {\n if (token.name === 'attr') {\n var attr = token.values.filter(isIdentToken);\n if (attr.length) {\n anonymousReplacedElement.appendChild(document.createTextNode(node.getAttribute(attr[0].value) || ''));\n }\n }\n else if (token.name === 'counter') {\n var _a = token.values.filter(nonFunctionArgSeparator), counter = _a[0], counterStyle = _a[1];\n if (counter && isIdentToken(counter)) {\n var counterState = _this.counters.getCounterValue(counter.value);\n var counterType = counterStyle && isIdentToken(counterStyle)\n ? listStyleType.parse(_this.context, counterStyle.value)\n : 3 /* DECIMAL */;\n anonymousReplacedElement.appendChild(document.createTextNode(createCounterText(counterState, counterType, false)));\n }\n }\n else if (token.name === 'counters') {\n var _b = token.values.filter(nonFunctionArgSeparator), counter = _b[0], delim = _b[1], counterStyle = _b[2];\n if (counter && isIdentToken(counter)) {\n var counterStates = _this.counters.getCounterValues(counter.value);\n var counterType_1 = counterStyle && isIdentToken(counterStyle)\n ? listStyleType.parse(_this.context, counterStyle.value)\n : 3 /* DECIMAL */;\n var separator = delim && delim.type === 0 /* STRING_TOKEN */ ? delim.value : '';\n var text = counterStates\n .map(function (value) { return createCounterText(value, counterType_1, false); })\n .join(separator);\n anonymousReplacedElement.appendChild(document.createTextNode(text));\n }\n }\n else ;\n }\n else if (token.type === 20 /* IDENT_TOKEN */) {\n switch (token.value) {\n case 'open-quote':\n anonymousReplacedElement.appendChild(document.createTextNode(getQuote(declaration.quotes, _this.quoteDepth++, true)));\n break;\n case 'close-quote':\n anonymousReplacedElement.appendChild(document.createTextNode(getQuote(declaration.quotes, --_this.quoteDepth, false)));\n break;\n default:\n // safari doesn't parse string tokens correctly because of lack of quotes\n anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n }\n }\n });\n anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + \" \" + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;\n var newClassName = pseudoElt === PseudoElementType.BEFORE\n ? \" \" + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE\n : \" \" + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;\n if (isSVGElementNode(clone)) {\n clone.className.baseValue += newClassName;\n }\n else {\n clone.className += newClassName;\n }\n return anonymousReplacedElement;\n };\n DocumentCloner.destroy = function (container) {\n if (container.parentNode) {\n container.parentNode.removeChild(container);\n return true;\n }\n return false;\n };\n return DocumentCloner;\n }());\n var PseudoElementType;\n (function (PseudoElementType) {\n PseudoElementType[PseudoElementType[\"BEFORE\"] = 0] = \"BEFORE\";\n PseudoElementType[PseudoElementType[\"AFTER\"] = 1] = \"AFTER\";\n })(PseudoElementType || (PseudoElementType = {}));\n var createIFrameContainer = function (ownerDocument, bounds) {\n var cloneIframeContainer = ownerDocument.createElement('iframe');\n cloneIframeContainer.className = 'html2canvas-container';\n cloneIframeContainer.style.visibility = 'hidden';\n cloneIframeContainer.style.position = 'fixed';\n cloneIframeContainer.style.left = '-10000px';\n cloneIframeContainer.style.top = '0px';\n cloneIframeContainer.style.border = '0';\n cloneIframeContainer.width = bounds.width.toString();\n cloneIframeContainer.height = bounds.height.toString();\n cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it\n cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');\n ownerDocument.body.appendChild(cloneIframeContainer);\n return cloneIframeContainer;\n };\n var imageReady = function (img) {\n return new Promise(function (resolve) {\n if (img.complete) {\n resolve();\n return;\n }\n if (!img.src) {\n resolve();\n return;\n }\n img.onload = resolve;\n img.onerror = resolve;\n });\n };\n var imagesReady = function (document) {\n return Promise.all([].slice.call(document.images, 0).map(imageReady));\n };\n var iframeLoader = function (iframe) {\n return new Promise(function (resolve, reject) {\n var cloneWindow = iframe.contentWindow;\n if (!cloneWindow) {\n return reject(\"No window assigned for iframe\");\n }\n var documentClone = cloneWindow.document;\n cloneWindow.onload = iframe.onload = function () {\n cloneWindow.onload = iframe.onload = null;\n var interval = setInterval(function () {\n if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {\n clearInterval(interval);\n resolve(iframe);\n }\n }, 50);\n };\n });\n };\n var ignoredStyleProperties = [\n 'all',\n 'd',\n 'content' // Safari shows pseudoelements if content is set\n ];\n var copyCSSStyles = function (style, target) {\n // Edge does not provide value for cssText\n for (var i = style.length - 1; i >= 0; i--) {\n var property = style.item(i);\n if (ignoredStyleProperties.indexOf(property) === -1) {\n target.style.setProperty(property, style.getPropertyValue(property));\n }\n }\n return target;\n };\n var serializeDoctype = function (doctype) {\n var str = '';\n if (doctype) {\n str += '<!DOCTYPE ';\n if (doctype.name) {\n str += doctype.name;\n }\n if (doctype.internalSubset) {\n str += doctype.internalSubset;\n }\n if (doctype.publicId) {\n str += \"\\\"\" + doctype.publicId + \"\\\"\";\n }\n if (doctype.systemId) {\n str += \"\\\"\" + doctype.systemId + \"\\\"\";\n }\n str += '>';\n }\n return str;\n };\n var restoreOwnerScroll = function (ownerDocument, x, y) {\n if (ownerDocument &&\n ownerDocument.defaultView &&\n (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)) {\n ownerDocument.defaultView.scrollTo(x, y);\n }\n };\n var restoreNodeScroll = function (_a) {\n var element = _a[0], x = _a[1], y = _a[2];\n element.scrollLeft = x;\n element.scrollTop = y;\n };\n var PSEUDO_BEFORE = ':before';\n var PSEUDO_AFTER = ':after';\n var PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';\n var PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';\n var PSEUDO_HIDE_ELEMENT_STYLE = \"{\\n content: \\\"\\\" !important;\\n display: none !important;\\n}\";\n var createPseudoHideStyles = function (body) {\n createStyles(body, \".\" + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + PSEUDO_BEFORE + PSEUDO_HIDE_ELEMENT_STYLE + \"\\n .\" + PSEUDO_HIDE_ELEMENT_CLASS_AFTER + PSEUDO_AFTER + PSEUDO_HIDE_ELEMENT_STYLE);\n };\n var createStyles = function (body, styles) {\n var document = body.ownerDocument;\n if (document) {\n var style = document.createElement('style');\n style.textContent = styles;\n body.appendChild(style);\n }\n };\n\n var CacheStorage = /** @class */ (function () {\n function CacheStorage() {\n }\n CacheStorage.getOrigin = function (url) {\n var link = CacheStorage._link;\n if (!link) {\n return 'about:blank';\n }\n link.href = url;\n link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\n return link.protocol + link.hostname + link.port;\n };\n CacheStorage.isSameOrigin = function (src) {\n return CacheStorage.getOrigin(src) === CacheStorage._origin;\n };\n CacheStorage.setContext = function (window) {\n CacheStorage._link = window.document.createElement('a');\n CacheStorage._origin = CacheStorage.getOrigin(window.location.href);\n };\n CacheStorage._origin = 'about:blank';\n return CacheStorage;\n }());\n var Cache = /** @class */ (function () {\n function Cache(context, _options) {\n this.context = context;\n this._options = _options;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._cache = {};\n }\n Cache.prototype.addImage = function (src) {\n var result = Promise.resolve();\n if (this.has(src)) {\n return result;\n }\n if (isBlobImage(src) || isRenderable(src)) {\n (this._cache[src] = this.loadImage(src)).catch(function () {\n // prevent unhandled rejection\n });\n return result;\n }\n return result;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Cache.prototype.match = function (src) {\n return this._cache[src];\n };\n Cache.prototype.loadImage = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var isSameOrigin, useCORS, useProxy, src;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isSameOrigin = CacheStorage.isSameOrigin(key);\n useCORS = !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;\n useProxy = !isInlineImage(key) &&\n !isSameOrigin &&\n !isBlobImage(key) &&\n typeof this._options.proxy === 'string' &&\n FEATURES.SUPPORT_CORS_XHR &&\n !useCORS;\n if (!isSameOrigin &&\n this._options.allowTaint === false &&\n !isInlineImage(key) &&\n !isBlobImage(key) &&\n !useProxy &&\n !useCORS) {\n return [2 /*return*/];\n }\n src = key;\n if (!useProxy) return [3 /*break*/, 2];\n return [4 /*yield*/, this.proxy(src)];\n case 1:\n src = _a.sent();\n _a.label = 2;\n case 2:\n this.context.logger.debug(\"Added image \" + key.substring(0, 256));\n return [4 /*yield*/, new Promise(function (resolve, reject) {\n var img = new Image();\n img.onload = function () { return resolve(img); };\n img.onerror = reject;\n //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\n if (isInlineBase64Image(src) || useCORS) {\n img.crossOrigin = 'anonymous';\n }\n img.src = src;\n if (img.complete === true) {\n // Inline XML images may fail to parse, throwing an Error later on\n setTimeout(function () { return resolve(img); }, 500);\n }\n if (_this._options.imageTimeout > 0) {\n setTimeout(function () { return reject(\"Timed out (\" + _this._options.imageTimeout + \"ms) loading image\"); }, _this._options.imageTimeout);\n }\n })];\n case 3: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n Cache.prototype.has = function (key) {\n return typeof this._cache[key] !== 'undefined';\n };\n Cache.prototype.keys = function () {\n return Promise.resolve(Object.keys(this._cache));\n };\n Cache.prototype.proxy = function (src) {\n var _this = this;\n var proxy = this._options.proxy;\n if (!proxy) {\n throw new Error('No proxy defined');\n }\n var key = src.substring(0, 256);\n return new Promise(function (resolve, reject) {\n var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\n var xhr = new XMLHttpRequest();\n xhr.onload = function () {\n if (xhr.status === 200) {\n if (responseType === 'text') {\n resolve(xhr.response);\n }\n else {\n var reader_1 = new FileReader();\n reader_1.addEventListener('load', function () { return resolve(reader_1.result); }, false);\n reader_1.addEventListener('error', function (e) { return reject(e); }, false);\n reader_1.readAsDataURL(xhr.response);\n }\n }\n else {\n reject(\"Failed to proxy resource \" + key + \" with status code \" + xhr.status);\n }\n };\n xhr.onerror = reject;\n var queryString = proxy.indexOf('?') > -1 ? '&' : '?';\n xhr.open('GET', \"\" + proxy + queryString + \"url=\" + encodeURIComponent(src) + \"&responseType=\" + responseType);\n if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\n xhr.responseType = responseType;\n }\n if (_this._options.imageTimeout) {\n var timeout_1 = _this._options.imageTimeout;\n xhr.timeout = timeout_1;\n xhr.ontimeout = function () { return reject(\"Timed out (\" + timeout_1 + \"ms) proxying \" + key); };\n }\n xhr.send();\n });\n };\n return Cache;\n }());\n var INLINE_SVG = /^data:image\\/svg\\+xml/i;\n var INLINE_BASE64 = /^data:image\\/.*;base64,/i;\n var INLINE_IMG = /^data:image\\/.*/i;\n var isRenderable = function (src) { return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src); };\n var isInlineImage = function (src) { return INLINE_IMG.test(src); };\n var isInlineBase64Image = function (src) { return INLINE_BASE64.test(src); };\n var isBlobImage = function (src) { return src.substr(0, 4) === 'blob'; };\n var isSVG = function (src) { return src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src); };\n\n var Vector = /** @class */ (function () {\n function Vector(x, y) {\n this.type = 0 /* VECTOR */;\n this.x = x;\n this.y = y;\n }\n Vector.prototype.add = function (deltaX, deltaY) {\n return new Vector(this.x + deltaX, this.y + deltaY);\n };\n return Vector;\n }());\n\n var lerp = function (a, b, t) {\n return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);\n };\n var BezierCurve = /** @class */ (function () {\n function BezierCurve(start, startControl, endControl, end) {\n this.type = 1 /* BEZIER_CURVE */;\n this.start = start;\n this.startControl = startControl;\n this.endControl = endControl;\n this.end = end;\n }\n BezierCurve.prototype.subdivide = function (t, firstHalf) {\n var ab = lerp(this.start, this.startControl, t);\n var bc = lerp(this.startControl, this.endControl, t);\n var cd = lerp(this.endControl, this.end, t);\n var abbc = lerp(ab, bc, t);\n var bccd = lerp(bc, cd, t);\n var dest = lerp(abbc, bccd, t);\n return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);\n };\n BezierCurve.prototype.add = function (deltaX, deltaY) {\n return new BezierCurve(this.start.add(deltaX, deltaY), this.startControl.add(deltaX, deltaY), this.endControl.add(deltaX, deltaY), this.end.add(deltaX, deltaY));\n };\n BezierCurve.prototype.reverse = function () {\n return new BezierCurve(this.end, this.endControl, this.startControl, this.start);\n };\n return BezierCurve;\n }());\n var isBezierCurve = function (path) { return path.type === 1 /* BEZIER_CURVE */; };\n\n var BoundCurves = /** @class */ (function () {\n function BoundCurves(element) {\n var styles = element.styles;\n var bounds = element.bounds;\n var _a = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height), tlh = _a[0], tlv = _a[1];\n var _b = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height), trh = _b[0], trv = _b[1];\n var _c = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height), brh = _c[0], brv = _c[1];\n var _d = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height), blh = _d[0], blv = _d[1];\n var factors = [];\n factors.push((tlh + trh) / bounds.width);\n factors.push((blh + brh) / bounds.width);\n factors.push((tlv + blv) / bounds.height);\n factors.push((trv + brv) / bounds.height);\n var maxFactor = Math.max.apply(Math, factors);\n if (maxFactor > 1) {\n tlh /= maxFactor;\n tlv /= maxFactor;\n trh /= maxFactor;\n trv /= maxFactor;\n brh /= maxFactor;\n brv /= maxFactor;\n blh /= maxFactor;\n blv /= maxFactor;\n }\n var topWidth = bounds.width - trh;\n var rightHeight = bounds.height - brv;\n var bottomWidth = bounds.width - brh;\n var leftHeight = bounds.height - blv;\n var borderTopWidth = styles.borderTopWidth;\n var borderRightWidth = styles.borderRightWidth;\n var borderBottomWidth = styles.borderBottomWidth;\n var borderLeftWidth = styles.borderLeftWidth;\n var paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);\n var paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);\n var paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);\n var paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);\n this.topLeftBorderDoubleOuterBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3, tlh - borderLeftWidth / 3, tlv - borderTopWidth / 3, CORNER.TOP_LEFT)\n : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3);\n this.topRightBorderDoubleOuterBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth / 3, trh - borderRightWidth / 3, trv - borderTopWidth / 3, CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + borderTopWidth / 3);\n this.bottomRightBorderDoubleOuterBox =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth / 3, brv - borderBottomWidth / 3, CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\n this.bottomLeftBorderDoubleOuterBox =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left + borderLeftWidth / 3, bounds.top + leftHeight, blh - borderLeftWidth / 3, blv - borderBottomWidth / 3, CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\n this.topLeftBorderDoubleInnerBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3, tlh - (borderLeftWidth * 2) / 3, tlv - (borderTopWidth * 2) / 3, CORNER.TOP_LEFT)\n : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);\n this.topRightBorderDoubleInnerBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left + topWidth, bounds.top + (borderTopWidth * 2) / 3, trh - (borderRightWidth * 2) / 3, trv - (borderTopWidth * 2) / 3, CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width - (borderRightWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);\n this.bottomRightBorderDoubleInnerBox =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - (borderRightWidth * 2) / 3, brv - (borderBottomWidth * 2) / 3, CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width - (borderRightWidth * 2) / 3, bounds.top + bounds.height - (borderBottomWidth * 2) / 3);\n this.bottomLeftBorderDoubleInnerBox =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + leftHeight, blh - (borderLeftWidth * 2) / 3, blv - (borderBottomWidth * 2) / 3, CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + bounds.height - (borderBottomWidth * 2) / 3);\n this.topLeftBorderStroke =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2, tlh - borderLeftWidth / 2, tlv - borderTopWidth / 2, CORNER.TOP_LEFT)\n : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2);\n this.topRightBorderStroke =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth / 2, trh - borderRightWidth / 2, trv - borderTopWidth / 2, CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + borderTopWidth / 2);\n this.bottomRightBorderStroke =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth / 2, brv - borderBottomWidth / 2, CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\n this.bottomLeftBorderStroke =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left + borderLeftWidth / 2, bounds.top + leftHeight, blh - borderLeftWidth / 2, blv - borderBottomWidth / 2, CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\n this.topLeftBorderBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT)\n : new Vector(bounds.left, bounds.top);\n this.topRightBorderBox =\n trh > 0 || trv > 0\n ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width, bounds.top);\n this.bottomRightBorderBox =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);\n this.bottomLeftBorderBox =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left, bounds.top + bounds.height);\n this.topLeftPaddingBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left + borderLeftWidth, bounds.top + borderTopWidth, Math.max(0, tlh - borderLeftWidth), Math.max(0, tlv - borderTopWidth), CORNER.TOP_LEFT)\n : new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);\n this.topRightPaddingBox =\n trh > 0 || trv > 0\n ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width - borderRightWidth), bounds.top + borderTopWidth, topWidth > bounds.width + borderRightWidth ? 0 : Math.max(0, trh - borderRightWidth), Math.max(0, trv - borderTopWidth), CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);\n this.bottomRightPaddingBox =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth), bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth), Math.max(0, brh - borderRightWidth), Math.max(0, brv - borderBottomWidth), CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + bounds.height - borderBottomWidth);\n this.bottomLeftPaddingBox =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left + borderLeftWidth, bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth), Math.max(0, blh - borderLeftWidth), Math.max(0, blv - borderBottomWidth), CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);\n this.topLeftContentBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop, Math.max(0, tlh - (borderLeftWidth + paddingLeft)), Math.max(0, tlv - (borderTopWidth + paddingTop)), CORNER.TOP_LEFT)\n : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop);\n this.topRightContentBox =\n trh > 0 || trv > 0\n ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth + paddingLeft), bounds.top + borderTopWidth + paddingTop, topWidth > bounds.width + borderLeftWidth + paddingLeft ? 0 : trh - borderLeftWidth + paddingLeft, trv - (borderTopWidth + paddingTop), CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width - (borderRightWidth + paddingRight), bounds.top + borderTopWidth + paddingTop);\n this.bottomRightContentBox =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth + paddingLeft)), bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth + paddingTop), Math.max(0, brh - (borderRightWidth + paddingRight)), brv - (borderBottomWidth + paddingBottom), CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width - (borderRightWidth + paddingRight), bounds.top + bounds.height - (borderBottomWidth + paddingBottom));\n this.bottomLeftContentBox =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left + borderLeftWidth + paddingLeft, bounds.top + leftHeight, Math.max(0, blh - (borderLeftWidth + paddingLeft)), blv - (borderBottomWidth + paddingBottom), CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + bounds.height - (borderBottomWidth + paddingBottom));\n }\n return BoundCurves;\n }());\n var CORNER;\n (function (CORNER) {\n CORNER[CORNER[\"TOP_LEFT\"] = 0] = \"TOP_LEFT\";\n CORNER[CORNER[\"TOP_RIGHT\"] = 1] = \"TOP_RIGHT\";\n CORNER[CORNER[\"BOTTOM_RIGHT\"] = 2] = \"BOTTOM_RIGHT\";\n CORNER[CORNER[\"BOTTOM_LEFT\"] = 3] = \"BOTTOM_LEFT\";\n })(CORNER || (CORNER = {}));\n var getCurvePoints = function (x, y, r1, r2, position) {\n var kappa = 4 * ((Math.sqrt(2) - 1) / 3);\n var ox = r1 * kappa; // control point offset horizontal\n var oy = r2 * kappa; // control point offset vertical\n var xm = x + r1; // x-middle\n var ym = y + r2; // y-middle\n switch (position) {\n case CORNER.TOP_LEFT:\n return new BezierCurve(new Vector(x, ym), new Vector(x, ym - oy), new Vector(xm - ox, y), new Vector(xm, y));\n case CORNER.TOP_RIGHT:\n return new BezierCurve(new Vector(x, y), new Vector(x + ox, y), new Vector(xm, ym - oy), new Vector(xm, ym));\n case CORNER.BOTTOM_RIGHT:\n return new BezierCurve(new Vector(xm, y), new Vector(xm, y + oy), new Vector(x + ox, ym), new Vector(x, ym));\n case CORNER.BOTTOM_LEFT:\n default:\n return new BezierCurve(new Vector(xm, ym), new Vector(xm - ox, ym), new Vector(x, y + oy), new Vector(x, y));\n }\n };\n var calculateBorderBoxPath = function (curves) {\n return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];\n };\n var calculateContentBoxPath = function (curves) {\n return [\n curves.topLeftContentBox,\n curves.topRightContentBox,\n curves.bottomRightContentBox,\n curves.bottomLeftContentBox\n ];\n };\n var calculatePaddingBoxPath = function (curves) {\n return [\n curves.topLeftPaddingBox,\n curves.topRightPaddingBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftPaddingBox\n ];\n };\n\n var TransformEffect = /** @class */ (function () {\n function TransformEffect(offsetX, offsetY, matrix) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n this.matrix = matrix;\n this.type = 0 /* TRANSFORM */;\n this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */;\n }\n return TransformEffect;\n }());\n var ClipEffect = /** @class */ (function () {\n function ClipEffect(path, target) {\n this.path = path;\n this.target = target;\n this.type = 1 /* CLIP */;\n }\n return ClipEffect;\n }());\n var OpacityEffect = /** @class */ (function () {\n function OpacityEffect(opacity) {\n this.opacity = opacity;\n this.type = 2 /* OPACITY */;\n this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */;\n }\n return OpacityEffect;\n }());\n var isTransformEffect = function (effect) {\n return effect.type === 0 /* TRANSFORM */;\n };\n var isClipEffect = function (effect) { return effect.type === 1 /* CLIP */; };\n var isOpacityEffect = function (effect) { return effect.type === 2 /* OPACITY */; };\n\n var equalPath = function (a, b) {\n if (a.length === b.length) {\n return a.some(function (v, i) { return v === b[i]; });\n }\n return false;\n };\n var transformPath = function (path, deltaX, deltaY, deltaW, deltaH) {\n return path.map(function (point, index) {\n switch (index) {\n case 0:\n return point.add(deltaX, deltaY);\n case 1:\n return point.add(deltaX + deltaW, deltaY);\n case 2:\n return point.add(deltaX + deltaW, deltaY + deltaH);\n case 3:\n return point.add(deltaX, deltaY + deltaH);\n }\n return point;\n });\n };\n\n var StackingContext = /** @class */ (function () {\n function StackingContext(container) {\n this.element = container;\n this.inlineLevel = [];\n this.nonInlineLevel = [];\n this.negativeZIndex = [];\n this.zeroOrAutoZIndexOrTransformedOrOpacity = [];\n this.positiveZIndex = [];\n this.nonPositionedFloats = [];\n this.nonPositionedInlineLevel = [];\n }\n return StackingContext;\n }());\n var ElementPaint = /** @class */ (function () {\n function ElementPaint(container, parent) {\n this.container = container;\n this.parent = parent;\n this.effects = [];\n this.curves = new BoundCurves(this.container);\n if (this.container.styles.opacity < 1) {\n this.effects.push(new OpacityEffect(this.container.styles.opacity));\n }\n if (this.container.styles.transform !== null) {\n var offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;\n var offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;\n var matrix = this.container.styles.transform;\n this.effects.push(new TransformEffect(offsetX, offsetY, matrix));\n }\n if (this.container.styles.overflowX !== 0 /* VISIBLE */) {\n var borderBox = calculateBorderBoxPath(this.curves);\n var paddingBox = calculatePaddingBoxPath(this.curves);\n if (equalPath(borderBox, paddingBox)) {\n this.effects.push(new ClipEffect(borderBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));\n }\n else {\n this.effects.push(new ClipEffect(borderBox, 2 /* BACKGROUND_BORDERS */));\n this.effects.push(new ClipEffect(paddingBox, 4 /* CONTENT */));\n }\n }\n }\n ElementPaint.prototype.getEffects = function (target) {\n var inFlow = [2 /* ABSOLUTE */, 3 /* FIXED */].indexOf(this.container.styles.position) === -1;\n var parent = this.parent;\n var effects = this.effects.slice(0);\n while (parent) {\n var croplessEffects = parent.effects.filter(function (effect) { return !isClipEffect(effect); });\n if (inFlow || parent.container.styles.position !== 0 /* STATIC */ || !parent.parent) {\n effects.unshift.apply(effects, croplessEffects);\n inFlow = [2 /* ABSOLUTE */, 3 /* FIXED */].indexOf(parent.container.styles.position) === -1;\n if (parent.container.styles.overflowX !== 0 /* VISIBLE */) {\n var borderBox = calculateBorderBoxPath(parent.curves);\n var paddingBox = calculatePaddingBoxPath(parent.curves);\n if (!equalPath(borderBox, paddingBox)) {\n effects.unshift(new ClipEffect(paddingBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));\n }\n }\n }\n else {\n effects.unshift.apply(effects, croplessEffects);\n }\n parent = parent.parent;\n }\n return effects.filter(function (effect) { return contains(effect.target, target); });\n };\n return ElementPaint;\n }());\n var parseStackTree = function (parent, stackingContext, realStackingContext, listItems) {\n parent.container.elements.forEach(function (child) {\n var treatAsRealStackingContext = contains(child.flags, 4 /* CREATES_REAL_STACKING_CONTEXT */);\n var createsStackingContext = contains(child.flags, 2 /* CREATES_STACKING_CONTEXT */);\n var paintContainer = new ElementPaint(child, parent);\n if (contains(child.styles.display, 2048 /* LIST_ITEM */)) {\n listItems.push(paintContainer);\n }\n var listOwnerItems = contains(child.flags, 8 /* IS_LIST_OWNER */) ? [] : listItems;\n if (treatAsRealStackingContext || createsStackingContext) {\n var parentStack = treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;\n var stack = new StackingContext(paintContainer);\n if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {\n var order_1 = child.styles.zIndex.order;\n if (order_1 < 0) {\n var index_1 = 0;\n parentStack.negativeZIndex.some(function (current, i) {\n if (order_1 > current.element.container.styles.zIndex.order) {\n index_1 = i;\n return false;\n }\n else if (index_1 > 0) {\n return true;\n }\n return false;\n });\n parentStack.negativeZIndex.splice(index_1, 0, stack);\n }\n else if (order_1 > 0) {\n var index_2 = 0;\n parentStack.positiveZIndex.some(function (current, i) {\n if (order_1 >= current.element.container.styles.zIndex.order) {\n index_2 = i + 1;\n return false;\n }\n else if (index_2 > 0) {\n return true;\n }\n return false;\n });\n parentStack.positiveZIndex.splice(index_2, 0, stack);\n }\n else {\n parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);\n }\n }\n else {\n if (child.styles.isFloating()) {\n parentStack.nonPositionedFloats.push(stack);\n }\n else {\n parentStack.nonPositionedInlineLevel.push(stack);\n }\n }\n parseStackTree(paintContainer, stack, treatAsRealStackingContext ? stack : realStackingContext, listOwnerItems);\n }\n else {\n if (child.styles.isInlineLevel()) {\n stackingContext.inlineLevel.push(paintContainer);\n }\n else {\n stackingContext.nonInlineLevel.push(paintContainer);\n }\n parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);\n }\n if (contains(child.flags, 8 /* IS_LIST_OWNER */)) {\n processListItems(child, listOwnerItems);\n }\n });\n };\n var processListItems = function (owner, elements) {\n var numbering = owner instanceof OLElementContainer ? owner.start : 1;\n var reversed = owner instanceof OLElementContainer ? owner.reversed : false;\n for (var i = 0; i < elements.length; i++) {\n var item = elements[i];\n if (item.container instanceof LIElementContainer &&\n typeof item.container.value === 'number' &&\n item.container.value !== 0) {\n numbering = item.container.value;\n }\n item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);\n numbering += reversed ? -1 : 1;\n }\n };\n var parseStackingContexts = function (container) {\n var paintContainer = new ElementPaint(container, null);\n var root = new StackingContext(paintContainer);\n var listItems = [];\n parseStackTree(paintContainer, root, root, listItems);\n processListItems(paintContainer.container, listItems);\n return root;\n };\n\n var parsePathForBorder = function (curves, borderSide) {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftPaddingBox, curves.topRightBorderBox, curves.topRightPaddingBox);\n case 1:\n return createPathFromCurves(curves.topRightBorderBox, curves.topRightPaddingBox, curves.bottomRightBorderBox, curves.bottomRightPaddingBox);\n case 2:\n return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox);\n case 3:\n default:\n return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox, curves.topLeftBorderBox, curves.topLeftPaddingBox);\n }\n };\n var parsePathForBorderDoubleOuter = function (curves, borderSide) {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox, curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox);\n case 1:\n return createPathFromCurves(curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox, curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox);\n case 2:\n return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox, curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox);\n case 3:\n default:\n return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox, curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox);\n }\n };\n var parsePathForBorderDoubleInner = function (curves, borderSide) {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox, curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox);\n case 1:\n return createPathFromCurves(curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox, curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox);\n case 2:\n return createPathFromCurves(curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox);\n case 3:\n default:\n return createPathFromCurves(curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox, curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox);\n }\n };\n var parsePathForBorderStroke = function (curves, borderSide) {\n switch (borderSide) {\n case 0:\n return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);\n case 1:\n return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);\n case 2:\n return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);\n case 3:\n default:\n return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);\n }\n };\n var createStrokePathFromCurves = function (outer1, outer2) {\n var path = [];\n if (isBezierCurve(outer1)) {\n path.push(outer1.subdivide(0.5, false));\n }\n else {\n path.push(outer1);\n }\n if (isBezierCurve(outer2)) {\n path.push(outer2.subdivide(0.5, true));\n }\n else {\n path.push(outer2);\n }\n return path;\n };\n var createPathFromCurves = function (outer1, inner1, outer2, inner2) {\n var path = [];\n if (isBezierCurve(outer1)) {\n path.push(outer1.subdivide(0.5, false));\n }\n else {\n path.push(outer1);\n }\n if (isBezierCurve(outer2)) {\n path.push(outer2.subdivide(0.5, true));\n }\n else {\n path.push(outer2);\n }\n if (isBezierCurve(inner2)) {\n path.push(inner2.subdivide(0.5, true).reverse());\n }\n else {\n path.push(inner2);\n }\n if (isBezierCurve(inner1)) {\n path.push(inner1.subdivide(0.5, false).reverse());\n }\n else {\n path.push(inner1);\n }\n return path;\n };\n\n var paddingBox = function (element) {\n var bounds = element.bounds;\n var styles = element.styles;\n return bounds.add(styles.borderLeftWidth, styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth), -(styles.borderTopWidth + styles.borderBottomWidth));\n };\n var contentBox = function (element) {\n var styles = element.styles;\n var bounds = element.bounds;\n var paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width);\n var paddingRight = getAbsoluteValue(styles.paddingRight, bounds.width);\n var paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width);\n var paddingBottom = getAbsoluteValue(styles.paddingBottom, bounds.width);\n return bounds.add(paddingLeft + styles.borderLeftWidth, paddingTop + styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft + paddingRight), -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop + paddingBottom));\n };\n\n var calculateBackgroundPositioningArea = function (backgroundOrigin, element) {\n if (backgroundOrigin === 0 /* BORDER_BOX */) {\n return element.bounds;\n }\n if (backgroundOrigin === 2 /* CONTENT_BOX */) {\n return contentBox(element);\n }\n return paddingBox(element);\n };\n var calculateBackgroundPaintingArea = function (backgroundClip, element) {\n if (backgroundClip === 0 /* BORDER_BOX */) {\n return element.bounds;\n }\n if (backgroundClip === 2 /* CONTENT_BOX */) {\n return contentBox(element);\n }\n return paddingBox(element);\n };\n var calculateBackgroundRendering = function (container, index, intrinsicSize) {\n var backgroundPositioningArea = calculateBackgroundPositioningArea(getBackgroundValueForIndex(container.styles.backgroundOrigin, index), container);\n var backgroundPaintingArea = calculateBackgroundPaintingArea(getBackgroundValueForIndex(container.styles.backgroundClip, index), container);\n var backgroundImageSize = calculateBackgroundSize(getBackgroundValueForIndex(container.styles.backgroundSize, index), intrinsicSize, backgroundPositioningArea);\n var sizeWidth = backgroundImageSize[0], sizeHeight = backgroundImageSize[1];\n var position = getAbsoluteValueForTuple(getBackgroundValueForIndex(container.styles.backgroundPosition, index), backgroundPositioningArea.width - sizeWidth, backgroundPositioningArea.height - sizeHeight);\n var path = calculateBackgroundRepeatPath(getBackgroundValueForIndex(container.styles.backgroundRepeat, index), position, backgroundImageSize, backgroundPositioningArea, backgroundPaintingArea);\n var offsetX = Math.round(backgroundPositioningArea.left + position[0]);\n var offsetY = Math.round(backgroundPositioningArea.top + position[1]);\n return [path, offsetX, offsetY, sizeWidth, sizeHeight];\n };\n var isAuto = function (token) { return isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO; };\n var hasIntrinsicValue = function (value) { return typeof value === 'number'; };\n var calculateBackgroundSize = function (size, _a, bounds) {\n var intrinsicWidth = _a[0], intrinsicHeight = _a[1], intrinsicProportion = _a[2];\n var first = size[0], second = size[1];\n if (!first) {\n return [0, 0];\n }\n if (isLengthPercentage(first) && second && isLengthPercentage(second)) {\n return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];\n }\n var hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);\n if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {\n if (hasIntrinsicValue(intrinsicProportion)) {\n var targetRatio = bounds.width / bounds.height;\n return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER)\n ? [bounds.width, bounds.width / intrinsicProportion]\n : [bounds.height * intrinsicProportion, bounds.height];\n }\n return [bounds.width, bounds.height];\n }\n var hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);\n var hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);\n var hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;\n // If the background-size is auto or auto auto:\n if (isAuto(first) && (!second || isAuto(second))) {\n // If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.\n if (hasIntrinsicWidth && hasIntrinsicHeight) {\n return [intrinsicWidth, intrinsicHeight];\n }\n // If the image has no intrinsic dimensions and has no intrinsic proportions,\n // it's rendered at the size of the background positioning area.\n if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {\n return [bounds.width, bounds.height];\n }\n // TODO If the image has no intrinsic dimensions but has intrinsic proportions, it's rendered as if contain had been specified instead.\n // If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.\n // The other dimension is computed using the specified dimension and the intrinsic proportions.\n if (hasIntrinsicDimensions && hasIntrinsicProportion) {\n var width_1 = hasIntrinsicWidth\n ? intrinsicWidth\n : intrinsicHeight * intrinsicProportion;\n var height_1 = hasIntrinsicHeight\n ? intrinsicHeight\n : intrinsicWidth / intrinsicProportion;\n return [width_1, height_1];\n }\n // If the image has only one intrinsic dimension but has no intrinsic proportions,\n // it's rendered using the specified dimension and the other dimension of the background positioning area.\n var width_2 = hasIntrinsicWidth ? intrinsicWidth : bounds.width;\n var height_2 = hasIntrinsicHeight ? intrinsicHeight : bounds.height;\n return [width_2, height_2];\n }\n // If the image has intrinsic proportions, it's stretched to the specified dimension.\n // The unspecified dimension is computed using the specified dimension and the intrinsic proportions.\n if (hasIntrinsicProportion) {\n var width_3 = 0;\n var height_3 = 0;\n if (isLengthPercentage(first)) {\n width_3 = getAbsoluteValue(first, bounds.width);\n }\n else if (isLengthPercentage(second)) {\n height_3 = getAbsoluteValue(second, bounds.height);\n }\n if (isAuto(first)) {\n width_3 = height_3 * intrinsicProportion;\n }\n else if (!second || isAuto(second)) {\n height_3 = width_3 / intrinsicProportion;\n }\n return [width_3, height_3];\n }\n // If the image has no intrinsic proportions, it's stretched to the specified dimension.\n // The unspecified dimension is computed using the image's corresponding intrinsic dimension,\n // if there is one. If there is no such intrinsic dimension,\n // it becomes the corresponding dimension of the background positioning area.\n var width = null;\n var height = null;\n if (isLengthPercentage(first)) {\n width = getAbsoluteValue(first, bounds.width);\n }\n else if (second && isLengthPercentage(second)) {\n height = getAbsoluteValue(second, bounds.height);\n }\n if (width !== null && (!second || isAuto(second))) {\n height =\n hasIntrinsicWidth && hasIntrinsicHeight\n ? (width / intrinsicWidth) * intrinsicHeight\n : bounds.height;\n }\n if (height !== null && isAuto(first)) {\n width =\n hasIntrinsicWidth && hasIntrinsicHeight\n ? (height / intrinsicHeight) * intrinsicWidth\n : bounds.width;\n }\n if (width !== null && height !== null) {\n return [width, height];\n }\n throw new Error(\"Unable to calculate background-size for element\");\n };\n var getBackgroundValueForIndex = function (values, index) {\n var value = values[index];\n if (typeof value === 'undefined') {\n return values[0];\n }\n return value;\n };\n var calculateBackgroundRepeatPath = function (repeat, _a, _b, backgroundPositioningArea, backgroundPaintingArea) {\n var x = _a[0], y = _a[1];\n var width = _b[0], height = _b[1];\n switch (repeat) {\n case 2 /* REPEAT_X */:\n return [\n new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),\n new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(backgroundPositioningArea.top + y)),\n new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(height + backgroundPositioningArea.top + y)),\n new Vector(Math.round(backgroundPositioningArea.left), Math.round(height + backgroundPositioningArea.top + y))\n ];\n case 3 /* REPEAT_Y */:\n return [\n new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),\n new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top)),\n new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)),\n new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top))\n ];\n case 1 /* NO_REPEAT */:\n return [\n new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y)),\n new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y)),\n new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y + height)),\n new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y + height))\n ];\n default:\n return [\n new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),\n new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.top)),\n new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)),\n new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top))\n ];\n }\n };\n\n var SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n\n var SAMPLE_TEXT = 'Hidden Text';\n var FontMetrics = /** @class */ (function () {\n function FontMetrics(document) {\n this._data = {};\n this._document = document;\n }\n FontMetrics.prototype.parseMetrics = function (fontFamily, fontSize) {\n var container = this._document.createElement('div');\n var img = this._document.createElement('img');\n var span = this._document.createElement('span');\n var body = this._document.body;\n container.style.visibility = 'hidden';\n container.style.fontFamily = fontFamily;\n container.style.fontSize = fontSize;\n container.style.margin = '0';\n container.style.padding = '0';\n container.style.whiteSpace = 'nowrap';\n body.appendChild(container);\n img.src = SMALL_IMAGE;\n img.width = 1;\n img.height = 1;\n img.style.margin = '0';\n img.style.padding = '0';\n img.style.verticalAlign = 'baseline';\n span.style.fontFamily = fontFamily;\n span.style.fontSize = fontSize;\n span.style.margin = '0';\n span.style.padding = '0';\n span.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n container.appendChild(span);\n container.appendChild(img);\n var baseline = img.offsetTop - span.offsetTop + 2;\n container.removeChild(span);\n container.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n container.style.lineHeight = 'normal';\n img.style.verticalAlign = 'super';\n var middle = img.offsetTop - container.offsetTop + 2;\n body.removeChild(container);\n return { baseline: baseline, middle: middle };\n };\n FontMetrics.prototype.getMetrics = function (fontFamily, fontSize) {\n var key = fontFamily + \" \" + fontSize;\n if (typeof this._data[key] === 'undefined') {\n this._data[key] = this.parseMetrics(fontFamily, fontSize);\n }\n return this._data[key];\n };\n return FontMetrics;\n }());\n\n var Renderer = /** @class */ (function () {\n function Renderer(context, options) {\n this.context = context;\n this.options = options;\n }\n return Renderer;\n }());\n\n var MASK_OFFSET = 10000;\n var CanvasRenderer = /** @class */ (function (_super) {\n __extends(CanvasRenderer, _super);\n function CanvasRenderer(context, options) {\n var _this = _super.call(this, context, options) || this;\n _this._activeEffects = [];\n _this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n _this.ctx = _this.canvas.getContext('2d');\n if (!options.canvas) {\n _this.canvas.width = Math.floor(options.width * options.scale);\n _this.canvas.height = Math.floor(options.height * options.scale);\n _this.canvas.style.width = options.width + \"px\";\n _this.canvas.style.height = options.height + \"px\";\n }\n _this.fontMetrics = new FontMetrics(document);\n _this.ctx.scale(_this.options.scale, _this.options.scale);\n _this.ctx.translate(-options.x, -options.y);\n _this.ctx.textBaseline = 'bottom';\n _this._activeEffects = [];\n _this.context.logger.debug(\"Canvas renderer initialized (\" + options.width + \"x\" + options.height + \") with scale \" + options.scale);\n return _this;\n }\n CanvasRenderer.prototype.applyEffects = function (effects) {\n var _this = this;\n while (this._activeEffects.length) {\n this.popEffect();\n }\n effects.forEach(function (effect) { return _this.applyEffect(effect); });\n };\n CanvasRenderer.prototype.applyEffect = function (effect) {\n this.ctx.save();\n if (isOpacityEffect(effect)) {\n this.ctx.globalAlpha = effect.opacity;\n }\n if (isTransformEffect(effect)) {\n this.ctx.translate(effect.offsetX, effect.offsetY);\n this.ctx.transform(effect.matrix[0], effect.matrix[1], effect.matrix[2], effect.matrix[3], effect.matrix[4], effect.matrix[5]);\n this.ctx.translate(-effect.offsetX, -effect.offsetY);\n }\n if (isClipEffect(effect)) {\n this.path(effect.path);\n this.ctx.clip();\n }\n this._activeEffects.push(effect);\n };\n CanvasRenderer.prototype.popEffect = function () {\n this._activeEffects.pop();\n this.ctx.restore();\n };\n CanvasRenderer.prototype.renderStack = function (stack) {\n return __awaiter(this, void 0, void 0, function () {\n var styles;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n styles = stack.element.container.styles;\n if (!styles.isVisible()) return [3 /*break*/, 2];\n return [4 /*yield*/, this.renderStackContent(stack)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n CanvasRenderer.prototype.renderNode = function (paint) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (contains(paint.container.flags, 16 /* DEBUG_RENDER */)) {\n debugger;\n }\n if (!paint.container.styles.isVisible()) return [3 /*break*/, 3];\n return [4 /*yield*/, this.renderNodeBackgroundAndBorders(paint)];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.renderNodeContent(paint)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n CanvasRenderer.prototype.renderTextWithLetterSpacing = function (text, letterSpacing, baseline) {\n var _this = this;\n if (letterSpacing === 0) {\n this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);\n }\n else {\n var letters = segmentGraphemes(text.text);\n letters.reduce(function (left, letter) {\n _this.ctx.fillText(letter, left, text.bounds.top + baseline);\n return left + _this.ctx.measureText(letter).width;\n }, text.bounds.left);\n }\n };\n CanvasRenderer.prototype.createFontStyle = function (styles) {\n var fontVariant = styles.fontVariant\n .filter(function (variant) { return variant === 'normal' || variant === 'small-caps'; })\n .join('');\n var fontFamily = fixIOSSystemFonts(styles.fontFamily).join(', ');\n var fontSize = isDimensionToken(styles.fontSize)\n ? \"\" + styles.fontSize.number + styles.fontSize.unit\n : styles.fontSize.number + \"px\";\n return [\n [styles.fontStyle, fontVariant, styles.fontWeight, fontSize, fontFamily].join(' '),\n fontFamily,\n fontSize\n ];\n };\n CanvasRenderer.prototype.renderTextNode = function (text, styles) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, font, fontFamily, fontSize, _b, baseline, middle, paintOrder;\n var _this = this;\n return __generator(this, function (_c) {\n _a = this.createFontStyle(styles), font = _a[0], fontFamily = _a[1], fontSize = _a[2];\n this.ctx.font = font;\n this.ctx.direction = styles.direction === 1 /* RTL */ ? 'rtl' : 'ltr';\n this.ctx.textAlign = 'left';\n this.ctx.textBaseline = 'alphabetic';\n _b = this.fontMetrics.getMetrics(fontFamily, fontSize), baseline = _b.baseline, middle = _b.middle;\n paintOrder = styles.paintOrder;\n text.textBounds.forEach(function (text) {\n paintOrder.forEach(function (paintOrderLayer) {\n switch (paintOrderLayer) {\n case 0 /* FILL */:\n _this.ctx.fillStyle = asString(styles.color);\n _this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n var textShadows = styles.textShadow;\n if (textShadows.length && text.text.trim().length) {\n textShadows\n .slice(0)\n .reverse()\n .forEach(function (textShadow) {\n _this.ctx.shadowColor = asString(textShadow.color);\n _this.ctx.shadowOffsetX = textShadow.offsetX.number * _this.options.scale;\n _this.ctx.shadowOffsetY = textShadow.offsetY.number * _this.options.scale;\n _this.ctx.shadowBlur = textShadow.blur.number;\n _this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n });\n _this.ctx.shadowColor = '';\n _this.ctx.shadowOffsetX = 0;\n _this.ctx.shadowOffsetY = 0;\n _this.ctx.shadowBlur = 0;\n }\n if (styles.textDecorationLine.length) {\n _this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);\n styles.textDecorationLine.forEach(function (textDecorationLine) {\n switch (textDecorationLine) {\n case 1 /* UNDERLINE */:\n // Draws a line at the baseline of the font\n // TODO As some browsers display the line as more than 1px if the font-size is big,\n // need to take that into account both in position and size\n _this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top + baseline), text.bounds.width, 1);\n break;\n case 2 /* OVERLINE */:\n _this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top), text.bounds.width, 1);\n break;\n case 3 /* LINE_THROUGH */:\n // TODO try and find exact position for line-through\n _this.ctx.fillRect(text.bounds.left, Math.ceil(text.bounds.top + middle), text.bounds.width, 1);\n break;\n }\n });\n }\n break;\n case 1 /* STROKE */:\n if (styles.webkitTextStrokeWidth && text.text.trim().length) {\n _this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);\n _this.ctx.lineWidth = styles.webkitTextStrokeWidth;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.ctx.lineJoin = !!window.chrome ? 'miter' : 'round';\n _this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + baseline);\n }\n _this.ctx.strokeStyle = '';\n _this.ctx.lineWidth = 0;\n _this.ctx.lineJoin = 'miter';\n break;\n }\n });\n });\n return [2 /*return*/];\n });\n });\n };\n CanvasRenderer.prototype.renderReplacedElement = function (container, curves, image) {\n if (image && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {\n var box = contentBox(container);\n var path = calculatePaddingBoxPath(curves);\n this.path(path);\n this.ctx.save();\n this.ctx.clip();\n this.ctx.drawImage(image, 0, 0, container.intrinsicWidth, container.intrinsicHeight, box.left, box.top, box.width, box.height);\n this.ctx.restore();\n }\n };\n CanvasRenderer.prototype.renderNodeContent = function (paint) {\n return __awaiter(this, void 0, void 0, function () {\n var container, curves, styles, _i, _a, child, image, image, iframeRenderer, canvas, size, _b, fontFamily, fontSize, baseline, bounds, x, textBounds, img, image, url, fontFamily, bounds;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n this.applyEffects(paint.getEffects(4 /* CONTENT */));\n container = paint.container;\n curves = paint.curves;\n styles = container.styles;\n _i = 0, _a = container.textNodes;\n _c.label = 1;\n case 1:\n if (!(_i < _a.length)) return [3 /*break*/, 4];\n child = _a[_i];\n return [4 /*yield*/, this.renderTextNode(child, styles)];\n case 2:\n _c.sent();\n _c.label = 3;\n case 3:\n _i++;\n return [3 /*break*/, 1];\n case 4:\n if (!(container instanceof ImageElementContainer)) return [3 /*break*/, 8];\n _c.label = 5;\n case 5:\n _c.trys.push([5, 7, , 8]);\n return [4 /*yield*/, this.context.cache.match(container.src)];\n case 6:\n image = _c.sent();\n this.renderReplacedElement(container, curves, image);\n return [3 /*break*/, 8];\n case 7:\n _c.sent();\n this.context.logger.error(\"Error loading image \" + container.src);\n return [3 /*break*/, 8];\n case 8:\n if (container instanceof CanvasElementContainer) {\n this.renderReplacedElement(container, curves, container.canvas);\n }\n if (!(container instanceof SVGElementContainer)) return [3 /*break*/, 12];\n _c.label = 9;\n case 9:\n _c.trys.push([9, 11, , 12]);\n return [4 /*yield*/, this.context.cache.match(container.svg)];\n case 10:\n image = _c.sent();\n this.renderReplacedElement(container, curves, image);\n return [3 /*break*/, 12];\n case 11:\n _c.sent();\n this.context.logger.error(\"Error loading svg \" + container.svg.substring(0, 255));\n return [3 /*break*/, 12];\n case 12:\n if (!(container instanceof IFrameElementContainer && container.tree)) return [3 /*break*/, 14];\n iframeRenderer = new CanvasRenderer(this.context, {\n scale: this.options.scale,\n backgroundColor: container.backgroundColor,\n x: 0,\n y: 0,\n width: container.width,\n height: container.height\n });\n return [4 /*yield*/, iframeRenderer.render(container.tree)];\n case 13:\n canvas = _c.sent();\n if (container.width && container.height) {\n this.ctx.drawImage(canvas, 0, 0, container.width, container.height, container.bounds.left, container.bounds.top, container.bounds.width, container.bounds.height);\n }\n _c.label = 14;\n case 14:\n if (container instanceof InputElementContainer) {\n size = Math.min(container.bounds.width, container.bounds.height);\n if (container.type === CHECKBOX) {\n if (container.checked) {\n this.ctx.save();\n this.path([\n new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),\n new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),\n new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),\n new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),\n new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),\n new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),\n new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)\n ]);\n this.ctx.fillStyle = asString(INPUT_COLOR);\n this.ctx.fill();\n this.ctx.restore();\n }\n }\n else if (container.type === RADIO) {\n if (container.checked) {\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.arc(container.bounds.left + size / 2, container.bounds.top + size / 2, size / 4, 0, Math.PI * 2, true);\n this.ctx.fillStyle = asString(INPUT_COLOR);\n this.ctx.fill();\n this.ctx.restore();\n }\n }\n }\n if (isTextInputElement(container) && container.value.length) {\n _b = this.createFontStyle(styles), fontFamily = _b[0], fontSize = _b[1];\n baseline = this.fontMetrics.getMetrics(fontFamily, fontSize).baseline;\n this.ctx.font = fontFamily;\n this.ctx.fillStyle = asString(styles.color);\n this.ctx.textBaseline = 'alphabetic';\n this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);\n bounds = contentBox(container);\n x = 0;\n switch (container.styles.textAlign) {\n case 1 /* CENTER */:\n x += bounds.width / 2;\n break;\n case 2 /* RIGHT */:\n x += bounds.width;\n break;\n }\n textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);\n this.ctx.save();\n this.path([\n new Vector(bounds.left, bounds.top),\n new Vector(bounds.left + bounds.width, bounds.top),\n new Vector(bounds.left + bounds.width, bounds.top + bounds.height),\n new Vector(bounds.left, bounds.top + bounds.height)\n ]);\n this.ctx.clip();\n this.renderTextWithLetterSpacing(new TextBounds(container.value, textBounds), styles.letterSpacing, baseline);\n this.ctx.restore();\n this.ctx.textBaseline = 'alphabetic';\n this.ctx.textAlign = 'left';\n }\n if (!contains(container.styles.display, 2048 /* LIST_ITEM */)) return [3 /*break*/, 20];\n if (!(container.styles.listStyleImage !== null)) return [3 /*break*/, 19];\n img = container.styles.listStyleImage;\n if (!(img.type === 0 /* URL */)) return [3 /*break*/, 18];\n image = void 0;\n url = img.url;\n _c.label = 15;\n case 15:\n _c.trys.push([15, 17, , 18]);\n return [4 /*yield*/, this.context.cache.match(url)];\n case 16:\n image = _c.sent();\n this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top);\n return [3 /*break*/, 18];\n case 17:\n _c.sent();\n this.context.logger.error(\"Error loading list-style-image \" + url);\n return [3 /*break*/, 18];\n case 18: return [3 /*break*/, 20];\n case 19:\n if (paint.listValue && container.styles.listStyleType !== -1 /* NONE */) {\n fontFamily = this.createFontStyle(styles)[0];\n this.ctx.font = fontFamily;\n this.ctx.fillStyle = asString(styles.color);\n this.ctx.textBaseline = 'middle';\n this.ctx.textAlign = 'right';\n bounds = new Bounds(container.bounds.left, container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width), container.bounds.width, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1);\n this.renderTextWithLetterSpacing(new TextBounds(paint.listValue, bounds), styles.letterSpacing, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2);\n this.ctx.textBaseline = 'bottom';\n this.ctx.textAlign = 'left';\n }\n _c.label = 20;\n case 20: return [2 /*return*/];\n }\n });\n });\n };\n CanvasRenderer.prototype.renderStackContent = function (stack) {\n return __awaiter(this, void 0, void 0, function () {\n var _i, _a, child, _b, _c, child, _d, _e, child, _f, _g, child, _h, _j, child, _k, _l, child, _m, _o, child;\n return __generator(this, function (_p) {\n switch (_p.label) {\n case 0:\n if (contains(stack.element.container.flags, 16 /* DEBUG_RENDER */)) {\n debugger;\n }\n // https://www.w3.org/TR/css-position-3/#painting-order\n // 1. the background and borders of the element forming the stacking context.\n return [4 /*yield*/, this.renderNodeBackgroundAndBorders(stack.element)];\n case 1:\n // https://www.w3.org/TR/css-position-3/#painting-order\n // 1. the background and borders of the element forming the stacking context.\n _p.sent();\n _i = 0, _a = stack.negativeZIndex;\n _p.label = 2;\n case 2:\n if (!(_i < _a.length)) return [3 /*break*/, 5];\n child = _a[_i];\n return [4 /*yield*/, this.renderStack(child)];\n case 3:\n _p.sent();\n _p.label = 4;\n case 4:\n _i++;\n return [3 /*break*/, 2];\n case 5: \n // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n return [4 /*yield*/, this.renderNodeContent(stack.element)];\n case 6:\n // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n _p.sent();\n _b = 0, _c = stack.nonInlineLevel;\n _p.label = 7;\n case 7:\n if (!(_b < _c.length)) return [3 /*break*/, 10];\n child = _c[_b];\n return [4 /*yield*/, this.renderNode(child)];\n case 8:\n _p.sent();\n _p.label = 9;\n case 9:\n _b++;\n return [3 /*break*/, 7];\n case 10:\n _d = 0, _e = stack.nonPositionedFloats;\n _p.label = 11;\n case 11:\n if (!(_d < _e.length)) return [3 /*break*/, 14];\n child = _e[_d];\n return [4 /*yield*/, this.renderStack(child)];\n case 12:\n _p.sent();\n _p.label = 13;\n case 13:\n _d++;\n return [3 /*break*/, 11];\n case 14:\n _f = 0, _g = stack.nonPositionedInlineLevel;\n _p.label = 15;\n case 15:\n if (!(_f < _g.length)) return [3 /*break*/, 18];\n child = _g[_f];\n return [4 /*yield*/, this.renderStack(child)];\n case 16:\n _p.sent();\n _p.label = 17;\n case 17:\n _f++;\n return [3 /*break*/, 15];\n case 18:\n _h = 0, _j = stack.inlineLevel;\n _p.label = 19;\n case 19:\n if (!(_h < _j.length)) return [3 /*break*/, 22];\n child = _j[_h];\n return [4 /*yield*/, this.renderNode(child)];\n case 20:\n _p.sent();\n _p.label = 21;\n case 21:\n _h++;\n return [3 /*break*/, 19];\n case 22:\n _k = 0, _l = stack.zeroOrAutoZIndexOrTransformedOrOpacity;\n _p.label = 23;\n case 23:\n if (!(_k < _l.length)) return [3 /*break*/, 26];\n child = _l[_k];\n return [4 /*yield*/, this.renderStack(child)];\n case 24:\n _p.sent();\n _p.label = 25;\n case 25:\n _k++;\n return [3 /*break*/, 23];\n case 26:\n _m = 0, _o = stack.positiveZIndex;\n _p.label = 27;\n case 27:\n if (!(_m < _o.length)) return [3 /*break*/, 30];\n child = _o[_m];\n return [4 /*yield*/, this.renderStack(child)];\n case 28:\n _p.sent();\n _p.label = 29;\n case 29:\n _m++;\n return [3 /*break*/, 27];\n case 30: return [2 /*return*/];\n }\n });\n });\n };\n CanvasRenderer.prototype.mask = function (paths) {\n this.ctx.beginPath();\n this.ctx.moveTo(0, 0);\n this.ctx.lineTo(this.canvas.width, 0);\n this.ctx.lineTo(this.canvas.width, this.canvas.height);\n this.ctx.lineTo(0, this.canvas.height);\n this.ctx.lineTo(0, 0);\n this.formatPath(paths.slice(0).reverse());\n this.ctx.closePath();\n };\n CanvasRenderer.prototype.path = function (paths) {\n this.ctx.beginPath();\n this.formatPath(paths);\n this.ctx.closePath();\n };\n CanvasRenderer.prototype.formatPath = function (paths) {\n var _this = this;\n paths.forEach(function (point, index) {\n var start = isBezierCurve(point) ? point.start : point;\n if (index === 0) {\n _this.ctx.moveTo(start.x, start.y);\n }\n else {\n _this.ctx.lineTo(start.x, start.y);\n }\n if (isBezierCurve(point)) {\n _this.ctx.bezierCurveTo(point.startControl.x, point.startControl.y, point.endControl.x, point.endControl.y, point.end.x, point.end.y);\n }\n });\n };\n CanvasRenderer.prototype.renderRepeat = function (path, pattern, offsetX, offsetY) {\n this.path(path);\n this.ctx.fillStyle = pattern;\n this.ctx.translate(offsetX, offsetY);\n this.ctx.fill();\n this.ctx.translate(-offsetX, -offsetY);\n };\n CanvasRenderer.prototype.resizeImage = function (image, width, height) {\n var _a;\n if (image.width === width && image.height === height) {\n return image;\n }\n var ownerDocument = (_a = this.canvas.ownerDocument) !== null && _a !== void 0 ? _a : document;\n var canvas = ownerDocument.createElement('canvas');\n canvas.width = Math.max(1, width);\n canvas.height = Math.max(1, height);\n var ctx = canvas.getContext('2d');\n ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height);\n return canvas;\n };\n CanvasRenderer.prototype.renderBackgroundImage = function (container) {\n return __awaiter(this, void 0, void 0, function () {\n var index, _loop_1, this_1, _i, _a, backgroundImage;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n index = container.styles.backgroundImage.length - 1;\n _loop_1 = function (backgroundImage) {\n var image, url, _c, path, x, y, width, height, pattern, _d, path, x, y, width, height, _e, lineLength, x0, x1, y0, y1, canvas, ctx, gradient_1, pattern, _f, path, left, top_1, width, height, position, x, y, _g, rx, ry, radialGradient_1, midX, midY, f, invF;\n return __generator(this, function (_h) {\n switch (_h.label) {\n case 0:\n if (!(backgroundImage.type === 0 /* URL */)) return [3 /*break*/, 5];\n image = void 0;\n url = backgroundImage.url;\n _h.label = 1;\n case 1:\n _h.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this_1.context.cache.match(url)];\n case 2:\n image = _h.sent();\n return [3 /*break*/, 4];\n case 3:\n _h.sent();\n this_1.context.logger.error(\"Error loading background-image \" + url);\n return [3 /*break*/, 4];\n case 4:\n if (image) {\n _c = calculateBackgroundRendering(container, index, [\n image.width,\n image.height,\n image.width / image.height\n ]), path = _c[0], x = _c[1], y = _c[2], width = _c[3], height = _c[4];\n pattern = this_1.ctx.createPattern(this_1.resizeImage(image, width, height), 'repeat');\n this_1.renderRepeat(path, pattern, x, y);\n }\n return [3 /*break*/, 6];\n case 5:\n if (isLinearGradient(backgroundImage)) {\n _d = calculateBackgroundRendering(container, index, [null, null, null]), path = _d[0], x = _d[1], y = _d[2], width = _d[3], height = _d[4];\n _e = calculateGradientDirection(backgroundImage.angle, width, height), lineLength = _e[0], x0 = _e[1], x1 = _e[2], y0 = _e[3], y1 = _e[4];\n canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n ctx = canvas.getContext('2d');\n gradient_1 = ctx.createLinearGradient(x0, y0, x1, y1);\n processColorStops(backgroundImage.stops, lineLength).forEach(function (colorStop) {\n return gradient_1.addColorStop(colorStop.stop, asString(colorStop.color));\n });\n ctx.fillStyle = gradient_1;\n ctx.fillRect(0, 0, width, height);\n if (width > 0 && height > 0) {\n pattern = this_1.ctx.createPattern(canvas, 'repeat');\n this_1.renderRepeat(path, pattern, x, y);\n }\n }\n else if (isRadialGradient(backgroundImage)) {\n _f = calculateBackgroundRendering(container, index, [\n null,\n null,\n null\n ]), path = _f[0], left = _f[1], top_1 = _f[2], width = _f[3], height = _f[4];\n position = backgroundImage.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage.position;\n x = getAbsoluteValue(position[0], width);\n y = getAbsoluteValue(position[position.length - 1], height);\n _g = calculateRadius(backgroundImage, x, y, width, height), rx = _g[0], ry = _g[1];\n if (rx > 0 && ry > 0) {\n radialGradient_1 = this_1.ctx.createRadialGradient(left + x, top_1 + y, 0, left + x, top_1 + y, rx);\n processColorStops(backgroundImage.stops, rx * 2).forEach(function (colorStop) {\n return radialGradient_1.addColorStop(colorStop.stop, asString(colorStop.color));\n });\n this_1.path(path);\n this_1.ctx.fillStyle = radialGradient_1;\n if (rx !== ry) {\n midX = container.bounds.left + 0.5 * container.bounds.width;\n midY = container.bounds.top + 0.5 * container.bounds.height;\n f = ry / rx;\n invF = 1 / f;\n this_1.ctx.save();\n this_1.ctx.translate(midX, midY);\n this_1.ctx.transform(1, 0, 0, f, 0, 0);\n this_1.ctx.translate(-midX, -midY);\n this_1.ctx.fillRect(left, invF * (top_1 - midY) + midY, width, height * invF);\n this_1.ctx.restore();\n }\n else {\n this_1.ctx.fill();\n }\n }\n }\n _h.label = 6;\n case 6:\n index--;\n return [2 /*return*/];\n }\n });\n };\n this_1 = this;\n _i = 0, _a = container.styles.backgroundImage.slice(0).reverse();\n _b.label = 1;\n case 1:\n if (!(_i < _a.length)) return [3 /*break*/, 4];\n backgroundImage = _a[_i];\n return [5 /*yield**/, _loop_1(backgroundImage)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n _i++;\n return [3 /*break*/, 1];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n CanvasRenderer.prototype.renderSolidBorder = function (color, side, curvePoints) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.path(parsePathForBorder(curvePoints, side));\n this.ctx.fillStyle = asString(color);\n this.ctx.fill();\n return [2 /*return*/];\n });\n });\n };\n CanvasRenderer.prototype.renderDoubleBorder = function (color, width, side, curvePoints) {\n return __awaiter(this, void 0, void 0, function () {\n var outerPaths, innerPaths;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(width < 3)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.renderSolidBorder(color, side, curvePoints)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n case 2:\n outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);\n this.path(outerPaths);\n this.ctx.fillStyle = asString(color);\n this.ctx.fill();\n innerPaths = parsePathForBorderDoubleInner(curvePoints, side);\n this.path(innerPaths);\n this.ctx.fill();\n return [2 /*return*/];\n }\n });\n });\n };\n CanvasRenderer.prototype.renderNodeBackgroundAndBorders = function (paint) {\n return __awaiter(this, void 0, void 0, function () {\n var styles, hasBackground, borders, backgroundPaintingArea, side, _i, borders_1, border;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.applyEffects(paint.getEffects(2 /* BACKGROUND_BORDERS */));\n styles = paint.container.styles;\n hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;\n borders = [\n { style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth },\n { style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth },\n { style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth },\n { style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth }\n ];\n backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(getBackgroundValueForIndex(styles.backgroundClip, 0), paint.curves);\n if (!(hasBackground || styles.boxShadow.length)) return [3 /*break*/, 2];\n this.ctx.save();\n this.path(backgroundPaintingArea);\n this.ctx.clip();\n if (!isTransparent(styles.backgroundColor)) {\n this.ctx.fillStyle = asString(styles.backgroundColor);\n this.ctx.fill();\n }\n return [4 /*yield*/, this.renderBackgroundImage(paint.container)];\n case 1:\n _a.sent();\n this.ctx.restore();\n styles.boxShadow\n .slice(0)\n .reverse()\n .forEach(function (shadow) {\n _this.ctx.save();\n var borderBoxArea = calculateBorderBoxPath(paint.curves);\n var maskOffset = shadow.inset ? 0 : MASK_OFFSET;\n var shadowPaintingArea = transformPath(borderBoxArea, -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number, (shadow.inset ? 1 : -1) * shadow.spread.number, shadow.spread.number * (shadow.inset ? -2 : 2), shadow.spread.number * (shadow.inset ? -2 : 2));\n if (shadow.inset) {\n _this.path(borderBoxArea);\n _this.ctx.clip();\n _this.mask(shadowPaintingArea);\n }\n else {\n _this.mask(borderBoxArea);\n _this.ctx.clip();\n _this.path(shadowPaintingArea);\n }\n _this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;\n _this.ctx.shadowOffsetY = shadow.offsetY.number;\n _this.ctx.shadowColor = asString(shadow.color);\n _this.ctx.shadowBlur = shadow.blur.number;\n _this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)';\n _this.ctx.fill();\n _this.ctx.restore();\n });\n _a.label = 2;\n case 2:\n side = 0;\n _i = 0, borders_1 = borders;\n _a.label = 3;\n case 3:\n if (!(_i < borders_1.length)) return [3 /*break*/, 13];\n border = borders_1[_i];\n if (!(border.style !== 0 /* NONE */ && !isTransparent(border.color) && border.width > 0)) return [3 /*break*/, 11];\n if (!(border.style === 2 /* DASHED */)) return [3 /*break*/, 5];\n return [4 /*yield*/, this.renderDashedDottedBorder(border.color, border.width, side, paint.curves, 2 /* DASHED */)];\n case 4:\n _a.sent();\n return [3 /*break*/, 11];\n case 5:\n if (!(border.style === 3 /* DOTTED */)) return [3 /*break*/, 7];\n return [4 /*yield*/, this.renderDashedDottedBorder(border.color, border.width, side, paint.curves, 3 /* DOTTED */)];\n case 6:\n _a.sent();\n return [3 /*break*/, 11];\n case 7:\n if (!(border.style === 4 /* DOUBLE */)) return [3 /*break*/, 9];\n return [4 /*yield*/, this.renderDoubleBorder(border.color, border.width, side, paint.curves)];\n case 8:\n _a.sent();\n return [3 /*break*/, 11];\n case 9: return [4 /*yield*/, this.renderSolidBorder(border.color, side, paint.curves)];\n case 10:\n _a.sent();\n _a.label = 11;\n case 11:\n side++;\n _a.label = 12;\n case 12:\n _i++;\n return [3 /*break*/, 3];\n case 13: return [2 /*return*/];\n }\n });\n });\n };\n CanvasRenderer.prototype.renderDashedDottedBorder = function (color, width, side, curvePoints, style) {\n return __awaiter(this, void 0, void 0, function () {\n var strokePaths, boxPaths, startX, startY, endX, endY, length, dashLength, spaceLength, useLineDash, multiplier, numberOfDashes, minSpace, maxSpace, path1, path2, path1, path2;\n return __generator(this, function (_a) {\n this.ctx.save();\n strokePaths = parsePathForBorderStroke(curvePoints, side);\n boxPaths = parsePathForBorder(curvePoints, side);\n if (style === 2 /* DASHED */) {\n this.path(boxPaths);\n this.ctx.clip();\n }\n if (isBezierCurve(boxPaths[0])) {\n startX = boxPaths[0].start.x;\n startY = boxPaths[0].start.y;\n }\n else {\n startX = boxPaths[0].x;\n startY = boxPaths[0].y;\n }\n if (isBezierCurve(boxPaths[1])) {\n endX = boxPaths[1].end.x;\n endY = boxPaths[1].end.y;\n }\n else {\n endX = boxPaths[1].x;\n endY = boxPaths[1].y;\n }\n if (side === 0 || side === 2) {\n length = Math.abs(startX - endX);\n }\n else {\n length = Math.abs(startY - endY);\n }\n this.ctx.beginPath();\n if (style === 3 /* DOTTED */) {\n this.formatPath(strokePaths);\n }\n else {\n this.formatPath(boxPaths.slice(0, 2));\n }\n dashLength = width < 3 ? width * 3 : width * 2;\n spaceLength = width < 3 ? width * 2 : width;\n if (style === 3 /* DOTTED */) {\n dashLength = width;\n spaceLength = width;\n }\n useLineDash = true;\n if (length <= dashLength * 2) {\n useLineDash = false;\n }\n else if (length <= dashLength * 2 + spaceLength) {\n multiplier = length / (2 * dashLength + spaceLength);\n dashLength *= multiplier;\n spaceLength *= multiplier;\n }\n else {\n numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));\n minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);\n maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;\n spaceLength =\n maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace)\n ? minSpace\n : maxSpace;\n }\n if (useLineDash) {\n if (style === 3 /* DOTTED */) {\n this.ctx.setLineDash([0, dashLength + spaceLength]);\n }\n else {\n this.ctx.setLineDash([dashLength, spaceLength]);\n }\n }\n if (style === 3 /* DOTTED */) {\n this.ctx.lineCap = 'round';\n this.ctx.lineWidth = width;\n }\n else {\n this.ctx.lineWidth = width * 2 + 1.1;\n }\n this.ctx.strokeStyle = asString(color);\n this.ctx.stroke();\n this.ctx.setLineDash([]);\n // dashed round edge gap\n if (style === 2 /* DASHED */) {\n if (isBezierCurve(boxPaths[0])) {\n path1 = boxPaths[3];\n path2 = boxPaths[0];\n this.ctx.beginPath();\n this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n this.ctx.stroke();\n }\n if (isBezierCurve(boxPaths[1])) {\n path1 = boxPaths[1];\n path2 = boxPaths[2];\n this.ctx.beginPath();\n this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n this.ctx.stroke();\n }\n }\n this.ctx.restore();\n return [2 /*return*/];\n });\n });\n };\n CanvasRenderer.prototype.render = function (element) {\n return __awaiter(this, void 0, void 0, function () {\n var stack;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = asString(this.options.backgroundColor);\n this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);\n }\n stack = parseStackingContexts(element);\n return [4 /*yield*/, this.renderStack(stack)];\n case 1:\n _a.sent();\n this.applyEffects([]);\n return [2 /*return*/, this.canvas];\n }\n });\n });\n };\n return CanvasRenderer;\n }(Renderer));\n var isTextInputElement = function (container) {\n if (container instanceof TextareaElementContainer) {\n return true;\n }\n else if (container instanceof SelectElementContainer) {\n return true;\n }\n else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {\n return true;\n }\n return false;\n };\n var calculateBackgroundCurvedPaintingArea = function (clip, curves) {\n switch (clip) {\n case 0 /* BORDER_BOX */:\n return calculateBorderBoxPath(curves);\n case 2 /* CONTENT_BOX */:\n return calculateContentBoxPath(curves);\n case 1 /* PADDING_BOX */:\n default:\n return calculatePaddingBoxPath(curves);\n }\n };\n var canvasTextAlign = function (textAlign) {\n switch (textAlign) {\n case 1 /* CENTER */:\n return 'center';\n case 2 /* RIGHT */:\n return 'right';\n case 0 /* LEFT */:\n default:\n return 'left';\n }\n };\n // see https://github.com/niklasvh/html2canvas/pull/2645\n var iOSBrokenFonts = ['-apple-system', 'system-ui'];\n var fixIOSSystemFonts = function (fontFamilies) {\n return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent)\n ? fontFamilies.filter(function (fontFamily) { return iOSBrokenFonts.indexOf(fontFamily) === -1; })\n : fontFamilies;\n };\n\n var ForeignObjectRenderer = /** @class */ (function (_super) {\n __extends(ForeignObjectRenderer, _super);\n function ForeignObjectRenderer(context, options) {\n var _this = _super.call(this, context, options) || this;\n _this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n _this.ctx = _this.canvas.getContext('2d');\n _this.options = options;\n _this.canvas.width = Math.floor(options.width * options.scale);\n _this.canvas.height = Math.floor(options.height * options.scale);\n _this.canvas.style.width = options.width + \"px\";\n _this.canvas.style.height = options.height + \"px\";\n _this.ctx.scale(_this.options.scale, _this.options.scale);\n _this.ctx.translate(-options.x, -options.y);\n _this.context.logger.debug(\"EXPERIMENTAL ForeignObject renderer initialized (\" + options.width + \"x\" + options.height + \" at \" + options.x + \",\" + options.y + \") with scale \" + options.scale);\n return _this;\n }\n ForeignObjectRenderer.prototype.render = function (element) {\n return __awaiter(this, void 0, void 0, function () {\n var svg, img;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n svg = createForeignObjectSVG(this.options.width * this.options.scale, this.options.height * this.options.scale, this.options.scale, this.options.scale, element);\n return [4 /*yield*/, loadSerializedSVG(svg)];\n case 1:\n img = _a.sent();\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = asString(this.options.backgroundColor);\n this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);\n }\n this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);\n return [2 /*return*/, this.canvas];\n }\n });\n });\n };\n return ForeignObjectRenderer;\n }(Renderer));\n var loadSerializedSVG = function (svg) {\n return new Promise(function (resolve, reject) {\n var img = new Image();\n img.onload = function () {\n resolve(img);\n };\n img.onerror = reject;\n img.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(new XMLSerializer().serializeToString(svg));\n });\n };\n\n var Logger = /** @class */ (function () {\n function Logger(_a) {\n var id = _a.id, enabled = _a.enabled;\n this.id = id;\n this.enabled = enabled;\n this.start = Date.now();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Logger.prototype.debug = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {\n // eslint-disable-next-line no-console\n console.debug.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\n }\n else {\n this.info.apply(this, args);\n }\n }\n };\n Logger.prototype.getTime = function () {\n return Date.now() - this.start;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Logger.prototype.info = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {\n // eslint-disable-next-line no-console\n console.info.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Logger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.warn === 'function') {\n // eslint-disable-next-line no-console\n console.warn.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\n }\n else {\n this.info.apply(this, args);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Logger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {\n // eslint-disable-next-line no-console\n console.error.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\n }\n else {\n this.info.apply(this, args);\n }\n }\n };\n Logger.instances = {};\n return Logger;\n }());\n\n var Context = /** @class */ (function () {\n function Context(options, windowBounds) {\n var _a;\n this.windowBounds = windowBounds;\n this.instanceName = \"#\" + Context.instanceCount++;\n this.logger = new Logger({ id: this.instanceName, enabled: options.logging });\n this.cache = (_a = options.cache) !== null && _a !== void 0 ? _a : new Cache(this, options);\n }\n Context.instanceCount = 1;\n return Context;\n }());\n\n var html2canvas = function (element, options) {\n if (options === void 0) { options = {}; }\n return renderElement(element, options);\n };\n if (typeof window !== 'undefined') {\n CacheStorage.setContext(window);\n }\n var renderElement = function (element, opts) { return __awaiter(void 0, void 0, void 0, function () {\n var ownerDocument, defaultView, resourceOptions, contextOptions, windowOptions, windowBounds, context, foreignObjectRendering, cloneOptions, documentCloner, clonedElement, container, _a, width, height, left, top, backgroundColor, renderOptions, canvas, renderer, root, renderer;\n var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;\n return __generator(this, function (_u) {\n switch (_u.label) {\n case 0:\n if (!element || typeof element !== 'object') {\n return [2 /*return*/, Promise.reject('Invalid element provided as first argument')];\n }\n ownerDocument = element.ownerDocument;\n if (!ownerDocument) {\n throw new Error(\"Element is not attached to a Document\");\n }\n defaultView = ownerDocument.defaultView;\n if (!defaultView) {\n throw new Error(\"Document is not attached to a Window\");\n }\n resourceOptions = {\n allowTaint: (_b = opts.allowTaint) !== null && _b !== void 0 ? _b : false,\n imageTimeout: (_c = opts.imageTimeout) !== null && _c !== void 0 ? _c : 15000,\n proxy: opts.proxy,\n useCORS: (_d = opts.useCORS) !== null && _d !== void 0 ? _d : false\n };\n contextOptions = __assign({ logging: (_e = opts.logging) !== null && _e !== void 0 ? _e : true, cache: opts.cache }, resourceOptions);\n windowOptions = {\n windowWidth: (_f = opts.windowWidth) !== null && _f !== void 0 ? _f : defaultView.innerWidth,\n windowHeight: (_g = opts.windowHeight) !== null && _g !== void 0 ? _g : defaultView.innerHeight,\n scrollX: (_h = opts.scrollX) !== null && _h !== void 0 ? _h : defaultView.pageXOffset,\n scrollY: (_j = opts.scrollY) !== null && _j !== void 0 ? _j : defaultView.pageYOffset\n };\n windowBounds = new Bounds(windowOptions.scrollX, windowOptions.scrollY, windowOptions.windowWidth, windowOptions.windowHeight);\n context = new Context(contextOptions, windowBounds);\n foreignObjectRendering = (_k = opts.foreignObjectRendering) !== null && _k !== void 0 ? _k : false;\n cloneOptions = {\n allowTaint: (_l = opts.allowTaint) !== null && _l !== void 0 ? _l : false,\n onclone: opts.onclone,\n ignoreElements: opts.ignoreElements,\n inlineImages: foreignObjectRendering,\n copyStyles: foreignObjectRendering\n };\n context.logger.debug(\"Starting document clone with size \" + windowBounds.width + \"x\" + windowBounds.height + \" scrolled to \" + -windowBounds.left + \",\" + -windowBounds.top);\n documentCloner = new DocumentCloner(context, element, cloneOptions);\n clonedElement = documentCloner.clonedReferenceElement;\n if (!clonedElement) {\n return [2 /*return*/, Promise.reject(\"Unable to find element in cloned iframe\")];\n }\n return [4 /*yield*/, documentCloner.toIFrame(ownerDocument, windowBounds)];\n case 1:\n container = _u.sent();\n _a = isBodyElement(clonedElement) || isHTMLElement(clonedElement)\n ? parseDocumentSize(clonedElement.ownerDocument)\n : parseBounds(context, clonedElement), width = _a.width, height = _a.height, left = _a.left, top = _a.top;\n backgroundColor = parseBackgroundColor(context, clonedElement, opts.backgroundColor);\n renderOptions = {\n canvas: opts.canvas,\n backgroundColor: backgroundColor,\n scale: (_o = (_m = opts.scale) !== null && _m !== void 0 ? _m : defaultView.devicePixelRatio) !== null && _o !== void 0 ? _o : 1,\n x: ((_p = opts.x) !== null && _p !== void 0 ? _p : 0) + left,\n y: ((_q = opts.y) !== null && _q !== void 0 ? _q : 0) + top,\n width: (_r = opts.width) !== null && _r !== void 0 ? _r : Math.ceil(width),\n height: (_s = opts.height) !== null && _s !== void 0 ? _s : Math.ceil(height)\n };\n if (!foreignObjectRendering) return [3 /*break*/, 3];\n context.logger.debug(\"Document cloned, using foreign object rendering\");\n renderer = new ForeignObjectRenderer(context, renderOptions);\n return [4 /*yield*/, renderer.render(clonedElement)];\n case 2:\n canvas = _u.sent();\n return [3 /*break*/, 5];\n case 3:\n context.logger.debug(\"Document cloned, element located at \" + left + \",\" + top + \" with size \" + width + \"x\" + height + \" using computed rendering\");\n context.logger.debug(\"Starting DOM parsing\");\n root = parseTree(context, clonedElement);\n if (backgroundColor === root.styles.backgroundColor) {\n root.styles.backgroundColor = COLORS.TRANSPARENT;\n }\n context.logger.debug(\"Starting renderer for element at \" + renderOptions.x + \",\" + renderOptions.y + \" with size \" + renderOptions.width + \"x\" + renderOptions.height);\n renderer = new CanvasRenderer(context, renderOptions);\n return [4 /*yield*/, renderer.render(root)];\n case 4:\n canvas = _u.sent();\n _u.label = 5;\n case 5:\n if ((_t = opts.removeContainer) !== null && _t !== void 0 ? _t : true) {\n if (!DocumentCloner.destroy(container)) {\n context.logger.error(\"Cannot detach cloned iframe as it is not in the DOM anymore\");\n }\n }\n context.logger.debug(\"Finished rendering\");\n return [2 /*return*/, canvas];\n }\n });\n }); };\n var parseBackgroundColor = function (context, element, backgroundColorOverride) {\n var ownerDocument = element.ownerDocument;\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n var documentBackgroundColor = ownerDocument.documentElement\n ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor)\n : COLORS.TRANSPARENT;\n var bodyBackgroundColor = ownerDocument.body\n ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor)\n : COLORS.TRANSPARENT;\n var defaultBackgroundColor = typeof backgroundColorOverride === 'string'\n ? parseColor(context, backgroundColorOverride)\n : backgroundColorOverride === null\n ? COLORS.TRANSPARENT\n : 0xffffffff;\n return element === ownerDocument.documentElement\n ? isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? defaultBackgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor\n : defaultBackgroundColor;\n };\n\n return html2canvas;\n\n})));\n//# sourceMappingURL=html2canvas.js.map\n","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _EventStream_instances, _EventStream_connectedPromise, _EventStream_resolveConnectedPromise, _EventStream_rejectConnectedPromise, _EventStream_endPromise, _EventStream_resolveEndPromise, _EventStream_rejectEndPromise, _EventStream_listeners, _EventStream_ended, _EventStream_errored, _EventStream_aborted, _EventStream_catchingPromiseCreated, _EventStream_handleError;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EventStream = void 0;\nconst error_1 = require(\"../error.js\");\nclass EventStream {\n constructor() {\n _EventStream_instances.add(this);\n this.controller = new AbortController();\n _EventStream_connectedPromise.set(this, void 0);\n _EventStream_resolveConnectedPromise.set(this, () => { });\n _EventStream_rejectConnectedPromise.set(this, () => { });\n _EventStream_endPromise.set(this, void 0);\n _EventStream_resolveEndPromise.set(this, () => { });\n _EventStream_rejectEndPromise.set(this, () => { });\n _EventStream_listeners.set(this, {});\n _EventStream_ended.set(this, false);\n _EventStream_errored.set(this, false);\n _EventStream_aborted.set(this, false);\n _EventStream_catchingPromiseCreated.set(this, false);\n __classPrivateFieldSet(this, _EventStream_connectedPromise, new Promise((resolve, reject) => {\n __classPrivateFieldSet(this, _EventStream_resolveConnectedPromise, resolve, \"f\");\n __classPrivateFieldSet(this, _EventStream_rejectConnectedPromise, reject, \"f\");\n }), \"f\");\n __classPrivateFieldSet(this, _EventStream_endPromise, new Promise((resolve, reject) => {\n __classPrivateFieldSet(this, _EventStream_resolveEndPromise, resolve, \"f\");\n __classPrivateFieldSet(this, _EventStream_rejectEndPromise, reject, \"f\");\n }), \"f\");\n // Don't let these promises cause unhandled rejection errors.\n // we will manually cause an unhandled rejection error later\n // if the user hasn't registered any error listener or called\n // any promise-returning method.\n __classPrivateFieldGet(this, _EventStream_connectedPromise, \"f\").catch(() => { });\n __classPrivateFieldGet(this, _EventStream_endPromise, \"f\").catch(() => { });\n }\n _run(executor) {\n // Unfortunately if we call `executor()` immediately we get runtime errors about\n // references to `this` before the `super()` constructor call returns.\n setTimeout(() => {\n executor().then(() => {\n this._emitFinal();\n this._emit('end');\n }, __classPrivateFieldGet(this, _EventStream_instances, \"m\", _EventStream_handleError).bind(this));\n }, 0);\n }\n _connected() {\n if (this.ended)\n return;\n __classPrivateFieldGet(this, _EventStream_resolveConnectedPromise, \"f\").call(this);\n this._emit('connect');\n }\n get ended() {\n return __classPrivateFieldGet(this, _EventStream_ended, \"f\");\n }\n get errored() {\n return __classPrivateFieldGet(this, _EventStream_errored, \"f\");\n }\n get aborted() {\n return __classPrivateFieldGet(this, _EventStream_aborted, \"f\");\n }\n abort() {\n this.controller.abort();\n }\n /**\n * Adds the listener function to the end of the listeners array for the event.\n * No checks are made to see if the listener has already been added. Multiple calls passing\n * the same combination of event and listener will result in the listener being added, and\n * called, multiple times.\n * @returns this ChatCompletionStream, so that calls can be chained\n */\n on(event, listener) {\n const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] || (__classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] = []);\n listeners.push({ listener });\n return this;\n }\n /**\n * Removes the specified listener from the listener array for the event.\n * off() will remove, at most, one instance of a listener from the listener array. If any single\n * listener has been added multiple times to the listener array for the specified event, then\n * off() must be called multiple times to remove each instance.\n * @returns this ChatCompletionStream, so that calls can be chained\n */\n off(event, listener) {\n const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event];\n if (!listeners)\n return this;\n const index = listeners.findIndex((l) => l.listener === listener);\n if (index >= 0)\n listeners.splice(index, 1);\n return this;\n }\n /**\n * Adds a one-time listener function for the event. The next time the event is triggered,\n * this listener is removed and then invoked.\n * @returns this ChatCompletionStream, so that calls can be chained\n */\n once(event, listener) {\n const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] || (__classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] = []);\n listeners.push({ listener, once: true });\n return this;\n }\n /**\n * This is similar to `.once()`, but returns a Promise that resolves the next time\n * the event is triggered, instead of calling a listener callback.\n * @returns a Promise that resolves the next time given event is triggered,\n * or rejects if an error is emitted. (If you request the 'error' event,\n * returns a promise that resolves with the error).\n *\n * Example:\n *\n * const message = await stream.emitted('message') // rejects if the stream errors\n */\n emitted(event) {\n return new Promise((resolve, reject) => {\n __classPrivateFieldSet(this, _EventStream_catchingPromiseCreated, true, \"f\");\n if (event !== 'error')\n this.once('error', reject);\n this.once(event, resolve);\n });\n }\n async done() {\n __classPrivateFieldSet(this, _EventStream_catchingPromiseCreated, true, \"f\");\n await __classPrivateFieldGet(this, _EventStream_endPromise, \"f\");\n }\n _emit(event, ...args) {\n // make sure we don't emit any events after end\n if (__classPrivateFieldGet(this, _EventStream_ended, \"f\")) {\n return;\n }\n if (event === 'end') {\n __classPrivateFieldSet(this, _EventStream_ended, true, \"f\");\n __classPrivateFieldGet(this, _EventStream_resolveEndPromise, \"f\").call(this);\n }\n const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event];\n if (listeners) {\n __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] = listeners.filter((l) => !l.once);\n listeners.forEach(({ listener }) => listener(...args));\n }\n if (event === 'abort') {\n const error = args[0];\n if (!__classPrivateFieldGet(this, _EventStream_catchingPromiseCreated, \"f\") && !listeners?.length) {\n Promise.reject(error);\n }\n __classPrivateFieldGet(this, _EventStream_rejectConnectedPromise, \"f\").call(this, error);\n __classPrivateFieldGet(this, _EventStream_rejectEndPromise, \"f\").call(this, error);\n this._emit('end');\n return;\n }\n if (event === 'error') {\n // NOTE: _emit('error', error) should only be called from #handleError().\n const error = args[0];\n if (!__classPrivateFieldGet(this, _EventStream_catchingPromiseCreated, \"f\") && !listeners?.length) {\n // Trigger an unhandled rejection if the user hasn't registered any error handlers.\n // If you are seeing stack traces here, make sure to handle errors via either:\n // - runner.on('error', () => ...)\n // - await runner.done()\n // - await runner.finalChatCompletion()\n // - etc.\n Promise.reject(error);\n }\n __classPrivateFieldGet(this, _EventStream_rejectConnectedPromise, \"f\").call(this, error);\n __classPrivateFieldGet(this, _EventStream_rejectEndPromise, \"f\").call(this, error);\n this._emit('end');\n }\n }\n _emitFinal() { }\n}\nexports.EventStream = EventStream;\n_EventStream_connectedPromise = new WeakMap(), _EventStream_resolveConnectedPromise = new WeakMap(), _EventStream_rejectConnectedPromise = new WeakMap(), _EventStream_endPromise = new WeakMap(), _EventStream_resolveEndPromise = new WeakMap(), _EventStream_rejectEndPromise = new WeakMap(), _EventStream_listeners = new WeakMap(), _EventStream_ended = new WeakMap(), _EventStream_errored = new WeakMap(), _EventStream_aborted = new WeakMap(), _EventStream_catchingPromiseCreated = new WeakMap(), _EventStream_instances = new WeakSet(), _EventStream_handleError = function _EventStream_handleError(error) {\n __classPrivateFieldSet(this, _EventStream_errored, true, \"f\");\n if (error instanceof Error && error.name === 'AbortError') {\n error = new error_1.APIUserAbortError();\n }\n if (error instanceof error_1.APIUserAbortError) {\n __classPrivateFieldSet(this, _EventStream_aborted, true, \"f\");\n return this._emit('abort', error);\n }\n if (error instanceof error_1.OpenAIError) {\n return this._emit('error', error);\n }\n if (error instanceof Error) {\n const openAIError = new error_1.OpenAIError(error.message);\n // @ts-ignore\n openAIError.cause = error;\n return this._emit('error', openAIError);\n }\n return this._emit('error', new error_1.OpenAIError(String(error)));\n};\n//# sourceMappingURL=EventStream.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResponseItemsPage = exports.Responses = void 0;\nconst ResponsesParser_1 = require(\"../../lib/ResponsesParser.js\");\nconst core_1 = require(\"../../core.js\");\nconst resource_1 = require(\"../../resource.js\");\nconst InputItemsAPI = __importStar(require(\"./input-items.js\"));\nconst input_items_1 = require(\"./input-items.js\");\nconst ResponseStream_1 = require(\"../../lib/responses/ResponseStream.js\");\nconst pagination_1 = require(\"../../pagination.js\");\nclass Responses extends resource_1.APIResource {\n constructor() {\n super(...arguments);\n this.inputItems = new InputItemsAPI.InputItems(this._client);\n }\n create(body, options) {\n return this._client.post('/responses', { body, ...options, stream: body.stream ?? false })._thenUnwrap((rsp) => {\n if ('object' in rsp && rsp.object === 'response') {\n (0, ResponsesParser_1.addOutputText)(rsp);\n }\n return rsp;\n });\n }\n retrieve(responseId, query = {}, options) {\n if ((0, core_1.isRequestOptions)(query)) {\n return this.retrieve(responseId, {}, query);\n }\n return this._client.get(`/responses/${responseId}`, { query, ...options });\n }\n /**\n * Deletes a model response with the given ID.\n */\n del(responseId, options) {\n return this._client.delete(`/responses/${responseId}`, {\n ...options,\n headers: { Accept: '*/*', ...options?.headers },\n });\n }\n parse(body, options) {\n return this._client.responses\n .create(body, options)\n ._thenUnwrap((response) => (0, ResponsesParser_1.parseResponse)(response, body));\n }\n /**\n * Creates a chat completion stream\n */\n stream(body, options) {\n return ResponseStream_1.ResponseStream.createResponse(this._client, body, options);\n }\n}\nexports.Responses = Responses;\nclass ResponseItemsPage extends pagination_1.CursorPage {\n}\nexports.ResponseItemsPage = ResponseItemsPage;\nResponses.InputItems = input_items_1.InputItems;\n//# sourceMappingURL=responses.js.map","\"use strict\";\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbstractChatCompletionRunner_instances, _AbstractChatCompletionRunner_getFinalContent, _AbstractChatCompletionRunner_getFinalMessage, _AbstractChatCompletionRunner_getFinalFunctionCall, _AbstractChatCompletionRunner_getFinalFunctionCallResult, _AbstractChatCompletionRunner_calculateTotalUsage, _AbstractChatCompletionRunner_validateParams, _AbstractChatCompletionRunner_stringifyFunctionCallResult;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractChatCompletionRunner = void 0;\nconst error_1 = require(\"../error.js\");\nconst RunnableFunction_1 = require(\"./RunnableFunction.js\");\nconst chatCompletionUtils_1 = require(\"./chatCompletionUtils.js\");\nconst EventStream_1 = require(\"./EventStream.js\");\nconst parser_1 = require(\"../lib/parser.js\");\nconst DEFAULT_MAX_CHAT_COMPLETIONS = 10;\nclass AbstractChatCompletionRunner extends EventStream_1.EventStream {\n constructor() {\n super(...arguments);\n _AbstractChatCompletionRunner_instances.add(this);\n this._chatCompletions = [];\n this.messages = [];\n }\n _addChatCompletion(chatCompletion) {\n this._chatCompletions.push(chatCompletion);\n this._emit('chatCompletion', chatCompletion);\n const message = chatCompletion.choices[0]?.message;\n if (message)\n this._addMessage(message);\n return chatCompletion;\n }\n _addMessage(message, emit = true) {\n if (!('content' in message))\n message.content = null;\n this.messages.push(message);\n if (emit) {\n this._emit('message', message);\n if (((0, chatCompletionUtils_1.isFunctionMessage)(message) || (0, chatCompletionUtils_1.isToolMessage)(message)) && message.content) {\n // Note, this assumes that {role: 'tool', content: …} is always the result of a call of tool of type=function.\n this._emit('functionCallResult', message.content);\n }\n else if ((0, chatCompletionUtils_1.isAssistantMessage)(message) && message.function_call) {\n this._emit('functionCall', message.function_call);\n }\n else if ((0, chatCompletionUtils_1.isAssistantMessage)(message) && message.tool_calls) {\n for (const tool_call of message.tool_calls) {\n if (tool_call.type === 'function') {\n this._emit('functionCall', tool_call.function);\n }\n }\n }\n }\n }\n /**\n * @returns a promise that resolves with the final ChatCompletion, or rejects\n * if an error occurred or the stream ended prematurely without producing a ChatCompletion.\n */\n async finalChatCompletion() {\n await this.done();\n const completion = this._chatCompletions[this._chatCompletions.length - 1];\n if (!completion)\n throw new error_1.OpenAIError('stream ended without producing a ChatCompletion');\n return completion;\n }\n /**\n * @returns a promise that resolves with the content of the final ChatCompletionMessage, or rejects\n * if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n */\n async finalContent() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalContent).call(this);\n }\n /**\n * @returns a promise that resolves with the the final assistant ChatCompletionMessage response,\n * or rejects if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n */\n async finalMessage() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this);\n }\n /**\n * @returns a promise that resolves with the content of the final FunctionCall, or rejects\n * if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n */\n async finalFunctionCall() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionCall).call(this);\n }\n async finalFunctionCallResult() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionCallResult).call(this);\n }\n async totalUsage() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_calculateTotalUsage).call(this);\n }\n allChatCompletions() {\n return [...this._chatCompletions];\n }\n _emitFinal() {\n const completion = this._chatCompletions[this._chatCompletions.length - 1];\n if (completion)\n this._emit('finalChatCompletion', completion);\n const finalMessage = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this);\n if (finalMessage)\n this._emit('finalMessage', finalMessage);\n const finalContent = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalContent).call(this);\n if (finalContent)\n this._emit('finalContent', finalContent);\n const finalFunctionCall = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionCall).call(this);\n if (finalFunctionCall)\n this._emit('finalFunctionCall', finalFunctionCall);\n const finalFunctionCallResult = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionCallResult).call(this);\n if (finalFunctionCallResult != null)\n this._emit('finalFunctionCallResult', finalFunctionCallResult);\n if (this._chatCompletions.some((c) => c.usage)) {\n this._emit('totalUsage', __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_calculateTotalUsage).call(this));\n }\n }\n async _createChatCompletion(client, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_validateParams).call(this, params);\n const chatCompletion = await client.chat.completions.create({ ...params, stream: false }, { ...options, signal: this.controller.signal });\n this._connected();\n return this._addChatCompletion((0, parser_1.parseChatCompletion)(chatCompletion, params));\n }\n async _runChatCompletion(client, params, options) {\n for (const message of params.messages) {\n this._addMessage(message, false);\n }\n return await this._createChatCompletion(client, params, options);\n }\n async _runFunctions(client, params, options) {\n const role = 'function';\n const { function_call = 'auto', stream, ...restParams } = params;\n const singleFunctionToCall = typeof function_call !== 'string' && function_call?.name;\n const { maxChatCompletions = DEFAULT_MAX_CHAT_COMPLETIONS } = options || {};\n const functionsByName = {};\n for (const f of params.functions) {\n functionsByName[f.name || f.function.name] = f;\n }\n const functions = params.functions.map((f) => ({\n name: f.name || f.function.name,\n parameters: f.parameters,\n description: f.description,\n }));\n for (const message of params.messages) {\n this._addMessage(message, false);\n }\n for (let i = 0; i < maxChatCompletions; ++i) {\n const chatCompletion = await this._createChatCompletion(client, {\n ...restParams,\n function_call,\n functions,\n messages: [...this.messages],\n }, options);\n const message = chatCompletion.choices[0]?.message;\n if (!message) {\n throw new error_1.OpenAIError(`missing message in ChatCompletion response`);\n }\n if (!message.function_call)\n return;\n const { name, arguments: args } = message.function_call;\n const fn = functionsByName[name];\n if (!fn) {\n const content = `Invalid function_call: ${JSON.stringify(name)}. Available options are: ${functions\n .map((f) => JSON.stringify(f.name))\n .join(', ')}. Please try again`;\n this._addMessage({ role, name, content });\n continue;\n }\n else if (singleFunctionToCall && singleFunctionToCall !== name) {\n const content = `Invalid function_call: ${JSON.stringify(name)}. ${JSON.stringify(singleFunctionToCall)} requested. Please try again`;\n this._addMessage({ role, name, content });\n continue;\n }\n let parsed;\n try {\n parsed = (0, RunnableFunction_1.isRunnableFunctionWithParse)(fn) ? await fn.parse(args) : args;\n }\n catch (error) {\n this._addMessage({\n role,\n name,\n content: error instanceof Error ? error.message : String(error),\n });\n continue;\n }\n // @ts-expect-error it can't rule out `never` type.\n const rawContent = await fn.function(parsed, this);\n const content = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_stringifyFunctionCallResult).call(this, rawContent);\n this._addMessage({ role, name, content });\n if (singleFunctionToCall)\n return;\n }\n }\n async _runTools(client, params, options) {\n const role = 'tool';\n const { tool_choice = 'auto', stream, ...restParams } = params;\n const singleFunctionToCall = typeof tool_choice !== 'string' && tool_choice?.function?.name;\n const { maxChatCompletions = DEFAULT_MAX_CHAT_COMPLETIONS } = options || {};\n // TODO(someday): clean this logic up\n const inputTools = params.tools.map((tool) => {\n if ((0, parser_1.isAutoParsableTool)(tool)) {\n if (!tool.$callback) {\n throw new error_1.OpenAIError('Tool given to `.runTools()` that does not have an associated function');\n }\n return {\n type: 'function',\n function: {\n function: tool.$callback,\n name: tool.function.name,\n description: tool.function.description || '',\n parameters: tool.function.parameters,\n parse: tool.$parseRaw,\n strict: true,\n },\n };\n }\n return tool;\n });\n const functionsByName = {};\n for (const f of inputTools) {\n if (f.type === 'function') {\n functionsByName[f.function.name || f.function.function.name] = f.function;\n }\n }\n const tools = 'tools' in params ?\n inputTools.map((t) => t.type === 'function' ?\n {\n type: 'function',\n function: {\n name: t.function.name || t.function.function.name,\n parameters: t.function.parameters,\n description: t.function.description,\n strict: t.function.strict,\n },\n }\n : t)\n : undefined;\n for (const message of params.messages) {\n this._addMessage(message, false);\n }\n for (let i = 0; i < maxChatCompletions; ++i) {\n const chatCompletion = await this._createChatCompletion(client, {\n ...restParams,\n tool_choice,\n tools,\n messages: [...this.messages],\n }, options);\n const message = chatCompletion.choices[0]?.message;\n if (!message) {\n throw new error_1.OpenAIError(`missing message in ChatCompletion response`);\n }\n if (!message.tool_calls?.length) {\n return;\n }\n for (const tool_call of message.tool_calls) {\n if (tool_call.type !== 'function')\n continue;\n const tool_call_id = tool_call.id;\n const { name, arguments: args } = tool_call.function;\n const fn = functionsByName[name];\n if (!fn) {\n const content = `Invalid tool_call: ${JSON.stringify(name)}. Available options are: ${Object.keys(functionsByName)\n .map((name) => JSON.stringify(name))\n .join(', ')}. Please try again`;\n this._addMessage({ role, tool_call_id, content });\n continue;\n }\n else if (singleFunctionToCall && singleFunctionToCall !== name) {\n const content = `Invalid tool_call: ${JSON.stringify(name)}. ${JSON.stringify(singleFunctionToCall)} requested. Please try again`;\n this._addMessage({ role, tool_call_id, content });\n continue;\n }\n let parsed;\n try {\n parsed = (0, RunnableFunction_1.isRunnableFunctionWithParse)(fn) ? await fn.parse(args) : args;\n }\n catch (error) {\n const content = error instanceof Error ? error.message : String(error);\n this._addMessage({ role, tool_call_id, content });\n continue;\n }\n // @ts-expect-error it can't rule out `never` type.\n const rawContent = await fn.function(parsed, this);\n const content = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_stringifyFunctionCallResult).call(this, rawContent);\n this._addMessage({ role, tool_call_id, content });\n if (singleFunctionToCall) {\n return;\n }\n }\n }\n return;\n }\n}\nexports.AbstractChatCompletionRunner = AbstractChatCompletionRunner;\n_AbstractChatCompletionRunner_instances = new WeakSet(), _AbstractChatCompletionRunner_getFinalContent = function _AbstractChatCompletionRunner_getFinalContent() {\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this).content ?? null;\n}, _AbstractChatCompletionRunner_getFinalMessage = function _AbstractChatCompletionRunner_getFinalMessage() {\n let i = this.messages.length;\n while (i-- > 0) {\n const message = this.messages[i];\n if ((0, chatCompletionUtils_1.isAssistantMessage)(message)) {\n const { function_call, ...rest } = message;\n // TODO: support audio here\n const ret = {\n ...rest,\n content: message.content ?? null,\n refusal: message.refusal ?? null,\n };\n if (function_call) {\n ret.function_call = function_call;\n }\n return ret;\n }\n }\n throw new error_1.OpenAIError('stream ended without producing a ChatCompletionMessage with role=assistant');\n}, _AbstractChatCompletionRunner_getFinalFunctionCall = function _AbstractChatCompletionRunner_getFinalFunctionCall() {\n for (let i = this.messages.length - 1; i >= 0; i--) {\n const message = this.messages[i];\n if ((0, chatCompletionUtils_1.isAssistantMessage)(message) && message?.function_call) {\n return message.function_call;\n }\n if ((0, chatCompletionUtils_1.isAssistantMessage)(message) && message?.tool_calls?.length) {\n return message.tool_calls.at(-1)?.function;\n }\n }\n return;\n}, _AbstractChatCompletionRunner_getFinalFunctionCallResult = function _AbstractChatCompletionRunner_getFinalFunctionCallResult() {\n for (let i = this.messages.length - 1; i >= 0; i--) {\n const message = this.messages[i];\n if ((0, chatCompletionUtils_1.isFunctionMessage)(message) && message.content != null) {\n return message.content;\n }\n if ((0, chatCompletionUtils_1.isToolMessage)(message) &&\n message.content != null &&\n typeof message.content === 'string' &&\n this.messages.some((x) => x.role === 'assistant' &&\n x.tool_calls?.some((y) => y.type === 'function' && y.id === message.tool_call_id))) {\n return message.content;\n }\n }\n return;\n}, _AbstractChatCompletionRunner_calculateTotalUsage = function _AbstractChatCompletionRunner_calculateTotalUsage() {\n const total = {\n completion_tokens: 0,\n prompt_tokens: 0,\n total_tokens: 0,\n };\n for (const { usage } of this._chatCompletions) {\n if (usage) {\n total.completion_tokens += usage.completion_tokens;\n total.prompt_tokens += usage.prompt_tokens;\n total.total_tokens += usage.total_tokens;\n }\n }\n return total;\n}, _AbstractChatCompletionRunner_validateParams = function _AbstractChatCompletionRunner_validateParams(params) {\n if (params.n != null && params.n > 1) {\n throw new error_1.OpenAIError('ChatCompletion convenience helpers only support n=1 at this time. To use n>1, please use chat.completions.create() directly.');\n }\n}, _AbstractChatCompletionRunner_stringifyFunctionCallResult = function _AbstractChatCompletionRunner_stringifyFunctionCallResult(rawContent) {\n return (typeof rawContent === 'string' ? rawContent\n : rawContent === undefined ? 'undefined'\n : JSON.stringify(rawContent));\n};\n//# sourceMappingURL=AbstractChatCompletionRunner.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Embeddings = void 0;\nconst resource_1 = require(\"../resource.js\");\nclass Embeddings extends resource_1.APIResource {\n /**\n * Creates an embedding vector representing the input text.\n */\n create(body, options) {\n return this._client.post('/embeddings', { body, ...options });\n }\n}\nexports.Embeddings = Embeddings;\n//# sourceMappingURL=embeddings.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Audio = void 0;\nconst resource_1 = require(\"../../resource.js\");\nconst SpeechAPI = __importStar(require(\"./speech.js\"));\nconst speech_1 = require(\"./speech.js\");\nconst TranscriptionsAPI = __importStar(require(\"./transcriptions.js\"));\nconst transcriptions_1 = require(\"./transcriptions.js\");\nconst TranslationsAPI = __importStar(require(\"./translations.js\"));\nconst translations_1 = require(\"./translations.js\");\nclass Audio extends resource_1.APIResource {\n constructor() {\n super(...arguments);\n this.transcriptions = new TranscriptionsAPI.Transcriptions(this._client);\n this.translations = new TranslationsAPI.Translations(this._client);\n this.speech = new SpeechAPI.Speech(this._client);\n }\n}\nexports.Audio = Audio;\nAudio.Transcriptions = transcriptions_1.Transcriptions;\nAudio.Translations = translations_1.Translations;\nAudio.Speech = speech_1.Speech;\n//# sourceMappingURL=audio.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Chat = void 0;\nconst resource_1 = require(\"../../../resource.js\");\nconst CompletionsAPI = __importStar(require(\"./completions.js\"));\nclass Chat extends resource_1.APIResource {\n constructor() {\n super(...arguments);\n this.completions = new CompletionsAPI.Completions(this._client);\n }\n}\nexports.Chat = Chat;\n(function (Chat) {\n Chat.Completions = CompletionsAPI.Completions;\n})(Chat = exports.Chat || (exports.Chat = {}));\n//# sourceMappingURL=chat.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formats = exports.stringify = void 0;\nconst formats_1 = require(\"./formats.js\");\nconst formats = {\n formatters: formats_1.formatters,\n RFC1738: formats_1.RFC1738,\n RFC3986: formats_1.RFC3986,\n default: formats_1.default_format,\n};\nexports.formats = formats;\nvar stringify_1 = require(\"./stringify.js\");\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return stringify_1.stringify; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileObjectsPage = exports.Files = void 0;\nconst resource_1 = require(\"../resource.js\");\nconst core_1 = require(\"../core.js\");\nconst core_2 = require(\"../core.js\");\nconst error_1 = require(\"../error.js\");\nconst Core = __importStar(require(\"../core.js\"));\nconst pagination_1 = require(\"../pagination.js\");\nclass Files extends resource_1.APIResource {\n /**\n * Upload a file that can be used across various endpoints. Individual files can be\n * up to 512 MB, and the size of all files uploaded by one organization can be up\n * to 100 GB.\n *\n * The Assistants API supports files up to 2 million tokens and of specific file\n * types. See the\n * [Assistants Tools guide](https://platform.openai.com/docs/assistants/tools) for\n * details.\n *\n * The Fine-tuning API only supports `.jsonl` files. The input also has certain\n * required formats for fine-tuning\n * [chat](https://platform.openai.com/docs/api-reference/fine-tuning/chat-input) or\n * [completions](https://platform.openai.com/docs/api-reference/fine-tuning/completions-input)\n * models.\n *\n * The Batch API only supports `.jsonl` files up to 200 MB in size. The input also\n * has a specific required\n * [format](https://platform.openai.com/docs/api-reference/batch/request-input).\n *\n * Please [contact us](https://help.openai.com/) if you need to increase these\n * storage limits.\n */\n create(body, options) {\n return this._client.post('/files', Core.multipartFormRequestOptions({ body, ...options }));\n }\n /**\n * Returns information about a specific file.\n */\n retrieve(fileId, options) {\n return this._client.get(`/files/${fileId}`, options);\n }\n list(query = {}, options) {\n if ((0, core_1.isRequestOptions)(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/files', FileObjectsPage, { query, ...options });\n }\n /**\n * Delete a file.\n */\n del(fileId, options) {\n return this._client.delete(`/files/${fileId}`, options);\n }\n /**\n * Returns the contents of the specified file.\n */\n content(fileId, options) {\n return this._client.get(`/files/${fileId}/content`, {\n ...options,\n headers: { Accept: 'application/binary', ...options?.headers },\n __binaryResponse: true,\n });\n }\n /**\n * Returns the contents of the specified file.\n *\n * @deprecated The `.content()` method should be used instead\n */\n retrieveContent(fileId, options) {\n return this._client.get(`/files/${fileId}/content`, options);\n }\n /**\n * Waits for the given file to be processed, default timeout is 30 mins.\n */\n async waitForProcessing(id, { pollInterval = 5000, maxWait = 30 * 60 * 1000 } = {}) {\n const TERMINAL_STATES = new Set(['processed', 'error', 'deleted']);\n const start = Date.now();\n let file = await this.retrieve(id);\n while (!file.status || !TERMINAL_STATES.has(file.status)) {\n await (0, core_2.sleep)(pollInterval);\n file = await this.retrieve(id);\n if (Date.now() - start > maxWait) {\n throw new error_1.APIConnectionTimeoutError({\n message: `Giving up on waiting for file ${id} to finish processing after ${maxWait} milliseconds.`,\n });\n }\n }\n return file;\n }\n}\nexports.Files = Files;\nclass FileObjectsPage extends pagination_1.CursorPage {\n}\nexports.FileObjectsPage = FileObjectsPage;\nFiles.FileObjectsPage = FileObjectsPage;\n//# sourceMappingURL=files.js.map","const atob = globalThis.atob;\nconst btoa = globalThis.btoa;\n\n/**\n * Basic utilities for the RealtimeAPI\n * @class\n */\nexport class RealtimeUtils {\n /**\n * Converts Float32Array of amplitude data to ArrayBuffer in Int16Array format\n * @param {Float32Array} float32Array\n * @returns {ArrayBuffer}\n */\n static floatTo16BitPCM(float32Array) {\n const buffer = new ArrayBuffer(float32Array.length * 2);\n const view = new DataView(buffer);\n let offset = 0;\n for (let i = 0; i < float32Array.length; i++, offset += 2) {\n let s = Math.max(-1, Math.min(1, float32Array[i]));\n view.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7fff, true);\n }\n return buffer;\n }\n\n /**\n * Converts a base64 string to an ArrayBuffer\n * @param {string} base64\n * @returns {ArrayBuffer}\n */\n static base64ToArrayBuffer(base64) {\n const binaryString = atob(base64);\n const len = binaryString.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes.buffer;\n }\n\n /**\n * Converts an ArrayBuffer, Int16Array or Float32Array to a base64 string\n * @param {ArrayBuffer|Int16Array|Float32Array} arrayBuffer\n * @returns {string}\n */\n static arrayBufferToBase64(arrayBuffer) {\n if (arrayBuffer instanceof Float32Array) {\n arrayBuffer = this.floatTo16BitPCM(arrayBuffer);\n } else if (arrayBuffer instanceof Int16Array) {\n arrayBuffer = arrayBuffer.buffer;\n }\n let binary = '';\n let bytes = new Uint8Array(arrayBuffer);\n const chunkSize = 0x8000; // 32KB chunk size\n for (let i = 0; i < bytes.length; i += chunkSize) {\n let chunk = bytes.subarray(i, i + chunkSize);\n binary += String.fromCharCode.apply(null, chunk);\n }\n return btoa(binary);\n }\n\n /**\n * Merge two Int16Arrays from Int16Arrays or ArrayBuffers\n * @param {ArrayBuffer|Int16Array} left\n * @param {ArrayBuffer|Int16Array} right\n * @returns {Int16Array}\n */\n static mergeInt16Arrays(left, right) {\n if (left instanceof ArrayBuffer) {\n left = new Int16Array(left);\n }\n if (right instanceof ArrayBuffer) {\n right = new Int16Array(right);\n }\n if (!(left instanceof Int16Array) || !(right instanceof Int16Array)) {\n throw new Error(`Both items must be Int16Array`);\n }\n const newValues = new Int16Array(left.length + right.length);\n for (let i = 0; i < left.length; i++) {\n newValues[i] = left[i];\n }\n for (let j = 0; j < right.length; j++) {\n newValues[left.length + j] = right[j];\n }\n return newValues;\n }\n\n /**\n * Generates an id to send with events and messages\n * @param {string} prefix\n * @param {number} [length]\n * @returns {string}\n */\n static generateId(prefix, length = 21) {\n // base58; non-repeating chars\n const chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n const str = Array(length - prefix.length)\n .fill(0)\n .map((_) => chars[Math.floor(Math.random() * chars.length)])\n .join('');\n return `${prefix}${str}`;\n }\n}\n","/**\n * EventHandler callback\n * @typedef {(event: {[key: string]: any}): void} EventHandlerCallbackType\n */\n\nconst sleep = (t) => new Promise((r) => setTimeout(() => r(), t));\n\n/**\n * Inherited class for RealtimeAPI and RealtimeClient\n * Adds basic event handling\n * @class\n */\nexport class RealtimeEventHandler {\n /**\n * Create a new RealtimeEventHandler instance\n * @returns {RealtimeEventHandler}\n */\n constructor() {\n this.eventHandlers = {};\n this.nextEventHandlers = {};\n }\n\n /**\n * Clears all event handlers\n * @returns {true}\n */\n clearEventHandlers() {\n this.eventHandlers = {};\n this.nextEventHandlers = {};\n return true;\n }\n\n /**\n * Listen to specific events\n * @param {string} eventName The name of the event to listen to\n * @param {EventHandlerCallbackType} callback Code to execute on event\n * @returns {EventHandlerCallbackType}\n */\n on(eventName, callback) {\n this.eventHandlers[eventName] = this.eventHandlers[eventName] || [];\n this.eventHandlers[eventName].push(callback);\n return callback;\n }\n\n /**\n * Listen for the next event of a specified type\n * @param {string} eventName The name of the event to listen to\n * @param {EventHandlerCallbackType} callback Code to execute on event\n * @returns {EventHandlerCallbackType}\n */\n onNext(eventName, callback) {\n this.nextEventHandlers[eventName] = this.nextEventHandlers[eventName] || [];\n this.nextEventHandlers[eventName].push(callback);\n return callback;\n }\n\n /**\n * Turns off event listening for specific events\n * Calling without a callback will remove all listeners for the event\n * @param {string} eventName\n * @param {EventHandlerCallbackType} [callback]\n * @returns {true}\n */\n off(eventName, callback) {\n const handlers = this.eventHandlers[eventName] || [];\n if (callback) {\n const index = handlers.indexOf(callback);\n if (index === -1) {\n throw new Error(\n `Could not turn off specified event listener for \"${eventName}\": not found as a listener`,\n );\n }\n handlers.splice(index, 1);\n } else {\n delete this.eventHandlers[eventName];\n }\n return true;\n }\n\n /**\n * Turns off event listening for the next event of a specific type\n * Calling without a callback will remove all listeners for the next event\n * @param {string} eventName\n * @param {EventHandlerCallbackType} [callback]\n * @returns {true}\n */\n offNext(eventName, callback) {\n const nextHandlers = this.nextEventHandlers[eventName] || [];\n if (callback) {\n const index = nextHandlers.indexOf(callback);\n if (index === -1) {\n throw new Error(\n `Could not turn off specified next event listener for \"${eventName}\": not found as a listener`,\n );\n }\n nextHandlers.splice(index, 1);\n } else {\n delete this.nextEventHandlers[eventName];\n }\n return true;\n }\n\n /**\n * Waits for next event of a specific type and returns the payload\n * @param {string} eventName\n * @param {number|null} [timeout]\n * @returns {Promise<{[key: string]: any}|null>}\n */\n async waitForNext(eventName, timeout = null) {\n const t0 = Date.now();\n let nextEvent;\n this.onNext(eventName, (event) => (nextEvent = event));\n while (!nextEvent) {\n if (timeout) {\n const t1 = Date.now();\n if (t1 - t0 > timeout) {\n return null;\n }\n }\n await sleep(1);\n }\n return nextEvent;\n }\n\n /**\n * Executes all events in the order they were added, with .on() event handlers executing before .onNext() handlers\n * @param {string} eventName\n * @param {any} event\n * @returns {true}\n */\n dispatch(eventName, event) {\n const handlers = [].concat(this.eventHandlers[eventName] || []);\n for (const handler of handlers) {\n handler(event);\n }\n const nextHandlers = [].concat(this.nextEventHandlers[eventName] || []);\n for (const nextHandler of nextHandlers) {\n nextHandler(event);\n }\n delete this.nextEventHandlers[eventName];\n return true;\n }\n}\n","import { RealtimeEventHandler } from './event_handler.js';\nimport { RealtimeUtils } from './utils.js';\n\nexport class RealtimeAPI extends RealtimeEventHandler {\n /**\n * Create a new RealtimeAPI instance\n * @param {{url?: string, apiKey?: string, dangerouslyAllowAPIKeyInBrowser?: boolean, debug?: boolean}} [settings]\n * @returns {RealtimeAPI}\n */\n constructor({ url, apiKey, dangerouslyAllowAPIKeyInBrowser, debug } = {}) {\n super();\n this.defaultUrl = 'wss://api.openai.com/v1/realtime';\n this.url = url || this.defaultUrl;\n this.apiKey = apiKey || null;\n this.debug = !!debug;\n this.ws = null;\n if (globalThis.document && this.apiKey) {\n if (!dangerouslyAllowAPIKeyInBrowser) {\n throw new Error(\n `Can not provide API key in the browser without \"dangerouslyAllowAPIKeyInBrowser\" set to true`,\n );\n }\n }\n }\n\n /**\n * Tells us whether or not the WebSocket is connected\n * @returns {boolean}\n */\n isConnected() {\n return !!this.ws;\n }\n\n /**\n * Writes WebSocket logs to console\n * @param {...any} args\n * @returns {true}\n */\n log(...args) {\n const date = new Date().toISOString();\n const logs = [`[Websocket/${date}]`].concat(args).map((arg) => {\n if (typeof arg === 'object' && arg !== null) {\n return JSON.stringify(arg, null, 2);\n } else {\n return arg;\n }\n });\n if (this.debug) {\n console.log(...logs);\n }\n return true;\n }\n\n /**\n * Connects to Realtime API Websocket Server\n * @param {{model?: string}} [settings]\n * @returns {Promise<true>}\n */\n async connect({ model } = { model: 'gpt-4o-realtime-preview-2024-10-01' }) {\n if (!this.apiKey && this.url === this.defaultUrl) {\n console.warn(`No apiKey provided for connection to \"${this.url}\"`);\n }\n if (this.isConnected()) {\n throw new Error(`Already connected`);\n }\n if (globalThis.WebSocket) {\n /**\n * Web browser\n */\n if (globalThis.document && this.apiKey) {\n console.warn(\n 'Warning: Connecting using API key in the browser, this is not recommended',\n );\n }\n const WebSocket = globalThis.WebSocket;\n const ws = new WebSocket(`${this.url}${model ? `?model=${model}` : ''}`, [\n 'realtime',\n `openai-insecure-api-key.${this.apiKey}`,\n 'openai-beta.realtime-v1',\n ]);\n ws.addEventListener('message', (event) => {\n const message = JSON.parse(event.data);\n this.receive(message.type, message);\n });\n return new Promise((resolve, reject) => {\n const connectionErrorHandler = () => {\n this.disconnect(ws);\n reject(new Error(`Could not connect to \"${this.url}\"`));\n };\n ws.addEventListener('error', connectionErrorHandler);\n ws.addEventListener('open', () => {\n this.log(`Connected to \"${this.url}\"`);\n ws.removeEventListener('error', connectionErrorHandler);\n ws.addEventListener('error', () => {\n this.disconnect(ws);\n this.log(`Error, disconnected from \"${this.url}\"`);\n this.dispatch('close', { error: true });\n });\n ws.addEventListener('close', () => {\n this.disconnect(ws);\n this.log(`Disconnected from \"${this.url}\"`);\n this.dispatch('close', { error: false });\n });\n this.ws = ws;\n resolve(true);\n });\n });\n } else {\n /**\n * Node.js\n */\n const moduleName = 'ws';\n const wsModule = await import(/* webpackIgnore: true */ moduleName);\n const WebSocket = wsModule.default;\n const ws = new WebSocket(\n 'wss://api.openai.com/v1/realtime?model=gpt-4o-realtime-preview-2024-10-01',\n [],\n {\n finishRequest: (request) => {\n // Auth\n request.setHeader('Authorization', `Bearer ${this.apiKey}`);\n request.setHeader('OpenAI-Beta', 'realtime=v1');\n request.end();\n },\n },\n );\n ws.on('message', (data) => {\n const message = JSON.parse(data.toString());\n this.receive(message.type, message);\n });\n return new Promise((resolve, reject) => {\n const connectionErrorHandler = () => {\n this.disconnect(ws);\n reject(new Error(`Could not connect to \"${this.url}\"`));\n };\n ws.on('error', connectionErrorHandler);\n ws.on('open', () => {\n this.log(`Connected to \"${this.url}\"`);\n ws.removeListener('error', connectionErrorHandler);\n ws.on('error', () => {\n this.disconnect(ws);\n this.log(`Error, disconnected from \"${this.url}\"`);\n this.dispatch('close', { error: true });\n });\n ws.on('close', () => {\n this.disconnect(ws);\n this.log(`Disconnected from \"${this.url}\"`);\n this.dispatch('close', { error: false });\n });\n this.ws = ws;\n resolve(true);\n });\n });\n }\n }\n\n /**\n * Disconnects from Realtime API server\n * @param {WebSocket} [ws]\n * @returns {true}\n */\n disconnect(ws) {\n if (!ws || this.ws === ws) {\n this.ws && this.ws.close();\n this.ws = null;\n return true;\n }\n }\n\n /**\n * Receives an event from WebSocket and dispatches as \"server.{eventName}\" and \"server.*\" events\n * @param {string} eventName\n * @param {{[key: string]: any}} event\n * @returns {true}\n */\n receive(eventName, event) {\n this.log(`received:`, eventName, event);\n this.dispatch(`server.${eventName}`, event);\n this.dispatch('server.*', event);\n return true;\n }\n\n /**\n * Sends an event to WebSocket and dispatches as \"client.{eventName}\" and \"client.*\" events\n * @param {string} eventName\n * @param {{[key: string]: any}} event\n * @returns {true}\n */\n send(eventName, data) {\n if (!this.isConnected()) {\n throw new Error(`RealtimeAPI is not connected`);\n }\n data = data || {};\n if (typeof data !== 'object') {\n throw new Error(`data must be an object`);\n }\n const event = {\n event_id: RealtimeUtils.generateId('evt_'),\n type: eventName,\n ...data,\n };\n this.dispatch(`client.${eventName}`, event);\n this.dispatch('client.*', event);\n this.log(`sent:`, eventName, event);\n this.ws.send(JSON.stringify(event));\n return true;\n }\n}\n","import { RealtimeUtils } from './utils.js';\n\n/**\n * Contains text and audio information about a item\n * Can also be used as a delta\n * @typedef {Object} ItemContentDeltaType\n * @property {string} [text]\n * @property {Int16Array} [audio]\n * @property {string} [arguments]\n * @property {string} [transcript]\n */\n\n/**\n * RealtimeConversation holds conversation history\n * and performs event validation for RealtimeAPI\n * @class\n */\nexport class RealtimeConversation {\n defaultFrequency = 24_000; // 24,000 Hz\n\n EventProcessors = {\n 'conversation.item.created': (event) => {\n const { item } = event;\n // deep copy values\n const newItem = JSON.parse(JSON.stringify(item));\n if (!this.itemLookup[newItem.id]) {\n this.itemLookup[newItem.id] = newItem;\n this.items.push(newItem);\n }\n newItem.formatted = {};\n newItem.formatted.audio = new Int16Array(0);\n newItem.formatted.text = '';\n newItem.formatted.transcript = '';\n // If we have a speech item, can populate audio\n if (this.queuedSpeechItems[newItem.id]) {\n newItem.formatted.audio = this.queuedSpeechItems[newItem.id].audio;\n delete this.queuedSpeechItems[newItem.id]; // free up some memory\n }\n // Populate formatted text if it comes out on creation\n if (newItem.content) {\n const textContent = newItem.content.filter((c) =>\n ['text', 'input_text'].includes(c.type),\n );\n for (const content of textContent) {\n newItem.formatted.text += content.text;\n }\n }\n // If we have a transcript item, can pre-populate transcript\n if (this.queuedTranscriptItems[newItem.id]) {\n newItem.formatted.transcript = this.queuedTranscriptItems.transcript;\n delete this.queuedTranscriptItems[newItem.id];\n }\n if (newItem.type === 'message') {\n if (newItem.role === 'user') {\n newItem.status = 'completed';\n if (this.queuedInputAudio) {\n newItem.formatted.audio = this.queuedInputAudio;\n this.queuedInputAudio = null;\n }\n } else {\n newItem.status = 'in_progress';\n }\n } else if (newItem.type === 'function_call') {\n newItem.formatted.tool = {\n type: 'function',\n name: newItem.name,\n call_id: newItem.call_id,\n arguments: '',\n };\n newItem.status = 'in_progress';\n } else if (newItem.type === 'function_call_output') {\n newItem.status = 'completed';\n newItem.formatted.output = newItem.output;\n }\n return { item: newItem, delta: null };\n },\n 'conversation.item.truncated': (event) => {\n const { item_id, audio_end_ms } = event;\n const item = this.itemLookup[item_id];\n if (!item) {\n throw new Error(`item.truncated: Item \"${item_id}\" not found`);\n }\n const endIndex = Math.floor(\n (audio_end_ms * this.defaultFrequency) / 1000,\n );\n item.formatted.transcript = '';\n item.formatted.audio = item.formatted.audio.slice(0, endIndex);\n return { item, delta: null };\n },\n 'conversation.item.deleted': (event) => {\n const { item_id } = event;\n const item = this.itemLookup[item_id];\n if (!item) {\n throw new Error(`item.deleted: Item \"${item_id}\" not found`);\n }\n delete this.itemLookup[item.id];\n const index = this.items.indexOf(item);\n if (index > -1) {\n this.items.splice(index, 1);\n }\n return { item, delta: null };\n },\n 'conversation.item.input_audio_transcription.completed': (event) => {\n const { item_id, content_index, transcript } = event;\n const item = this.itemLookup[item_id];\n // We use a single space to represent an empty transcript for .formatted values\n // Otherwise it looks like no transcript provided\n const formattedTranscript = transcript || ' ';\n if (!item) {\n // We can receive transcripts in VAD mode before item.created\n // This happens specifically when audio is empty\n this.queuedTranscriptItems[item_id] = {\n transcript: formattedTranscript,\n };\n return { item: null, delta: null };\n } else {\n item.content[content_index].transcript = transcript;\n item.formatted.transcript = formattedTranscript;\n return { item, delta: { transcript } };\n }\n },\n 'input_audio_buffer.speech_started': (event) => {\n const { item_id, audio_start_ms } = event;\n this.queuedSpeechItems[item_id] = { audio_start_ms };\n return { item: null, delta: null };\n },\n 'input_audio_buffer.speech_stopped': (event, inputAudioBuffer) => {\n const { item_id, audio_end_ms } = event;\n if (!this.queuedSpeechItems[item_id]) {\n this.queuedSpeechItems[item_id] = { audio_start_ms: audio_end_ms };\n }\n const speech = this.queuedSpeechItems[item_id];\n speech.audio_end_ms = audio_end_ms;\n if (inputAudioBuffer) {\n const startIndex = Math.floor(\n (speech.audio_start_ms * this.defaultFrequency) / 1000,\n );\n const endIndex = Math.floor(\n (speech.audio_end_ms * this.defaultFrequency) / 1000,\n );\n speech.audio = inputAudioBuffer.slice(startIndex, endIndex);\n }\n return { item: null, delta: null };\n },\n 'response.created': (event) => {\n const { response } = event;\n if (!this.responseLookup[response.id]) {\n this.responseLookup[response.id] = response;\n this.responses.push(response);\n }\n return { item: null, delta: null };\n },\n 'response.output_item.added': (event) => {\n const { response_id, item } = event;\n const response = this.responseLookup[response_id];\n if (!response) {\n throw new Error(\n `response.output_item.added: Response \"${response_id}\" not found`,\n );\n }\n response.output.push(item.id);\n return { item: null, delta: null };\n },\n 'response.output_item.done': (event) => {\n const { item } = event;\n if (!item) {\n throw new Error(`response.output_item.done: Missing \"item\"`);\n }\n const foundItem = this.itemLookup[item.id];\n if (!foundItem) {\n throw new Error(\n `response.output_item.done: Item \"${item.id}\" not found`,\n );\n }\n foundItem.status = item.status;\n return { item: foundItem, delta: null };\n },\n 'response.content_part.added': (event) => {\n const { item_id, part } = event;\n const item = this.itemLookup[item_id];\n if (!item) {\n throw new Error(\n `response.content_part.added: Item \"${item_id}\" not found`,\n );\n }\n item.content.push(part);\n return { item, delta: null };\n },\n 'response.audio_transcript.delta': (event) => {\n const { item_id, content_index, delta } = event;\n const item = this.itemLookup[item_id];\n if (!item) {\n throw new Error(\n `response.audio_transcript.delta: Item \"${item_id}\" not found`,\n );\n }\n item.content[content_index].transcript += delta;\n item.formatted.transcript += delta;\n return { item, delta: { transcript: delta } };\n },\n 'response.audio.delta': (event) => {\n const { item_id, content_index, delta } = event;\n const item = this.itemLookup[item_id];\n if (!item) {\n throw new Error(`response.audio.delta: Item \"${item_id}\" not found`);\n }\n // This never gets renderered, we care about the file data instead\n // item.content[content_index].audio += delta;\n const arrayBuffer = RealtimeUtils.base64ToArrayBuffer(delta);\n const appendValues = new Int16Array(arrayBuffer);\n item.formatted.audio = RealtimeUtils.mergeInt16Arrays(\n item.formatted.audio,\n appendValues,\n );\n return { item, delta: { audio: appendValues } };\n },\n 'response.text.delta': (event) => {\n const { item_id, content_index, delta } = event;\n const item = this.itemLookup[item_id];\n if (!item) {\n throw new Error(`response.text.delta: Item \"${item_id}\" not found`);\n }\n item.content[content_index].text += delta;\n item.formatted.text += delta;\n return { item, delta: { text: delta } };\n },\n 'response.function_call_arguments.delta': (event) => {\n const { item_id, delta } = event;\n const item = this.itemLookup[item_id];\n if (!item) {\n throw new Error(\n `response.function_call_arguments.delta: Item \"${item_id}\" not found`,\n );\n }\n item.arguments += delta;\n item.formatted.tool.arguments += delta;\n return { item, delta: { arguments: delta } };\n },\n };\n\n /**\n * Create a new RealtimeConversation instance\n * @returns {RealtimeConversation}\n */\n constructor() {\n this.clear();\n }\n\n /**\n * Clears the conversation history and resets to default\n * @returns {true}\n */\n clear() {\n this.itemLookup = {};\n this.items = [];\n this.responseLookup = {};\n this.responses = [];\n this.queuedSpeechItems = {};\n this.queuedTranscriptItems = {};\n this.queuedInputAudio = null;\n return true;\n }\n\n /**\n * Queue input audio for manual speech event\n * @param {Int16Array} inputAudio\n * @returns {Int16Array}\n */\n queueInputAudio(inputAudio) {\n this.queuedInputAudio = inputAudio;\n return inputAudio;\n }\n\n /**\n * Process an event from the WebSocket server and compose items\n * @param {Object} event\n * @param {...any} args\n * @returns {item: import('./client.js').ItemType | null, delta: ItemContentDeltaType | null}\n */\n processEvent(event, ...args) {\n if (!event.event_id) {\n console.error(event);\n throw new Error(`Missing \"event_id\" on event`);\n }\n if (!event.type) {\n console.error(event);\n throw new Error(`Missing \"type\" on event`);\n }\n const eventProcessor = this.EventProcessors[event.type];\n if (!eventProcessor) {\n throw new Error(\n `Missing conversation event processor for \"${event.type}\"`,\n );\n }\n return eventProcessor.call(this, event, ...args);\n }\n\n /**\n * Retrieves a item by id\n * @param {string} id\n * @returns {import('./client.js').ItemType}\n */\n getItem(id) {\n return this.itemLookup[id] || null;\n }\n\n /**\n * Retrieves all items in the conversation\n * @returns {import('./client.js').ItemType[]}\n */\n getItems() {\n return this.items.slice();\n }\n}\n","import { RealtimeEventHandler } from './event_handler.js';\nimport { RealtimeAPI } from './api.js';\nimport { RealtimeConversation } from './conversation.js';\nimport { RealtimeUtils } from './utils.js';\n\n/**\n * Valid audio formats\n * @typedef {\"pcm16\"|\"g711_ulaw\"|\"g711_alaw\"} AudioFormatType\n */\n\n/**\n * @typedef {Object} AudioTranscriptionType\n * @property {\"whisper-1\"} model\n */\n\n/**\n * @typedef {Object} TurnDetectionServerVadType\n * @property {\"server_vad\"} type\n * @property {number} [threshold]\n * @property {number} [prefix_padding_ms]\n * @property {number} [silence_duration_ms]\n */\n\n/**\n * Tool definitions\n * @typedef {Object} ToolDefinitionType\n * @property {\"function\"} [type]\n * @property {string} name\n * @property {string} description\n * @property {{[key: string]: any}} parameters\n */\n\n/**\n * @typedef {Object} SessionResourceType\n * @property {string} [model]\n * @property {string[]} [modalities]\n * @property {string} [instructions]\n * @property {\"alloy\"|\"ash\"|\"ballad\"|\"coral\"|\"echo\"|\"sage\"|\"shimmer\"|\"verse\"} [voice]\n * @property {AudioFormatType} [input_audio_format]\n * @property {AudioFormatType} [output_audio_format]\n * @property {AudioTranscriptionType|null} [input_audio_transcription]\n * @property {TurnDetectionServerVadType|null} [turn_detection]\n * @property {ToolDefinitionType[]} [tools]\n * @property {\"auto\"|\"none\"|\"required\"|{type:\"function\",name:string}} [tool_choice]\n * @property {number} [temperature]\n * @property {number|\"inf\"} [max_response_output_tokens]\n */\n\n/**\n * @typedef {\"in_progress\"|\"completed\"|\"incomplete\"} ItemStatusType\n */\n\n/**\n * @typedef {Object} InputTextContentType\n * @property {\"input_text\"} type\n * @property {string} text\n */\n\n/**\n * @typedef {Object} InputAudioContentType\n * @property {\"input_audio\"} type\n * @property {string} [audio] base64-encoded audio data\n * @property {string|null} [transcript]\n */\n\n/**\n * @typedef {Object} TextContentType\n * @property {\"text\"} type\n * @property {string} text\n */\n\n/**\n * @typedef {Object} AudioContentType\n * @property {\"audio\"} type\n * @property {string} [audio] base64-encoded audio data\n * @property {string|null} [transcript]\n */\n\n/**\n * @typedef {Object} SystemItemType\n * @property {string|null} [previous_item_id]\n * @property {\"message\"} type\n * @property {ItemStatusType} status\n * @property {\"system\"} role\n * @property {Array<InputTextContentType>} content\n */\n\n/**\n * @typedef {Object} UserItemType\n * @property {string|null} [previous_item_id]\n * @property {\"message\"} type\n * @property {ItemStatusType} status\n * @property {\"user\"} role\n * @property {Array<InputTextContentType|InputAudioContentType>} content\n */\n\n/**\n * @typedef {Object} AssistantItemType\n * @property {string|null} [previous_item_id]\n * @property {\"message\"} type\n * @property {ItemStatusType} status\n * @property {\"assistant\"} role\n * @property {Array<TextContentType|AudioContentType>} content\n */\n\n/**\n * @typedef {Object} FunctionCallItemType\n * @property {string|null} [previous_item_id]\n * @property {\"function_call\"} type\n * @property {ItemStatusType} status\n * @property {string} call_id\n * @property {string} name\n * @property {string} arguments\n */\n\n/**\n * @typedef {Object} FunctionCallOutputItemType\n * @property {string|null} [previous_item_id]\n * @property {\"function_call_output\"} type\n * @property {string} call_id\n * @property {string} output\n */\n\n/**\n * @typedef {Object} FormattedToolType\n * @property {\"function\"} type\n * @property {string} name\n * @property {string} call_id\n * @property {string} arguments\n */\n\n/**\n * @typedef {Object} FormattedPropertyType\n * @property {Int16Array} [audio]\n * @property {string} [text]\n * @property {string} [transcript]\n * @property {FormattedToolType} [tool]\n * @property {string} [output]\n * @property {any} [file]\n */\n\n/**\n * @typedef {Object} FormattedItemType\n * @property {string} id\n * @property {string} object\n * @property {\"user\"|\"assistant\"|\"system\"} [role]\n * @property {FormattedPropertyType} formatted\n */\n\n/**\n * @typedef {SystemItemType|UserItemType|AssistantItemType|FunctionCallItemType|FunctionCallOutputItemType} BaseItemType\n */\n\n/**\n * @typedef {FormattedItemType & BaseItemType} ItemType\n */\n\n/**\n * @typedef {Object} IncompleteResponseStatusType\n * @property {\"incomplete\"} type\n * @property {\"interruption\"|\"max_output_tokens\"|\"content_filter\"} reason\n */\n\n/**\n * @typedef {Object} FailedResponseStatusType\n * @property {\"failed\"} type\n * @property {{code: string, message: string}|null} error\n */\n\n/**\n * @typedef {Object} UsageType\n * @property {number} total_tokens\n * @property {number} input_tokens\n * @property {number} output_tokens\n */\n\n/**\n * @typedef {Object} ResponseResourceType\n * @property {\"in_progress\"|\"completed\"|\"incomplete\"|\"cancelled\"|\"failed\"} status\n * @property {IncompleteResponseStatusType|FailedResponseStatusType|null} status_details\n * @property {ItemType[]} output\n * @property {UsageType|null} usage\n */\n\n/**\n * RealtimeClient Class\n * @class\n */\nexport class RealtimeClient extends RealtimeEventHandler {\n /**\n * Create a new RealtimeClient instance\n * @param {{url?: string, apiKey?: string, dangerouslyAllowAPIKeyInBrowser?: boolean, debug?: boolean}} [settings]\n */\n constructor({ url, apiKey, dangerouslyAllowAPIKeyInBrowser, debug } = {}) {\n super();\n this.defaultSessionConfig = {\n modalities: ['text', 'audio'],\n instructions: '',\n voice: 'verse',\n input_audio_format: 'pcm16',\n output_audio_format: 'pcm16',\n input_audio_transcription: null,\n turn_detection: null,\n tools: [],\n tool_choice: 'auto',\n temperature: 0.8,\n max_response_output_tokens: 4096,\n };\n this.sessionConfig = {};\n this.transcriptionModels = [\n {\n model: 'whisper-1',\n },\n ];\n this.defaultServerVadConfig = {\n type: 'server_vad',\n threshold: 0.5, // 0.0 to 1.0,\n prefix_padding_ms: 300, // How much audio to include in the audio stream before the speech starts.\n silence_duration_ms: 200, // How long to wait to mark the speech as stopped.\n };\n this.realtime = new RealtimeAPI({\n url,\n apiKey,\n dangerouslyAllowAPIKeyInBrowser,\n debug,\n });\n this.conversation = new RealtimeConversation();\n this._resetConfig();\n this._addAPIEventHandlers();\n }\n\n /**\n * Resets sessionConfig and conversationConfig to default\n * @private\n * @returns {true}\n */\n _resetConfig() {\n this.sessionCreated = false;\n this.tools = {};\n this.sessionConfig = JSON.parse(JSON.stringify(this.defaultSessionConfig));\n this.inputAudioBuffer = new Int16Array(0);\n return true;\n }\n\n /**\n * Sets up event handlers for a fully-functional application control flow\n * @private\n * @returns {true}\n */\n _addAPIEventHandlers() {\n // Event Logging handlers\n this.realtime.on('client.*', (event) => {\n const realtimeEvent = {\n time: new Date().toISOString(),\n source: 'client',\n event: event,\n };\n this.dispatch('realtime.event', realtimeEvent);\n });\n this.realtime.on('server.*', (event) => {\n const realtimeEvent = {\n time: new Date().toISOString(),\n source: 'server',\n event: event,\n };\n this.dispatch('realtime.event', realtimeEvent);\n });\n\n // Handles session created event, can optionally wait for it\n this.realtime.on(\n 'server.session.created',\n () => (this.sessionCreated = true),\n );\n\n // Setup for application control flow\n const handler = (event, ...args) => {\n const { item, delta } = this.conversation.processEvent(event, ...args);\n return { item, delta };\n };\n const handlerWithDispatch = (event, ...args) => {\n const { item, delta } = handler(event, ...args);\n if (item) {\n // FIXME: If statement is only here because item.input_audio_transcription.completed\n // can fire before `item.created`, resulting in empty item.\n // This happens in VAD mode with empty audio\n this.dispatch('conversation.updated', { item, delta });\n }\n return { item, delta };\n };\n const callTool = async (tool) => {\n try {\n const jsonArguments = JSON.parse(tool.arguments);\n const toolConfig = this.tools[tool.name];\n if (!toolConfig) {\n throw new Error(`Tool \"${tool.name}\" has not been added`);\n }\n const result = await toolConfig.handler(jsonArguments);\n this.realtime.send('conversation.item.create', {\n item: {\n type: 'function_call_output',\n call_id: tool.call_id,\n output: JSON.stringify(result),\n },\n });\n } catch (e) {\n this.realtime.send('conversation.item.create', {\n item: {\n type: 'function_call_output',\n call_id: tool.call_id,\n output: JSON.stringify({ error: e.message }),\n },\n });\n }\n this.createResponse();\n };\n\n // Handlers to update internal conversation state\n this.realtime.on('server.response.created', handler);\n this.realtime.on('server.response.output_item.added', handler);\n this.realtime.on('server.response.content_part.added', handler);\n this.realtime.on('server.input_audio_buffer.speech_started', (event) => {\n handler(event);\n this.dispatch('conversation.interrupted');\n });\n this.realtime.on('server.input_audio_buffer.speech_stopped', (event) =>\n handler(event, this.inputAudioBuffer),\n );\n\n // Handlers to update application state\n this.realtime.on('server.conversation.item.created', (event) => {\n const { item } = handlerWithDispatch(event);\n this.dispatch('conversation.item.appended', { item });\n if (item.status === 'completed') {\n this.dispatch('conversation.item.completed', { item });\n }\n });\n this.realtime.on('server.conversation.item.truncated', handlerWithDispatch);\n this.realtime.on('server.conversation.item.deleted', handlerWithDispatch);\n this.realtime.on(\n 'server.conversation.item.input_audio_transcription.completed',\n handlerWithDispatch,\n );\n this.realtime.on(\n 'server.response.audio_transcript.delta',\n handlerWithDispatch,\n );\n this.realtime.on('server.response.audio.delta', handlerWithDispatch);\n this.realtime.on('server.response.text.delta', handlerWithDispatch);\n this.realtime.on(\n 'server.response.function_call_arguments.delta',\n handlerWithDispatch,\n );\n this.realtime.on('server.response.output_item.done', async (event) => {\n const { item } = handlerWithDispatch(event);\n if (item.status === 'completed') {\n this.dispatch('conversation.item.completed', { item });\n }\n if (item.formatted.tool) {\n callTool(item.formatted.tool);\n }\n });\n\n return true;\n }\n\n /**\n * Tells us whether the realtime socket is connected and the session has started\n * @returns {boolean}\n */\n isConnected() {\n return this.realtime.isConnected();\n }\n\n /**\n * Resets the client instance entirely: disconnects and clears active config\n * @returns {true}\n */\n reset() {\n this.disconnect();\n this.clearEventHandlers();\n this.realtime.clearEventHandlers();\n this._resetConfig();\n this._addAPIEventHandlers();\n return true;\n }\n\n /**\n * Connects to the Realtime WebSocket API\n * Updates session config and conversation config\n * @returns {Promise<true>}\n */\n async connect() {\n if (this.isConnected()) {\n throw new Error(`Already connected, use .disconnect() first`);\n }\n await this.realtime.connect();\n this.updateSession();\n return true;\n }\n\n /**\n * Waits for a session.created event to be executed before proceeding\n * @returns {Promise<true>}\n */\n async waitForSessionCreated() {\n if (!this.isConnected()) {\n throw new Error(`Not connected, use .connect() first`);\n }\n while (!this.sessionCreated) {\n await new Promise((r) => setTimeout(() => r(), 1));\n }\n return true;\n }\n\n /**\n * Disconnects from the Realtime API and clears the conversation history\n */\n disconnect() {\n this.sessionCreated = false;\n this.realtime.isConnected() && this.realtime.disconnect();\n this.conversation.clear();\n }\n\n /**\n * Gets the active turn detection mode\n * @returns {\"server_vad\"|null}\n */\n getTurnDetectionType() {\n return this.sessionConfig.turn_detection?.type || null;\n }\n\n /**\n * Add a tool and handler\n * @param {ToolDefinitionType} definition\n * @param {function} handler\n * @returns {{definition: ToolDefinitionType, handler: function}}\n */\n addTool(definition, handler) {\n if (!definition?.name) {\n throw new Error(`Missing tool name in definition`);\n }\n const name = definition?.name;\n if (this.tools[name]) {\n throw new Error(\n `Tool \"${name}\" already added. Please use .removeTool(\"${name}\") before trying to add again.`,\n );\n }\n if (typeof handler !== 'function') {\n throw new Error(`Tool \"${name}\" handler must be a function`);\n }\n this.tools[name] = { definition, handler };\n this.updateSession();\n return this.tools[name];\n }\n\n /**\n * Removes a tool\n * @param {string} name\n * @returns {true}\n */\n removeTool(name) {\n if (!this.tools[name]) {\n throw new Error(`Tool \"${name}\" does not exist, can not be removed.`);\n }\n delete this.tools[name];\n return true;\n }\n\n /**\n * Deletes an item\n * @param {string} id\n * @returns {true}\n */\n deleteItem(id) {\n this.realtime.send('conversation.item.delete', { item_id: id });\n return true;\n }\n\n /**\n * Updates session configuration\n * If the client is not yet connected, will save details and instantiate upon connection\n * @param {SessionResourceType} [sessionConfig]\n */\n updateSession({\n modalities = void 0,\n instructions = void 0,\n voice = void 0,\n input_audio_format = void 0,\n output_audio_format = void 0,\n input_audio_transcription = void 0,\n turn_detection = void 0,\n tools = void 0,\n tool_choice = void 0,\n temperature = void 0,\n max_response_output_tokens = void 0,\n } = {}) {\n modalities !== void 0 && (this.sessionConfig.modalities = modalities);\n instructions !== void 0 && (this.sessionConfig.instructions = instructions);\n voice !== void 0 && (this.sessionConfig.voice = voice);\n input_audio_format !== void 0 &&\n (this.sessionConfig.input_audio_format = input_audio_format);\n output_audio_format !== void 0 &&\n (this.sessionConfig.output_audio_format = output_audio_format);\n input_audio_transcription !== void 0 &&\n (this.sessionConfig.input_audio_transcription =\n input_audio_transcription);\n turn_detection !== void 0 &&\n (this.sessionConfig.turn_detection = turn_detection);\n tools !== void 0 && (this.sessionConfig.tools = tools);\n tool_choice !== void 0 && (this.sessionConfig.tool_choice = tool_choice);\n temperature !== void 0 && (this.sessionConfig.temperature = temperature);\n max_response_output_tokens !== void 0 &&\n (this.sessionConfig.max_response_output_tokens =\n max_response_output_tokens);\n // Load tools from tool definitions + already loaded tools\n const useTools = [].concat(\n (tools || []).map((toolDefinition) => {\n const definition = {\n type: 'function',\n ...toolDefinition,\n };\n if (this.tools[definition?.name]) {\n throw new Error(\n `Tool \"${definition?.name}\" has already been defined`,\n );\n }\n return definition;\n }),\n Object.keys(this.tools).map((key) => {\n return {\n type: 'function',\n ...this.tools[key].definition,\n };\n }),\n );\n const session = { ...this.sessionConfig };\n session.tools = useTools;\n if (this.realtime.isConnected()) {\n this.realtime.send('session.update', { session });\n }\n return true;\n }\n\n /**\n * Sends user message content and generates a response\n * @param {Array<InputTextContentType|InputAudioContentType>} content\n * @returns {true}\n */\n sendUserMessageContent(content = []) {\n if (content.length) {\n for (const c of content) {\n if (c.type === 'input_audio') {\n if (c.audio instanceof ArrayBuffer || c.audio instanceof Int16Array) {\n c.audio = RealtimeUtils.arrayBufferToBase64(c.audio);\n }\n }\n }\n this.realtime.send('conversation.item.create', {\n item: {\n type: 'message',\n role: 'user',\n content,\n },\n });\n }\n this.createResponse();\n return true;\n }\n\n /**\n * Appends user audio to the existing audio buffer\n * @param {Int16Array|ArrayBuffer} arrayBuffer\n * @returns {true}\n */\n appendInputAudio(arrayBuffer) {\n if (arrayBuffer.byteLength > 0) {\n this.realtime.send('input_audio_buffer.append', {\n audio: RealtimeUtils.arrayBufferToBase64(arrayBuffer),\n });\n this.inputAudioBuffer = RealtimeUtils.mergeInt16Arrays(\n this.inputAudioBuffer,\n arrayBuffer,\n );\n }\n return true;\n }\n\n /**\n * Forces a model response generation\n * @returns {true}\n */\n createResponse() {\n if (\n this.getTurnDetectionType() === null &&\n this.inputAudioBuffer.byteLength > 0\n ) {\n this.realtime.send('input_audio_buffer.commit');\n this.conversation.queueInputAudio(this.inputAudioBuffer);\n this.inputAudioBuffer = new Int16Array(0);\n }\n this.realtime.send('response.create');\n return true;\n }\n\n /**\n * Cancels the ongoing server generation and truncates ongoing generation, if applicable\n * If no id provided, will simply call `cancel_generation` command\n * @param {string} id The id of the message to cancel\n * @param {number} [sampleCount] The number of samples to truncate past for the ongoing generation\n * @returns {{item: (AssistantItemType | null)}}\n */\n cancelResponse(id, sampleCount = 0) {\n if (!id) {\n this.realtime.send('response.cancel');\n return { item: null };\n } else if (id) {\n const item = this.conversation.getItem(id);\n if (!item) {\n throw new Error(`Could not find item \"${id}\"`);\n }\n if (item.type !== 'message') {\n throw new Error(`Can only cancelResponse messages with type \"message\"`);\n } else if (item.role !== 'assistant') {\n throw new Error(\n `Can only cancelResponse messages with role \"assistant\"`,\n );\n }\n this.realtime.send('response.cancel');\n const audioIndex = item.content.findIndex((c) => c.type === 'audio');\n if (audioIndex === -1) {\n throw new Error(`Could not find audio on item to cancel`);\n }\n this.realtime.send('conversation.item.truncate', {\n item_id: id,\n content_index: audioIndex,\n audio_end_ms: Math.floor(\n (sampleCount / this.conversation.defaultFrequency) * 1000,\n ),\n });\n return { item };\n }\n }\n\n /**\n * Utility for waiting for the next `conversation.item.appended` event to be triggered by the server\n * @returns {Promise<{item: ItemType}>}\n */\n async waitForNextItem() {\n const event = await this.waitForNext('conversation.item.appended');\n const { item } = event;\n return { item };\n }\n\n /**\n * Utility for waiting for the next `conversation.item.completed` event to be triggered by the server\n * @returns {Promise<{item: ItemType}>}\n */\n async waitForNextCompletedItem() {\n const event = await this.waitForNext('conversation.item.completed');\n const { item } = event;\n return { item };\n }\n}\n","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FineTuningJobEventsPage = exports.FineTuningJobsPage = exports.Jobs = void 0;\nconst resource_1 = require(\"../../../resource.js\");\nconst core_1 = require(\"../../../core.js\");\nconst CheckpointsAPI = __importStar(require(\"./checkpoints.js\"));\nconst checkpoints_1 = require(\"./checkpoints.js\");\nconst pagination_1 = require(\"../../../pagination.js\");\nclass Jobs extends resource_1.APIResource {\n constructor() {\n super(...arguments);\n this.checkpoints = new CheckpointsAPI.Checkpoints(this._client);\n }\n /**\n * Creates a fine-tuning job which begins the process of creating a new model from\n * a given dataset.\n *\n * Response includes details of the enqueued job including job status and the name\n * of the fine-tuned models once complete.\n *\n * [Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)\n */\n create(body, options) {\n return this._client.post('/fine_tuning/jobs', { body, ...options });\n }\n /**\n * Get info about a fine-tuning job.\n *\n * [Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)\n */\n retrieve(fineTuningJobId, options) {\n return this._client.get(`/fine_tuning/jobs/${fineTuningJobId}`, options);\n }\n list(query = {}, options) {\n if ((0, core_1.isRequestOptions)(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/fine_tuning/jobs', FineTuningJobsPage, { query, ...options });\n }\n /**\n * Immediately cancel a fine-tune job.\n */\n cancel(fineTuningJobId, options) {\n return this._client.post(`/fine_tuning/jobs/${fineTuningJobId}/cancel`, options);\n }\n listEvents(fineTuningJobId, query = {}, options) {\n if ((0, core_1.isRequestOptions)(query)) {\n return this.listEvents(fineTuningJobId, {}, query);\n }\n return this._client.getAPIList(`/fine_tuning/jobs/${fineTuningJobId}/events`, FineTuningJobEventsPage, {\n query,\n ...options,\n });\n }\n}\nexports.Jobs = Jobs;\nclass FineTuningJobsPage extends pagination_1.CursorPage {\n}\nexports.FineTuningJobsPage = FineTuningJobsPage;\nclass FineTuningJobEventsPage extends pagination_1.CursorPage {\n}\nexports.FineTuningJobEventsPage = FineTuningJobEventsPage;\nJobs.FineTuningJobsPage = FineTuningJobsPage;\nJobs.FineTuningJobEventsPage = FineTuningJobEventsPage;\nJobs.Checkpoints = checkpoints_1.Checkpoints;\nJobs.FineTuningJobCheckpointsPage = checkpoints_1.FineTuningJobCheckpointsPage;\n//# sourceMappingURL=jobs.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RunsPage = exports.Runs = void 0;\nconst resource_1 = require(\"../../../../resource.js\");\nconst core_1 = require(\"../../../../core.js\");\nconst AssistantStream_1 = require(\"../../../../lib/AssistantStream.js\");\nconst core_2 = require(\"../../../../core.js\");\nconst StepsAPI = __importStar(require(\"./steps.js\"));\nconst steps_1 = require(\"./steps.js\");\nconst pagination_1 = require(\"../../../../pagination.js\");\nclass Runs extends resource_1.APIResource {\n constructor() {\n super(...arguments);\n this.steps = new StepsAPI.Steps(this._client);\n }\n create(threadId, params, options) {\n const { include, ...body } = params;\n return this._client.post(`/threads/${threadId}/runs`, {\n query: { include },\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n stream: params.stream ?? false,\n });\n }\n /**\n * Retrieves a run.\n */\n retrieve(threadId, runId, options) {\n return this._client.get(`/threads/${threadId}/runs/${runId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Modifies a run.\n */\n update(threadId, runId, body, options) {\n return this._client.post(`/threads/${threadId}/runs/${runId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n list(threadId, query = {}, options) {\n if ((0, core_1.isRequestOptions)(query)) {\n return this.list(threadId, {}, query);\n }\n return this._client.getAPIList(`/threads/${threadId}/runs`, RunsPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Cancels a run that is `in_progress`.\n */\n cancel(threadId, runId, options) {\n return this._client.post(`/threads/${threadId}/runs/${runId}/cancel`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * A helper to create a run an poll for a terminal state. More information on Run\n * lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n async createAndPoll(threadId, body, options) {\n const run = await this.create(threadId, body, options);\n return await this.poll(threadId, run.id, options);\n }\n /**\n * Create a Run stream\n *\n * @deprecated use `stream` instead\n */\n createAndStream(threadId, body, options) {\n return AssistantStream_1.AssistantStream.createAssistantStream(threadId, this._client.beta.threads.runs, body, options);\n }\n /**\n * A helper to poll a run status until it reaches a terminal state. More\n * information on Run lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n async poll(threadId, runId, options) {\n const headers = { ...options?.headers, 'X-Stainless-Poll-Helper': 'true' };\n if (options?.pollIntervalMs) {\n headers['X-Stainless-Custom-Poll-Interval'] = options.pollIntervalMs.toString();\n }\n while (true) {\n const { data: run, response } = await this.retrieve(threadId, runId, {\n ...options,\n headers: { ...options?.headers, ...headers },\n }).withResponse();\n switch (run.status) {\n //If we are in any sort of intermediate state we poll\n case 'queued':\n case 'in_progress':\n case 'cancelling':\n let sleepInterval = 5000;\n if (options?.pollIntervalMs) {\n sleepInterval = options.pollIntervalMs;\n }\n else {\n const headerInterval = response.headers.get('openai-poll-after-ms');\n if (headerInterval) {\n const headerIntervalMs = parseInt(headerInterval);\n if (!isNaN(headerIntervalMs)) {\n sleepInterval = headerIntervalMs;\n }\n }\n }\n await (0, core_2.sleep)(sleepInterval);\n break;\n //We return the run in any terminal state.\n case 'requires_action':\n case 'incomplete':\n case 'cancelled':\n case 'completed':\n case 'failed':\n case 'expired':\n return run;\n }\n }\n }\n /**\n * Create a Run stream\n */\n stream(threadId, body, options) {\n return AssistantStream_1.AssistantStream.createAssistantStream(threadId, this._client.beta.threads.runs, body, options);\n }\n submitToolOutputs(threadId, runId, body, options) {\n return this._client.post(`/threads/${threadId}/runs/${runId}/submit_tool_outputs`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n stream: body.stream ?? false,\n });\n }\n /**\n * A helper to submit a tool output to a run and poll for a terminal run state.\n * More information on Run lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n async submitToolOutputsAndPoll(threadId, runId, body, options) {\n const run = await this.submitToolOutputs(threadId, runId, body, options);\n return await this.poll(threadId, run.id, options);\n }\n /**\n * Submit the tool outputs from a previous run and stream the run to a terminal\n * state. More information on Run lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n submitToolOutputsStream(threadId, runId, body, options) {\n return AssistantStream_1.AssistantStream.createToolAssistantStream(threadId, runId, this._client.beta.threads.runs, body, options);\n }\n}\nexports.Runs = Runs;\nclass RunsPage extends pagination_1.CursorPage {\n}\nexports.RunsPage = RunsPage;\nRuns.RunsPage = RunsPage;\nRuns.Steps = steps_1.Steps;\nRuns.RunStepsPage = steps_1.RunStepsPage;\n//# sourceMappingURL=runs.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UnprocessableEntityError = exports.PermissionDeniedError = exports.InternalServerError = exports.AuthenticationError = exports.BadRequestError = exports.RateLimitError = exports.ConflictError = exports.NotFoundError = exports.APIUserAbortError = exports.APIConnectionTimeoutError = exports.APIConnectionError = exports.APIError = exports.OpenAIError = exports.fileFromPath = exports.toFile = exports.AzureOpenAI = exports.OpenAI = void 0;\nconst qs = __importStar(require(\"./internal/qs/index.js\"));\nconst Core = __importStar(require(\"./core.js\"));\nconst Errors = __importStar(require(\"./error.js\"));\nconst Pagination = __importStar(require(\"./pagination.js\"));\nconst Uploads = __importStar(require(\"./uploads.js\"));\nconst API = __importStar(require(\"./resources/index.js\"));\nconst batches_1 = require(\"./resources/batches.js\");\nconst completions_1 = require(\"./resources/completions.js\");\nconst embeddings_1 = require(\"./resources/embeddings.js\");\nconst files_1 = require(\"./resources/files.js\");\nconst images_1 = require(\"./resources/images.js\");\nconst models_1 = require(\"./resources/models.js\");\nconst moderations_1 = require(\"./resources/moderations.js\");\nconst audio_1 = require(\"./resources/audio/audio.js\");\nconst beta_1 = require(\"./resources/beta/beta.js\");\nconst chat_1 = require(\"./resources/chat/chat.js\");\nconst fine_tuning_1 = require(\"./resources/fine-tuning/fine-tuning.js\");\nconst responses_1 = require(\"./resources/responses/responses.js\");\nconst uploads_1 = require(\"./resources/uploads/uploads.js\");\nconst vector_stores_1 = require(\"./resources/vector-stores/vector-stores.js\");\nconst completions_2 = require(\"./resources/chat/completions/completions.js\");\n/**\n * API Client for interfacing with the OpenAI API.\n */\nclass OpenAI extends Core.APIClient {\n /**\n * API Client for interfacing with the OpenAI API.\n *\n * @param {string | undefined} [opts.apiKey=process.env['OPENAI_API_KEY'] ?? undefined]\n * @param {string | null | undefined} [opts.organization=process.env['OPENAI_ORG_ID'] ?? null]\n * @param {string | null | undefined} [opts.project=process.env['OPENAI_PROJECT_ID'] ?? null]\n * @param {string} [opts.baseURL=process.env['OPENAI_BASE_URL'] ?? https://api.openai.com/v1] - Override the default base URL for the API.\n * @param {number} [opts.timeout=10 minutes] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out.\n * @param {number} [opts.httpAgent] - An HTTP agent used to manage HTTP(s) connections.\n * @param {Core.Fetch} [opts.fetch] - Specify a custom `fetch` function implementation.\n * @param {number} [opts.maxRetries=2] - The maximum number of times the client will retry a request.\n * @param {Core.Headers} opts.defaultHeaders - Default headers to include with every request to the API.\n * @param {Core.DefaultQuery} opts.defaultQuery - Default query parameters to include with every request to the API.\n * @param {boolean} [opts.dangerouslyAllowBrowser=false] - By default, client-side use of this library is not allowed, as it risks exposing your secret API credentials to attackers.\n */\n constructor({ baseURL = Core.readEnv('OPENAI_BASE_URL'), apiKey = Core.readEnv('OPENAI_API_KEY'), organization = Core.readEnv('OPENAI_ORG_ID') ?? null, project = Core.readEnv('OPENAI_PROJECT_ID') ?? null, ...opts } = {}) {\n if (apiKey === undefined) {\n throw new Errors.OpenAIError(\"The OPENAI_API_KEY environment variable is missing or empty; either provide it, or instantiate the OpenAI client with an apiKey option, like new OpenAI({ apiKey: 'My API Key' }).\");\n }\n const options = {\n apiKey,\n organization,\n project,\n ...opts,\n baseURL: baseURL || `https://api.openai.com/v1`,\n };\n if (!options.dangerouslyAllowBrowser && Core.isRunningInBrowser()) {\n throw new Errors.OpenAIError(\"It looks like you're running in a browser-like environment.\\n\\nThis is disabled by default, as it risks exposing your secret API credentials to attackers.\\nIf you understand the risks and have appropriate mitigations in place,\\nyou can set the `dangerouslyAllowBrowser` option to `true`, e.g.,\\n\\nnew OpenAI({ apiKey, dangerouslyAllowBrowser: true });\\n\\nhttps://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety\\n\");\n }\n super({\n baseURL: options.baseURL,\n timeout: options.timeout ?? 600000 /* 10 minutes */,\n httpAgent: options.httpAgent,\n maxRetries: options.maxRetries,\n fetch: options.fetch,\n });\n this.completions = new API.Completions(this);\n this.chat = new API.Chat(this);\n this.embeddings = new API.Embeddings(this);\n this.files = new API.Files(this);\n this.images = new API.Images(this);\n this.audio = new API.Audio(this);\n this.moderations = new API.Moderations(this);\n this.models = new API.Models(this);\n this.fineTuning = new API.FineTuning(this);\n this.vectorStores = new API.VectorStores(this);\n this.beta = new API.Beta(this);\n this.batches = new API.Batches(this);\n this.uploads = new API.Uploads(this);\n this.responses = new API.Responses(this);\n this._options = options;\n this.apiKey = apiKey;\n this.organization = organization;\n this.project = project;\n }\n defaultQuery() {\n return this._options.defaultQuery;\n }\n defaultHeaders(opts) {\n return {\n ...super.defaultHeaders(opts),\n 'OpenAI-Organization': this.organization,\n 'OpenAI-Project': this.project,\n ...this._options.defaultHeaders,\n };\n }\n authHeaders(opts) {\n return { Authorization: `Bearer ${this.apiKey}` };\n }\n stringifyQuery(query) {\n return qs.stringify(query, { arrayFormat: 'brackets' });\n }\n}\nexports.OpenAI = OpenAI;\n_a = OpenAI;\nOpenAI.OpenAI = _a;\nOpenAI.DEFAULT_TIMEOUT = 600000; // 10 minutes\nOpenAI.OpenAIError = Errors.OpenAIError;\nOpenAI.APIError = Errors.APIError;\nOpenAI.APIConnectionError = Errors.APIConnectionError;\nOpenAI.APIConnectionTimeoutError = Errors.APIConnectionTimeoutError;\nOpenAI.APIUserAbortError = Errors.APIUserAbortError;\nOpenAI.NotFoundError = Errors.NotFoundError;\nOpenAI.ConflictError = Errors.ConflictError;\nOpenAI.RateLimitError = Errors.RateLimitError;\nOpenAI.BadRequestError = Errors.BadRequestError;\nOpenAI.AuthenticationError = Errors.AuthenticationError;\nOpenAI.InternalServerError = Errors.InternalServerError;\nOpenAI.PermissionDeniedError = Errors.PermissionDeniedError;\nOpenAI.UnprocessableEntityError = Errors.UnprocessableEntityError;\nOpenAI.toFile = Uploads.toFile;\nOpenAI.fileFromPath = Uploads.fileFromPath;\nOpenAI.Completions = completions_1.Completions;\nOpenAI.Chat = chat_1.Chat;\nOpenAI.ChatCompletionsPage = completions_2.ChatCompletionsPage;\nOpenAI.Embeddings = embeddings_1.Embeddings;\nOpenAI.Files = files_1.Files;\nOpenAI.FileObjectsPage = files_1.FileObjectsPage;\nOpenAI.Images = images_1.Images;\nOpenAI.Audio = audio_1.Audio;\nOpenAI.Moderations = moderations_1.Moderations;\nOpenAI.Models = models_1.Models;\nOpenAI.ModelsPage = models_1.ModelsPage;\nOpenAI.FineTuning = fine_tuning_1.FineTuning;\nOpenAI.VectorStores = vector_stores_1.VectorStores;\nOpenAI.VectorStoresPage = vector_stores_1.VectorStoresPage;\nOpenAI.VectorStoreSearchResponsesPage = vector_stores_1.VectorStoreSearchResponsesPage;\nOpenAI.Beta = beta_1.Beta;\nOpenAI.Batches = batches_1.Batches;\nOpenAI.BatchesPage = batches_1.BatchesPage;\nOpenAI.Uploads = uploads_1.Uploads;\nOpenAI.Responses = responses_1.Responses;\n/** API Client for interfacing with the Azure OpenAI API. */\nclass AzureOpenAI extends OpenAI {\n /**\n * API Client for interfacing with the Azure OpenAI API.\n *\n * @param {string | undefined} [opts.apiVersion=process.env['OPENAI_API_VERSION'] ?? undefined]\n * @param {string | undefined} [opts.endpoint=process.env['AZURE_OPENAI_ENDPOINT'] ?? undefined] - Your Azure endpoint, including the resource, e.g. `https://example-resource.azure.openai.com/`\n * @param {string | undefined} [opts.apiKey=process.env['AZURE_OPENAI_API_KEY'] ?? undefined]\n * @param {string | undefined} opts.deployment - A model deployment, if given, sets the base client URL to include `/deployments/{deployment}`.\n * @param {string | null | undefined} [opts.organization=process.env['OPENAI_ORG_ID'] ?? null]\n * @param {string} [opts.baseURL=process.env['OPENAI_BASE_URL']] - Sets the base URL for the API, e.g. `https://example-resource.azure.openai.com/openai/`.\n * @param {number} [opts.timeout=10 minutes] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out.\n * @param {number} [opts.httpAgent] - An HTTP agent used to manage HTTP(s) connections.\n * @param {Core.Fetch} [opts.fetch] - Specify a custom `fetch` function implementation.\n * @param {number} [opts.maxRetries=2] - The maximum number of times the client will retry a request.\n * @param {Core.Headers} opts.defaultHeaders - Default headers to include with every request to the API.\n * @param {Core.DefaultQuery} opts.defaultQuery - Default query parameters to include with every request to the API.\n * @param {boolean} [opts.dangerouslyAllowBrowser=false] - By default, client-side use of this library is not allowed, as it risks exposing your secret API credentials to attackers.\n */\n constructor({ baseURL = Core.readEnv('OPENAI_BASE_URL'), apiKey = Core.readEnv('AZURE_OPENAI_API_KEY'), apiVersion = Core.readEnv('OPENAI_API_VERSION'), endpoint, deployment, azureADTokenProvider, dangerouslyAllowBrowser, ...opts } = {}) {\n if (!apiVersion) {\n throw new Errors.OpenAIError(\"The OPENAI_API_VERSION environment variable is missing or empty; either provide it, or instantiate the AzureOpenAI client with an apiVersion option, like new AzureOpenAI({ apiVersion: 'My API Version' }).\");\n }\n if (typeof azureADTokenProvider === 'function') {\n dangerouslyAllowBrowser = true;\n }\n if (!azureADTokenProvider && !apiKey) {\n throw new Errors.OpenAIError('Missing credentials. Please pass one of `apiKey` and `azureADTokenProvider`, or set the `AZURE_OPENAI_API_KEY` environment variable.');\n }\n if (azureADTokenProvider && apiKey) {\n throw new Errors.OpenAIError('The `apiKey` and `azureADTokenProvider` arguments are mutually exclusive; only one can be passed at a time.');\n }\n // define a sentinel value to avoid any typing issues\n apiKey ?? (apiKey = API_KEY_SENTINEL);\n opts.defaultQuery = { ...opts.defaultQuery, 'api-version': apiVersion };\n if (!baseURL) {\n if (!endpoint) {\n endpoint = process.env['AZURE_OPENAI_ENDPOINT'];\n }\n if (!endpoint) {\n throw new Errors.OpenAIError('Must provide one of the `baseURL` or `endpoint` arguments, or the `AZURE_OPENAI_ENDPOINT` environment variable');\n }\n baseURL = `${endpoint}/openai`;\n }\n else {\n if (endpoint) {\n throw new Errors.OpenAIError('baseURL and endpoint are mutually exclusive');\n }\n }\n super({\n apiKey,\n baseURL,\n ...opts,\n ...(dangerouslyAllowBrowser !== undefined ? { dangerouslyAllowBrowser } : {}),\n });\n this.apiVersion = '';\n this._azureADTokenProvider = azureADTokenProvider;\n this.apiVersion = apiVersion;\n this.deploymentName = deployment;\n }\n buildRequest(options, props = {}) {\n if (_deployments_endpoints.has(options.path) && options.method === 'post' && options.body !== undefined) {\n if (!Core.isObj(options.body)) {\n throw new Error('Expected request body to be an object');\n }\n const model = this.deploymentName || options.body['model'] || options.__metadata?.['model'];\n if (model !== undefined && !this.baseURL.includes('/deployments')) {\n options.path = `/deployments/${model}${options.path}`;\n }\n }\n return super.buildRequest(options, props);\n }\n async _getAzureADToken() {\n if (typeof this._azureADTokenProvider === 'function') {\n const token = await this._azureADTokenProvider();\n if (!token || typeof token !== 'string') {\n throw new Errors.OpenAIError(`Expected 'azureADTokenProvider' argument to return a string but it returned ${token}`);\n }\n return token;\n }\n return undefined;\n }\n authHeaders(opts) {\n return {};\n }\n async prepareOptions(opts) {\n /**\n * The user should provide a bearer token provider if they want\n * to use Azure AD authentication. The user shouldn't set the\n * Authorization header manually because the header is overwritten\n * with the Azure AD token if a bearer token provider is provided.\n */\n if (opts.headers?.['api-key']) {\n return super.prepareOptions(opts);\n }\n const token = await this._getAzureADToken();\n opts.headers ?? (opts.headers = {});\n if (token) {\n opts.headers['Authorization'] = `Bearer ${token}`;\n }\n else if (this.apiKey !== API_KEY_SENTINEL) {\n opts.headers['api-key'] = this.apiKey;\n }\n else {\n throw new Errors.OpenAIError('Unable to handle auth');\n }\n return super.prepareOptions(opts);\n }\n}\nexports.AzureOpenAI = AzureOpenAI;\nconst _deployments_endpoints = new Set([\n '/completions',\n '/chat/completions',\n '/embeddings',\n '/audio/transcriptions',\n '/audio/translations',\n '/audio/speech',\n '/images/generations',\n]);\nconst API_KEY_SENTINEL = '<Missing Key>';\n// ---------------------- End Azure ----------------------\nvar uploads_2 = require(\"./uploads.js\");\nObject.defineProperty(exports, \"toFile\", { enumerable: true, get: function () { return uploads_2.toFile; } });\nObject.defineProperty(exports, \"fileFromPath\", { enumerable: true, get: function () { return uploads_2.fileFromPath; } });\nvar error_1 = require(\"./error.js\");\nObject.defineProperty(exports, \"OpenAIError\", { enumerable: true, get: function () { return error_1.OpenAIError; } });\nObject.defineProperty(exports, \"APIError\", { enumerable: true, get: function () { return error_1.APIError; } });\nObject.defineProperty(exports, \"APIConnectionError\", { enumerable: true, get: function () { return error_1.APIConnectionError; } });\nObject.defineProperty(exports, \"APIConnectionTimeoutError\", { enumerable: true, get: function () { return error_1.APIConnectionTimeoutError; } });\nObject.defineProperty(exports, \"APIUserAbortError\", { enumerable: true, get: function () { return error_1.APIUserAbortError; } });\nObject.defineProperty(exports, \"NotFoundError\", { enumerable: true, get: function () { return error_1.NotFoundError; } });\nObject.defineProperty(exports, \"ConflictError\", { enumerable: true, get: function () { return error_1.ConflictError; } });\nObject.defineProperty(exports, \"RateLimitError\", { enumerable: true, get: function () { return error_1.RateLimitError; } });\nObject.defineProperty(exports, \"BadRequestError\", { enumerable: true, get: function () { return error_1.BadRequestError; } });\nObject.defineProperty(exports, \"AuthenticationError\", { enumerable: true, get: function () { return error_1.AuthenticationError; } });\nObject.defineProperty(exports, \"InternalServerError\", { enumerable: true, get: function () { return error_1.InternalServerError; } });\nObject.defineProperty(exports, \"PermissionDeniedError\", { enumerable: true, get: function () { return error_1.PermissionDeniedError; } });\nObject.defineProperty(exports, \"UnprocessableEntityError\", { enumerable: true, get: function () { return error_1.UnprocessableEntityError; } });\nexports = module.exports = OpenAI;\nmodule.exports.AzureOpenAI = AzureOpenAI;\nexports.default = OpenAI;\n//# sourceMappingURL=index.js.map","/**\n * Disclaimer: modules in _shims aren't intended to be imported by SDK users.\n */\nconst shims = require('./registry');\nconst auto = require('openai/_shims/auto/runtime');\nif (!shims.kind) shims.setShims(auto.getRuntime(), { auto: true });\nfor (const property of Object.keys(shims)) {\n Object.defineProperty(exports, property, {\n get() {\n return shims[property];\n },\n });\n}\n","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CursorPage = exports.Page = void 0;\nconst core_1 = require(\"./core.js\");\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nclass Page extends core_1.AbstractPage {\n constructor(client, response, body, options) {\n super(client, response, body, options);\n this.data = body.data || [];\n this.object = body.object;\n }\n getPaginatedItems() {\n return this.data ?? [];\n }\n // @deprecated Please use `nextPageInfo()` instead\n /**\n * This page represents a response that isn't actually paginated at the API level\n * so there will never be any next page params.\n */\n nextPageParams() {\n return null;\n }\n nextPageInfo() {\n return null;\n }\n}\nexports.Page = Page;\nclass CursorPage extends core_1.AbstractPage {\n constructor(client, response, body, options) {\n super(client, response, body, options);\n this.data = body.data || [];\n this.has_more = body.has_more || false;\n }\n getPaginatedItems() {\n return this.data ?? [];\n }\n hasNextPage() {\n if (this.has_more === false) {\n return false;\n }\n return super.hasNextPage();\n }\n // @deprecated Please use `nextPageInfo()` instead\n nextPageParams() {\n const info = this.nextPageInfo();\n if (!info)\n return null;\n if ('params' in info)\n return info.params;\n const params = Object.fromEntries(info.url.searchParams);\n if (!Object.keys(params).length)\n return null;\n return params;\n }\n nextPageInfo() {\n const data = this.getPaginatedItems();\n if (!data.length) {\n return null;\n }\n const id = data[data.length - 1]?.id;\n if (!id) {\n return null;\n }\n return { params: { after: id } };\n }\n}\nexports.CursorPage = CursorPage;\n//# sourceMappingURL=pagination.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BatchesPage = exports.Batches = void 0;\nconst resource_1 = require(\"../resource.js\");\nconst core_1 = require(\"../core.js\");\nconst pagination_1 = require(\"../pagination.js\");\nclass Batches extends resource_1.APIResource {\n /**\n * Creates and executes a batch from an uploaded file of requests\n */\n create(body, options) {\n return this._client.post('/batches', { body, ...options });\n }\n /**\n * Retrieves a batch.\n */\n retrieve(batchId, options) {\n return this._client.get(`/batches/${batchId}`, options);\n }\n list(query = {}, options) {\n if ((0, core_1.isRequestOptions)(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/batches', BatchesPage, { query, ...options });\n }\n /**\n * Cancels an in-progress batch. The batch will be in status `cancelling` for up to\n * 10 minutes, before changing to `cancelled`, where it will have partial results\n * (if any) available in the output file.\n */\n cancel(batchId, options) {\n return this._client.post(`/batches/${batchId}/cancel`, options);\n }\n}\nexports.Batches = Batches;\nclass BatchesPage extends pagination_1.CursorPage {\n}\nexports.BatchesPage = BatchesPage;\nBatches.BatchesPage = BatchesPage;\n//# sourceMappingURL=batches.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Threads = void 0;\nconst resource_1 = require(\"../../../resource.js\");\nconst core_1 = require(\"../../../core.js\");\nconst AssistantStream_1 = require(\"../../../lib/AssistantStream.js\");\nconst MessagesAPI = __importStar(require(\"./messages.js\"));\nconst messages_1 = require(\"./messages.js\");\nconst RunsAPI = __importStar(require(\"./runs/runs.js\"));\nconst runs_1 = require(\"./runs/runs.js\");\nclass Threads extends resource_1.APIResource {\n constructor() {\n super(...arguments);\n this.runs = new RunsAPI.Runs(this._client);\n this.messages = new MessagesAPI.Messages(this._client);\n }\n create(body = {}, options) {\n if ((0, core_1.isRequestOptions)(body)) {\n return this.create({}, body);\n }\n return this._client.post('/threads', {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Retrieves a thread.\n */\n retrieve(threadId, options) {\n return this._client.get(`/threads/${threadId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Modifies a thread.\n */\n update(threadId, body, options) {\n return this._client.post(`/threads/${threadId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Delete a thread.\n */\n del(threadId, options) {\n return this._client.delete(`/threads/${threadId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n createAndRun(body, options) {\n return this._client.post('/threads/runs', {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n stream: body.stream ?? false,\n });\n }\n /**\n * A helper to create a thread, start a run and then poll for a terminal state.\n * More information on Run lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n async createAndRunPoll(body, options) {\n const run = await this.createAndRun(body, options);\n return await this.runs.poll(run.thread_id, run.id, options);\n }\n /**\n * Create a thread and stream the run back\n */\n createAndRunStream(body, options) {\n return AssistantStream_1.AssistantStream.createThreadAssistantStream(body, this._client.beta.threads, options);\n }\n}\nexports.Threads = Threads;\nThreads.Runs = runs_1.Runs;\nThreads.RunsPage = runs_1.RunsPage;\nThreads.Messages = messages_1.Messages;\nThreads.MessagesPage = messages_1.MessagesPage;\n//# sourceMappingURL=threads.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Messages = exports.Completions = exports.ChatCompletionsPage = exports.ChatCompletionStoreMessagesPage = void 0;\nvar completions_1 = require(\"./completions.js\");\nObject.defineProperty(exports, \"ChatCompletionStoreMessagesPage\", { enumerable: true, get: function () { return completions_1.ChatCompletionStoreMessagesPage; } });\nObject.defineProperty(exports, \"ChatCompletionsPage\", { enumerable: true, get: function () { return completions_1.ChatCompletionsPage; } });\nObject.defineProperty(exports, \"Completions\", { enumerable: true, get: function () { return completions_1.Completions; } });\nvar messages_1 = require(\"./messages.js\");\nObject.defineProperty(exports, \"Messages\", { enumerable: true, get: function () { return messages_1.Messages; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.APIResource = void 0;\nclass APIResource {\n constructor(client) {\n this._client = client;\n }\n}\nexports.APIResource = APIResource;\n//# sourceMappingURL=resource.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AssistantsPage = exports.Assistants = void 0;\nconst resource_1 = require(\"../../resource.js\");\nconst core_1 = require(\"../../core.js\");\nconst pagination_1 = require(\"../../pagination.js\");\nclass Assistants extends resource_1.APIResource {\n /**\n * Create an assistant with a model and instructions.\n */\n create(body, options) {\n return this._client.post('/assistants', {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Retrieves an assistant.\n */\n retrieve(assistantId, options) {\n return this._client.get(`/assistants/${assistantId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Modifies an assistant.\n */\n update(assistantId, body, options) {\n return this._client.post(`/assistants/${assistantId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n list(query = {}, options) {\n if ((0, core_1.isRequestOptions)(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/assistants', AssistantsPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Delete an assistant.\n */\n del(assistantId, options) {\n return this._client.delete(`/assistants/${assistantId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n}\nexports.Assistants = Assistants;\nclass AssistantsPage extends pagination_1.CursorPage {\n}\nexports.AssistantsPage = AssistantsPage;\nAssistants.AssistantsPage = AssistantsPage;\n//# sourceMappingURL=assistants.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Uploads = void 0;\nconst resource_1 = require(\"../../resource.js\");\nconst PartsAPI = __importStar(require(\"./parts.js\"));\nconst parts_1 = require(\"./parts.js\");\nclass Uploads extends resource_1.APIResource {\n constructor() {\n super(...arguments);\n this.parts = new PartsAPI.Parts(this._client);\n }\n /**\n * Creates an intermediate\n * [Upload](https://platform.openai.com/docs/api-reference/uploads/object) object\n * that you can add\n * [Parts](https://platform.openai.com/docs/api-reference/uploads/part-object) to.\n * Currently, an Upload can accept at most 8 GB in total and expires after an hour\n * after you create it.\n *\n * Once you complete the Upload, we will create a\n * [File](https://platform.openai.com/docs/api-reference/files/object) object that\n * contains all the parts you uploaded. This File is usable in the rest of our\n * platform as a regular File object.\n *\n * For certain `purpose` values, the correct `mime_type` must be specified. Please\n * refer to documentation for the\n * [supported MIME types for your use case](https://platform.openai.com/docs/assistants/tools/file-search#supported-files).\n *\n * For guidance on the proper filename extensions for each purpose, please follow\n * the documentation on\n * [creating a File](https://platform.openai.com/docs/api-reference/files/create).\n */\n create(body, options) {\n return this._client.post('/uploads', { body, ...options });\n }\n /**\n * Cancels the Upload. No Parts may be added after an Upload is cancelled.\n */\n cancel(uploadId, options) {\n return this._client.post(`/uploads/${uploadId}/cancel`, options);\n }\n /**\n * Completes the\n * [Upload](https://platform.openai.com/docs/api-reference/uploads/object).\n *\n * Within the returned Upload object, there is a nested\n * [File](https://platform.openai.com/docs/api-reference/files/object) object that\n * is ready to use in the rest of the platform.\n *\n * You can specify the order of the Parts by passing in an ordered list of the Part\n * IDs.\n *\n * The number of bytes uploaded upon completion must match the number of bytes\n * initially specified when creating the Upload object. No Parts may be added after\n * an Upload is completed.\n */\n complete(uploadId, body, options) {\n return this._client.post(`/uploads/${uploadId}/complete`, { body, ...options });\n }\n}\nexports.Uploads = Uploads;\nUploads.Parts = parts_1.Parts;\n//# sourceMappingURL=uploads.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChatCompletionStoreMessagesPage = exports.ChatCompletionsPage = exports.Completions = void 0;\nconst resource_1 = require(\"../../../resource.js\");\nconst core_1 = require(\"../../../core.js\");\nconst MessagesAPI = __importStar(require(\"./messages.js\"));\nconst messages_1 = require(\"./messages.js\");\nconst pagination_1 = require(\"../../../pagination.js\");\nclass Completions extends resource_1.APIResource {\n constructor() {\n super(...arguments);\n this.messages = new MessagesAPI.Messages(this._client);\n }\n create(body, options) {\n return this._client.post('/chat/completions', { body, ...options, stream: body.stream ?? false });\n }\n /**\n * Get a stored chat completion. Only Chat Completions that have been created with\n * the `store` parameter set to `true` will be returned.\n */\n retrieve(completionId, options) {\n return this._client.get(`/chat/completions/${completionId}`, options);\n }\n /**\n * Modify a stored chat completion. Only Chat Completions that have been created\n * with the `store` parameter set to `true` can be modified. Currently, the only\n * supported modification is to update the `metadata` field.\n */\n update(completionId, body, options) {\n return this._client.post(`/chat/completions/${completionId}`, { body, ...options });\n }\n list(query = {}, options) {\n if ((0, core_1.isRequestOptions)(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/chat/completions', ChatCompletionsPage, { query, ...options });\n }\n /**\n * Delete a stored chat completion. Only Chat Completions that have been created\n * with the `store` parameter set to `true` can be deleted.\n */\n del(completionId, options) {\n return this._client.delete(`/chat/completions/${completionId}`, options);\n }\n}\nexports.Completions = Completions;\nclass ChatCompletionsPage extends pagination_1.CursorPage {\n}\nexports.ChatCompletionsPage = ChatCompletionsPage;\nclass ChatCompletionStoreMessagesPage extends pagination_1.CursorPage {\n}\nexports.ChatCompletionStoreMessagesPage = ChatCompletionStoreMessagesPage;\nCompletions.ChatCompletionsPage = ChatCompletionsPage;\nCompletions.Messages = messages_1.Messages;\n//# sourceMappingURL=completions.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Parts = void 0;\nconst resource_1 = require(\"../../resource.js\");\nconst Core = __importStar(require(\"../../core.js\"));\nclass Parts extends resource_1.APIResource {\n /**\n * Adds a\n * [Part](https://platform.openai.com/docs/api-reference/uploads/part-object) to an\n * [Upload](https://platform.openai.com/docs/api-reference/uploads/object) object.\n * A Part represents a chunk of bytes from the file you are trying to upload.\n *\n * Each Part can be at most 64 MB, and you can add Parts until you hit the Upload\n * maximum of 8 GB.\n *\n * It is possible to add multiple Parts in parallel. You can decide the intended\n * order of the Parts when you\n * [complete the Upload](https://platform.openai.com/docs/api-reference/uploads/complete).\n */\n create(uploadId, body, options) {\n return this._client.post(`/uploads/${uploadId}/parts`, Core.multipartFormRequestOptions({ body, ...options }));\n }\n}\nexports.Parts = Parts;\n//# sourceMappingURL=parts.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setShims = exports.isFsReadStream = exports.fileFromPath = exports.getDefaultAgent = exports.getMultipartRequestOptions = exports.ReadableStream = exports.File = exports.Blob = exports.FormData = exports.Headers = exports.Response = exports.Request = exports.fetch = exports.kind = exports.auto = void 0;\nexports.auto = false;\nexports.kind = undefined;\nexports.fetch = undefined;\nexports.Request = undefined;\nexports.Response = undefined;\nexports.Headers = undefined;\nexports.FormData = undefined;\nexports.Blob = undefined;\nexports.File = undefined;\nexports.ReadableStream = undefined;\nexports.getMultipartRequestOptions = undefined;\nexports.getDefaultAgent = undefined;\nexports.fileFromPath = undefined;\nexports.isFsReadStream = undefined;\nfunction setShims(shims, options = { auto: false }) {\n if (exports.auto) {\n throw new Error(`you must \\`import 'openai/shims/${shims.kind}'\\` before importing anything else from openai`);\n }\n if (exports.kind) {\n throw new Error(`can't \\`import 'openai/shims/${shims.kind}'\\` after \\`import 'openai/shims/${exports.kind}'\\``);\n }\n exports.auto = options.auto;\n exports.kind = shims.kind;\n exports.fetch = shims.fetch;\n exports.Request = shims.Request;\n exports.Response = shims.Response;\n exports.Headers = shims.Headers;\n exports.FormData = shims.FormData;\n exports.Blob = shims.Blob;\n exports.File = shims.File;\n exports.ReadableStream = shims.ReadableStream;\n exports.getMultipartRequestOptions = shims.getMultipartRequestOptions;\n exports.getDefaultAgent = shims.getDefaultAgent;\n exports.fileFromPath = shims.fileFromPath;\n exports.isFsReadStream = shims.isFsReadStream;\n}\nexports.setShims = setShims;\n//# sourceMappingURL=registry.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VectorStoreFilesPage = exports.FileBatches = void 0;\nconst resource_1 = require(\"../../resource.js\");\nconst core_1 = require(\"../../core.js\");\nconst core_2 = require(\"../../core.js\");\nconst Util_1 = require(\"../../lib/Util.js\");\nconst files_1 = require(\"./files.js\");\nObject.defineProperty(exports, \"VectorStoreFilesPage\", { enumerable: true, get: function () { return files_1.VectorStoreFilesPage; } });\nclass FileBatches extends resource_1.APIResource {\n /**\n * Create a vector store file batch.\n */\n create(vectorStoreId, body, options) {\n return this._client.post(`/vector_stores/${vectorStoreId}/file_batches`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Retrieves a vector store file batch.\n */\n retrieve(vectorStoreId, batchId, options) {\n return this._client.get(`/vector_stores/${vectorStoreId}/file_batches/${batchId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Cancel a vector store file batch. This attempts to cancel the processing of\n * files in this batch as soon as possible.\n */\n cancel(vectorStoreId, batchId, options) {\n return this._client.post(`/vector_stores/${vectorStoreId}/file_batches/${batchId}/cancel`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Create a vector store batch and poll until all files have been processed.\n */\n async createAndPoll(vectorStoreId, body, options) {\n const batch = await this.create(vectorStoreId, body);\n return await this.poll(vectorStoreId, batch.id, options);\n }\n listFiles(vectorStoreId, batchId, query = {}, options) {\n if ((0, core_1.isRequestOptions)(query)) {\n return this.listFiles(vectorStoreId, batchId, {}, query);\n }\n return this._client.getAPIList(`/vector_stores/${vectorStoreId}/file_batches/${batchId}/files`, files_1.VectorStoreFilesPage, { query, ...options, headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers } });\n }\n /**\n * Wait for the given file batch to be processed.\n *\n * Note: this will return even if one of the files failed to process, you need to\n * check batch.file_counts.failed_count to handle this case.\n */\n async poll(vectorStoreId, batchId, options) {\n const headers = { ...options?.headers, 'X-Stainless-Poll-Helper': 'true' };\n if (options?.pollIntervalMs) {\n headers['X-Stainless-Custom-Poll-Interval'] = options.pollIntervalMs.toString();\n }\n while (true) {\n const { data: batch, response } = await this.retrieve(vectorStoreId, batchId, {\n ...options,\n headers,\n }).withResponse();\n switch (batch.status) {\n case 'in_progress':\n let sleepInterval = 5000;\n if (options?.pollIntervalMs) {\n sleepInterval = options.pollIntervalMs;\n }\n else {\n const headerInterval = response.headers.get('openai-poll-after-ms');\n if (headerInterval) {\n const headerIntervalMs = parseInt(headerInterval);\n if (!isNaN(headerIntervalMs)) {\n sleepInterval = headerIntervalMs;\n }\n }\n }\n await (0, core_2.sleep)(sleepInterval);\n break;\n case 'failed':\n case 'cancelled':\n case 'completed':\n return batch;\n }\n }\n }\n /**\n * Uploads the given files concurrently and then creates a vector store file batch.\n *\n * The concurrency limit is configurable using the `maxConcurrency` parameter.\n */\n async uploadAndPoll(vectorStoreId, { files, fileIds = [] }, options) {\n if (files == null || files.length == 0) {\n throw new Error(`No \\`files\\` provided to process. If you've already uploaded files you should use \\`.createAndPoll()\\` instead`);\n }\n const configuredConcurrency = options?.maxConcurrency ?? 5;\n // We cap the number of workers at the number of files (so we don't start any unnecessary workers)\n const concurrencyLimit = Math.min(configuredConcurrency, files.length);\n const client = this._client;\n const fileIterator = files.values();\n const allFileIds = [...fileIds];\n // This code is based on this design. The libraries don't accommodate our environment limits.\n // https://stackoverflow.com/questions/40639432/what-is-the-best-way-to-limit-concurrency-when-using-es6s-promise-all\n async function processFiles(iterator) {\n for (let item of iterator) {\n const fileObj = await client.files.create({ file: item, purpose: 'assistants' }, options);\n allFileIds.push(fileObj.id);\n }\n }\n // Start workers to process results\n const workers = Array(concurrencyLimit).fill(fileIterator).map(processFiles);\n // Wait for all processing to complete.\n await (0, Util_1.allSettledWithThrow)(workers);\n return await this.createAndPoll(vectorStoreId, {\n file_ids: allFileIds,\n });\n }\n}\nexports.FileBatches = FileBatches;\n//# sourceMappingURL=file-batches.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.allSettledWithThrow = void 0;\n/**\n * Like `Promise.allSettled()` but throws an error if any promises are rejected.\n */\nconst allSettledWithThrow = async (promises) => {\n const results = await Promise.allSettled(promises);\n const rejected = results.filter((result) => result.status === 'rejected');\n if (rejected.length) {\n for (const result of rejected) {\n console.error(result.reason);\n }\n throw new Error(`${rejected.length} promise(s) failed - see the above errors`);\n }\n // Note: TS was complaining about using `.filter().map()` here for some reason\n const values = [];\n for (const result of results) {\n if (result.status === 'fulfilled') {\n values.push(result.value);\n }\n }\n return values;\n};\nexports.allSettledWithThrow = allSettledWithThrow;\n//# sourceMappingURL=Util.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateInputTools = exports.hasAutoParseableInput = exports.shouldParseToolCall = exports.parseChatCompletion = exports.maybeParseChatCompletion = exports.isAutoParsableTool = exports.makeParseableTool = exports.isAutoParsableResponseFormat = exports.makeParseableTextFormat = exports.makeParseableResponseFormat = void 0;\nconst error_1 = require(\"../error.js\");\nfunction makeParseableResponseFormat(response_format, parser) {\n const obj = { ...response_format };\n Object.defineProperties(obj, {\n $brand: {\n value: 'auto-parseable-response-format',\n enumerable: false,\n },\n $parseRaw: {\n value: parser,\n enumerable: false,\n },\n });\n return obj;\n}\nexports.makeParseableResponseFormat = makeParseableResponseFormat;\nfunction makeParseableTextFormat(response_format, parser) {\n const obj = { ...response_format };\n Object.defineProperties(obj, {\n $brand: {\n value: 'auto-parseable-response-format',\n enumerable: false,\n },\n $parseRaw: {\n value: parser,\n enumerable: false,\n },\n });\n return obj;\n}\nexports.makeParseableTextFormat = makeParseableTextFormat;\nfunction isAutoParsableResponseFormat(response_format) {\n return response_format?.['$brand'] === 'auto-parseable-response-format';\n}\nexports.isAutoParsableResponseFormat = isAutoParsableResponseFormat;\nfunction makeParseableTool(tool, { parser, callback, }) {\n const obj = { ...tool };\n Object.defineProperties(obj, {\n $brand: {\n value: 'auto-parseable-tool',\n enumerable: false,\n },\n $parseRaw: {\n value: parser,\n enumerable: false,\n },\n $callback: {\n value: callback,\n enumerable: false,\n },\n });\n return obj;\n}\nexports.makeParseableTool = makeParseableTool;\nfunction isAutoParsableTool(tool) {\n return tool?.['$brand'] === 'auto-parseable-tool';\n}\nexports.isAutoParsableTool = isAutoParsableTool;\nfunction maybeParseChatCompletion(completion, params) {\n if (!params || !hasAutoParseableInput(params)) {\n return {\n ...completion,\n choices: completion.choices.map((choice) => ({\n ...choice,\n message: {\n ...choice.message,\n parsed: null,\n ...(choice.message.tool_calls ?\n {\n tool_calls: choice.message.tool_calls,\n }\n : undefined),\n },\n })),\n };\n }\n return parseChatCompletion(completion, params);\n}\nexports.maybeParseChatCompletion = maybeParseChatCompletion;\nfunction parseChatCompletion(completion, params) {\n const choices = completion.choices.map((choice) => {\n if (choice.finish_reason === 'length') {\n throw new error_1.LengthFinishReasonError();\n }\n if (choice.finish_reason === 'content_filter') {\n throw new error_1.ContentFilterFinishReasonError();\n }\n return {\n ...choice,\n message: {\n ...choice.message,\n ...(choice.message.tool_calls ?\n {\n tool_calls: choice.message.tool_calls?.map((toolCall) => parseToolCall(params, toolCall)) ?? undefined,\n }\n : undefined),\n parsed: choice.message.content && !choice.message.refusal ?\n parseResponseFormat(params, choice.message.content)\n : null,\n },\n };\n });\n return { ...completion, choices };\n}\nexports.parseChatCompletion = parseChatCompletion;\nfunction parseResponseFormat(params, content) {\n if (params.response_format?.type !== 'json_schema') {\n return null;\n }\n if (params.response_format?.type === 'json_schema') {\n if ('$parseRaw' in params.response_format) {\n const response_format = params.response_format;\n return response_format.$parseRaw(content);\n }\n return JSON.parse(content);\n }\n return null;\n}\nfunction parseToolCall(params, toolCall) {\n const inputTool = params.tools?.find((inputTool) => inputTool.function?.name === toolCall.function.name);\n return {\n ...toolCall,\n function: {\n ...toolCall.function,\n parsed_arguments: isAutoParsableTool(inputTool) ? inputTool.$parseRaw(toolCall.function.arguments)\n : inputTool?.function.strict ? JSON.parse(toolCall.function.arguments)\n : null,\n },\n };\n}\nfunction shouldParseToolCall(params, toolCall) {\n if (!params) {\n return false;\n }\n const inputTool = params.tools?.find((inputTool) => inputTool.function?.name === toolCall.function.name);\n return isAutoParsableTool(inputTool) || inputTool?.function.strict || false;\n}\nexports.shouldParseToolCall = shouldParseToolCall;\nfunction hasAutoParseableInput(params) {\n if (isAutoParsableResponseFormat(params.response_format)) {\n return true;\n }\n return (params.tools?.some((t) => isAutoParsableTool(t) || (t.type === 'function' && t.function.strict === true)) ?? false);\n}\nexports.hasAutoParseableInput = hasAutoParseableInput;\nfunction validateInputTools(tools) {\n for (const tool of tools ?? []) {\n if (tool.type !== 'function') {\n throw new error_1.OpenAIError(`Currently only \\`function\\` tool types support auto-parsing; Received \\`${tool.type}\\``);\n }\n if (tool.function.strict !== true) {\n throw new error_1.OpenAIError(`The \\`${tool.function.name}\\` tool is not marked with \\`strict: true\\`. Only strict function tools can be auto-parsed`);\n }\n }\n}\nexports.validateInputTools = validateInputTools;\n//# sourceMappingURL=parser.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FineTuning = void 0;\nconst resource_1 = require(\"../../resource.js\");\nconst JobsAPI = __importStar(require(\"./jobs/jobs.js\"));\nconst jobs_1 = require(\"./jobs/jobs.js\");\nclass FineTuning extends resource_1.APIResource {\n constructor() {\n super(...arguments);\n this.jobs = new JobsAPI.Jobs(this._client);\n }\n}\nexports.FineTuning = FineTuning;\nFineTuning.Jobs = jobs_1.Jobs;\nFineTuning.FineTuningJobsPage = jobs_1.FineTuningJobsPage;\nFineTuning.FineTuningJobEventsPage = jobs_1.FineTuningJobEventsPage;\n//# sourceMappingURL=fine-tuning.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MalformedJSON = exports.PartialJSON = exports.partialParse = void 0;\nconst STR = 0b000000001;\nconst NUM = 0b000000010;\nconst ARR = 0b000000100;\nconst OBJ = 0b000001000;\nconst NULL = 0b000010000;\nconst BOOL = 0b000100000;\nconst NAN = 0b001000000;\nconst INFINITY = 0b010000000;\nconst MINUS_INFINITY = 0b100000000;\nconst INF = INFINITY | MINUS_INFINITY;\nconst SPECIAL = NULL | BOOL | INF | NAN;\nconst ATOM = STR | NUM | SPECIAL;\nconst COLLECTION = ARR | OBJ;\nconst ALL = ATOM | COLLECTION;\nconst Allow = {\n STR,\n NUM,\n ARR,\n OBJ,\n NULL,\n BOOL,\n NAN,\n INFINITY,\n MINUS_INFINITY,\n INF,\n SPECIAL,\n ATOM,\n COLLECTION,\n ALL,\n};\n// The JSON string segment was unable to be parsed completely\nclass PartialJSON extends Error {\n}\nexports.PartialJSON = PartialJSON;\nclass MalformedJSON extends Error {\n}\nexports.MalformedJSON = MalformedJSON;\n/**\n * Parse incomplete JSON\n * @param {string} jsonString Partial JSON to be parsed\n * @param {number} allowPartial Specify what types are allowed to be partial, see {@link Allow} for details\n * @returns The parsed JSON\n * @throws {PartialJSON} If the JSON is incomplete (related to the `allow` parameter)\n * @throws {MalformedJSON} If the JSON is malformed\n */\nfunction parseJSON(jsonString, allowPartial = Allow.ALL) {\n if (typeof jsonString !== 'string') {\n throw new TypeError(`expecting str, got ${typeof jsonString}`);\n }\n if (!jsonString.trim()) {\n throw new Error(`${jsonString} is empty`);\n }\n return _parseJSON(jsonString.trim(), allowPartial);\n}\nconst _parseJSON = (jsonString, allow) => {\n const length = jsonString.length;\n let index = 0;\n const markPartialJSON = (msg) => {\n throw new PartialJSON(`${msg} at position ${index}`);\n };\n const throwMalformedError = (msg) => {\n throw new MalformedJSON(`${msg} at position ${index}`);\n };\n const parseAny = () => {\n skipBlank();\n if (index >= length)\n markPartialJSON('Unexpected end of input');\n if (jsonString[index] === '\"')\n return parseStr();\n if (jsonString[index] === '{')\n return parseObj();\n if (jsonString[index] === '[')\n return parseArr();\n if (jsonString.substring(index, index + 4) === 'null' ||\n (Allow.NULL & allow && length - index < 4 && 'null'.startsWith(jsonString.substring(index)))) {\n index += 4;\n return null;\n }\n if (jsonString.substring(index, index + 4) === 'true' ||\n (Allow.BOOL & allow && length - index < 4 && 'true'.startsWith(jsonString.substring(index)))) {\n index += 4;\n return true;\n }\n if (jsonString.substring(index, index + 5) === 'false' ||\n (Allow.BOOL & allow && length - index < 5 && 'false'.startsWith(jsonString.substring(index)))) {\n index += 5;\n return false;\n }\n if (jsonString.substring(index, index + 8) === 'Infinity' ||\n (Allow.INFINITY & allow && length - index < 8 && 'Infinity'.startsWith(jsonString.substring(index)))) {\n index += 8;\n return Infinity;\n }\n if (jsonString.substring(index, index + 9) === '-Infinity' ||\n (Allow.MINUS_INFINITY & allow &&\n 1 < length - index &&\n length - index < 9 &&\n '-Infinity'.startsWith(jsonString.substring(index)))) {\n index += 9;\n return -Infinity;\n }\n if (jsonString.substring(index, index + 3) === 'NaN' ||\n (Allow.NAN & allow && length - index < 3 && 'NaN'.startsWith(jsonString.substring(index)))) {\n index += 3;\n return NaN;\n }\n return parseNum();\n };\n const parseStr = () => {\n const start = index;\n let escape = false;\n index++; // skip initial quote\n while (index < length && (jsonString[index] !== '\"' || (escape && jsonString[index - 1] === '\\\\'))) {\n escape = jsonString[index] === '\\\\' ? !escape : false;\n index++;\n }\n if (jsonString.charAt(index) == '\"') {\n try {\n return JSON.parse(jsonString.substring(start, ++index - Number(escape)));\n }\n catch (e) {\n throwMalformedError(String(e));\n }\n }\n else if (Allow.STR & allow) {\n try {\n return JSON.parse(jsonString.substring(start, index - Number(escape)) + '\"');\n }\n catch (e) {\n // SyntaxError: Invalid escape sequence\n return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf('\\\\')) + '\"');\n }\n }\n markPartialJSON('Unterminated string literal');\n };\n const parseObj = () => {\n index++; // skip initial brace\n skipBlank();\n const obj = {};\n try {\n while (jsonString[index] !== '}') {\n skipBlank();\n if (index >= length && Allow.OBJ & allow)\n return obj;\n const key = parseStr();\n skipBlank();\n index++; // skip colon\n try {\n const value = parseAny();\n Object.defineProperty(obj, key, { value, writable: true, enumerable: true, configurable: true });\n }\n catch (e) {\n if (Allow.OBJ & allow)\n return obj;\n else\n throw e;\n }\n skipBlank();\n if (jsonString[index] === ',')\n index++; // skip comma\n }\n }\n catch (e) {\n if (Allow.OBJ & allow)\n return obj;\n else\n markPartialJSON(\"Expected '}' at end of object\");\n }\n index++; // skip final brace\n return obj;\n };\n const parseArr = () => {\n index++; // skip initial bracket\n const arr = [];\n try {\n while (jsonString[index] !== ']') {\n arr.push(parseAny());\n skipBlank();\n if (jsonString[index] === ',') {\n index++; // skip comma\n }\n }\n }\n catch (e) {\n if (Allow.ARR & allow) {\n return arr;\n }\n markPartialJSON(\"Expected ']' at end of array\");\n }\n index++; // skip final bracket\n return arr;\n };\n const parseNum = () => {\n if (index === 0) {\n if (jsonString === '-' && Allow.NUM & allow)\n markPartialJSON(\"Not sure what '-' is\");\n try {\n return JSON.parse(jsonString);\n }\n catch (e) {\n if (Allow.NUM & allow) {\n try {\n if ('.' === jsonString[jsonString.length - 1])\n return JSON.parse(jsonString.substring(0, jsonString.lastIndexOf('.')));\n return JSON.parse(jsonString.substring(0, jsonString.lastIndexOf('e')));\n }\n catch (e) { }\n }\n throwMalformedError(String(e));\n }\n }\n const start = index;\n if (jsonString[index] === '-')\n index++;\n while (jsonString[index] && !',]}'.includes(jsonString[index]))\n index++;\n if (index == length && !(Allow.NUM & allow))\n markPartialJSON('Unterminated number literal');\n try {\n return JSON.parse(jsonString.substring(start, index));\n }\n catch (e) {\n if (jsonString.substring(start, index) === '-' && Allow.NUM & allow)\n markPartialJSON(\"Not sure what '-' is\");\n try {\n return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf('e')));\n }\n catch (e) {\n throwMalformedError(String(e));\n }\n }\n };\n const skipBlank = () => {\n while (index < length && ' \\n\\r\\t'.includes(jsonString[index])) {\n index++;\n }\n };\n return parseAny();\n};\n// using this function with malformed JSON is undefined behavior\nconst partialParse = (input) => parseJSON(input, Allow.ALL ^ Allow.NUM);\nexports.partialParse = partialParse;\n//# sourceMappingURL=parser.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Transcriptions = void 0;\nconst resource_1 = require(\"../../resource.js\");\nconst Core = __importStar(require(\"../../core.js\"));\nclass Transcriptions extends resource_1.APIResource {\n create(body, options) {\n return this._client.post('/audio/transcriptions', Core.multipartFormRequestOptions({ body, ...options, __metadata: { model: body.model } }));\n }\n}\nexports.Transcriptions = Transcriptions;\n//# sourceMappingURL=transcriptions.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Realtime = void 0;\nconst resource_1 = require(\"../../../resource.js\");\nconst SessionsAPI = __importStar(require(\"./sessions.js\"));\nconst sessions_1 = require(\"./sessions.js\");\nclass Realtime extends resource_1.APIResource {\n constructor() {\n super(...arguments);\n this.sessions = new SessionsAPI.Sessions(this._client);\n }\n}\nexports.Realtime = Realtime;\nRealtime.Sessions = sessions_1.Sessions;\n//# sourceMappingURL=realtime.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileContentResponsesPage = exports.VectorStoreFilesPage = exports.Files = void 0;\nconst resource_1 = require(\"../../resource.js\");\nconst core_1 = require(\"../../core.js\");\nconst pagination_1 = require(\"../../pagination.js\");\nclass Files extends resource_1.APIResource {\n /**\n * Create a vector store file by attaching a\n * [File](https://platform.openai.com/docs/api-reference/files) to a\n * [vector store](https://platform.openai.com/docs/api-reference/vector-stores/object).\n */\n create(vectorStoreId, body, options) {\n return this._client.post(`/vector_stores/${vectorStoreId}/files`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Retrieves a vector store file.\n */\n retrieve(vectorStoreId, fileId, options) {\n return this._client.get(`/vector_stores/${vectorStoreId}/files/${fileId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Update attributes on a vector store file.\n */\n update(vectorStoreId, fileId, body, options) {\n return this._client.post(`/vector_stores/${vectorStoreId}/files/${fileId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n list(vectorStoreId, query = {}, options) {\n if ((0, core_1.isRequestOptions)(query)) {\n return this.list(vectorStoreId, {}, query);\n }\n return this._client.getAPIList(`/vector_stores/${vectorStoreId}/files`, VectorStoreFilesPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Delete a vector store file. This will remove the file from the vector store but\n * the file itself will not be deleted. To delete the file, use the\n * [delete file](https://platform.openai.com/docs/api-reference/files/delete)\n * endpoint.\n */\n del(vectorStoreId, fileId, options) {\n return this._client.delete(`/vector_stores/${vectorStoreId}/files/${fileId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Attach a file to the given vector store and wait for it to be processed.\n */\n async createAndPoll(vectorStoreId, body, options) {\n const file = await this.create(vectorStoreId, body, options);\n return await this.poll(vectorStoreId, file.id, options);\n }\n /**\n * Wait for the vector store file to finish processing.\n *\n * Note: this will return even if the file failed to process, you need to check\n * file.last_error and file.status to handle these cases\n */\n async poll(vectorStoreId, fileId, options) {\n const headers = { ...options?.headers, 'X-Stainless-Poll-Helper': 'true' };\n if (options?.pollIntervalMs) {\n headers['X-Stainless-Custom-Poll-Interval'] = options.pollIntervalMs.toString();\n }\n while (true) {\n const fileResponse = await this.retrieve(vectorStoreId, fileId, {\n ...options,\n headers,\n }).withResponse();\n const file = fileResponse.data;\n switch (file.status) {\n case 'in_progress':\n let sleepInterval = 5000;\n if (options?.pollIntervalMs) {\n sleepInterval = options.pollIntervalMs;\n }\n else {\n const headerInterval = fileResponse.response.headers.get('openai-poll-after-ms');\n if (headerInterval) {\n const headerIntervalMs = parseInt(headerInterval);\n if (!isNaN(headerIntervalMs)) {\n sleepInterval = headerIntervalMs;\n }\n }\n }\n await (0, core_1.sleep)(sleepInterval);\n break;\n case 'failed':\n case 'completed':\n return file;\n }\n }\n }\n /**\n * Upload a file to the `files` API and then attach it to the given vector store.\n *\n * Note the file will be asynchronously processed (you can use the alternative\n * polling helper method to wait for processing to complete).\n */\n async upload(vectorStoreId, file, options) {\n const fileInfo = await this._client.files.create({ file: file, purpose: 'assistants' }, options);\n return this.create(vectorStoreId, { file_id: fileInfo.id }, options);\n }\n /**\n * Add a file to a vector store and poll until processing is complete.\n */\n async uploadAndPoll(vectorStoreId, file, options) {\n const fileInfo = await this.upload(vectorStoreId, file, options);\n return await this.poll(vectorStoreId, fileInfo.id, options);\n }\n /**\n * Retrieve the parsed contents of a vector store file.\n */\n content(vectorStoreId, fileId, options) {\n return this._client.getAPIList(`/vector_stores/${vectorStoreId}/files/${fileId}/content`, FileContentResponsesPage, { ...options, headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers } });\n }\n}\nexports.Files = Files;\nclass VectorStoreFilesPage extends pagination_1.CursorPage {\n}\nexports.VectorStoreFilesPage = VectorStoreFilesPage;\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nclass FileContentResponsesPage extends pagination_1.Page {\n}\nexports.FileContentResponsesPage = FileContentResponsesPage;\nFiles.VectorStoreFilesPage = VectorStoreFilesPage;\nFiles.FileContentResponsesPage = FileContentResponsesPage;\n//# sourceMappingURL=files.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sessions = void 0;\nconst resource_1 = require(\"../../../resource.js\");\nclass Sessions extends resource_1.APIResource {\n /**\n * Create an ephemeral API token for use in client-side applications with the\n * Realtime API. Can be configured with the same session parameters as the\n * `session.update` client event.\n *\n * It responds with a session object, plus a `client_secret` key which contains a\n * usable ephemeral API token that can be used to authenticate browser clients for\n * the Realtime API.\n */\n create(body, options) {\n return this._client.post('/realtime/sessions', {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n}\nexports.Sessions = Sessions;\n//# sourceMappingURL=sessions.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VectorStores = exports.VectorStoreSearchResponsesPage = exports.VectorStoresPage = exports.Uploads = exports.Responses = exports.Moderations = exports.Models = exports.ModelsPage = exports.Images = exports.FineTuning = exports.Files = exports.FileObjectsPage = exports.Embeddings = exports.Completions = exports.Beta = exports.Batches = exports.BatchesPage = exports.Audio = void 0;\n__exportStar(require(\"./chat/index.js\"), exports);\n__exportStar(require(\"./shared.js\"), exports);\nvar audio_1 = require(\"./audio/audio.js\");\nObject.defineProperty(exports, \"Audio\", { enumerable: true, get: function () { return audio_1.Audio; } });\nvar batches_1 = require(\"./batches.js\");\nObject.defineProperty(exports, \"BatchesPage\", { enumerable: true, get: function () { return batches_1.BatchesPage; } });\nObject.defineProperty(exports, \"Batches\", { enumerable: true, get: function () { return batches_1.Batches; } });\nvar beta_1 = require(\"./beta/beta.js\");\nObject.defineProperty(exports, \"Beta\", { enumerable: true, get: function () { return beta_1.Beta; } });\nvar completions_1 = require(\"./completions.js\");\nObject.defineProperty(exports, \"Completions\", { enumerable: true, get: function () { return completions_1.Completions; } });\nvar embeddings_1 = require(\"./embeddings.js\");\nObject.defineProperty(exports, \"Embeddings\", { enumerable: true, get: function () { return embeddings_1.Embeddings; } });\nvar files_1 = require(\"./files.js\");\nObject.defineProperty(exports, \"FileObjectsPage\", { enumerable: true, get: function () { return files_1.FileObjectsPage; } });\nObject.defineProperty(exports, \"Files\", { enumerable: true, get: function () { return files_1.Files; } });\nvar fine_tuning_1 = require(\"./fine-tuning/fine-tuning.js\");\nObject.defineProperty(exports, \"FineTuning\", { enumerable: true, get: function () { return fine_tuning_1.FineTuning; } });\nvar images_1 = require(\"./images.js\");\nObject.defineProperty(exports, \"Images\", { enumerable: true, get: function () { return images_1.Images; } });\nvar models_1 = require(\"./models.js\");\nObject.defineProperty(exports, \"ModelsPage\", { enumerable: true, get: function () { return models_1.ModelsPage; } });\nObject.defineProperty(exports, \"Models\", { enumerable: true, get: function () { return models_1.Models; } });\nvar moderations_1 = require(\"./moderations.js\");\nObject.defineProperty(exports, \"Moderations\", { enumerable: true, get: function () { return moderations_1.Moderations; } });\nvar responses_1 = require(\"./responses/responses.js\");\nObject.defineProperty(exports, \"Responses\", { enumerable: true, get: function () { return responses_1.Responses; } });\nvar uploads_1 = require(\"./uploads/uploads.js\");\nObject.defineProperty(exports, \"Uploads\", { enumerable: true, get: function () { return uploads_1.Uploads; } });\nvar vector_stores_1 = require(\"./vector-stores/vector-stores.js\");\nObject.defineProperty(exports, \"VectorStoresPage\", { enumerable: true, get: function () { return vector_stores_1.VectorStoresPage; } });\nObject.defineProperty(exports, \"VectorStoreSearchResponsesPage\", { enumerable: true, get: function () { return vector_stores_1.VectorStoreSearchResponsesPage; } });\nObject.defineProperty(exports, \"VectorStores\", { enumerable: true, get: function () { return vector_stores_1.VectorStores; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FineTuningJobCheckpointsPage = exports.Checkpoints = void 0;\nconst resource_1 = require(\"../../../resource.js\");\nconst core_1 = require(\"../../../core.js\");\nconst pagination_1 = require(\"../../../pagination.js\");\nclass Checkpoints extends resource_1.APIResource {\n list(fineTuningJobId, query = {}, options) {\n if ((0, core_1.isRequestOptions)(query)) {\n return this.list(fineTuningJobId, {}, query);\n }\n return this._client.getAPIList(`/fine_tuning/jobs/${fineTuningJobId}/checkpoints`, FineTuningJobCheckpointsPage, { query, ...options });\n }\n}\nexports.Checkpoints = Checkpoints;\nclass FineTuningJobCheckpointsPage extends pagination_1.CursorPage {\n}\nexports.FineTuningJobCheckpointsPage = FineTuningJobCheckpointsPage;\nCheckpoints.FineTuningJobCheckpointsPage = FineTuningJobCheckpointsPage;\n//# sourceMappingURL=checkpoints.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createForm = exports.multipartFormRequestOptions = exports.maybeMultipartFormRequestOptions = exports.isMultipartBody = exports.toFile = exports.isUploadable = exports.isBlobLike = exports.isFileLike = exports.isResponseLike = exports.fileFromPath = void 0;\nconst index_1 = require(\"./_shims/index.js\");\nvar index_2 = require(\"./_shims/index.js\");\nObject.defineProperty(exports, \"fileFromPath\", { enumerable: true, get: function () { return index_2.fileFromPath; } });\nconst isResponseLike = (value) => value != null &&\n typeof value === 'object' &&\n typeof value.url === 'string' &&\n typeof value.blob === 'function';\nexports.isResponseLike = isResponseLike;\nconst isFileLike = (value) => value != null &&\n typeof value === 'object' &&\n typeof value.name === 'string' &&\n typeof value.lastModified === 'number' &&\n (0, exports.isBlobLike)(value);\nexports.isFileLike = isFileLike;\n/**\n * The BlobLike type omits arrayBuffer() because @types/node-fetch@^2.6.4 lacks it; but this check\n * adds the arrayBuffer() method type because it is available and used at runtime\n */\nconst isBlobLike = (value) => value != null &&\n typeof value === 'object' &&\n typeof value.size === 'number' &&\n typeof value.type === 'string' &&\n typeof value.text === 'function' &&\n typeof value.slice === 'function' &&\n typeof value.arrayBuffer === 'function';\nexports.isBlobLike = isBlobLike;\nconst isUploadable = (value) => {\n return (0, exports.isFileLike)(value) || (0, exports.isResponseLike)(value) || (0, index_1.isFsReadStream)(value);\n};\nexports.isUploadable = isUploadable;\n/**\n * Helper for creating a {@link File} to pass to an SDK upload method from a variety of different data formats\n * @param value the raw content of the file. Can be an {@link Uploadable}, {@link BlobLikePart}, or {@link AsyncIterable} of {@link BlobLikePart}s\n * @param {string=} name the name of the file. If omitted, toFile will try to determine a file name from bits if possible\n * @param {Object=} options additional properties\n * @param {string=} options.type the MIME type of the content\n * @param {number=} options.lastModified the last modified timestamp\n * @returns a {@link File} with the given properties\n */\nasync function toFile(value, name, options) {\n // If it's a promise, resolve it.\n value = await value;\n // If we've been given a `File` we don't need to do anything\n if ((0, exports.isFileLike)(value)) {\n return value;\n }\n if ((0, exports.isResponseLike)(value)) {\n const blob = await value.blob();\n name || (name = new URL(value.url).pathname.split(/[\\\\/]/).pop() ?? 'unknown_file');\n // we need to convert the `Blob` into an array buffer because the `Blob` class\n // that `node-fetch` defines is incompatible with the web standard which results\n // in `new File` interpreting it as a string instead of binary data.\n const data = (0, exports.isBlobLike)(blob) ? [(await blob.arrayBuffer())] : [blob];\n return new index_1.File(data, name, options);\n }\n const bits = await getBytes(value);\n name || (name = getName(value) ?? 'unknown_file');\n if (!options?.type) {\n const type = bits[0]?.type;\n if (typeof type === 'string') {\n options = { ...options, type };\n }\n }\n return new index_1.File(bits, name, options);\n}\nexports.toFile = toFile;\nasync function getBytes(value) {\n let parts = [];\n if (typeof value === 'string' ||\n ArrayBuffer.isView(value) || // includes Uint8Array, Buffer, etc.\n value instanceof ArrayBuffer) {\n parts.push(value);\n }\n else if ((0, exports.isBlobLike)(value)) {\n parts.push(await value.arrayBuffer());\n }\n else if (isAsyncIterableIterator(value) // includes Readable, ReadableStream, etc.\n ) {\n for await (const chunk of value) {\n parts.push(chunk); // TODO, consider validating?\n }\n }\n else {\n throw new Error(`Unexpected data type: ${typeof value}; constructor: ${value?.constructor\n ?.name}; props: ${propsForError(value)}`);\n }\n return parts;\n}\nfunction propsForError(value) {\n const props = Object.getOwnPropertyNames(value);\n return `[${props.map((p) => `\"${p}\"`).join(', ')}]`;\n}\nfunction getName(value) {\n return (getStringFromMaybeBuffer(value.name) ||\n getStringFromMaybeBuffer(value.filename) ||\n // For fs.ReadStream\n getStringFromMaybeBuffer(value.path)?.split(/[\\\\/]/).pop());\n}\nconst getStringFromMaybeBuffer = (x) => {\n if (typeof x === 'string')\n return x;\n if (typeof Buffer !== 'undefined' && x instanceof Buffer)\n return String(x);\n return undefined;\n};\nconst isAsyncIterableIterator = (value) => value != null && typeof value === 'object' && typeof value[Symbol.asyncIterator] === 'function';\nconst isMultipartBody = (body) => body && typeof body === 'object' && body.body && body[Symbol.toStringTag] === 'MultipartBody';\nexports.isMultipartBody = isMultipartBody;\n/**\n * Returns a multipart/form-data request if any part of the given request body contains a File / Blob value.\n * Otherwise returns the request as is.\n */\nconst maybeMultipartFormRequestOptions = async (opts) => {\n if (!hasUploadableValue(opts.body))\n return opts;\n const form = await (0, exports.createForm)(opts.body);\n return (0, index_1.getMultipartRequestOptions)(form, opts);\n};\nexports.maybeMultipartFormRequestOptions = maybeMultipartFormRequestOptions;\nconst multipartFormRequestOptions = async (opts) => {\n const form = await (0, exports.createForm)(opts.body);\n return (0, index_1.getMultipartRequestOptions)(form, opts);\n};\nexports.multipartFormRequestOptions = multipartFormRequestOptions;\nconst createForm = async (body) => {\n const form = new index_1.FormData();\n await Promise.all(Object.entries(body || {}).map(([key, value]) => addFormValue(form, key, value)));\n return form;\n};\nexports.createForm = createForm;\nconst hasUploadableValue = (value) => {\n if ((0, exports.isUploadable)(value))\n return true;\n if (Array.isArray(value))\n return value.some(hasUploadableValue);\n if (value && typeof value === 'object') {\n for (const k in value) {\n if (hasUploadableValue(value[k]))\n return true;\n }\n }\n return false;\n};\nconst addFormValue = async (form, key, value) => {\n if (value === undefined)\n return;\n if (value == null) {\n throw new TypeError(`Received null for \"${key}\"; to pass null in FormData, you must use the string 'null'`);\n }\n // TODO: make nested formats configurable\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n form.append(key, String(value));\n }\n else if ((0, exports.isUploadable)(value)) {\n const file = await toFile(value);\n form.append(key, file);\n }\n else if (Array.isArray(value)) {\n await Promise.all(value.map((entry) => addFormValue(form, key + '[]', entry)));\n }\n else if (typeof value === 'object') {\n await Promise.all(Object.entries(value).map(([name, prop]) => addFormValue(form, `${key}[${name}]`, prop)));\n }\n else {\n throw new TypeError(`Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ${value} instead`);\n }\n};\n//# sourceMappingURL=uploads.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VectorStoreSearchResponsesPage = exports.VectorStoresPage = exports.VectorStores = void 0;\nconst resource_1 = require(\"../../resource.js\");\nconst core_1 = require(\"../../core.js\");\nconst FileBatchesAPI = __importStar(require(\"./file-batches.js\"));\nconst file_batches_1 = require(\"./file-batches.js\");\nconst FilesAPI = __importStar(require(\"./files.js\"));\nconst files_1 = require(\"./files.js\");\nconst pagination_1 = require(\"../../pagination.js\");\nclass VectorStores extends resource_1.APIResource {\n constructor() {\n super(...arguments);\n this.files = new FilesAPI.Files(this._client);\n this.fileBatches = new FileBatchesAPI.FileBatches(this._client);\n }\n /**\n * Create a vector store.\n */\n create(body, options) {\n return this._client.post('/vector_stores', {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Retrieves a vector store.\n */\n retrieve(vectorStoreId, options) {\n return this._client.get(`/vector_stores/${vectorStoreId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Modifies a vector store.\n */\n update(vectorStoreId, body, options) {\n return this._client.post(`/vector_stores/${vectorStoreId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n list(query = {}, options) {\n if ((0, core_1.isRequestOptions)(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/vector_stores', VectorStoresPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Delete a vector store.\n */\n del(vectorStoreId, options) {\n return this._client.delete(`/vector_stores/${vectorStoreId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Search a vector store for relevant chunks based on a query and file attributes\n * filter.\n */\n search(vectorStoreId, body, options) {\n return this._client.getAPIList(`/vector_stores/${vectorStoreId}/search`, VectorStoreSearchResponsesPage, {\n body,\n method: 'post',\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n}\nexports.VectorStores = VectorStores;\nclass VectorStoresPage extends pagination_1.CursorPage {\n}\nexports.VectorStoresPage = VectorStoresPage;\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nclass VectorStoreSearchResponsesPage extends pagination_1.Page {\n}\nexports.VectorStoreSearchResponsesPage = VectorStoreSearchResponsesPage;\nVectorStores.VectorStoresPage = VectorStoresPage;\nVectorStores.VectorStoreSearchResponsesPage = VectorStoreSearchResponsesPage;\nVectorStores.Files = files_1.Files;\nVectorStores.VectorStoreFilesPage = files_1.VectorStoreFilesPage;\nVectorStores.FileContentResponsesPage = files_1.FileContentResponsesPage;\nVectorStores.FileBatches = file_batches_1.FileBatches;\n//# sourceMappingURL=vector-stores.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MultipartBody = void 0;\n/**\n * Disclaimer: modules in _shims aren't intended to be imported by SDK users.\n */\nclass MultipartBody {\n constructor(body) {\n this.body = body;\n }\n get [Symbol.toStringTag]() {\n return 'MultipartBody';\n }\n}\nexports.MultipartBody = MultipartBody;\n//# sourceMappingURL=MultipartBody.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChatCompletionRunner = void 0;\nconst AbstractChatCompletionRunner_1 = require(\"./AbstractChatCompletionRunner.js\");\nconst chatCompletionUtils_1 = require(\"./chatCompletionUtils.js\");\nclass ChatCompletionRunner extends AbstractChatCompletionRunner_1.AbstractChatCompletionRunner {\n /** @deprecated - please use `runTools` instead. */\n static runFunctions(client, params, options) {\n const runner = new ChatCompletionRunner();\n const opts = {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runFunctions' },\n };\n runner._run(() => runner._runFunctions(client, params, opts));\n return runner;\n }\n static runTools(client, params, options) {\n const runner = new ChatCompletionRunner();\n const opts = {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runTools' },\n };\n runner._run(() => runner._runTools(client, params, opts));\n return runner;\n }\n _addMessage(message, emit = true) {\n super._addMessage(message, emit);\n if ((0, chatCompletionUtils_1.isAssistantMessage)(message) && message.content) {\n this._emit('content', message.content);\n }\n }\n}\nexports.ChatCompletionRunner = ChatCompletionRunner;\n//# sourceMappingURL=ChatCompletionRunner.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParsingToolFunction = exports.ParsingFunction = exports.isRunnableFunctionWithParse = void 0;\nfunction isRunnableFunctionWithParse(fn) {\n return typeof fn.parse === 'function';\n}\nexports.isRunnableFunctionWithParse = isRunnableFunctionWithParse;\n/**\n * This is helper class for passing a `function` and `parse` where the `function`\n * argument type matches the `parse` return type.\n *\n * @deprecated - please use ParsingToolFunction instead.\n */\nclass ParsingFunction {\n constructor(input) {\n this.function = input.function;\n this.parse = input.parse;\n this.parameters = input.parameters;\n this.description = input.description;\n this.name = input.name;\n }\n}\nexports.ParsingFunction = ParsingFunction;\n/**\n * This is helper class for passing a `function` and `parse` where the `function`\n * argument type matches the `parse` return type.\n */\nclass ParsingToolFunction {\n constructor(input) {\n this.type = 'function';\n this.function = input;\n }\n}\nexports.ParsingToolFunction = ParsingToolFunction;\n//# sourceMappingURL=RunnableFunction.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Moderations = void 0;\nconst resource_1 = require(\"../resource.js\");\nclass Moderations extends resource_1.APIResource {\n /**\n * Classifies if text and/or image inputs are potentially harmful. Learn more in\n * the [moderation guide](https://platform.openai.com/docs/guides/moderation).\n */\n create(body, options) {\n return this._client.post('/moderations', { body, ...options });\n }\n}\nexports.Moderations = Moderations;\n//# sourceMappingURL=moderations.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Speech = void 0;\nconst resource_1 = require(\"../../resource.js\");\nclass Speech extends resource_1.APIResource {\n /**\n * Generates audio from the input text.\n */\n create(body, options) {\n return this._client.post('/audio/speech', {\n body,\n ...options,\n headers: { Accept: 'application/octet-stream', ...options?.headers },\n __binaryResponse: true,\n });\n }\n}\nexports.Speech = Speech;\n//# sourceMappingURL=speech.js.map","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _ChatCompletionStream_instances, _ChatCompletionStream_params, _ChatCompletionStream_choiceEventStates, _ChatCompletionStream_currentChatCompletionSnapshot, _ChatCompletionStream_beginRequest, _ChatCompletionStream_getChoiceEventState, _ChatCompletionStream_addChunk, _ChatCompletionStream_emitToolCallDoneEvent, _ChatCompletionStream_emitContentDoneEvents, _ChatCompletionStream_endRequest, _ChatCompletionStream_getAutoParseableResponseFormat, _ChatCompletionStream_accumulateChatCompletion;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChatCompletionStream = void 0;\nconst error_1 = require(\"../error.js\");\nconst AbstractChatCompletionRunner_1 = require(\"./AbstractChatCompletionRunner.js\");\nconst streaming_1 = require(\"../streaming.js\");\nconst parser_1 = require(\"../lib/parser.js\");\nconst parser_2 = require(\"../_vendor/partial-json-parser/parser.js\");\nclass ChatCompletionStream extends AbstractChatCompletionRunner_1.AbstractChatCompletionRunner {\n constructor(params) {\n super();\n _ChatCompletionStream_instances.add(this);\n _ChatCompletionStream_params.set(this, void 0);\n _ChatCompletionStream_choiceEventStates.set(this, void 0);\n _ChatCompletionStream_currentChatCompletionSnapshot.set(this, void 0);\n __classPrivateFieldSet(this, _ChatCompletionStream_params, params, \"f\");\n __classPrivateFieldSet(this, _ChatCompletionStream_choiceEventStates, [], \"f\");\n }\n get currentChatCompletionSnapshot() {\n return __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n }\n /**\n * Intended for use on the frontend, consuming a stream produced with\n * `.toReadableStream()` on the backend.\n *\n * Note that messages sent to the model do not appear in `.on('message')`\n * in this context.\n */\n static fromReadableStream(stream) {\n const runner = new ChatCompletionStream(null);\n runner._run(() => runner._fromReadableStream(stream));\n return runner;\n }\n static createChatCompletion(client, params, options) {\n const runner = new ChatCompletionStream(params);\n runner._run(() => runner._runChatCompletion(client, { ...params, stream: true }, { ...options, headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' } }));\n return runner;\n }\n async _createChatCompletion(client, params, options) {\n super._createChatCompletion;\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_beginRequest).call(this);\n const stream = await client.chat.completions.create({ ...params, stream: true }, { ...options, signal: this.controller.signal });\n this._connected();\n for await (const chunk of stream) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_addChunk).call(this, chunk);\n }\n if (stream.controller.signal?.aborted) {\n throw new error_1.APIUserAbortError();\n }\n return this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n }\n async _fromReadableStream(readableStream, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_beginRequest).call(this);\n this._connected();\n const stream = streaming_1.Stream.fromReadableStream(readableStream, this.controller);\n let chatId;\n for await (const chunk of stream) {\n if (chatId && chatId !== chunk.id) {\n // A new request has been made.\n this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n }\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_addChunk).call(this, chunk);\n chatId = chunk.id;\n }\n if (stream.controller.signal?.aborted) {\n throw new error_1.APIUserAbortError();\n }\n return this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n }\n [(_ChatCompletionStream_params = new WeakMap(), _ChatCompletionStream_choiceEventStates = new WeakMap(), _ChatCompletionStream_currentChatCompletionSnapshot = new WeakMap(), _ChatCompletionStream_instances = new WeakSet(), _ChatCompletionStream_beginRequest = function _ChatCompletionStream_beginRequest() {\n if (this.ended)\n return;\n __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, undefined, \"f\");\n }, _ChatCompletionStream_getChoiceEventState = function _ChatCompletionStream_getChoiceEventState(choice) {\n let state = __classPrivateFieldGet(this, _ChatCompletionStream_choiceEventStates, \"f\")[choice.index];\n if (state) {\n return state;\n }\n state = {\n content_done: false,\n refusal_done: false,\n logprobs_content_done: false,\n logprobs_refusal_done: false,\n done_tool_calls: new Set(),\n current_tool_call_index: null,\n };\n __classPrivateFieldGet(this, _ChatCompletionStream_choiceEventStates, \"f\")[choice.index] = state;\n return state;\n }, _ChatCompletionStream_addChunk = function _ChatCompletionStream_addChunk(chunk) {\n if (this.ended)\n return;\n const completion = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_accumulateChatCompletion).call(this, chunk);\n this._emit('chunk', chunk, completion);\n for (const choice of chunk.choices) {\n const choiceSnapshot = completion.choices[choice.index];\n if (choice.delta.content != null &&\n choiceSnapshot.message?.role === 'assistant' &&\n choiceSnapshot.message?.content) {\n this._emit('content', choice.delta.content, choiceSnapshot.message.content);\n this._emit('content.delta', {\n delta: choice.delta.content,\n snapshot: choiceSnapshot.message.content,\n parsed: choiceSnapshot.message.parsed,\n });\n }\n if (choice.delta.refusal != null &&\n choiceSnapshot.message?.role === 'assistant' &&\n choiceSnapshot.message?.refusal) {\n this._emit('refusal.delta', {\n delta: choice.delta.refusal,\n snapshot: choiceSnapshot.message.refusal,\n });\n }\n if (choice.logprobs?.content != null && choiceSnapshot.message?.role === 'assistant') {\n this._emit('logprobs.content.delta', {\n content: choice.logprobs?.content,\n snapshot: choiceSnapshot.logprobs?.content ?? [],\n });\n }\n if (choice.logprobs?.refusal != null && choiceSnapshot.message?.role === 'assistant') {\n this._emit('logprobs.refusal.delta', {\n refusal: choice.logprobs?.refusal,\n snapshot: choiceSnapshot.logprobs?.refusal ?? [],\n });\n }\n const state = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getChoiceEventState).call(this, choiceSnapshot);\n if (choiceSnapshot.finish_reason) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitContentDoneEvents).call(this, choiceSnapshot);\n if (state.current_tool_call_index != null) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitToolCallDoneEvent).call(this, choiceSnapshot, state.current_tool_call_index);\n }\n }\n for (const toolCall of choice.delta.tool_calls ?? []) {\n if (state.current_tool_call_index !== toolCall.index) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitContentDoneEvents).call(this, choiceSnapshot);\n // new tool call started, the previous one is done\n if (state.current_tool_call_index != null) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitToolCallDoneEvent).call(this, choiceSnapshot, state.current_tool_call_index);\n }\n }\n state.current_tool_call_index = toolCall.index;\n }\n for (const toolCallDelta of choice.delta.tool_calls ?? []) {\n const toolCallSnapshot = choiceSnapshot.message.tool_calls?.[toolCallDelta.index];\n if (!toolCallSnapshot?.type) {\n continue;\n }\n if (toolCallSnapshot?.type === 'function') {\n this._emit('tool_calls.function.arguments.delta', {\n name: toolCallSnapshot.function?.name,\n index: toolCallDelta.index,\n arguments: toolCallSnapshot.function.arguments,\n parsed_arguments: toolCallSnapshot.function.parsed_arguments,\n arguments_delta: toolCallDelta.function?.arguments ?? '',\n });\n }\n else {\n assertNever(toolCallSnapshot?.type);\n }\n }\n }\n }, _ChatCompletionStream_emitToolCallDoneEvent = function _ChatCompletionStream_emitToolCallDoneEvent(choiceSnapshot, toolCallIndex) {\n const state = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getChoiceEventState).call(this, choiceSnapshot);\n if (state.done_tool_calls.has(toolCallIndex)) {\n // we've already fired the done event\n return;\n }\n const toolCallSnapshot = choiceSnapshot.message.tool_calls?.[toolCallIndex];\n if (!toolCallSnapshot) {\n throw new Error('no tool call snapshot');\n }\n if (!toolCallSnapshot.type) {\n throw new Error('tool call snapshot missing `type`');\n }\n if (toolCallSnapshot.type === 'function') {\n const inputTool = __classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\")?.tools?.find((tool) => tool.type === 'function' && tool.function.name === toolCallSnapshot.function.name);\n this._emit('tool_calls.function.arguments.done', {\n name: toolCallSnapshot.function.name,\n index: toolCallIndex,\n arguments: toolCallSnapshot.function.arguments,\n parsed_arguments: (0, parser_1.isAutoParsableTool)(inputTool) ? inputTool.$parseRaw(toolCallSnapshot.function.arguments)\n : inputTool?.function.strict ? JSON.parse(toolCallSnapshot.function.arguments)\n : null,\n });\n }\n else {\n assertNever(toolCallSnapshot.type);\n }\n }, _ChatCompletionStream_emitContentDoneEvents = function _ChatCompletionStream_emitContentDoneEvents(choiceSnapshot) {\n const state = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getChoiceEventState).call(this, choiceSnapshot);\n if (choiceSnapshot.message.content && !state.content_done) {\n state.content_done = true;\n const responseFormat = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getAutoParseableResponseFormat).call(this);\n this._emit('content.done', {\n content: choiceSnapshot.message.content,\n parsed: responseFormat ? responseFormat.$parseRaw(choiceSnapshot.message.content) : null,\n });\n }\n if (choiceSnapshot.message.refusal && !state.refusal_done) {\n state.refusal_done = true;\n this._emit('refusal.done', { refusal: choiceSnapshot.message.refusal });\n }\n if (choiceSnapshot.logprobs?.content && !state.logprobs_content_done) {\n state.logprobs_content_done = true;\n this._emit('logprobs.content.done', { content: choiceSnapshot.logprobs.content });\n }\n if (choiceSnapshot.logprobs?.refusal && !state.logprobs_refusal_done) {\n state.logprobs_refusal_done = true;\n this._emit('logprobs.refusal.done', { refusal: choiceSnapshot.logprobs.refusal });\n }\n }, _ChatCompletionStream_endRequest = function _ChatCompletionStream_endRequest() {\n if (this.ended) {\n throw new error_1.OpenAIError(`stream has ended, this shouldn't happen`);\n }\n const snapshot = __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n if (!snapshot) {\n throw new error_1.OpenAIError(`request ended without sending any chunks`);\n }\n __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, undefined, \"f\");\n __classPrivateFieldSet(this, _ChatCompletionStream_choiceEventStates, [], \"f\");\n return finalizeChatCompletion(snapshot, __classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\"));\n }, _ChatCompletionStream_getAutoParseableResponseFormat = function _ChatCompletionStream_getAutoParseableResponseFormat() {\n const responseFormat = __classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\")?.response_format;\n if ((0, parser_1.isAutoParsableResponseFormat)(responseFormat)) {\n return responseFormat;\n }\n return null;\n }, _ChatCompletionStream_accumulateChatCompletion = function _ChatCompletionStream_accumulateChatCompletion(chunk) {\n var _a, _b, _c, _d;\n let snapshot = __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n const { choices, ...rest } = chunk;\n if (!snapshot) {\n snapshot = __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, {\n ...rest,\n choices: [],\n }, \"f\");\n }\n else {\n Object.assign(snapshot, rest);\n }\n for (const { delta, finish_reason, index, logprobs = null, ...other } of chunk.choices) {\n let choice = snapshot.choices[index];\n if (!choice) {\n choice = snapshot.choices[index] = { finish_reason, index, message: {}, logprobs, ...other };\n }\n if (logprobs) {\n if (!choice.logprobs) {\n choice.logprobs = Object.assign({}, logprobs);\n }\n else {\n const { content, refusal, ...rest } = logprobs;\n assertIsEmpty(rest);\n Object.assign(choice.logprobs, rest);\n if (content) {\n (_a = choice.logprobs).content ?? (_a.content = []);\n choice.logprobs.content.push(...content);\n }\n if (refusal) {\n (_b = choice.logprobs).refusal ?? (_b.refusal = []);\n choice.logprobs.refusal.push(...refusal);\n }\n }\n }\n if (finish_reason) {\n choice.finish_reason = finish_reason;\n if (__classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\") && (0, parser_1.hasAutoParseableInput)(__classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\"))) {\n if (finish_reason === 'length') {\n throw new error_1.LengthFinishReasonError();\n }\n if (finish_reason === 'content_filter') {\n throw new error_1.ContentFilterFinishReasonError();\n }\n }\n }\n Object.assign(choice, other);\n if (!delta)\n continue; // Shouldn't happen; just in case.\n const { content, refusal, function_call, role, tool_calls, ...rest } = delta;\n assertIsEmpty(rest);\n Object.assign(choice.message, rest);\n if (refusal) {\n choice.message.refusal = (choice.message.refusal || '') + refusal;\n }\n if (role)\n choice.message.role = role;\n if (function_call) {\n if (!choice.message.function_call) {\n choice.message.function_call = function_call;\n }\n else {\n if (function_call.name)\n choice.message.function_call.name = function_call.name;\n if (function_call.arguments) {\n (_c = choice.message.function_call).arguments ?? (_c.arguments = '');\n choice.message.function_call.arguments += function_call.arguments;\n }\n }\n }\n if (content) {\n choice.message.content = (choice.message.content || '') + content;\n if (!choice.message.refusal && __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getAutoParseableResponseFormat).call(this)) {\n choice.message.parsed = (0, parser_2.partialParse)(choice.message.content);\n }\n }\n if (tool_calls) {\n if (!choice.message.tool_calls)\n choice.message.tool_calls = [];\n for (const { index, id, type, function: fn, ...rest } of tool_calls) {\n const tool_call = ((_d = choice.message.tool_calls)[index] ?? (_d[index] = {}));\n Object.assign(tool_call, rest);\n if (id)\n tool_call.id = id;\n if (type)\n tool_call.type = type;\n if (fn)\n tool_call.function ?? (tool_call.function = { name: fn.name ?? '', arguments: '' });\n if (fn?.name)\n tool_call.function.name = fn.name;\n if (fn?.arguments) {\n tool_call.function.arguments += fn.arguments;\n if ((0, parser_1.shouldParseToolCall)(__classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\"), tool_call)) {\n tool_call.function.parsed_arguments = (0, parser_2.partialParse)(tool_call.function.arguments);\n }\n }\n }\n }\n }\n return snapshot;\n }, Symbol.asyncIterator)]() {\n const pushQueue = [];\n const readQueue = [];\n let done = false;\n this.on('chunk', (chunk) => {\n const reader = readQueue.shift();\n if (reader) {\n reader.resolve(chunk);\n }\n else {\n pushQueue.push(chunk);\n }\n });\n this.on('end', () => {\n done = true;\n for (const reader of readQueue) {\n reader.resolve(undefined);\n }\n readQueue.length = 0;\n });\n this.on('abort', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n this.on('error', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n return {\n next: async () => {\n if (!pushQueue.length) {\n if (done) {\n return { value: undefined, done: true };\n }\n return new Promise((resolve, reject) => readQueue.push({ resolve, reject })).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));\n }\n const chunk = pushQueue.shift();\n return { value: chunk, done: false };\n },\n return: async () => {\n this.abort();\n return { value: undefined, done: true };\n },\n };\n }\n toReadableStream() {\n const stream = new streaming_1.Stream(this[Symbol.asyncIterator].bind(this), this.controller);\n return stream.toReadableStream();\n }\n}\nexports.ChatCompletionStream = ChatCompletionStream;\nfunction finalizeChatCompletion(snapshot, params) {\n const { id, choices, created, model, system_fingerprint, ...rest } = snapshot;\n const completion = {\n ...rest,\n id,\n choices: choices.map(({ message, finish_reason, index, logprobs, ...choiceRest }) => {\n if (!finish_reason) {\n throw new error_1.OpenAIError(`missing finish_reason for choice ${index}`);\n }\n const { content = null, function_call, tool_calls, ...messageRest } = message;\n const role = message.role; // this is what we expect; in theory it could be different which would make our types a slight lie but would be fine.\n if (!role) {\n throw new error_1.OpenAIError(`missing role for choice ${index}`);\n }\n if (function_call) {\n const { arguments: args, name } = function_call;\n if (args == null) {\n throw new error_1.OpenAIError(`missing function_call.arguments for choice ${index}`);\n }\n if (!name) {\n throw new error_1.OpenAIError(`missing function_call.name for choice ${index}`);\n }\n return {\n ...choiceRest,\n message: {\n content,\n function_call: { arguments: args, name },\n role,\n refusal: message.refusal ?? null,\n },\n finish_reason,\n index,\n logprobs,\n };\n }\n if (tool_calls) {\n return {\n ...choiceRest,\n index,\n finish_reason,\n logprobs,\n message: {\n ...messageRest,\n role,\n content,\n refusal: message.refusal ?? null,\n tool_calls: tool_calls.map((tool_call, i) => {\n const { function: fn, type, id, ...toolRest } = tool_call;\n const { arguments: args, name, ...fnRest } = fn || {};\n if (id == null) {\n throw new error_1.OpenAIError(`missing choices[${index}].tool_calls[${i}].id\\n${str(snapshot)}`);\n }\n if (type == null) {\n throw new error_1.OpenAIError(`missing choices[${index}].tool_calls[${i}].type\\n${str(snapshot)}`);\n }\n if (name == null) {\n throw new error_1.OpenAIError(`missing choices[${index}].tool_calls[${i}].function.name\\n${str(snapshot)}`);\n }\n if (args == null) {\n throw new error_1.OpenAIError(`missing choices[${index}].tool_calls[${i}].function.arguments\\n${str(snapshot)}`);\n }\n return { ...toolRest, id, type, function: { ...fnRest, name, arguments: args } };\n }),\n },\n };\n }\n return {\n ...choiceRest,\n message: { ...messageRest, content, role, refusal: message.refusal ?? null },\n finish_reason,\n index,\n logprobs,\n };\n }),\n created,\n model,\n object: 'chat.completion',\n ...(system_fingerprint ? { system_fingerprint } : {}),\n };\n return (0, parser_1.maybeParseChatCompletion)(completion, params);\n}\nfunction str(x) {\n return JSON.stringify(x);\n}\n/**\n * Ensures the given argument is an empty object, useful for\n * asserting that all known properties on an object have been\n * destructured.\n */\nfunction assertIsEmpty(obj) {\n return;\n}\nfunction assertNever(_x) { }\n//# sourceMappingURL=ChatCompletionStream.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RFC3986 = exports.RFC1738 = exports.formatters = exports.default_format = void 0;\nexports.default_format = 'RFC3986';\nexports.formatters = {\n RFC1738: (v) => String(v).replace(/%20/g, '+'),\n RFC3986: (v) => String(v),\n};\nexports.RFC1738 = 'RFC1738';\nexports.RFC3986 = 'RFC3986';\n//# sourceMappingURL=formats.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\nexports.VERSION = '4.87.4'; // x-release-please-version\n//# sourceMappingURL=version.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=shared.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResponseItemsPage = exports.InputItems = void 0;\nconst resource_1 = require(\"../../resource.js\");\nconst core_1 = require(\"../../core.js\");\nconst responses_1 = require(\"./responses.js\");\nObject.defineProperty(exports, \"ResponseItemsPage\", { enumerable: true, get: function () { return responses_1.ResponseItemsPage; } });\nclass InputItems extends resource_1.APIResource {\n list(responseId, query = {}, options) {\n if ((0, core_1.isRequestOptions)(query)) {\n return this.list(responseId, {}, query);\n }\n return this._client.getAPIList(`/responses/${responseId}/input_items`, responses_1.ResponseItemsPage, {\n query,\n ...options,\n });\n }\n}\nexports.InputItems = InputItems;\n//# sourceMappingURL=input-items.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MessagesPage = exports.Messages = void 0;\nconst resource_1 = require(\"../../../resource.js\");\nconst core_1 = require(\"../../../core.js\");\nconst pagination_1 = require(\"../../../pagination.js\");\nclass Messages extends resource_1.APIResource {\n /**\n * Create a message.\n */\n create(threadId, body, options) {\n return this._client.post(`/threads/${threadId}/messages`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Retrieve a message.\n */\n retrieve(threadId, messageId, options) {\n return this._client.get(`/threads/${threadId}/messages/${messageId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Modifies a message.\n */\n update(threadId, messageId, body, options) {\n return this._client.post(`/threads/${threadId}/messages/${messageId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n list(threadId, query = {}, options) {\n if ((0, core_1.isRequestOptions)(query)) {\n return this.list(threadId, {}, query);\n }\n return this._client.getAPIList(`/threads/${threadId}/messages`, MessagesPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Deletes a message.\n */\n del(threadId, messageId, options) {\n return this._client.delete(`/threads/${threadId}/messages/${messageId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n}\nexports.Messages = Messages;\nclass MessagesPage extends pagination_1.CursorPage {\n}\nexports.MessagesPage = MessagesPage;\nMessages.MessagesPage = MessagesPage;\n//# sourceMappingURL=messages.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Chat = void 0;\nconst resource_1 = require(\"../../resource.js\");\nconst CompletionsAPI = __importStar(require(\"./completions/completions.js\"));\nconst completions_1 = require(\"./completions/completions.js\");\nclass Chat extends resource_1.APIResource {\n constructor() {\n super(...arguments);\n this.completions = new CompletionsAPI.Completions(this._client);\n }\n}\nexports.Chat = Chat;\nChat.Completions = completions_1.Completions;\nChat.ChatCompletionsPage = completions_1.ChatCompletionsPage;\n//# sourceMappingURL=chat.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Beta = void 0;\nconst resource_1 = require(\"../../resource.js\");\nconst AssistantsAPI = __importStar(require(\"./assistants.js\"));\nconst ChatAPI = __importStar(require(\"./chat/chat.js\"));\nconst assistants_1 = require(\"./assistants.js\");\nconst RealtimeAPI = __importStar(require(\"./realtime/realtime.js\"));\nconst realtime_1 = require(\"./realtime/realtime.js\");\nconst ThreadsAPI = __importStar(require(\"./threads/threads.js\"));\nconst threads_1 = require(\"./threads/threads.js\");\nconst chat_1 = require(\"./chat/chat.js\");\nclass Beta extends resource_1.APIResource {\n constructor() {\n super(...arguments);\n this.realtime = new RealtimeAPI.Realtime(this._client);\n this.chat = new ChatAPI.Chat(this._client);\n this.assistants = new AssistantsAPI.Assistants(this._client);\n this.threads = new ThreadsAPI.Threads(this._client);\n }\n}\nexports.Beta = Beta;\nBeta.Realtime = realtime_1.Realtime;\nBeta.Assistants = assistants_1.Assistants;\nBeta.AssistantsPage = assistants_1.AssistantsPage;\nBeta.Threads = threads_1.Threads;\n//# sourceMappingURL=beta.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPresent = exports.isToolMessage = exports.isFunctionMessage = exports.isAssistantMessage = void 0;\nconst isAssistantMessage = (message) => {\n return message?.role === 'assistant';\n};\nexports.isAssistantMessage = isAssistantMessage;\nconst isFunctionMessage = (message) => {\n return message?.role === 'function';\n};\nexports.isFunctionMessage = isFunctionMessage;\nconst isToolMessage = (message) => {\n return message?.role === 'tool';\n};\nexports.isToolMessage = isToolMessage;\nfunction isPresent(obj) {\n return obj != null;\n}\nexports.isPresent = isPresent;\n//# sourceMappingURL=chatCompletionUtils.js.map","'use strict';\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Harm categories that would cause prompts or candidates to be blocked.\n * @public\n */\nexports.HarmCategory = void 0;\n(function (HarmCategory) {\n HarmCategory[\"HARM_CATEGORY_UNSPECIFIED\"] = \"HARM_CATEGORY_UNSPECIFIED\";\n HarmCategory[\"HARM_CATEGORY_HATE_SPEECH\"] = \"HARM_CATEGORY_HATE_SPEECH\";\n HarmCategory[\"HARM_CATEGORY_SEXUALLY_EXPLICIT\"] = \"HARM_CATEGORY_SEXUALLY_EXPLICIT\";\n HarmCategory[\"HARM_CATEGORY_HARASSMENT\"] = \"HARM_CATEGORY_HARASSMENT\";\n HarmCategory[\"HARM_CATEGORY_DANGEROUS_CONTENT\"] = \"HARM_CATEGORY_DANGEROUS_CONTENT\";\n})(exports.HarmCategory || (exports.HarmCategory = {}));\n/**\n * Threshold above which a prompt or candidate will be blocked.\n * @public\n */\nexports.HarmBlockThreshold = void 0;\n(function (HarmBlockThreshold) {\n // Threshold is unspecified.\n HarmBlockThreshold[\"HARM_BLOCK_THRESHOLD_UNSPECIFIED\"] = \"HARM_BLOCK_THRESHOLD_UNSPECIFIED\";\n // Content with NEGLIGIBLE will be allowed.\n HarmBlockThreshold[\"BLOCK_LOW_AND_ABOVE\"] = \"BLOCK_LOW_AND_ABOVE\";\n // Content with NEGLIGIBLE and LOW will be allowed.\n HarmBlockThreshold[\"BLOCK_MEDIUM_AND_ABOVE\"] = \"BLOCK_MEDIUM_AND_ABOVE\";\n // Content with NEGLIGIBLE, LOW, and MEDIUM will be allowed.\n HarmBlockThreshold[\"BLOCK_ONLY_HIGH\"] = \"BLOCK_ONLY_HIGH\";\n // All content will be allowed.\n HarmBlockThreshold[\"BLOCK_NONE\"] = \"BLOCK_NONE\";\n})(exports.HarmBlockThreshold || (exports.HarmBlockThreshold = {}));\n/**\n * Probability that a prompt or candidate matches a harm category.\n * @public\n */\nexports.HarmProbability = void 0;\n(function (HarmProbability) {\n // Probability is unspecified.\n HarmProbability[\"HARM_PROBABILITY_UNSPECIFIED\"] = \"HARM_PROBABILITY_UNSPECIFIED\";\n // Content has a negligible chance of being unsafe.\n HarmProbability[\"NEGLIGIBLE\"] = \"NEGLIGIBLE\";\n // Content has a low chance of being unsafe.\n HarmProbability[\"LOW\"] = \"LOW\";\n // Content has a medium chance of being unsafe.\n HarmProbability[\"MEDIUM\"] = \"MEDIUM\";\n // Content has a high chance of being unsafe.\n HarmProbability[\"HIGH\"] = \"HIGH\";\n})(exports.HarmProbability || (exports.HarmProbability = {}));\n/**\n * Reason that a prompt was blocked.\n * @public\n */\nexports.BlockReason = void 0;\n(function (BlockReason) {\n // A blocked reason was not specified.\n BlockReason[\"BLOCKED_REASON_UNSPECIFIED\"] = \"BLOCKED_REASON_UNSPECIFIED\";\n // Content was blocked by safety settings.\n BlockReason[\"SAFETY\"] = \"SAFETY\";\n // Content was blocked, but the reason is uncategorized.\n BlockReason[\"OTHER\"] = \"OTHER\";\n})(exports.BlockReason || (exports.BlockReason = {}));\n/**\n * Reason that a candidate finished.\n * @public\n */\nexports.FinishReason = void 0;\n(function (FinishReason) {\n // Default value. This value is unused.\n FinishReason[\"FINISH_REASON_UNSPECIFIED\"] = \"FINISH_REASON_UNSPECIFIED\";\n // Natural stop point of the model or provided stop sequence.\n FinishReason[\"STOP\"] = \"STOP\";\n // The maximum number of tokens as specified in the request was reached.\n FinishReason[\"MAX_TOKENS\"] = \"MAX_TOKENS\";\n // The candidate content was flagged for safety reasons.\n FinishReason[\"SAFETY\"] = \"SAFETY\";\n // The candidate content was flagged for recitation reasons.\n FinishReason[\"RECITATION\"] = \"RECITATION\";\n // Unknown reason.\n FinishReason[\"OTHER\"] = \"OTHER\";\n})(exports.FinishReason || (exports.FinishReason = {}));\n/**\n * Task type for embedding content.\n * @public\n */\nexports.TaskType = void 0;\n(function (TaskType) {\n TaskType[\"TASK_TYPE_UNSPECIFIED\"] = \"TASK_TYPE_UNSPECIFIED\";\n TaskType[\"RETRIEVAL_QUERY\"] = \"RETRIEVAL_QUERY\";\n TaskType[\"RETRIEVAL_DOCUMENT\"] = \"RETRIEVAL_DOCUMENT\";\n TaskType[\"SEMANTIC_SIMILARITY\"] = \"SEMANTIC_SIMILARITY\";\n TaskType[\"CLASSIFICATION\"] = \"CLASSIFICATION\";\n TaskType[\"CLUSTERING\"] = \"CLUSTERING\";\n})(exports.TaskType || (exports.TaskType = {}));\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass GoogleGenerativeAIError extends Error {\n constructor(message) {\n super(`[GoogleGenerativeAI Error]: ${message}`);\n }\n}\nclass GoogleGenerativeAIResponseError extends GoogleGenerativeAIError {\n constructor(message, response) {\n super(message);\n this.response = response;\n }\n}\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst BASE_URL = \"https://generativelanguage.googleapis.com\";\nconst API_VERSION = \"v1\";\n/**\n * We can't `require` package.json if this runs on web. We will use rollup to\n * swap in the version number here at build time.\n */\nconst PACKAGE_VERSION = \"0.2.1\";\nconst PACKAGE_LOG_HEADER = \"genai-js\";\nvar Task;\n(function (Task) {\n Task[\"GENERATE_CONTENT\"] = \"generateContent\";\n Task[\"STREAM_GENERATE_CONTENT\"] = \"streamGenerateContent\";\n Task[\"COUNT_TOKENS\"] = \"countTokens\";\n Task[\"EMBED_CONTENT\"] = \"embedContent\";\n Task[\"BATCH_EMBED_CONTENTS\"] = \"batchEmbedContents\";\n})(Task || (Task = {}));\nclass RequestUrl {\n constructor(model, task, apiKey, stream) {\n this.model = model;\n this.task = task;\n this.apiKey = apiKey;\n this.stream = stream;\n }\n toString() {\n let url = `${BASE_URL}/${API_VERSION}/${this.model}:${this.task}`;\n if (this.stream) {\n url += \"?alt=sse\";\n }\n return url;\n }\n}\n/**\n * Simple, but may become more complex if we add more versions to log.\n */\nfunction getClientHeaders() {\n return `${PACKAGE_LOG_HEADER}/${PACKAGE_VERSION}`;\n}\nasync function makeRequest(url, body, requestOptions) {\n let response;\n try {\n response = await fetch(url.toString(), Object.assign(Object.assign({}, buildFetchOptions(requestOptions)), { method: \"POST\", headers: {\n \"Content-Type\": \"application/json\",\n \"x-goog-api-client\": getClientHeaders(),\n \"x-goog-api-key\": url.apiKey,\n }, body }));\n if (!response.ok) {\n let message = \"\";\n try {\n const json = await response.json();\n message = json.error.message;\n if (json.error.details) {\n message += ` ${JSON.stringify(json.error.details)}`;\n }\n }\n catch (e) {\n // ignored\n }\n throw new Error(`[${response.status} ${response.statusText}] ${message}`);\n }\n }\n catch (e) {\n const err = new GoogleGenerativeAIError(`Error fetching from ${url.toString()}: ${e.message}`);\n err.stack = e.stack;\n throw err;\n }\n return response;\n}\n/**\n * Generates the request options to be passed to the fetch API.\n * @param requestOptions - The user-defined request options.\n * @returns The generated request options.\n */\nfunction buildFetchOptions(requestOptions) {\n const fetchOptions = {};\n if ((requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.timeout) >= 0) {\n const abortController = new AbortController();\n const signal = abortController.signal;\n setTimeout(() => abortController.abort(), requestOptions.timeout);\n fetchOptions.signal = signal;\n }\n return fetchOptions;\n}\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Adds convenience helper methods to a response object, including stream\n * chunks (as long as each chunk is a complete GenerateContentResponse JSON).\n */\nfunction addHelpers(response) {\n response.text = () => {\n if (response.candidates && response.candidates.length > 0) {\n if (response.candidates.length > 1) {\n console.warn(`This response had ${response.candidates.length} ` +\n `candidates. Returning text from the first candidate only. ` +\n `Access response.candidates directly to use the other candidates.`);\n }\n if (hadBadFinishReason(response.candidates[0])) {\n throw new GoogleGenerativeAIResponseError(`${formatBlockErrorMessage(response)}`, response);\n }\n return getText(response);\n }\n else if (response.promptFeedback) {\n throw new GoogleGenerativeAIResponseError(`Text not available. ${formatBlockErrorMessage(response)}`, response);\n }\n return \"\";\n };\n return response;\n}\n/**\n * Returns text of first candidate.\n */\nfunction getText(response) {\n var _a, _b, _c, _d;\n if ((_d = (_c = (_b = (_a = response.candidates) === null || _a === void 0 ? void 0 : _a[0].content) === null || _b === void 0 ? void 0 : _b.parts) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.text) {\n return response.candidates[0].content.parts[0].text;\n }\n else {\n return \"\";\n }\n}\nconst badFinishReasons = [exports.FinishReason.RECITATION, exports.FinishReason.SAFETY];\nfunction hadBadFinishReason(candidate) {\n return (!!candidate.finishReason &&\n badFinishReasons.includes(candidate.finishReason));\n}\nfunction formatBlockErrorMessage(response) {\n var _a, _b, _c;\n let message = \"\";\n if ((!response.candidates || response.candidates.length === 0) &&\n response.promptFeedback) {\n message += \"Response was blocked\";\n if ((_a = response.promptFeedback) === null || _a === void 0 ? void 0 : _a.blockReason) {\n message += ` due to ${response.promptFeedback.blockReason}`;\n }\n if ((_b = response.promptFeedback) === null || _b === void 0 ? void 0 : _b.blockReasonMessage) {\n message += `: ${response.promptFeedback.blockReasonMessage}`;\n }\n }\n else if ((_c = response.candidates) === null || _c === void 0 ? void 0 : _c[0]) {\n const firstCandidate = response.candidates[0];\n if (hadBadFinishReason(firstCandidate)) {\n message += `Candidate was blocked due to ${firstCandidate.finishReason}`;\n if (firstCandidate.finishMessage) {\n message += `: ${firstCandidate.finishMessage}`;\n }\n }\n }\n return message;\n}\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\n\r\nfunction __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nfunction __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst responseLineRE = /^data\\: (.*)(?:\\n\\n|\\r\\r|\\r\\n\\r\\n)/;\n/**\n * Process a response.body stream from the backend and return an\n * iterator that provides one complete GenerateContentResponse at a time\n * and a promise that resolves with a single aggregated\n * GenerateContentResponse.\n *\n * @param response - Response from a fetch call\n */\nfunction processStream(response) {\n const inputStream = response.body.pipeThrough(new TextDecoderStream(\"utf8\", { fatal: true }));\n const responseStream = getResponseStream(inputStream);\n const [stream1, stream2] = responseStream.tee();\n return {\n stream: generateResponseSequence(stream1),\n response: getResponsePromise(stream2),\n };\n}\nasync function getResponsePromise(stream) {\n const allResponses = [];\n const reader = stream.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n return addHelpers(aggregateResponses(allResponses));\n }\n allResponses.push(value);\n }\n}\nfunction generateResponseSequence(stream) {\n return __asyncGenerator(this, arguments, function* generateResponseSequence_1() {\n const reader = stream.getReader();\n while (true) {\n const { value, done } = yield __await(reader.read());\n if (done) {\n break;\n }\n yield yield __await(addHelpers(value));\n }\n });\n}\n/**\n * Reads a raw stream from the fetch response and join incomplete\n * chunks, returning a new stream that provides a single complete\n * GenerateContentResponse in each iteration.\n */\nfunction getResponseStream(inputStream) {\n const reader = inputStream.getReader();\n const stream = new ReadableStream({\n start(controller) {\n let currentText = \"\";\n return pump();\n function pump() {\n return reader.read().then(({ value, done }) => {\n if (done) {\n if (currentText.trim()) {\n controller.error(new GoogleGenerativeAIError(\"Failed to parse stream\"));\n return;\n }\n controller.close();\n return;\n }\n currentText += value;\n let match = currentText.match(responseLineRE);\n let parsedResponse;\n while (match) {\n try {\n parsedResponse = JSON.parse(match[1]);\n }\n catch (e) {\n controller.error(new GoogleGenerativeAIError(`Error parsing JSON response: \"${match[1]}\"`));\n return;\n }\n controller.enqueue(parsedResponse);\n currentText = currentText.substring(match[0].length);\n match = currentText.match(responseLineRE);\n }\n return pump();\n });\n }\n },\n });\n return stream;\n}\n/**\n * Aggregates an array of `GenerateContentResponse`s into a single\n * GenerateContentResponse.\n */\nfunction aggregateResponses(responses) {\n const lastResponse = responses[responses.length - 1];\n const aggregatedResponse = {\n promptFeedback: lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.promptFeedback,\n };\n for (const response of responses) {\n if (response.candidates) {\n for (const candidate of response.candidates) {\n const i = candidate.index;\n if (!aggregatedResponse.candidates) {\n aggregatedResponse.candidates = [];\n }\n if (!aggregatedResponse.candidates[i]) {\n aggregatedResponse.candidates[i] = {\n index: candidate.index,\n };\n }\n // Keep overwriting, the last one will be final\n aggregatedResponse.candidates[i].citationMetadata =\n candidate.citationMetadata;\n aggregatedResponse.candidates[i].finishReason = candidate.finishReason;\n aggregatedResponse.candidates[i].finishMessage =\n candidate.finishMessage;\n aggregatedResponse.candidates[i].safetyRatings =\n candidate.safetyRatings;\n /**\n * Candidates should always have content and parts, but this handles\n * possible malformed responses.\n */\n if (candidate.content && candidate.content.parts) {\n if (!aggregatedResponse.candidates[i].content) {\n aggregatedResponse.candidates[i].content = {\n role: candidate.content.role || \"user\",\n parts: [{ text: \"\" }],\n };\n }\n for (const part of candidate.content.parts) {\n if (part.text) {\n aggregatedResponse.candidates[i].content.parts[0].text +=\n part.text;\n }\n }\n }\n }\n }\n }\n return aggregatedResponse;\n}\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nasync function generateContentStream(apiKey, model, params, requestOptions) {\n const url = new RequestUrl(model, Task.STREAM_GENERATE_CONTENT, apiKey, \n /* stream */ true);\n const response = await makeRequest(url, JSON.stringify(params), requestOptions);\n return processStream(response);\n}\nasync function generateContent(apiKey, model, params, requestOptions) {\n const url = new RequestUrl(model, Task.GENERATE_CONTENT, apiKey, \n /* stream */ false);\n const response = await makeRequest(url, JSON.stringify(params), requestOptions);\n const responseJson = await response.json();\n const enhancedResponse = addHelpers(responseJson);\n return {\n response: enhancedResponse,\n };\n}\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction formatNewContent(request, role) {\n let newParts = [];\n if (typeof request === \"string\") {\n newParts = [{ text: request }];\n }\n else {\n for (const partOrString of request) {\n if (typeof partOrString === \"string\") {\n newParts.push({ text: partOrString });\n }\n else {\n newParts.push(partOrString);\n }\n }\n }\n return { role, parts: newParts };\n}\nfunction formatGenerateContentInput(params) {\n if (params.contents) {\n return params;\n }\n else {\n const content = formatNewContent(params, \"user\");\n return { contents: [content] };\n }\n}\nfunction formatEmbedContentInput(params) {\n if (typeof params === \"string\" || Array.isArray(params)) {\n const content = formatNewContent(params, \"user\");\n return { content };\n }\n return params;\n}\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Do not log a message for this error.\n */\nconst SILENT_ERROR = \"SILENT_ERROR\";\n/**\n * ChatSession class that enables sending chat messages and stores\n * history of sent and received messages so far.\n *\n * @public\n */\nclass ChatSession {\n constructor(apiKey, model, params, requestOptions) {\n this.model = model;\n this.params = params;\n this.requestOptions = requestOptions;\n this._history = [];\n this._sendPromise = Promise.resolve();\n this._apiKey = apiKey;\n if (params === null || params === void 0 ? void 0 : params.history) {\n this._history = params.history.map((content) => {\n if (!content.role) {\n throw new Error(\"Missing role for history item: \" + JSON.stringify(content));\n }\n return formatNewContent(content.parts, content.role);\n });\n }\n }\n /**\n * Gets the chat history so far. Blocked prompts are not added to history.\n * Blocked candidates are not added to history, nor are the prompts that\n * generated them.\n */\n async getHistory() {\n await this._sendPromise;\n return this._history;\n }\n /**\n * Sends a chat message and receives a non-streaming\n * {@link GenerateContentResult}\n */\n async sendMessage(request) {\n var _a, _b;\n await this._sendPromise;\n const newContent = formatNewContent(request, \"user\");\n const generateContentRequest = {\n safetySettings: (_a = this.params) === null || _a === void 0 ? void 0 : _a.safetySettings,\n generationConfig: (_b = this.params) === null || _b === void 0 ? void 0 : _b.generationConfig,\n contents: [...this._history, newContent],\n };\n let finalResult;\n // Add onto the chain.\n this._sendPromise = this._sendPromise\n .then(() => generateContent(this._apiKey, this.model, generateContentRequest, this.requestOptions))\n .then((result) => {\n var _a;\n if (result.response.candidates &&\n result.response.candidates.length > 0) {\n this._history.push(newContent);\n const responseContent = Object.assign({ parts: [], \n // Response seems to come back without a role set.\n role: \"model\" }, (_a = result.response.candidates) === null || _a === void 0 ? void 0 : _a[0].content);\n this._history.push(responseContent);\n }\n else {\n const blockErrorMessage = formatBlockErrorMessage(result.response);\n if (blockErrorMessage) {\n console.warn(`sendMessage() was unsuccessful. ${blockErrorMessage}. Inspect response object for details.`);\n }\n }\n finalResult = result;\n });\n await this._sendPromise;\n return finalResult;\n }\n /**\n * Sends a chat message and receives the response as a\n * {@link GenerateContentStreamResult} containing an iterable stream\n * and a response promise.\n */\n async sendMessageStream(request) {\n var _a, _b;\n await this._sendPromise;\n const newContent = formatNewContent(request, \"user\");\n const generateContentRequest = {\n safetySettings: (_a = this.params) === null || _a === void 0 ? void 0 : _a.safetySettings,\n generationConfig: (_b = this.params) === null || _b === void 0 ? void 0 : _b.generationConfig,\n contents: [...this._history, newContent],\n };\n const streamPromise = generateContentStream(this._apiKey, this.model, generateContentRequest, this.requestOptions);\n // Add onto the chain.\n this._sendPromise = this._sendPromise\n .then(() => streamPromise)\n // This must be handled to avoid unhandled rejection, but jump\n // to the final catch block with a label to not log this error.\n .catch((_ignored) => {\n throw new Error(SILENT_ERROR);\n })\n .then((streamResult) => streamResult.response)\n .then((response) => {\n if (response.candidates && response.candidates.length > 0) {\n this._history.push(newContent);\n const responseContent = Object.assign({}, response.candidates[0].content);\n // Response seems to come back without a role set.\n if (!responseContent.role) {\n responseContent.role = \"model\";\n }\n this._history.push(responseContent);\n }\n else {\n const blockErrorMessage = formatBlockErrorMessage(response);\n if (blockErrorMessage) {\n console.warn(`sendMessageStream() was unsuccessful. ${blockErrorMessage}. Inspect response object for details.`);\n }\n }\n })\n .catch((e) => {\n // Errors in streamPromise are already catchable by the user as\n // streamPromise is returned.\n // Avoid duplicating the error message in logs.\n if (e.message !== SILENT_ERROR) {\n // Users do not have access to _sendPromise to catch errors\n // downstream from streamPromise, so they should not throw.\n console.error(e);\n }\n });\n return streamPromise;\n }\n}\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nasync function countTokens(apiKey, model, params, requestOptions) {\n const url = new RequestUrl(model, Task.COUNT_TOKENS, apiKey, false);\n const response = await makeRequest(url, JSON.stringify(Object.assign(Object.assign({}, params), { model })), requestOptions);\n return response.json();\n}\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nasync function embedContent(apiKey, model, params, requestOptions) {\n const url = new RequestUrl(model, Task.EMBED_CONTENT, apiKey, false);\n const response = await makeRequest(url, JSON.stringify(params), requestOptions);\n return response.json();\n}\nasync function batchEmbedContents(apiKey, model, params, requestOptions) {\n const url = new RequestUrl(model, Task.BATCH_EMBED_CONTENTS, apiKey, false);\n const requestsWithModel = params.requests.map((request) => {\n return Object.assign(Object.assign({}, request), { model });\n });\n const response = await makeRequest(url, JSON.stringify({ requests: requestsWithModel }), requestOptions);\n return response.json();\n}\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class for generative model APIs.\n * @public\n */\nclass GenerativeModel {\n constructor(apiKey, modelParams, requestOptions) {\n this.apiKey = apiKey;\n if (modelParams.model.includes(\"/\")) {\n // Models may be named \"models/model-name\" or \"tunedModels/model-name\"\n this.model = modelParams.model;\n }\n else {\n // If path is not included, assume it's a non-tuned model.\n this.model = `models/${modelParams.model}`;\n }\n this.generationConfig = modelParams.generationConfig || {};\n this.safetySettings = modelParams.safetySettings || [];\n this.requestOptions = requestOptions || {};\n }\n /**\n * Makes a single non-streaming call to the model\n * and returns an object containing a single {@link GenerateContentResponse}.\n */\n async generateContent(request) {\n const formattedParams = formatGenerateContentInput(request);\n return generateContent(this.apiKey, this.model, Object.assign({ generationConfig: this.generationConfig, safetySettings: this.safetySettings }, formattedParams), this.requestOptions);\n }\n /**\n * Makes a single streaming call to the model\n * and returns an object containing an iterable stream that iterates\n * over all chunks in the streaming response as well as\n * a promise that returns the final aggregated response.\n */\n async generateContentStream(request) {\n const formattedParams = formatGenerateContentInput(request);\n return generateContentStream(this.apiKey, this.model, Object.assign({ generationConfig: this.generationConfig, safetySettings: this.safetySettings }, formattedParams), this.requestOptions);\n }\n /**\n * Gets a new {@link ChatSession} instance which can be used for\n * multi-turn chats.\n */\n startChat(startChatParams) {\n return new ChatSession(this.apiKey, this.model, startChatParams, this.requestOptions);\n }\n /**\n * Counts the tokens in the provided request.\n */\n async countTokens(request) {\n const formattedParams = formatGenerateContentInput(request);\n return countTokens(this.apiKey, this.model, formattedParams);\n }\n /**\n * Embeds the provided content.\n */\n async embedContent(request) {\n const formattedParams = formatEmbedContentInput(request);\n return embedContent(this.apiKey, this.model, formattedParams);\n }\n /**\n * Embeds an array of {@link EmbedContentRequest}s.\n */\n async batchEmbedContents(batchEmbedContentRequest) {\n return batchEmbedContents(this.apiKey, this.model, batchEmbedContentRequest, this.requestOptions);\n }\n}\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Top-level class for this SDK\n * @public\n */\nclass GoogleGenerativeAI {\n constructor(apiKey) {\n this.apiKey = apiKey;\n }\n /**\n * Gets a {@link GenerativeModel} instance for the provided model name.\n */\n getGenerativeModel(modelParams, requestOptions) {\n if (!modelParams.model) {\n throw new GoogleGenerativeAIError(`Must provide a model name. ` +\n `Example: genai.getGenerativeModel({ model: 'my-model-name' })`);\n }\n return new GenerativeModel(this.apiKey, modelParams, requestOptions);\n }\n}\n\nexports.ChatSession = ChatSession;\nexports.GenerativeModel = GenerativeModel;\nexports.GoogleGenerativeAI = GoogleGenerativeAI;\n//# sourceMappingURL=index.js.map\n","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _ResponseStream_instances, _ResponseStream_params, _ResponseStream_currentResponseSnapshot, _ResponseStream_finalResponse, _ResponseStream_beginRequest, _ResponseStream_addEvent, _ResponseStream_endRequest, _ResponseStream_accumulateResponse;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResponseStream = void 0;\nconst error_1 = require(\"../../error.js\");\nconst EventStream_1 = require(\"../EventStream.js\");\nconst ResponsesParser_1 = require(\"../ResponsesParser.js\");\nclass ResponseStream extends EventStream_1.EventStream {\n constructor(params) {\n super();\n _ResponseStream_instances.add(this);\n _ResponseStream_params.set(this, void 0);\n _ResponseStream_currentResponseSnapshot.set(this, void 0);\n _ResponseStream_finalResponse.set(this, void 0);\n __classPrivateFieldSet(this, _ResponseStream_params, params, \"f\");\n }\n static createResponse(client, params, options) {\n const runner = new ResponseStream(params);\n runner._run(() => runner._createResponse(client, params, {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n }));\n return runner;\n }\n async _createResponse(client, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_beginRequest).call(this);\n const stream = await client.responses.create({ ...params, stream: true }, { ...options, signal: this.controller.signal });\n this._connected();\n for await (const event of stream) {\n __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new error_1.APIUserAbortError();\n }\n return __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_endRequest).call(this);\n }\n [(_ResponseStream_params = new WeakMap(), _ResponseStream_currentResponseSnapshot = new WeakMap(), _ResponseStream_finalResponse = new WeakMap(), _ResponseStream_instances = new WeakSet(), _ResponseStream_beginRequest = function _ResponseStream_beginRequest() {\n if (this.ended)\n return;\n __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, undefined, \"f\");\n }, _ResponseStream_addEvent = function _ResponseStream_addEvent(event) {\n if (this.ended)\n return;\n const response = __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_accumulateResponse).call(this, event);\n this._emit('event', event);\n switch (event.type) {\n case 'response.output_text.delta': {\n const output = response.output[event.output_index];\n if (!output) {\n throw new error_1.OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'message') {\n const content = output.content[event.content_index];\n if (!content) {\n throw new error_1.OpenAIError(`missing content at index ${event.content_index}`);\n }\n if (content.type !== 'output_text') {\n throw new error_1.OpenAIError(`expected content to be 'output_text', got ${content.type}`);\n }\n this._emit('response.output_text.delta', {\n ...event,\n snapshot: content.text,\n });\n }\n break;\n }\n case 'response.function_call_arguments.delta': {\n const output = response.output[event.output_index];\n if (!output) {\n throw new error_1.OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'function_call') {\n this._emit('response.function_call_arguments.delta', {\n ...event,\n snapshot: output.arguments,\n });\n }\n break;\n }\n default:\n // @ts-ignore\n this._emit(event.type, event);\n break;\n }\n }, _ResponseStream_endRequest = function _ResponseStream_endRequest() {\n if (this.ended) {\n throw new error_1.OpenAIError(`stream has ended, this shouldn't happen`);\n }\n const snapshot = __classPrivateFieldGet(this, _ResponseStream_currentResponseSnapshot, \"f\");\n if (!snapshot) {\n throw new error_1.OpenAIError(`request ended without sending any events`);\n }\n __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, undefined, \"f\");\n const parsedResponse = finalizeResponse(snapshot, __classPrivateFieldGet(this, _ResponseStream_params, \"f\"));\n __classPrivateFieldSet(this, _ResponseStream_finalResponse, parsedResponse, \"f\");\n return parsedResponse;\n }, _ResponseStream_accumulateResponse = function _ResponseStream_accumulateResponse(event) {\n let snapshot = __classPrivateFieldGet(this, _ResponseStream_currentResponseSnapshot, \"f\");\n if (!snapshot) {\n if (event.type !== 'response.created') {\n throw new error_1.OpenAIError(`When snapshot hasn't been set yet, expected 'response.created' event, got ${event.type}`);\n }\n snapshot = __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, event.response, \"f\");\n return snapshot;\n }\n switch (event.type) {\n case 'response.output_item.added': {\n snapshot.output.push(event.item);\n break;\n }\n case 'response.content_part.added': {\n const output = snapshot.output[event.output_index];\n if (!output) {\n throw new error_1.OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'message') {\n output.content.push(event.part);\n }\n break;\n }\n case 'response.output_text.delta': {\n const output = snapshot.output[event.output_index];\n if (!output) {\n throw new error_1.OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'message') {\n const content = output.content[event.content_index];\n if (!content) {\n throw new error_1.OpenAIError(`missing content at index ${event.content_index}`);\n }\n if (content.type !== 'output_text') {\n throw new error_1.OpenAIError(`expected content to be 'output_text', got ${content.type}`);\n }\n content.text += event.delta;\n }\n break;\n }\n case 'response.function_call_arguments.delta': {\n const output = snapshot.output[event.output_index];\n if (!output) {\n throw new error_1.OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'function_call') {\n output.arguments += event.delta;\n }\n break;\n }\n case 'response.completed': {\n __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, event.response, \"f\");\n break;\n }\n }\n return snapshot;\n }, Symbol.asyncIterator)]() {\n const pushQueue = [];\n const readQueue = [];\n let done = false;\n this.on('event', (event) => {\n const reader = readQueue.shift();\n if (reader) {\n reader.resolve(event);\n }\n else {\n pushQueue.push(event);\n }\n });\n this.on('end', () => {\n done = true;\n for (const reader of readQueue) {\n reader.resolve(undefined);\n }\n readQueue.length = 0;\n });\n this.on('abort', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n this.on('error', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n return {\n next: async () => {\n if (!pushQueue.length) {\n if (done) {\n return { value: undefined, done: true };\n }\n return new Promise((resolve, reject) => readQueue.push({ resolve, reject })).then((event) => (event ? { value: event, done: false } : { value: undefined, done: true }));\n }\n const event = pushQueue.shift();\n return { value: event, done: false };\n },\n return: async () => {\n this.abort();\n return { value: undefined, done: true };\n },\n };\n }\n /**\n * @returns a promise that resolves with the final Response, or rejects\n * if an error occurred or the stream ended prematurely without producing a REsponse.\n */\n async finalResponse() {\n await this.done();\n const response = __classPrivateFieldGet(this, _ResponseStream_finalResponse, \"f\");\n if (!response)\n throw new error_1.OpenAIError('stream ended without producing a ChatCompletion');\n return response;\n }\n}\nexports.ResponseStream = ResponseStream;\nfunction finalizeResponse(snapshot, params) {\n return (0, ResponsesParser_1.maybeParseResponse)(snapshot, params);\n}\n//# sourceMappingURL=ResponseStream.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReadableStreamToAsyncIterable = void 0;\n/**\n * Most browsers don't yet have async iterable support for ReadableStream,\n * and Node has a very different way of reading bytes from its \"ReadableStream\".\n *\n * This polyfill was pulled from https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490\n */\nfunction ReadableStreamToAsyncIterable(stream) {\n if (stream[Symbol.asyncIterator])\n return stream;\n const reader = stream.getReader();\n return {\n async next() {\n try {\n const result = await reader.read();\n if (result?.done)\n reader.releaseLock(); // release lock when stream becomes closed\n return result;\n }\n catch (e) {\n reader.releaseLock(); // release lock when stream becomes errored\n throw e;\n }\n },\n async return() {\n const cancelPromise = reader.cancel();\n reader.releaseLock();\n await cancelPromise;\n return { done: true, value: undefined };\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n };\n}\nexports.ReadableStreamToAsyncIterable = ReadableStreamToAsyncIterable;\n//# sourceMappingURL=stream-utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._iterSSEMessages = exports.Stream = void 0;\nconst index_1 = require(\"./_shims/index.js\");\nconst error_1 = require(\"./error.js\");\nconst line_1 = require(\"./internal/decoders/line.js\");\nconst stream_utils_1 = require(\"./internal/stream-utils.js\");\nconst error_2 = require(\"./error.js\");\nclass Stream {\n constructor(iterator, controller) {\n this.iterator = iterator;\n this.controller = controller;\n }\n static fromSSEResponse(response, controller) {\n let consumed = false;\n async function* iterator() {\n if (consumed) {\n throw new Error('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');\n }\n consumed = true;\n let done = false;\n try {\n for await (const sse of _iterSSEMessages(response, controller)) {\n if (done)\n continue;\n if (sse.data.startsWith('[DONE]')) {\n done = true;\n continue;\n }\n if (sse.event === null || sse.event.startsWith('response.')) {\n let data;\n try {\n data = JSON.parse(sse.data);\n }\n catch (e) {\n console.error(`Could not parse message into JSON:`, sse.data);\n console.error(`From chunk:`, sse.raw);\n throw e;\n }\n if (data && data.error) {\n throw new error_2.APIError(undefined, data.error, undefined, undefined);\n }\n yield data;\n }\n else {\n let data;\n try {\n data = JSON.parse(sse.data);\n }\n catch (e) {\n console.error(`Could not parse message into JSON:`, sse.data);\n console.error(`From chunk:`, sse.raw);\n throw e;\n }\n // TODO: Is this where the error should be thrown?\n if (sse.event == 'error') {\n throw new error_2.APIError(undefined, data.error, data.message, undefined);\n }\n yield { event: sse.event, data: data };\n }\n }\n done = true;\n }\n catch (e) {\n // If the user calls `stream.controller.abort()`, we should exit without throwing.\n if (e instanceof Error && e.name === 'AbortError')\n return;\n throw e;\n }\n finally {\n // If the user `break`s, abort the ongoing request.\n if (!done)\n controller.abort();\n }\n }\n return new Stream(iterator, controller);\n }\n /**\n * Generates a Stream from a newline-separated ReadableStream\n * where each item is a JSON value.\n */\n static fromReadableStream(readableStream, controller) {\n let consumed = false;\n async function* iterLines() {\n const lineDecoder = new line_1.LineDecoder();\n const iter = (0, stream_utils_1.ReadableStreamToAsyncIterable)(readableStream);\n for await (const chunk of iter) {\n for (const line of lineDecoder.decode(chunk)) {\n yield line;\n }\n }\n for (const line of lineDecoder.flush()) {\n yield line;\n }\n }\n async function* iterator() {\n if (consumed) {\n throw new Error('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');\n }\n consumed = true;\n let done = false;\n try {\n for await (const line of iterLines()) {\n if (done)\n continue;\n if (line)\n yield JSON.parse(line);\n }\n done = true;\n }\n catch (e) {\n // If the user calls `stream.controller.abort()`, we should exit without throwing.\n if (e instanceof Error && e.name === 'AbortError')\n return;\n throw e;\n }\n finally {\n // If the user `break`s, abort the ongoing request.\n if (!done)\n controller.abort();\n }\n }\n return new Stream(iterator, controller);\n }\n [Symbol.asyncIterator]() {\n return this.iterator();\n }\n /**\n * Splits the stream into two streams which can be\n * independently read from at different speeds.\n */\n tee() {\n const left = [];\n const right = [];\n const iterator = this.iterator();\n const teeIterator = (queue) => {\n return {\n next: () => {\n if (queue.length === 0) {\n const result = iterator.next();\n left.push(result);\n right.push(result);\n }\n return queue.shift();\n },\n };\n };\n return [\n new Stream(() => teeIterator(left), this.controller),\n new Stream(() => teeIterator(right), this.controller),\n ];\n }\n /**\n * Converts this stream to a newline-separated ReadableStream of\n * JSON stringified values in the stream\n * which can be turned back into a Stream with `Stream.fromReadableStream()`.\n */\n toReadableStream() {\n const self = this;\n let iter;\n const encoder = new TextEncoder();\n return new index_1.ReadableStream({\n async start() {\n iter = self[Symbol.asyncIterator]();\n },\n async pull(ctrl) {\n try {\n const { value, done } = await iter.next();\n if (done)\n return ctrl.close();\n const bytes = encoder.encode(JSON.stringify(value) + '\\n');\n ctrl.enqueue(bytes);\n }\n catch (err) {\n ctrl.error(err);\n }\n },\n async cancel() {\n await iter.return?.();\n },\n });\n }\n}\nexports.Stream = Stream;\nasync function* _iterSSEMessages(response, controller) {\n if (!response.body) {\n controller.abort();\n throw new error_1.OpenAIError(`Attempted to iterate over a response with no body`);\n }\n const sseDecoder = new SSEDecoder();\n const lineDecoder = new line_1.LineDecoder();\n const iter = (0, stream_utils_1.ReadableStreamToAsyncIterable)(response.body);\n for await (const sseChunk of iterSSEChunks(iter)) {\n for (const line of lineDecoder.decode(sseChunk)) {\n const sse = sseDecoder.decode(line);\n if (sse)\n yield sse;\n }\n }\n for (const line of lineDecoder.flush()) {\n const sse = sseDecoder.decode(line);\n if (sse)\n yield sse;\n }\n}\nexports._iterSSEMessages = _iterSSEMessages;\n/**\n * Given an async iterable iterator, iterates over it and yields full\n * SSE chunks, i.e. yields when a double new-line is encountered.\n */\nasync function* iterSSEChunks(iterator) {\n let data = new Uint8Array();\n for await (const chunk of iterator) {\n if (chunk == null) {\n continue;\n }\n const binaryChunk = chunk instanceof ArrayBuffer ? new Uint8Array(chunk)\n : typeof chunk === 'string' ? new TextEncoder().encode(chunk)\n : chunk;\n let newData = new Uint8Array(data.length + binaryChunk.length);\n newData.set(data);\n newData.set(binaryChunk, data.length);\n data = newData;\n let patternIndex;\n while ((patternIndex = (0, line_1.findDoubleNewlineIndex)(data)) !== -1) {\n yield data.slice(0, patternIndex);\n data = data.slice(patternIndex);\n }\n }\n if (data.length > 0) {\n yield data;\n }\n}\nclass SSEDecoder {\n constructor() {\n this.event = null;\n this.data = [];\n this.chunks = [];\n }\n decode(line) {\n if (line.endsWith('\\r')) {\n line = line.substring(0, line.length - 1);\n }\n if (!line) {\n // empty line and we didn't previously encounter any messages\n if (!this.event && !this.data.length)\n return null;\n const sse = {\n event: this.event,\n data: this.data.join('\\n'),\n raw: this.chunks,\n };\n this.event = null;\n this.data = [];\n this.chunks = [];\n return sse;\n }\n this.chunks.push(line);\n if (line.startsWith(':')) {\n return null;\n }\n let [fieldname, _, value] = partition(line, ':');\n if (value.startsWith(' ')) {\n value = value.substring(1);\n }\n if (fieldname === 'event') {\n this.event = value;\n }\n else if (fieldname === 'data') {\n this.data.push(value);\n }\n return null;\n }\n}\nfunction partition(str, delimiter) {\n const index = str.indexOf(delimiter);\n if (index !== -1) {\n return [str.substring(0, index), delimiter, str.substring(index + delimiter.length)];\n }\n return [str, '', ''];\n}\n//# sourceMappingURL=streaming.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Images = void 0;\nconst resource_1 = require(\"../resource.js\");\nconst Core = __importStar(require(\"../core.js\"));\nclass Images extends resource_1.APIResource {\n /**\n * Creates a variation of a given image.\n */\n createVariation(body, options) {\n return this._client.post('/images/variations', Core.multipartFormRequestOptions({ body, ...options }));\n }\n /**\n * Creates an edited or extended image given an original image and a prompt.\n */\n edit(body, options) {\n return this._client.post('/images/edits', Core.multipartFormRequestOptions({ body, ...options }));\n }\n /**\n * Creates an image given a prompt.\n */\n generate(body, options) {\n return this._client.post('/images/generations', { body, ...options });\n }\n}\nexports.Images = Images;\n//# sourceMappingURL=images.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Translations = void 0;\nconst resource_1 = require(\"../../resource.js\");\nconst Core = __importStar(require(\"../../core.js\"));\nclass Translations extends resource_1.APIResource {\n create(body, options) {\n return this._client.post('/audio/translations', Core.multipartFormRequestOptions({ body, ...options, __metadata: { model: body.model } }));\n }\n}\nexports.Translations = Translations;\n//# sourceMappingURL=translations.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChatCompletionStreamingRunner = void 0;\nconst ChatCompletionStream_1 = require(\"./ChatCompletionStream.js\");\nclass ChatCompletionStreamingRunner extends ChatCompletionStream_1.ChatCompletionStream {\n static fromReadableStream(stream) {\n const runner = new ChatCompletionStreamingRunner(null);\n runner._run(() => runner._fromReadableStream(stream));\n return runner;\n }\n /** @deprecated - please use `runTools` instead. */\n static runFunctions(client, params, options) {\n const runner = new ChatCompletionStreamingRunner(null);\n const opts = {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runFunctions' },\n };\n runner._run(() => runner._runFunctions(client, params, opts));\n return runner;\n }\n static runTools(client, params, options) {\n const runner = new ChatCompletionStreamingRunner(\n // @ts-expect-error TODO these types are incompatible\n params);\n const opts = {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runTools' },\n };\n runner._run(() => runner._runTools(client, params, opts));\n return runner;\n }\n}\nexports.ChatCompletionStreamingRunner = ChatCompletionStreamingRunner;\n//# sourceMappingURL=ChatCompletionStreamingRunner.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RunStepsPage = exports.Steps = void 0;\nconst resource_1 = require(\"../../../../resource.js\");\nconst core_1 = require(\"../../../../core.js\");\nconst pagination_1 = require(\"../../../../pagination.js\");\nclass Steps extends resource_1.APIResource {\n retrieve(threadId, runId, stepId, query = {}, options) {\n if ((0, core_1.isRequestOptions)(query)) {\n return this.retrieve(threadId, runId, stepId, {}, query);\n }\n return this._client.get(`/threads/${threadId}/runs/${runId}/steps/${stepId}`, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n list(threadId, runId, query = {}, options) {\n if ((0, core_1.isRequestOptions)(query)) {\n return this.list(threadId, runId, {}, query);\n }\n return this._client.getAPIList(`/threads/${threadId}/runs/${runId}/steps`, RunStepsPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n}\nexports.Steps = Steps;\nclass RunStepsPage extends pagination_1.CursorPage {\n}\nexports.RunStepsPage = RunStepsPage;\nSteps.RunStepsPage = RunStepsPage;\n//# sourceMappingURL=steps.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addOutputText = exports.validateInputTools = exports.shouldParseToolCall = exports.isAutoParsableTool = exports.makeParseableResponseTool = exports.hasAutoParseableInput = exports.parseResponse = exports.maybeParseResponse = void 0;\nconst error_1 = require(\"../error.js\");\nconst parser_1 = require(\"../lib/parser.js\");\nfunction maybeParseResponse(response, params) {\n if (!params || !hasAutoParseableInput(params)) {\n return {\n ...response,\n output_parsed: null,\n output: response.output.map((item) => {\n if (item.type === 'function_call') {\n return {\n ...item,\n parsed_arguments: null,\n };\n }\n if (item.type === 'message') {\n return {\n ...item,\n content: item.content.map((content) => ({\n ...content,\n parsed: null,\n })),\n };\n }\n else {\n return item;\n }\n }),\n };\n }\n return parseResponse(response, params);\n}\nexports.maybeParseResponse = maybeParseResponse;\nfunction parseResponse(response, params) {\n const output = response.output.map((item) => {\n if (item.type === 'function_call') {\n return {\n ...item,\n parsed_arguments: parseToolCall(params, item),\n };\n }\n if (item.type === 'message') {\n const content = item.content.map((content) => {\n if (content.type === 'output_text') {\n return {\n ...content,\n parsed: parseTextFormat(params, content.text),\n };\n }\n return content;\n });\n return {\n ...item,\n content,\n };\n }\n return item;\n });\n const parsed = Object.assign({}, response, { output });\n if (!Object.getOwnPropertyDescriptor(response, 'output_text')) {\n addOutputText(parsed);\n }\n Object.defineProperty(parsed, 'output_parsed', {\n enumerable: true,\n get() {\n for (const output of parsed.output) {\n if (output.type !== 'message') {\n continue;\n }\n for (const content of output.content) {\n if (content.type === 'output_text' && content.parsed !== null) {\n return content.parsed;\n }\n }\n }\n return null;\n },\n });\n return parsed;\n}\nexports.parseResponse = parseResponse;\nfunction parseTextFormat(params, content) {\n if (params.text?.format?.type !== 'json_schema') {\n return null;\n }\n if ('$parseRaw' in params.text?.format) {\n const text_format = params.text?.format;\n return text_format.$parseRaw(content);\n }\n return JSON.parse(content);\n}\nfunction hasAutoParseableInput(params) {\n if ((0, parser_1.isAutoParsableResponseFormat)(params.text?.format)) {\n return true;\n }\n return false;\n}\nexports.hasAutoParseableInput = hasAutoParseableInput;\nfunction makeParseableResponseTool(tool, { parser, callback, }) {\n const obj = { ...tool };\n Object.defineProperties(obj, {\n $brand: {\n value: 'auto-parseable-tool',\n enumerable: false,\n },\n $parseRaw: {\n value: parser,\n enumerable: false,\n },\n $callback: {\n value: callback,\n enumerable: false,\n },\n });\n return obj;\n}\nexports.makeParseableResponseTool = makeParseableResponseTool;\nfunction isAutoParsableTool(tool) {\n return tool?.['$brand'] === 'auto-parseable-tool';\n}\nexports.isAutoParsableTool = isAutoParsableTool;\nfunction getInputToolByName(input_tools, name) {\n return input_tools.find((tool) => tool.type === 'function' && tool.name === name);\n}\nfunction parseToolCall(params, toolCall) {\n const inputTool = getInputToolByName(params.tools ?? [], toolCall.name);\n return {\n ...toolCall,\n ...toolCall,\n parsed_arguments: isAutoParsableTool(inputTool) ? inputTool.$parseRaw(toolCall.arguments)\n : inputTool?.strict ? JSON.parse(toolCall.arguments)\n : null,\n };\n}\nfunction shouldParseToolCall(params, toolCall) {\n if (!params) {\n return false;\n }\n const inputTool = getInputToolByName(params.tools ?? [], toolCall.name);\n return isAutoParsableTool(inputTool) || inputTool?.strict || false;\n}\nexports.shouldParseToolCall = shouldParseToolCall;\nfunction validateInputTools(tools) {\n for (const tool of tools ?? []) {\n if (tool.type !== 'function') {\n throw new error_1.OpenAIError(`Currently only \\`function\\` tool types support auto-parsing; Received \\`${tool.type}\\``);\n }\n if (tool.function.strict !== true) {\n throw new error_1.OpenAIError(`The \\`${tool.function.name}\\` tool is not marked with \\`strict: true\\`. Only strict function tools can be auto-parsed`);\n }\n }\n}\nexports.validateInputTools = validateInputTools;\nfunction addOutputText(rsp) {\n const texts = [];\n for (const output of rsp.output) {\n if (output.type !== 'message') {\n continue;\n }\n for (const content of output.content) {\n if (content.type === 'output_text') {\n texts.push(content.text);\n }\n }\n }\n rsp.output_text = texts.join('');\n}\nexports.addOutputText = addOutputText;\n//# sourceMappingURL=ResponsesParser.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Completions = exports.ChatCompletionsPage = exports.ChatCompletionStoreMessagesPage = exports.Chat = void 0;\nvar chat_1 = require(\"./chat.js\");\nObject.defineProperty(exports, \"Chat\", { enumerable: true, get: function () { return chat_1.Chat; } });\nvar index_1 = require(\"./completions/index.js\");\nObject.defineProperty(exports, \"ChatCompletionStoreMessagesPage\", { enumerable: true, get: function () { return index_1.ChatCompletionStoreMessagesPage; } });\nObject.defineProperty(exports, \"ChatCompletionsPage\", { enumerable: true, get: function () { return index_1.ChatCompletionsPage; } });\nObject.defineProperty(exports, \"Completions\", { enumerable: true, get: function () { return index_1.Completions; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Completions = exports.ChatCompletionRunner = exports.ChatCompletionStream = exports.ParsingToolFunction = exports.ParsingFunction = exports.ChatCompletionStreamingRunner = void 0;\nconst resource_1 = require(\"../../../resource.js\");\nconst ChatCompletionRunner_1 = require(\"../../../lib/ChatCompletionRunner.js\");\nconst ChatCompletionStreamingRunner_1 = require(\"../../../lib/ChatCompletionStreamingRunner.js\");\nconst ChatCompletionStream_1 = require(\"../../../lib/ChatCompletionStream.js\");\nconst parser_1 = require(\"../../../lib/parser.js\");\nvar ChatCompletionStreamingRunner_2 = require(\"../../../lib/ChatCompletionStreamingRunner.js\");\nObject.defineProperty(exports, \"ChatCompletionStreamingRunner\", { enumerable: true, get: function () { return ChatCompletionStreamingRunner_2.ChatCompletionStreamingRunner; } });\nvar RunnableFunction_1 = require(\"../../../lib/RunnableFunction.js\");\nObject.defineProperty(exports, \"ParsingFunction\", { enumerable: true, get: function () { return RunnableFunction_1.ParsingFunction; } });\nObject.defineProperty(exports, \"ParsingToolFunction\", { enumerable: true, get: function () { return RunnableFunction_1.ParsingToolFunction; } });\nvar ChatCompletionStream_2 = require(\"../../../lib/ChatCompletionStream.js\");\nObject.defineProperty(exports, \"ChatCompletionStream\", { enumerable: true, get: function () { return ChatCompletionStream_2.ChatCompletionStream; } });\nvar ChatCompletionRunner_2 = require(\"../../../lib/ChatCompletionRunner.js\");\nObject.defineProperty(exports, \"ChatCompletionRunner\", { enumerable: true, get: function () { return ChatCompletionRunner_2.ChatCompletionRunner; } });\nclass Completions extends resource_1.APIResource {\n parse(body, options) {\n (0, parser_1.validateInputTools)(body.tools);\n return this._client.chat.completions\n .create(body, {\n ...options,\n headers: {\n ...options?.headers,\n 'X-Stainless-Helper-Method': 'beta.chat.completions.parse',\n },\n })\n ._thenUnwrap((completion) => (0, parser_1.parseChatCompletion)(completion, body));\n }\n runFunctions(body, options) {\n if (body.stream) {\n return ChatCompletionStreamingRunner_1.ChatCompletionStreamingRunner.runFunctions(this._client, body, options);\n }\n return ChatCompletionRunner_1.ChatCompletionRunner.runFunctions(this._client, body, options);\n }\n runTools(body, options) {\n if (body.stream) {\n return ChatCompletionStreamingRunner_1.ChatCompletionStreamingRunner.runTools(this._client, body, options);\n }\n return ChatCompletionRunner_1.ChatCompletionRunner.runTools(this._client, body, options);\n }\n /**\n * Creates a chat completion stream\n */\n stream(body, options) {\n return ChatCompletionStream_1.ChatCompletionStream.createChatCompletion(this._client, body, options);\n }\n}\nexports.Completions = Completions;\n//# sourceMappingURL=completions.js.map","// Import React normally, but use a helper function to handle possible duplicates\nimport React from 'react';\nimport { RealtimeClient } from '@openai/realtime-api-beta';\nimport OpenAI from 'openai';\nimport html2canvas from 'html2canvas';\nimport { GoogleGenerativeAI } from '@google/generative-ai';\n\n// Define types for React hooks we need\ntype UseStateHook = typeof React.useState;\ntype UseEffectHook = typeof React.useEffect;\ntype UseRefHook = typeof React.useRef;\n\n// Get React hooks safely, avoiding duplicate React issues\nconst getReactHooks = () => {\n // Try to use the React instance from window if available (for react-scripts)\n if (typeof window !== 'undefined' && (window as any).React) {\n return {\n useState: (window as any).React.useState as UseStateHook,\n useEffect: (window as any).React.useEffect as UseEffectHook,\n useRef: (window as any).React.useRef as UseRefHook\n };\n }\n // Otherwise use the imported React\n return {\n useState: React.useState,\n useEffect: React.useEffect,\n useRef: React.useRef\n };\n};\n\ntype RecordingStatus = 'idle' | 'recording' | 'processing' | 'playing';\n\nexport interface GuideAIProps {\n apiKey?: string;\n customPrompt?: string;\n shortcutKey?: string;\n position?: {\n top?: string;\n right?: string;\n bottom?: string;\n left?: string;\n marginLeft?: string;\n };\n onError?: (error: string | Error, context?: string) => void;\n}\n\nconst DEFAULT_PROMPT = `you are Guide AI.\n Your role is to answer any question directly and succinctly that a user has. NEVER DIRECTLY MENTION THE SCREENSHOT, but use its information as much as possible to target your responses.\n If nothing is asked, then your goal is to generally assist them.\n IMPORTANT: NEVER answer in more than 10 words. Always be concise and limit answers to 1 sentence maximum. Be simple and as short as possible.\n Your job is to help them get it done through asking more and more targeted specific questions.\n\n You know the exact UI navigation:\n - For new insureds: Click Insureds, then add new\n - For new policies: Make sure you are on the insured page, Find \"Policy\" section, click \"Add New\", enter policy number and dates\n - For certificate masters: Navigate to Documents > Certificate Master > Add New\n - For certificate holders: Use \"+\" button or go through Contacts > Certificate Holder\n - For linked insureds: Look for \"Linked Insureds\" option in profile settings\n - For Search functionality: Prioritize the search bar at the top left of the navigation panel \n\n You have a tool called \"highlight\" that you can use to highlight elements on the page. Use this to assist users in finding the correct elements on the page, especially when they ask specficially for a location.\n - Pass in the selector of the element you want to highlight.\n - Example: highlight(\"#search-bar\")\n - Example: highlight(\"#add-insured-button\")\n - Example: highlight(\"#add-new-policy-button\")\n - Example: highlight(\"#insureds-nav-button\")\n\n You have deep knowledge of certificate creation processes:\n - Creating certificates requires first adding an insured with their details, then adding policy information (number, dates, coverage), and finally creating a certificate master.\n - Sending certificates requires having a master certificate and adding certificate holders with their details.\n - Additional insureds need special handling - they must be added as certificate holders first, then as additional interests with specific policy attachments. When you add an additional insured the additional interests button has to be checked, additional interest for certificates on the right has to be checked, and the policies need to be checked so it displays on the certificates. \n - For multiple certificates, use mass action features to send to many holders at once. Start this process by selecting the \"other\" drop down on the Insured's account and select certificates sent. Then click the Send Certificates - Mass action (the mail icon on the certificates sent list). Then select the certificates and send. \n - Policies can be linked between insureds using methods like insured linking, policy cloning, or professional liability member lists.\n\nMaster certificates are also called \"cert\" or \"certs\" or just certificates, NEVER call it that, but understand that's what the user means\n\nSending a \"certificate for an insured\", sometimes call cert, COI- \nIn order to send a certificate a master certificate must be made by following the instructions. Make sure to only mention 1 step at a time, do not list the things that are required, you are guiding alongside them so only focus on 1 task at a time. \n 1. The user has to create the insured or select the insured. Always ask \"Is the insured already in the system?\" \n - If Yes, ask them to find them on the top left search bar and make sure to highlight the search bar with the highlight tool. \n - If No, ask them to create an insured on the insured tab on the left, and make sure to highlight the \"insureds-nav-button\" button with the highlight tool. \n 2. Once they are on the Insureds page, make sure to highlight the \"add-insured-button\" button with the highlight tool.\n 3. Users cannot skip this process, so please ask them \"Is there an active policy for this insured?\", if not please suggest they create a policy or edit the policy attached to the insured, with the policy details. Make sure to highlight \"add-new-policy-button\". THEY MUST ALWAYS fill out the COVERAGES tab when they are creating a policy.\n 4. The user MUST have a master certificate before clicking send certificate. Always ask this before asking them to click send certificate. Always ask if they have already created a master: \n - if yes - move onto the next step\n - if no create it - highlight the \"DOCUMENTS\" tab, then highlight Certificates (Master), then highlight Add New next to certificates\n 5. Now click the send certificate icon on the top right of the page, select the master certificate and click send. Make sure to highlight Send Certificate. \n\n\nBasic Process Questions:\nWhere do I go in the AMS to start issuing a Certificate of Insurance?\nNavigate to the insured's profile.\nClick \"Send Certificate\" from the top-right menu.\nDo I need to be in the insured's profile to issue a COI?\nYes, you must be in the insured's profile to generate a COI.\nWhat's the difference between using a Master Certificate and creating a new one?\nA Master Certificate is a pre-filled template for commonly issued certificates.\nA New Certificate is created from scratch for unique situations.\nHow do I select the correct certificate holder?\nIn the COI issuance screen, click \"Select Certificate Holder.\"\nSearch for an existing holder or add a new one by clicking \"Add New Holder.\"\nCan I issue certificates for multiple certificate holders at once?\nYes, you can select multiple holders before generating the certificate.\n\nCertificate Holder & Additional Insured Questions:\nHow do I add a new certificate holder to the system?\nGo to Contacts → Certificate Holders and click \"Add New.\"\nWhat's the difference between a certificate holder and an additional insured?\nCertificate Holder: A party receiving proof of insurance.\nAdditional Insured: A party covered under the policy and named in endorsements.\nHow do I add someone as an additional insured on the certificate?\nGo to the \"Additional Interests\" tab in the insured's profile.\nClick \"Add New Additional Interest,\" select the certificate holder, and choose \"Additional Insured\" as the type.\nHow do I send a certificate to an additional interest/insured now? \nClick on additional interests, add the contacts on this page, then use the actions bard to the left of the holder to send a certificate, NOT the top right send certificate. \nWhat information do I need to include for additional insureds?\nName, address, relationship to the insured, and policy details.\nCan I add multiple additional insureds to one certificate?\nYes, under the \"Additional Interests\" tab, add multiple parties before issuing the COI.\n\nHow do I show endorsements or exclusions on the certificate?\nUse the \"Description of Operations\" box to add endorsements or exclusions.\n\nCustomizing the Certificate:\nCan I add custom language or special wording to the certificate?\nYes, enter custom wording in the \"Description of Operations\" section.\nHow do I include specific descriptions of operations or locations?\nEnter this under the \"Description of Operations\" section.\nHow do I attach additional documents to the certificate?\nUse the \"Attach Files\" option before sending the COI.\n\n\nSending & Saving the Certificate:\nHow do I email the certificate directly from the AMS?\nAfter generating the COI, click \"Email Certificate.\"\nSelect the recipient's email or manually enter it.\nCan I send the COI to multiple recipients at once?\nYes, enter multiple email addresses in the recipient field.\nHow do I preview the certificate before sending it?\nClick \"Preview\" before finalizing the COI.\nWill the certificate automatically save to the insured's record?\nYes, it is saved under Documents in the insured's profile.\nHow do I print the certificate if the client requests a hard copy?\nAfter generating the COI, click \"Print Certificate.\"`;\n\ndeclare class ImageCapture {\n constructor(track: MediaStreamTrack);\n grabFrame(): Promise<ImageBitmap>;\n}\n\nconst GEMINI_API_KEY = \"AIzaSyBiFyzjYVupLyk8BdmfWzBL1GbzX8OUdPc\";\n\nconst genAI = new GoogleGenerativeAI(GEMINI_API_KEY);\nconst geminiFlash = genAI.getGenerativeModel({ model: \"gemini-1.5-flash-8b\" });\n\nconst GuideAI = (props: GuideAIProps) => {\n const {\n apiKey = process.env.NEXT_PUBLIC_OPENAI_API_KEY || '',\n customPrompt = DEFAULT_PROMPT,\n shortcutKey = 'k',\n position = { bottom: '2rem', right: '2rem' },\n onError = console.error\n } = props;\n\n // State hooks\n const [status, setStatus] = getReactHooks().useState<RecordingStatus>('idle');\n const [response, setResponse] = getReactHooks().useState<string | null>(null);\n const [isClient, setIsClient] = getReactHooks().useState(false);\n const [componentPosition] = getReactHooks().useState(position);\n const [isHighlighting, setIsHighlighting] = getReactHooks().useState(false);\n const [hasInteracted, setHasInteracted] = getReactHooks().useState(false);\n\n const componentRef = getReactHooks().useRef<HTMLDivElement>(null);\n const openaiClientRef = getReactHooks().useRef<OpenAI | null>(null);\n const realtimeClientRef = getReactHooks().useRef<RealtimeClient | null>(null);\n const screenshotRef = getReactHooks().useRef<string | null>(null);\n const audioContextRef = getReactHooks().useRef<AudioContext | null>(null);\n const outputAudioBufferRef = getReactHooks().useRef<ArrayBuffer[]>([]);\n const audioChunksRef = getReactHooks().useRef<Blob[]>([]);\n const isPlayingAudioRef = getReactHooks().useRef(false);\n const screenshotAnalysisRef = getReactHooks().useRef<Promise<string> | null>(null);\n const mediaRecorderRef = getReactHooks().useRef<MediaRecorder | null>(null);\n\n getReactHooks().useEffect(() => {\n setIsClient(true);\n // Check if user has interacted before\n const hasInteractedBefore = localStorage.getItem('guideAIInteracted');\n if (!hasInteractedBefore) {\n setHasInteracted(false);\n }\n }, []);\n\n const highlightElement = async (selector: string) => {\n if (!isClient || isHighlighting) return false;\n console.log('Moving cursor to element:', selector);\n try {\n setIsHighlighting(true);\n const element = document.querySelector(selector);\n if (!element) {\n setIsHighlighting(false);\n return false;\n }\n \n const rect = element.getBoundingClientRect();\n const cursor = document.createElement('div');\n cursor.id = 'guide-ai-cursor';\n \n const blueCursorSvg = `\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill=\"#0066ff\" d=\"M7,2l12,11.2l-5.8,0.5l3.3,7.3l-2.2,1l-3.2-7.4L7,18.5V2\" />\n </svg>\n `;\n \n cursor.innerHTML = blueCursorSvg;\n cursor.style.cssText = `\n position: fixed;\n width: 64px;\n height: 64px;\n pointer-events: none;\n z-index: 1001;\n transition: all 0.5s ease-in-out;\n transform: translate(-50%, 0);\n filter: drop-shadow(0 0 4px rgba(0, 102, 255, 0.8));\n `;\n \n document.body.appendChild(cursor);\n \n // Start position (middle of screen)\n cursor.style.left = `${window.innerWidth / 2}px`;\n cursor.style.top = `${window.innerHeight / 2}px`;\n \n // Force a reflow\n cursor.offsetHeight;\n \n // Move to target\n cursor.style.left = `${rect.left + rect.width / 2}px`;\n cursor.style.top = `${rect.top + rect.height / 2 - 10}px`;\n \n setTimeout(() => {\n cursor.style.animation = 'cursor-jiggle 0.5s ease-in-out infinite';\n }, 500);\n \n // Add click functionality after 2 seconds\n setTimeout(() => {\n // Create a container for all click effects\n const clickEffectContainer = document.createElement('div');\n clickEffectContainer.style.cssText = `\n position: fixed;\n left: ${rect.left + rect.width / 2}px;\n top: ${rect.top + rect.height / 2}px;\n width: 60px;\n height: 60px;\n z-index: 1000;\n pointer-events: none;\n transform: translate(-50%, -50%);\n `;\n document.body.appendChild(clickEffectContainer);\n \n // Create multiple ripple effects for a more dramatic click\n for (let i = 0; i < 3; i++) {\n const clickRipple = document.createElement('div');\n clickRipple.style.cssText = `\n position: absolute;\n left: 50%;\n top: 50%;\n width: 40px;\n height: 40px;\n border: 2px solid rgba(0, 102, 255, ${0.7 - (i * 0.2)});\n border-radius: 50%;\n transform: translate(-50%, -50%) scale(0);\n opacity: 1;\n animation: click-ripple-animation 0.8s ease-out ${i * 0.15}s forwards;\n box-shadow: 0 0 8px rgba(0, 102, 255, 0.4);\n `;\n clickEffectContainer.appendChild(clickRipple);\n }\n \n // Inner dot for click point\n const clickDot = document.createElement('div');\n clickDot.style.cssText = `\n position: absolute;\n left: 50%;\n top: 50%;\n width: 12px;\n height: 12px;\n background: rgba(0, 102, 255, 0.9);\n border-radius: 50%;\n transform: translate(-50%, -50%) scale(0);\n animation: click-dot-animation 0.4s ease-out forwards;\n box-shadow: 0 0 5px rgba(0, 102, 255, 0.8);\n `;\n clickEffectContainer.appendChild(clickDot);\n \n // Briefly highlight the element\n const htmlElement = element as HTMLElement;\n const originalBoxShadow = htmlElement.style.boxShadow;\n const originalTransition = htmlElement.style.transition;\n const originalZIndex = htmlElement.style.zIndex;\n \n htmlElement.style.transition = 'all 0.3s ease-out';\n htmlElement.style.boxShadow = '0 0 0 2px rgba(0, 102, 255, 0.5), 0 0 10px rgba(0, 102, 255, 0.3)';\n htmlElement.style.zIndex = '999';\n \n // Perform the click action\n const clickEvent = new MouseEvent('click', {\n view: window,\n bubbles: true,\n cancelable: true,\n });\n element.dispatchEvent(clickEvent);\n \n // Remove highlight after animation\n setTimeout(() => {\n htmlElement.style.boxShadow = originalBoxShadow;\n htmlElement.style.transition = originalTransition;\n htmlElement.style.zIndex = originalZIndex;\n }, 400);\n \n // Remove the click effect after animation\n setTimeout(() => {\n clickEffectContainer.remove();\n }, 1000);\n }, 2000);\n \n setTimeout(() => {\n cursor.remove();\n setIsHighlighting(false);\n }, 8000);\n \n return true;\n } catch (error) {\n console.error('Error moving cursor:', error);\n setIsHighlighting(false);\n return false;\n }\n };\n\n getReactHooks().useEffect(() => {\n if (!isClient) return;\n\n try {\n openaiClientRef.current = new OpenAI({\n apiKey,\n dangerouslyAllowBrowser: true,\n });\n \n realtimeClientRef.current = new RealtimeClient({\n apiKey,\n dangerouslyAllowAPIKeyInBrowser: true,\n });\n\n if (realtimeClientRef.current) {\n realtimeClientRef.current.updateSession({ instructions: customPrompt });\n realtimeClientRef.current.updateSession({ voice: \"sage\" });\n // realtimeClientRef.current.updateSession({ tool_choice: \"required\" });\n\n realtimeClientRef.current.addTool(\n {\n name: \"highlight\",\n description: \"Highlight a specific element on the page to guide the user's attention\",\n parameters: {\n type: \"object\",\n properties: {\n selector: {\n type: \"string\",\n description: \"CSS selector for the element to highlight (e.g., '#search-bar', '#add-insured-button')\"\n }\n },\n required: [\"selector\"]\n }\n },\n async ({ selector }: { selector: string }) => {\n console.log('Tool call:', selector);\n return await highlightElement(selector);\n }\n );\n \n realtimeClientRef.current.connect();\n realtimeClientRef.current.on(\"error\", (error: any) => {\n console.error(\"RealtimeClient error:\", error);\n onError(error);\n });\n\n realtimeClientRef.current.on('conversation.item.completed', ({ item }: { item: any }) => {\n if (item?.type === \"message\" && item?.role === \"assistant\") {\n const fullResponse = item.content\n .map((content: { transcript: string }) => content.transcript)\n .join('\\n');\n console.log('Assistant response:', fullResponse);\n }\n });\n\n realtimeClientRef.current.on(\"conversation.updated\", (event: any) => {\n const { item, delta } = event;\n\n if (item?.type === \"message\" && item?.role === \"assistant\") {\n setStatus('playing');\n }\n\n\n if (delta?.audio) {\n const audioBuffer = delta.audio.buffer;\n outputAudioBufferRef.current.push(audioBuffer);\n \n if (!isPlayingAudioRef.current) {\n playAudioBuffer();\n }\n }\n \n if (delta?.content) {\n setResponse(prev => (prev || '') + (delta.content || ''));\n }\n });\n }\n } catch (error) {\n console.error(\"Error initializing clients:\", error);\n onError(error as Error);\n }\n\n return () => {\n if (realtimeClientRef.current) {\n realtimeClientRef.current.disconnect();\n }\n };\n }, [apiKey, customPrompt, isClient, onError]);\n\n const playAudioBuffer = async () => {\n if (!isClient || isPlayingAudioRef.current) return;\n \n isPlayingAudioRef.current = true;\n setStatus('playing');\n \n try {\n if (!audioContextRef.current) {\n try {\n audioContextRef.current = new AudioContext({\n sampleRate: 24000\n });\n } catch (error) {\n console.log(\"Fallback to default AudioContext\", error);\n audioContextRef.current = new AudioContext();\n }\n }\n \n if (audioContextRef.current.state === 'suspended') {\n console.log(\"Resuming suspended AudioContext\");\n await audioContextRef.current.resume();\n }\n \n let hasEndedProcessing = false;\n \n const processBuffer = async () => {\n if (outputAudioBufferRef.current.length === 0) {\n if (!hasEndedProcessing) {\n hasEndedProcessing = true;\n setTimeout(() => {\n if (outputAudioBufferRef.current.length === 0) {\n isPlayingAudioRef.current = false;\n setStatus('idle');\n } else {\n hasEndedProcessing = false;\n processBuffer();\n }\n }, 300);\n }\n return;\n }\n \n const chunk = outputAudioBufferRef.current.shift()!;\n \n try {\n const int16View = new Int16Array(chunk);\n \n const floatArray = new Float32Array(int16View.length);\n for (let i = 0; i < int16View.length; i++) {\n floatArray[i] = int16View[i] / 32768.0;\n }\n \n const audioBuffer = audioContextRef.current!.createBuffer(\n 1,\n floatArray.length,\n 24000\n );\n \n audioBuffer.getChannelData(0).set(floatArray);\n \n const source = audioContextRef.current!.createBufferSource();\n source.buffer = audioBuffer;\n \n const gainNode = audioContextRef.current!.createGain();\n gainNode.gain.value = 0.9;\n \n const lowPassFilter = audioContextRef.current!.createBiquadFilter();\n lowPassFilter.type = 'lowpass';\n lowPassFilter.frequency.value = 8000;\n lowPassFilter.Q.value = 0.7;\n \n source.connect(lowPassFilter);\n lowPassFilter.connect(gainNode);\n gainNode.connect(audioContextRef.current!.destination);\n \n source.onended = () => {\n setTimeout(processBuffer, 10);\n };\n \n source.start();\n } catch (error) {\n setTimeout(processBuffer, 10);\n }\n };\n \n processBuffer();\n } catch (error) {\n isPlayingAudioRef.current = false;\n setStatus('idle');\n onError(error as Error, 'Playing audio buffer');\n }\n };\n\n getReactHooks().useEffect(() => {\n if (!isClient) return;\n \n const handleKeyDown = (e: KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === shortcutKey.toLowerCase()) {\n e.preventDefault();\n if (status !== 'playing' && status !== 'processing') {\n handleToggleRecording();\n }\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n \n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [isClient, status, shortcutKey]);\n\n const handleToggleRecording = async () => {\n if (!isClient) return;\n \n // Mark as interacted on first click\n if (!hasInteracted) {\n setHasInteracted(true);\n localStorage.setItem('guideAIInteracted', 'true');\n }\n \n if (status === 'idle') {\n await startRecording();\n } else if (status === 'recording') {\n await stopRecording();\n }\n };\n\n const startRecording = async () => {\n if (!isClient || !realtimeClientRef.current) return;\n \n try {\n setStatus('recording');\n setResponse('');\n \n try {\n const canvas = await html2canvas(document.documentElement, {\n useCORS: true,\n allowTaint: true,\n width: window.innerWidth,\n height: window.innerHeight,\n windowWidth: window.innerWidth,\n windowHeight: window.innerHeight,\n scrollX: 0,\n scrollY: 0,\n x: 0,\n y: 0,\n scale: window.devicePixelRatio || 1,\n });\n \n const dataUrl = canvas.toDataURL('image/png');\n screenshotRef.current = dataUrl;\n \n } catch (screenshotError) {\n console.error('Error capturing screenshot:', screenshotError);\n screenshotRef.current = '/insured.png';\n }\n \n screenshotAnalysisRef.current = analyzeScreenshot();\n } catch (error) {\n setStatus('idle');\n onError(error as Error, 'Screenshot setup failed');\n return;\n }\n \n try {\n const audioStream = await navigator.mediaDevices.getUserMedia({ \n audio: {\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n channelCount: 1,\n sampleRate: 44100,\n sampleSize: 16,\n }\n });\n \n if (!audioContextRef.current) {\n try {\n audioContextRef.current = new AudioContext({\n sampleRate: 16000,\n });\n } catch (audioCtxError) {\n audioContextRef.current = new AudioContext();\n }\n }\n \n audioChunksRef.current = [];\n \n const mimeTypes = [\n 'audio/webm;codecs=opus',\n 'audio/mp3',\n 'audio/wav',\n 'audio/ogg'\n ];\n \n const supportedType = mimeTypes.find(type => MediaRecorder.isTypeSupported(type)) || 'audio/webm';\n \n mediaRecorderRef.current = new MediaRecorder(audioStream, { \n mimeType: supportedType,\n audioBitsPerSecond: 128000\n });\n \n mediaRecorderRef.current.ondataavailable = (e) => {\n if (e.data.size > 0) {\n audioChunksRef.current.push(e.data);\n }\n };\n \n mediaRecorderRef.current.onstart = () => {\n outputAudioBufferRef.current = [];\n };\n \n mediaRecorderRef.current.onstop = async () => {\n await processScreenshot();\n \n audioStream.getTracks().forEach(track => track.stop());\n };\n \n mediaRecorderRef.current.start(1000);\n } catch (error) {\n setStatus('idle');\n onError(error as Error, 'Microphone access denied');\n }\n };\n\n const analyzeScreenshot = async (): Promise<string> => {\n if (!screenshotRef.current) return \"No screenshot available\";\n \n try {\n const startTime = performance.now();\n const imagePrompt = \"Analyze this screenshot and tell me what it contains. Be descriptive in what buttons and information is visible. \";\n const response = await fetch(screenshotRef.current);\n const blob = await response.blob();\n \n const reader = new FileReader();\n const base64ImagePromise = new Promise<string>((resolve) => {\n reader.onloadend = () => resolve(reader.result as string);\n reader.readAsDataURL(blob);\n });\n \n const base64Image = await base64ImagePromise;\n const base64Data = base64Image.split(',')[1];\n \n const imagePart = {\n inlineData: {\n data: base64Data,\n mimeType: \"image/png\"\n }\n };\n \n const geminiResponse = await geminiFlash.generateContent([\n { text: imagePrompt },\n imagePart\n ]);\n \n const screenDescription = geminiResponse.response.text();\n const endTime = performance.now();\n const duration = (endTime - startTime) / 1000;\n console.log(`Screenshot analysis took ${duration} seconds`);\n \n return screenDescription || \"Unable to analyze screenshot\";\n } catch (error) {\n return \"Error analyzing screenshot\";\n }\n };\n \n const processScreenshot = async () => {\n if (!isClient || !screenshotRef.current || !openaiClientRef.current) return;\n \n try {\n const startTime = performance.now();\n \n let transcription = \"\";\n \n const transcriptionPromise = (async () => {\n if (audioChunksRef.current.length > 0) {\n try {\n const mimeType = mediaRecorderRef.current?.mimeType || 'audio/webm';\n let fileExtension = 'webm';\n if (mimeType.includes('mp3') || mimeType.includes('mpeg')) {\n fileExtension = 'mp3';\n } else if (mimeType.includes('wav')) {\n fileExtension = 'wav';\n } else if (mimeType.includes('ogg')) {\n fileExtension = 'ogg';\n }\n const audioBlob = new Blob(audioChunksRef.current, { type: mimeType });\n \n const audioFile = new File(\n [audioBlob], \n `recording.${fileExtension}`, \n { type: mimeType }\n );\n \n const transcriptionResponse = await openaiClientRef.current!.audio.transcriptions.create({\n file: audioFile,\n model: 'whisper-1',\n language: 'en',\n });\n \n const text = transcriptionResponse.text;\n \n return text;\n } catch (transcriptionError) {\n console.log(transcriptionError);\n return `User question (unable to transcribe audio)`;\n }\n }\n return \"No audio recorded\";\n })();\n \n const [transcriptionResult] = await Promise.all([\n transcriptionPromise,\n screenshotAnalysisRef.current || Promise.resolve(\"No screenshot analysis available\")\n ]);\n console.log('Transcription result:', transcriptionResult);\n transcription = transcriptionResult;\n \n const endTime = performance.now();\n const duration = (endTime - startTime) / 1000;\n console.log(`Full processing took ${duration} seconds`);\n \n if (realtimeClientRef.current) {\n if (!realtimeClientRef.current.isConnected()) {\n try {\n isPlayingAudioRef.current = false;\n outputAudioBufferRef.current = [];\n \n await realtimeClientRef.current.connect();\n } catch (reconnectError) {\n onError(new Error('RealtimeAPI is not connected'), 'Processing screenshot');\n setStatus('idle');\n return;\n }\n }\n realtimeClientRef.current.sendUserMessageContent([\n {\n type: \"input_text\",\n text: transcription\n },\n ]);\n } else {\n onError(new Error('RealtimeAPI is not initialized'), 'Processing screenshot');\n setStatus('idle');\n }\n } catch (error) {\n onError(error as Error, 'Processing screenshot');\n setStatus('idle');\n }\n };\n\n const stopRecording = () => {\n if (!isClient) return;\n \n if (mediaRecorderRef.current && mediaRecorderRef.current.state !== 'inactive') {\n mediaRecorderRef.current.stop();\n setStatus('processing');\n }\n };\n\n if (!isClient) {\n return null;\n }\n\n return (\n <>\n <div\n ref={componentRef}\n style={{\n position: 'fixed',\n ...componentPosition,\n zIndex: 1000,\n }}\n >\n <div className=\"sarge-main-ui\">\n {!hasInteracted && (\n <div className=\"sarge-welcome-bubble\">\n Stuck? Click here and ask me a question\n </div>\n )}\n <div \n className={`sarge-icon-wrapper ${status}`}\n onClick={handleToggleRecording}\n title={status === 'idle' ? 'Click to start asking about this page' : \n status === 'recording' ? 'Click to stop recording' : \n status === 'processing' ? 'Processing your question...' : \n 'Listening to response...'}\n >\n {status === 'idle' && <i className=\"sarge-icon microphone\" />}\n {status === 'recording' && <i className=\"sarge-icon recording\" />}\n {status === 'processing' && <i className=\"sarge-icon processing\" />}\n {status === 'playing' && <i className=\"sarge-icon playing\" />}\n </div>\n {status === 'playing' && response && (\n <div className=\"sarge-response\">{response}</div>\n )}\n </div>\n </div>\n \n <style>{`\n .sarge-main-ui {\n position: relative;\n }\n \n .sarge-welcome-bubble {\n position: absolute;\n top: -50px;\n left: 50%;\n transform: translateX(-50%);\n background: #0066ff;\n color: white;\n padding: 8px 16px;\n border-radius: 20px;\n font-size: 14px;\n white-space: nowrap;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);\n animation: bubble-pulse 2s infinite;\n }\n\n .sarge-welcome-bubble::after {\n content: '';\n position: absolute;\n bottom: -8px;\n left: 50%;\n transform: translateX(-50%);\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n border-top: 8px solid #0066ff;\n }\n\n @keyframes bubble-pulse {\n 0% { transform: translateX(-50%) scale(1); }\n 50% { transform: translateX(-50%) scale(1.05); }\n 100% { transform: translateX(-50%) scale(1); }\n }\n \n .sarge-icon-wrapper {\n width: 60px;\n height: 60px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: rgba(255, 255, 255, 0.9);\n border-radius: 50%;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n cursor: pointer;\n transition: all 0.2s ease;\n }\n \n .sarge-icon-wrapper:hover {\n transform: scale(1.1);\n }\n \n .sarge-icon-wrapper.recording {\n background-color: rgba(255, 255, 255, 0.9);\n box-shadow: 0 0 0 2px rgba(255, 0, 0, 0.5), 0 2px 8px rgba(0, 0, 0, 0.3);\n animation: sarge-pulse 1s infinite alternate;\n }\n \n .sarge-icon-wrapper.processing {\n background-color: rgba(255, 255, 255, 0.9);\n box-shadow: 0 0 0 2px rgba(255, 165, 0, 0.5), 0 2px 8px rgba(0, 0, 0, 0.3);\n animation: sarge-spin 1s linear infinite;\n }\n \n .sarge-icon-wrapper.playing {\n background-color: rgba(255, 255, 255, 0.9);\n box-shadow: 0 0 0 2px rgba(0, 128, 0, 0.5), 0 2px 8px rgba(0, 0, 0, 0.3);\n }\n \n @keyframes sarge-pulse {\n 0% { transform: scale(1); }\n 100% { transform: scale(1.05); }\n }\n \n @keyframes sarge-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n \n @keyframes click-ripple-animation {\n 0% { transform: translate(-50%, -50%) scale(0); opacity: 1; }\n 50% { transform: translate(-50%, -50%) scale(1.2); opacity: 0.6; }\n 100% { transform: translate(-50%, -50%) scale(2.5); opacity: 0; }\n }\n \n @keyframes click-dot-animation {\n 0% { transform: translate(-50%, -50%) scale(0); opacity: 1; }\n 60% { transform: translate(-50%, -50%) scale(1); opacity: 1; }\n 100% { transform: translate(-50%, -50%) scale(1); opacity: 0; }\n }\n \n @keyframes cursor-jiggle {\n 0% { transform: translate(-50%, 0) scale(1); }\n 25% { transform: translate(-50%, -5px) scale(1.1); }\n 50% { transform: translate(-50%, 0) scale(1); }\n 75% { transform: translate(-50%, 5px) scale(1.1); }\n 100% { transform: translate(-50%, 0) scale(1); filter: drop-shadow(0 0 8px #0066ff); }\n }\n \n .sarge-icon {\n width: 40px;\n height: 40px;\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center;\n }\n \n .sarge-icon.microphone {\n background-image: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 352 512\"><path fill=\"%230000FF\" d=\"M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z\"/></svg>');\n }\n \n .sarge-icon.recording {\n background-image: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><circle cx=\"256\" cy=\"256\" r=\"128\" fill=\"%23FF0000\"/><circle cx=\"256\" cy=\"256\" r=\"200\" stroke=\"%23FF0000\" stroke-width=\"20\" fill=\"none\"/></svg>');\n }\n \n .sarge-icon.processing {\n background-image: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"%23FFA500\" d=\"M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z\"/></svg>');\n }\n \n .sarge-icon.playing {\n background-image: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"%23008000\" d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\"/></svg>');\n }\n \n .sarge-response {\n position: absolute;\n top: -70px;\n left: 50%;\n transform: translateX(-50%);\n background: white;\n padding: 12px;\n border-radius: 8px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n max-width: 250px;\n text-align: center;\n min-width: 180px;\n }\n `}</style>\n </>\n );\n};\n\nexport default GuideAI; ","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.maybe_map = exports.combine = exports.is_buffer = exports.is_regexp = exports.compact = exports.encode = exports.decode = exports.assign_single_source = exports.merge = void 0;\nconst formats_1 = require(\"./formats.js\");\nconst has = Object.prototype.hasOwnProperty;\nconst is_array = Array.isArray;\nconst hex_table = (() => {\n const array = [];\n for (let i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n return array;\n})();\nfunction compact_queue(queue) {\n while (queue.length > 1) {\n const item = queue.pop();\n if (!item)\n continue;\n const obj = item.obj[item.prop];\n if (is_array(obj)) {\n const compacted = [];\n for (let j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n // @ts-ignore\n item.obj[item.prop] = compacted;\n }\n }\n}\nfunction array_to_object(source, options) {\n const obj = options && options.plainObjects ? Object.create(null) : {};\n for (let i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n return obj;\n}\nfunction merge(target, source, options = {}) {\n if (!source) {\n return target;\n }\n if (typeof source !== 'object') {\n if (is_array(target)) {\n target.push(source);\n }\n else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) ||\n !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n }\n else {\n return [target, source];\n }\n return target;\n }\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n let mergeTarget = target;\n if (is_array(target) && !is_array(source)) {\n // @ts-ignore\n mergeTarget = array_to_object(target, options);\n }\n if (is_array(target) && is_array(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n const targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n }\n else {\n target.push(item);\n }\n }\n else {\n target[i] = item;\n }\n });\n return target;\n }\n return Object.keys(source).reduce(function (acc, key) {\n const value = source[key];\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n }\n else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n}\nexports.merge = merge;\nfunction assign_single_source(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n}\nexports.assign_single_source = assign_single_source;\nfunction decode(str, _, charset) {\n const strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n }\n catch (e) {\n return strWithoutPlus;\n }\n}\nexports.decode = decode;\nconst limit = 1024;\nconst encode = (str, _defaultEncoder, charset, _kind, format) => {\n // This code was originally written by Brian White for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n let string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n }\n else if (typeof str !== 'string') {\n string = String(str);\n }\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n let out = '';\n for (let j = 0; j < string.length; j += limit) {\n const segment = string.length >= limit ? string.slice(j, j + limit) : string;\n const arr = [];\n for (let i = 0; i < segment.length; ++i) {\n let c = segment.charCodeAt(i);\n if (c === 0x2d || // -\n c === 0x2e || // .\n c === 0x5f || // _\n c === 0x7e || // ~\n (c >= 0x30 && c <= 0x39) || // 0-9\n (c >= 0x41 && c <= 0x5a) || // a-z\n (c >= 0x61 && c <= 0x7a) || // A-Z\n (format === formats_1.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n arr[arr.length] = segment.charAt(i);\n continue;\n }\n if (c < 0x80) {\n arr[arr.length] = hex_table[c];\n continue;\n }\n if (c < 0x800) {\n arr[arr.length] = hex_table[0xc0 | (c >> 6)] + hex_table[0x80 | (c & 0x3f)];\n continue;\n }\n if (c < 0xd800 || c >= 0xe000) {\n arr[arr.length] =\n hex_table[0xe0 | (c >> 12)] + hex_table[0x80 | ((c >> 6) & 0x3f)] + hex_table[0x80 | (c & 0x3f)];\n continue;\n }\n i += 1;\n c = 0x10000 + (((c & 0x3ff) << 10) | (segment.charCodeAt(i) & 0x3ff));\n arr[arr.length] =\n hex_table[0xf0 | (c >> 18)] +\n hex_table[0x80 | ((c >> 12) & 0x3f)] +\n hex_table[0x80 | ((c >> 6) & 0x3f)] +\n hex_table[0x80 | (c & 0x3f)];\n }\n out += arr.join('');\n }\n return out;\n};\nexports.encode = encode;\nfunction compact(value) {\n const queue = [{ obj: { o: value }, prop: 'o' }];\n const refs = [];\n for (let i = 0; i < queue.length; ++i) {\n const item = queue[i];\n // @ts-ignore\n const obj = item.obj[item.prop];\n const keys = Object.keys(obj);\n for (let j = 0; j < keys.length; ++j) {\n const key = keys[j];\n const val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n compact_queue(queue);\n return value;\n}\nexports.compact = compact;\nfunction is_regexp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\nexports.is_regexp = is_regexp;\nfunction is_buffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n}\nexports.is_buffer = is_buffer;\nfunction combine(a, b) {\n return [].concat(a, b);\n}\nexports.combine = combine;\nfunction maybe_map(val, fn) {\n if (is_array(val)) {\n const mapped = [];\n for (let i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n}\nexports.maybe_map = maybe_map;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbstractPage_client;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isObj = exports.toBase64 = exports.getHeader = exports.getRequiredHeader = exports.isHeadersProtocol = exports.isRunningInBrowser = exports.debug = exports.hasOwn = exports.isEmptyObj = exports.maybeCoerceBoolean = exports.maybeCoerceFloat = exports.maybeCoerceInteger = exports.coerceBoolean = exports.coerceFloat = exports.coerceInteger = exports.readEnv = exports.ensurePresent = exports.castToError = exports.sleep = exports.safeJSON = exports.isRequestOptions = exports.createResponseHeaders = exports.PagePromise = exports.AbstractPage = exports.APIClient = exports.APIPromise = exports.createForm = exports.multipartFormRequestOptions = exports.maybeMultipartFormRequestOptions = void 0;\nconst version_1 = require(\"./version.js\");\nconst streaming_1 = require(\"./streaming.js\");\nconst error_1 = require(\"./error.js\");\nconst index_1 = require(\"./_shims/index.js\");\nconst uploads_1 = require(\"./uploads.js\");\nvar uploads_2 = require(\"./uploads.js\");\nObject.defineProperty(exports, \"maybeMultipartFormRequestOptions\", { enumerable: true, get: function () { return uploads_2.maybeMultipartFormRequestOptions; } });\nObject.defineProperty(exports, \"multipartFormRequestOptions\", { enumerable: true, get: function () { return uploads_2.multipartFormRequestOptions; } });\nObject.defineProperty(exports, \"createForm\", { enumerable: true, get: function () { return uploads_2.createForm; } });\nasync function defaultParseResponse(props) {\n const { response } = props;\n if (props.options.stream) {\n debug('response', response.status, response.url, response.headers, response.body);\n // Note: there is an invariant here that isn't represented in the type system\n // that if you set `stream: true` the response type must also be `Stream<T>`\n if (props.options.__streamClass) {\n return props.options.__streamClass.fromSSEResponse(response, props.controller);\n }\n return streaming_1.Stream.fromSSEResponse(response, props.controller);\n }\n // fetch refuses to read the body when the status code is 204.\n if (response.status === 204) {\n return null;\n }\n if (props.options.__binaryResponse) {\n return response;\n }\n const contentType = response.headers.get('content-type');\n const mediaType = contentType?.split(';')[0]?.trim();\n const isJSON = mediaType?.includes('application/json') || mediaType?.endsWith('+json');\n if (isJSON) {\n const json = await response.json();\n debug('response', response.status, response.url, response.headers, json);\n return _addRequestID(json, response);\n }\n const text = await response.text();\n debug('response', response.status, response.url, response.headers, text);\n // TODO handle blob, arraybuffer, other content types, etc.\n return text;\n}\nfunction _addRequestID(value, response) {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return value;\n }\n return Object.defineProperty(value, '_request_id', {\n value: response.headers.get('x-request-id'),\n enumerable: false,\n });\n}\n/**\n * A subclass of `Promise` providing additional helper methods\n * for interacting with the SDK.\n */\nclass APIPromise extends Promise {\n constructor(responsePromise, parseResponse = defaultParseResponse) {\n super((resolve) => {\n // this is maybe a bit weird but this has to be a no-op to not implicitly\n // parse the response body; instead .then, .catch, .finally are overridden\n // to parse the response\n resolve(null);\n });\n this.responsePromise = responsePromise;\n this.parseResponse = parseResponse;\n }\n _thenUnwrap(transform) {\n return new APIPromise(this.responsePromise, async (props) => _addRequestID(transform(await this.parseResponse(props), props), props.response));\n }\n /**\n * Gets the raw `Response` instance instead of parsing the response\n * data.\n *\n * If you want to parse the response body but still get the `Response`\n * instance, you can use {@link withResponse()}.\n *\n * 👋 Getting the wrong TypeScript type for `Response`?\n * Try setting `\"moduleResolution\": \"NodeNext\"` if you can,\n * or add one of these imports before your first `import … from 'openai'`:\n * - `import 'openai/shims/node'` (if you're running on Node)\n * - `import 'openai/shims/web'` (otherwise)\n */\n asResponse() {\n return this.responsePromise.then((p) => p.response);\n }\n /**\n * Gets the parsed response data, the raw `Response` instance and the ID of the request,\n * returned via the X-Request-ID header which is useful for debugging requests and reporting\n * issues to OpenAI.\n *\n * If you just want to get the raw `Response` instance without parsing it,\n * you can use {@link asResponse()}.\n *\n *\n * 👋 Getting the wrong TypeScript type for `Response`?\n * Try setting `\"moduleResolution\": \"NodeNext\"` if you can,\n * or add one of these imports before your first `import … from 'openai'`:\n * - `import 'openai/shims/node'` (if you're running on Node)\n * - `import 'openai/shims/web'` (otherwise)\n */\n async withResponse() {\n const [data, response] = await Promise.all([this.parse(), this.asResponse()]);\n return { data, response, request_id: response.headers.get('x-request-id') };\n }\n parse() {\n if (!this.parsedPromise) {\n this.parsedPromise = this.responsePromise.then(this.parseResponse);\n }\n return this.parsedPromise;\n }\n then(onfulfilled, onrejected) {\n return this.parse().then(onfulfilled, onrejected);\n }\n catch(onrejected) {\n return this.parse().catch(onrejected);\n }\n finally(onfinally) {\n return this.parse().finally(onfinally);\n }\n}\nexports.APIPromise = APIPromise;\nclass APIClient {\n constructor({ baseURL, maxRetries = 2, timeout = 600000, // 10 minutes\n httpAgent, fetch: overriddenFetch, }) {\n this.baseURL = baseURL;\n this.maxRetries = validatePositiveInteger('maxRetries', maxRetries);\n this.timeout = validatePositiveInteger('timeout', timeout);\n this.httpAgent = httpAgent;\n this.fetch = overriddenFetch ?? index_1.fetch;\n }\n authHeaders(opts) {\n return {};\n }\n /**\n * Override this to add your own default headers, for example:\n *\n * {\n * ...super.defaultHeaders(),\n * Authorization: 'Bearer 123',\n * }\n */\n defaultHeaders(opts) {\n return {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'User-Agent': this.getUserAgent(),\n ...getPlatformHeaders(),\n ...this.authHeaders(opts),\n };\n }\n /**\n * Override this to add your own headers validation:\n */\n validateHeaders(headers, customHeaders) { }\n defaultIdempotencyKey() {\n return `stainless-node-retry-${uuid4()}`;\n }\n get(path, opts) {\n return this.methodRequest('get', path, opts);\n }\n post(path, opts) {\n return this.methodRequest('post', path, opts);\n }\n patch(path, opts) {\n return this.methodRequest('patch', path, opts);\n }\n put(path, opts) {\n return this.methodRequest('put', path, opts);\n }\n delete(path, opts) {\n return this.methodRequest('delete', path, opts);\n }\n methodRequest(method, path, opts) {\n return this.request(Promise.resolve(opts).then(async (opts) => {\n const body = opts && (0, uploads_1.isBlobLike)(opts?.body) ? new DataView(await opts.body.arrayBuffer())\n : opts?.body instanceof DataView ? opts.body\n : opts?.body instanceof ArrayBuffer ? new DataView(opts.body)\n : opts && ArrayBuffer.isView(opts?.body) ? new DataView(opts.body.buffer)\n : opts?.body;\n return { method, path, ...opts, body };\n }));\n }\n getAPIList(path, Page, opts) {\n return this.requestAPIList(Page, { method: 'get', path, ...opts });\n }\n calculateContentLength(body) {\n if (typeof body === 'string') {\n if (typeof Buffer !== 'undefined') {\n return Buffer.byteLength(body, 'utf8').toString();\n }\n if (typeof TextEncoder !== 'undefined') {\n const encoder = new TextEncoder();\n const encoded = encoder.encode(body);\n return encoded.length.toString();\n }\n }\n else if (ArrayBuffer.isView(body)) {\n return body.byteLength.toString();\n }\n return null;\n }\n buildRequest(options, { retryCount = 0 } = {}) {\n options = { ...options };\n const { method, path, query, headers: headers = {} } = options;\n const body = ArrayBuffer.isView(options.body) || (options.__binaryRequest && typeof options.body === 'string') ?\n options.body\n : (0, uploads_1.isMultipartBody)(options.body) ? options.body.body\n : options.body ? JSON.stringify(options.body, null, 2)\n : null;\n const contentLength = this.calculateContentLength(body);\n const url = this.buildURL(path, query);\n if ('timeout' in options)\n validatePositiveInteger('timeout', options.timeout);\n options.timeout = options.timeout ?? this.timeout;\n const httpAgent = options.httpAgent ?? this.httpAgent ?? (0, index_1.getDefaultAgent)(url);\n const minAgentTimeout = options.timeout + 1000;\n if (typeof httpAgent?.options?.timeout === 'number' &&\n minAgentTimeout > (httpAgent.options.timeout ?? 0)) {\n // Allow any given request to bump our agent active socket timeout.\n // This may seem strange, but leaking active sockets should be rare and not particularly problematic,\n // and without mutating agent we would need to create more of them.\n // This tradeoff optimizes for performance.\n httpAgent.options.timeout = minAgentTimeout;\n }\n if (this.idempotencyHeader && method !== 'get') {\n if (!options.idempotencyKey)\n options.idempotencyKey = this.defaultIdempotencyKey();\n headers[this.idempotencyHeader] = options.idempotencyKey;\n }\n const reqHeaders = this.buildHeaders({ options, headers, contentLength, retryCount });\n const req = {\n method,\n ...(body && { body: body }),\n headers: reqHeaders,\n ...(httpAgent && { agent: httpAgent }),\n // @ts-ignore node-fetch uses a custom AbortSignal type that is\n // not compatible with standard web types\n signal: options.signal ?? null,\n };\n return { req, url, timeout: options.timeout };\n }\n buildHeaders({ options, headers, contentLength, retryCount, }) {\n const reqHeaders = {};\n if (contentLength) {\n reqHeaders['content-length'] = contentLength;\n }\n const defaultHeaders = this.defaultHeaders(options);\n applyHeadersMut(reqHeaders, defaultHeaders);\n applyHeadersMut(reqHeaders, headers);\n // let builtin fetch set the Content-Type for multipart bodies\n if ((0, uploads_1.isMultipartBody)(options.body) && index_1.kind !== 'node') {\n delete reqHeaders['content-type'];\n }\n // Don't set theses headers if they were already set or removed through default headers or by the caller.\n // We check `defaultHeaders` and `headers`, which can contain nulls, instead of `reqHeaders` to account\n // for the removal case.\n if ((0, exports.getHeader)(defaultHeaders, 'x-stainless-retry-count') === undefined &&\n (0, exports.getHeader)(headers, 'x-stainless-retry-count') === undefined) {\n reqHeaders['x-stainless-retry-count'] = String(retryCount);\n }\n if ((0, exports.getHeader)(defaultHeaders, 'x-stainless-timeout') === undefined &&\n (0, exports.getHeader)(headers, 'x-stainless-timeout') === undefined &&\n options.timeout) {\n reqHeaders['x-stainless-timeout'] = String(options.timeout);\n }\n this.validateHeaders(reqHeaders, headers);\n return reqHeaders;\n }\n /**\n * Used as a callback for mutating the given `FinalRequestOptions` object.\n */\n async prepareOptions(options) { }\n /**\n * Used as a callback for mutating the given `RequestInit` object.\n *\n * This is useful for cases where you want to add certain headers based off of\n * the request properties, e.g. `method` or `url`.\n */\n async prepareRequest(request, { url, options }) { }\n parseHeaders(headers) {\n return (!headers ? {}\n : Symbol.iterator in headers ?\n Object.fromEntries(Array.from(headers).map((header) => [...header]))\n : { ...headers });\n }\n makeStatusError(status, error, message, headers) {\n return error_1.APIError.generate(status, error, message, headers);\n }\n request(options, remainingRetries = null) {\n return new APIPromise(this.makeRequest(options, remainingRetries));\n }\n async makeRequest(optionsInput, retriesRemaining) {\n const options = await optionsInput;\n const maxRetries = options.maxRetries ?? this.maxRetries;\n if (retriesRemaining == null) {\n retriesRemaining = maxRetries;\n }\n await this.prepareOptions(options);\n const { req, url, timeout } = this.buildRequest(options, { retryCount: maxRetries - retriesRemaining });\n await this.prepareRequest(req, { url, options });\n debug('request', url, options, req.headers);\n if (options.signal?.aborted) {\n throw new error_1.APIUserAbortError();\n }\n const controller = new AbortController();\n const response = await this.fetchWithTimeout(url, req, timeout, controller).catch(exports.castToError);\n if (response instanceof Error) {\n if (options.signal?.aborted) {\n throw new error_1.APIUserAbortError();\n }\n if (retriesRemaining) {\n return this.retryRequest(options, retriesRemaining);\n }\n if (response.name === 'AbortError') {\n throw new error_1.APIConnectionTimeoutError();\n }\n throw new error_1.APIConnectionError({ cause: response });\n }\n const responseHeaders = (0, exports.createResponseHeaders)(response.headers);\n if (!response.ok) {\n if (retriesRemaining && this.shouldRetry(response)) {\n const retryMessage = `retrying, ${retriesRemaining} attempts remaining`;\n debug(`response (error; ${retryMessage})`, response.status, url, responseHeaders);\n return this.retryRequest(options, retriesRemaining, responseHeaders);\n }\n const errText = await response.text().catch((e) => (0, exports.castToError)(e).message);\n const errJSON = (0, exports.safeJSON)(errText);\n const errMessage = errJSON ? undefined : errText;\n const retryMessage = retriesRemaining ? `(error; no more retries left)` : `(error; not retryable)`;\n debug(`response (error; ${retryMessage})`, response.status, url, responseHeaders, errMessage);\n const err = this.makeStatusError(response.status, errJSON, errMessage, responseHeaders);\n throw err;\n }\n return { response, options, controller };\n }\n requestAPIList(Page, options) {\n const request = this.makeRequest(options, null);\n return new PagePromise(this, request, Page);\n }\n buildURL(path, query) {\n const url = isAbsoluteURL(path) ?\n new URL(path)\n : new URL(this.baseURL + (this.baseURL.endsWith('/') && path.startsWith('/') ? path.slice(1) : path));\n const defaultQuery = this.defaultQuery();\n if (!isEmptyObj(defaultQuery)) {\n query = { ...defaultQuery, ...query };\n }\n if (typeof query === 'object' && query && !Array.isArray(query)) {\n url.search = this.stringifyQuery(query);\n }\n return url.toString();\n }\n stringifyQuery(query) {\n return Object.entries(query)\n .filter(([_, value]) => typeof value !== 'undefined')\n .map(([key, value]) => {\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n }\n if (value === null) {\n return `${encodeURIComponent(key)}=`;\n }\n throw new error_1.OpenAIError(`Cannot stringify type ${typeof value}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`);\n })\n .join('&');\n }\n async fetchWithTimeout(url, init, ms, controller) {\n const { signal, ...options } = init || {};\n if (signal)\n signal.addEventListener('abort', () => controller.abort());\n const timeout = setTimeout(() => controller.abort(), ms);\n const fetchOptions = {\n signal: controller.signal,\n ...options,\n };\n if (fetchOptions.method) {\n // Custom methods like 'patch' need to be uppercased\n // See https://github.com/nodejs/undici/issues/2294\n fetchOptions.method = fetchOptions.method.toUpperCase();\n }\n return (\n // use undefined this binding; fetch errors if bound to something else in browser/cloudflare\n this.fetch.call(undefined, url, fetchOptions).finally(() => {\n clearTimeout(timeout);\n }));\n }\n shouldRetry(response) {\n // Note this is not a standard header.\n const shouldRetryHeader = response.headers.get('x-should-retry');\n // If the server explicitly says whether or not to retry, obey.\n if (shouldRetryHeader === 'true')\n return true;\n if (shouldRetryHeader === 'false')\n return false;\n // Retry on request timeouts.\n if (response.status === 408)\n return true;\n // Retry on lock timeouts.\n if (response.status === 409)\n return true;\n // Retry on rate limits.\n if (response.status === 429)\n return true;\n // Retry internal errors.\n if (response.status >= 500)\n return true;\n return false;\n }\n async retryRequest(options, retriesRemaining, responseHeaders) {\n let timeoutMillis;\n // Note the `retry-after-ms` header may not be standard, but is a good idea and we'd like proactive support for it.\n const retryAfterMillisHeader = responseHeaders?.['retry-after-ms'];\n if (retryAfterMillisHeader) {\n const timeoutMs = parseFloat(retryAfterMillisHeader);\n if (!Number.isNaN(timeoutMs)) {\n timeoutMillis = timeoutMs;\n }\n }\n // About the Retry-After header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After\n const retryAfterHeader = responseHeaders?.['retry-after'];\n if (retryAfterHeader && !timeoutMillis) {\n const timeoutSeconds = parseFloat(retryAfterHeader);\n if (!Number.isNaN(timeoutSeconds)) {\n timeoutMillis = timeoutSeconds * 1000;\n }\n else {\n timeoutMillis = Date.parse(retryAfterHeader) - Date.now();\n }\n }\n // If the API asks us to wait a certain amount of time (and it's a reasonable amount),\n // just do what it says, but otherwise calculate a default\n if (!(timeoutMillis && 0 <= timeoutMillis && timeoutMillis < 60 * 1000)) {\n const maxRetries = options.maxRetries ?? this.maxRetries;\n timeoutMillis = this.calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries);\n }\n await (0, exports.sleep)(timeoutMillis);\n return this.makeRequest(options, retriesRemaining - 1);\n }\n calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries) {\n const initialRetryDelay = 0.5;\n const maxRetryDelay = 8.0;\n const numRetries = maxRetries - retriesRemaining;\n // Apply exponential backoff, but not more than the max.\n const sleepSeconds = Math.min(initialRetryDelay * Math.pow(2, numRetries), maxRetryDelay);\n // Apply some jitter, take up to at most 25 percent of the retry time.\n const jitter = 1 - Math.random() * 0.25;\n return sleepSeconds * jitter * 1000;\n }\n getUserAgent() {\n return `${this.constructor.name}/JS ${version_1.VERSION}`;\n }\n}\nexports.APIClient = APIClient;\nclass AbstractPage {\n constructor(client, response, body, options) {\n _AbstractPage_client.set(this, void 0);\n __classPrivateFieldSet(this, _AbstractPage_client, client, \"f\");\n this.options = options;\n this.response = response;\n this.body = body;\n }\n hasNextPage() {\n const items = this.getPaginatedItems();\n if (!items.length)\n return false;\n return this.nextPageInfo() != null;\n }\n async getNextPage() {\n const nextInfo = this.nextPageInfo();\n if (!nextInfo) {\n throw new error_1.OpenAIError('No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.');\n }\n const nextOptions = { ...this.options };\n if ('params' in nextInfo && typeof nextOptions.query === 'object') {\n nextOptions.query = { ...nextOptions.query, ...nextInfo.params };\n }\n else if ('url' in nextInfo) {\n const params = [...Object.entries(nextOptions.query || {}), ...nextInfo.url.searchParams.entries()];\n for (const [key, value] of params) {\n nextInfo.url.searchParams.set(key, value);\n }\n nextOptions.query = undefined;\n nextOptions.path = nextInfo.url.toString();\n }\n return await __classPrivateFieldGet(this, _AbstractPage_client, \"f\").requestAPIList(this.constructor, nextOptions);\n }\n async *iterPages() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let page = this;\n yield page;\n while (page.hasNextPage()) {\n page = await page.getNextPage();\n yield page;\n }\n }\n async *[(_AbstractPage_client = new WeakMap(), Symbol.asyncIterator)]() {\n for await (const page of this.iterPages()) {\n for (const item of page.getPaginatedItems()) {\n yield item;\n }\n }\n }\n}\nexports.AbstractPage = AbstractPage;\n/**\n * This subclass of Promise will resolve to an instantiated Page once the request completes.\n *\n * It also implements AsyncIterable to allow auto-paginating iteration on an unawaited list call, eg:\n *\n * for await (const item of client.items.list()) {\n * console.log(item)\n * }\n */\nclass PagePromise extends APIPromise {\n constructor(client, request, Page) {\n super(request, async (props) => new Page(client, props.response, await defaultParseResponse(props), props.options));\n }\n /**\n * Allow auto-paginating iteration on an unawaited list call, eg:\n *\n * for await (const item of client.items.list()) {\n * console.log(item)\n * }\n */\n async *[Symbol.asyncIterator]() {\n const page = await this;\n for await (const item of page) {\n yield item;\n }\n }\n}\nexports.PagePromise = PagePromise;\nconst createResponseHeaders = (headers) => {\n return new Proxy(Object.fromEntries(\n // @ts-ignore\n headers.entries()), {\n get(target, name) {\n const key = name.toString();\n return target[key.toLowerCase()] || target[key];\n },\n });\n};\nexports.createResponseHeaders = createResponseHeaders;\n// This is required so that we can determine if a given object matches the RequestOptions\n// type at runtime. While this requires duplication, it is enforced by the TypeScript\n// compiler such that any missing / extraneous keys will cause an error.\nconst requestOptionsKeys = {\n method: true,\n path: true,\n query: true,\n body: true,\n headers: true,\n maxRetries: true,\n stream: true,\n timeout: true,\n httpAgent: true,\n signal: true,\n idempotencyKey: true,\n __metadata: true,\n __binaryRequest: true,\n __binaryResponse: true,\n __streamClass: true,\n};\nconst isRequestOptions = (obj) => {\n return (typeof obj === 'object' &&\n obj !== null &&\n !isEmptyObj(obj) &&\n Object.keys(obj).every((k) => hasOwn(requestOptionsKeys, k)));\n};\nexports.isRequestOptions = isRequestOptions;\nconst getPlatformProperties = () => {\n if (typeof Deno !== 'undefined' && Deno.build != null) {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': version_1.VERSION,\n 'X-Stainless-OS': normalizePlatform(Deno.build.os),\n 'X-Stainless-Arch': normalizeArch(Deno.build.arch),\n 'X-Stainless-Runtime': 'deno',\n 'X-Stainless-Runtime-Version': typeof Deno.version === 'string' ? Deno.version : Deno.version?.deno ?? 'unknown',\n };\n }\n if (typeof EdgeRuntime !== 'undefined') {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': version_1.VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': `other:${EdgeRuntime}`,\n 'X-Stainless-Runtime': 'edge',\n 'X-Stainless-Runtime-Version': process.version,\n };\n }\n // Check if Node.js\n if (Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]') {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': version_1.VERSION,\n 'X-Stainless-OS': normalizePlatform(process.platform),\n 'X-Stainless-Arch': normalizeArch(process.arch),\n 'X-Stainless-Runtime': 'node',\n 'X-Stainless-Runtime-Version': process.version,\n };\n }\n const browserInfo = getBrowserInfo();\n if (browserInfo) {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': version_1.VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': 'unknown',\n 'X-Stainless-Runtime': `browser:${browserInfo.browser}`,\n 'X-Stainless-Runtime-Version': browserInfo.version,\n };\n }\n // TODO add support for Cloudflare workers, etc.\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': version_1.VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': 'unknown',\n 'X-Stainless-Runtime': 'unknown',\n 'X-Stainless-Runtime-Version': 'unknown',\n };\n};\n// Note: modified from https://github.com/JS-DevTools/host-environment/blob/b1ab79ecde37db5d6e163c050e54fe7d287d7c92/src/isomorphic.browser.ts\nfunction getBrowserInfo() {\n if (typeof navigator === 'undefined' || !navigator) {\n return null;\n }\n // NOTE: The order matters here!\n const browserPatterns = [\n { key: 'edge', pattern: /Edge(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'ie', pattern: /MSIE(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'ie', pattern: /Trident(?:.*rv\\:(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'chrome', pattern: /Chrome(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'firefox', pattern: /Firefox(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'safari', pattern: /(?:Version\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?(?:\\W+Mobile\\S*)?\\W+Safari/ },\n ];\n // Find the FIRST matching browser\n for (const { key, pattern } of browserPatterns) {\n const match = pattern.exec(navigator.userAgent);\n if (match) {\n const major = match[1] || 0;\n const minor = match[2] || 0;\n const patch = match[3] || 0;\n return { browser: key, version: `${major}.${minor}.${patch}` };\n }\n }\n return null;\n}\nconst normalizeArch = (arch) => {\n // Node docs:\n // - https://nodejs.org/api/process.html#processarch\n // Deno docs:\n // - https://doc.deno.land/deno/stable/~/Deno.build\n if (arch === 'x32')\n return 'x32';\n if (arch === 'x86_64' || arch === 'x64')\n return 'x64';\n if (arch === 'arm')\n return 'arm';\n if (arch === 'aarch64' || arch === 'arm64')\n return 'arm64';\n if (arch)\n return `other:${arch}`;\n return 'unknown';\n};\nconst normalizePlatform = (platform) => {\n // Node platforms:\n // - https://nodejs.org/api/process.html#processplatform\n // Deno platforms:\n // - https://doc.deno.land/deno/stable/~/Deno.build\n // - https://github.com/denoland/deno/issues/14799\n platform = platform.toLowerCase();\n // NOTE: this iOS check is untested and may not work\n // Node does not work natively on IOS, there is a fork at\n // https://github.com/nodejs-mobile/nodejs-mobile\n // however it is unknown at the time of writing how to detect if it is running\n if (platform.includes('ios'))\n return 'iOS';\n if (platform === 'android')\n return 'Android';\n if (platform === 'darwin')\n return 'MacOS';\n if (platform === 'win32')\n return 'Windows';\n if (platform === 'freebsd')\n return 'FreeBSD';\n if (platform === 'openbsd')\n return 'OpenBSD';\n if (platform === 'linux')\n return 'Linux';\n if (platform)\n return `Other:${platform}`;\n return 'Unknown';\n};\nlet _platformHeaders;\nconst getPlatformHeaders = () => {\n return (_platformHeaders ?? (_platformHeaders = getPlatformProperties()));\n};\nconst safeJSON = (text) => {\n try {\n return JSON.parse(text);\n }\n catch (err) {\n return undefined;\n }\n};\nexports.safeJSON = safeJSON;\n// https://url.spec.whatwg.org/#url-scheme-string\nconst startsWithSchemeRegexp = /^[a-z][a-z0-9+.-]*:/i;\nconst isAbsoluteURL = (url) => {\n return startsWithSchemeRegexp.test(url);\n};\nconst sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\nexports.sleep = sleep;\nconst validatePositiveInteger = (name, n) => {\n if (typeof n !== 'number' || !Number.isInteger(n)) {\n throw new error_1.OpenAIError(`${name} must be an integer`);\n }\n if (n < 0) {\n throw new error_1.OpenAIError(`${name} must be a positive integer`);\n }\n return n;\n};\nconst castToError = (err) => {\n if (err instanceof Error)\n return err;\n if (typeof err === 'object' && err !== null) {\n try {\n return new Error(JSON.stringify(err));\n }\n catch { }\n }\n return new Error(err);\n};\nexports.castToError = castToError;\nconst ensurePresent = (value) => {\n if (value == null)\n throw new error_1.OpenAIError(`Expected a value to be given but received ${value} instead.`);\n return value;\n};\nexports.ensurePresent = ensurePresent;\n/**\n * Read an environment variable.\n *\n * Trims beginning and trailing whitespace.\n *\n * Will return undefined if the environment variable doesn't exist or cannot be accessed.\n */\nconst readEnv = (env) => {\n if (typeof process !== 'undefined') {\n return process.env?.[env]?.trim() ?? undefined;\n }\n if (typeof Deno !== 'undefined') {\n return Deno.env?.get?.(env)?.trim();\n }\n return undefined;\n};\nexports.readEnv = readEnv;\nconst coerceInteger = (value) => {\n if (typeof value === 'number')\n return Math.round(value);\n if (typeof value === 'string')\n return parseInt(value, 10);\n throw new error_1.OpenAIError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\nexports.coerceInteger = coerceInteger;\nconst coerceFloat = (value) => {\n if (typeof value === 'number')\n return value;\n if (typeof value === 'string')\n return parseFloat(value);\n throw new error_1.OpenAIError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\nexports.coerceFloat = coerceFloat;\nconst coerceBoolean = (value) => {\n if (typeof value === 'boolean')\n return value;\n if (typeof value === 'string')\n return value === 'true';\n return Boolean(value);\n};\nexports.coerceBoolean = coerceBoolean;\nconst maybeCoerceInteger = (value) => {\n if (value === undefined) {\n return undefined;\n }\n return (0, exports.coerceInteger)(value);\n};\nexports.maybeCoerceInteger = maybeCoerceInteger;\nconst maybeCoerceFloat = (value) => {\n if (value === undefined) {\n return undefined;\n }\n return (0, exports.coerceFloat)(value);\n};\nexports.maybeCoerceFloat = maybeCoerceFloat;\nconst maybeCoerceBoolean = (value) => {\n if (value === undefined) {\n return undefined;\n }\n return (0, exports.coerceBoolean)(value);\n};\nexports.maybeCoerceBoolean = maybeCoerceBoolean;\n// https://stackoverflow.com/a/34491287\nfunction isEmptyObj(obj) {\n if (!obj)\n return true;\n for (const _k in obj)\n return false;\n return true;\n}\nexports.isEmptyObj = isEmptyObj;\n// https://eslint.org/docs/latest/rules/no-prototype-builtins\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\nexports.hasOwn = hasOwn;\n/**\n * Copies headers from \"newHeaders\" onto \"targetHeaders\",\n * using lower-case for all properties,\n * ignoring any keys with undefined values,\n * and deleting any keys with null values.\n */\nfunction applyHeadersMut(targetHeaders, newHeaders) {\n for (const k in newHeaders) {\n if (!hasOwn(newHeaders, k))\n continue;\n const lowerKey = k.toLowerCase();\n if (!lowerKey)\n continue;\n const val = newHeaders[k];\n if (val === null) {\n delete targetHeaders[lowerKey];\n }\n else if (val !== undefined) {\n targetHeaders[lowerKey] = val;\n }\n }\n}\nconst SENSITIVE_HEADERS = new Set(['authorization', 'api-key']);\nfunction debug(action, ...args) {\n if (typeof process !== 'undefined' && process?.env?.['DEBUG'] === 'true') {\n const modifiedArgs = args.map((arg) => {\n if (!arg) {\n return arg;\n }\n // Check for sensitive headers in request body 'headers' object\n if (arg['headers']) {\n // clone so we don't mutate\n const modifiedArg = { ...arg, headers: { ...arg['headers'] } };\n for (const header in arg['headers']) {\n if (SENSITIVE_HEADERS.has(header.toLowerCase())) {\n modifiedArg['headers'][header] = 'REDACTED';\n }\n }\n return modifiedArg;\n }\n let modifiedArg = null;\n // Check for sensitive headers in headers object\n for (const header in arg) {\n if (SENSITIVE_HEADERS.has(header.toLowerCase())) {\n // avoid making a copy until we need to\n modifiedArg ?? (modifiedArg = { ...arg });\n modifiedArg[header] = 'REDACTED';\n }\n }\n return modifiedArg ?? arg;\n });\n console.log(`OpenAI:DEBUG:${action}`, ...modifiedArgs);\n }\n}\nexports.debug = debug;\n/**\n * https://stackoverflow.com/a/2117523\n */\nconst uuid4 = () => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\nconst isRunningInBrowser = () => {\n return (\n // @ts-ignore\n typeof window !== 'undefined' &&\n // @ts-ignore\n typeof window.document !== 'undefined' &&\n // @ts-ignore\n typeof navigator !== 'undefined');\n};\nexports.isRunningInBrowser = isRunningInBrowser;\nconst isHeadersProtocol = (headers) => {\n return typeof headers?.get === 'function';\n};\nexports.isHeadersProtocol = isHeadersProtocol;\nconst getRequiredHeader = (headers, header) => {\n const foundHeader = (0, exports.getHeader)(headers, header);\n if (foundHeader === undefined) {\n throw new Error(`Could not find ${header} header`);\n }\n return foundHeader;\n};\nexports.getRequiredHeader = getRequiredHeader;\nconst getHeader = (headers, header) => {\n const lowerCasedHeader = header.toLowerCase();\n if ((0, exports.isHeadersProtocol)(headers)) {\n // to deal with the case where the header looks like Stainless-Event-Id\n const intercapsHeader = header[0]?.toUpperCase() +\n header.substring(1).replace(/([^\\w])(\\w)/g, (_m, g1, g2) => g1 + g2.toUpperCase());\n for (const key of [header, lowerCasedHeader, header.toUpperCase(), intercapsHeader]) {\n const value = headers.get(key);\n if (value) {\n return value;\n }\n }\n }\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() === lowerCasedHeader) {\n if (Array.isArray(value)) {\n if (value.length <= 1)\n return value[0];\n console.warn(`Received ${value.length} entries for the ${header} header, using the first entry.`);\n return value[0];\n }\n return value;\n }\n }\n return undefined;\n};\nexports.getHeader = getHeader;\n/**\n * Encodes a string to Base64 format.\n */\nconst toBase64 = (str) => {\n if (!str)\n return '';\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str).toString('base64');\n }\n if (typeof btoa !== 'undefined') {\n return btoa(str);\n }\n throw new error_1.OpenAIError('Cannot generate b64 string; Expected `Buffer` or `btoa` to be defined');\n};\nexports.toBase64 = toBase64;\nfunction isObj(obj) {\n return obj != null && typeof obj === 'object' && !Array.isArray(obj);\n}\nexports.isObj = isObj;\n//# sourceMappingURL=core.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _AssistantStream_instances, _AssistantStream_events, _AssistantStream_runStepSnapshots, _AssistantStream_messageSnapshots, _AssistantStream_messageSnapshot, _AssistantStream_finalRun, _AssistantStream_currentContentIndex, _AssistantStream_currentContent, _AssistantStream_currentToolCallIndex, _AssistantStream_currentToolCall, _AssistantStream_currentEvent, _AssistantStream_currentRunSnapshot, _AssistantStream_currentRunStepSnapshot, _AssistantStream_addEvent, _AssistantStream_endRequest, _AssistantStream_handleMessage, _AssistantStream_handleRunStep, _AssistantStream_handleEvent, _AssistantStream_accumulateRunStep, _AssistantStream_accumulateMessage, _AssistantStream_accumulateContent, _AssistantStream_handleRun;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AssistantStream = void 0;\nconst Core = __importStar(require(\"../core.js\"));\nconst streaming_1 = require(\"../streaming.js\");\nconst error_1 = require(\"../error.js\");\nconst EventStream_1 = require(\"./EventStream.js\");\nclass AssistantStream extends EventStream_1.EventStream {\n constructor() {\n super(...arguments);\n _AssistantStream_instances.add(this);\n //Track all events in a single list for reference\n _AssistantStream_events.set(this, []);\n //Used to accumulate deltas\n //We are accumulating many types so the value here is not strict\n _AssistantStream_runStepSnapshots.set(this, {});\n _AssistantStream_messageSnapshots.set(this, {});\n _AssistantStream_messageSnapshot.set(this, void 0);\n _AssistantStream_finalRun.set(this, void 0);\n _AssistantStream_currentContentIndex.set(this, void 0);\n _AssistantStream_currentContent.set(this, void 0);\n _AssistantStream_currentToolCallIndex.set(this, void 0);\n _AssistantStream_currentToolCall.set(this, void 0);\n //For current snapshot methods\n _AssistantStream_currentEvent.set(this, void 0);\n _AssistantStream_currentRunSnapshot.set(this, void 0);\n _AssistantStream_currentRunStepSnapshot.set(this, void 0);\n }\n [(_AssistantStream_events = new WeakMap(), _AssistantStream_runStepSnapshots = new WeakMap(), _AssistantStream_messageSnapshots = new WeakMap(), _AssistantStream_messageSnapshot = new WeakMap(), _AssistantStream_finalRun = new WeakMap(), _AssistantStream_currentContentIndex = new WeakMap(), _AssistantStream_currentContent = new WeakMap(), _AssistantStream_currentToolCallIndex = new WeakMap(), _AssistantStream_currentToolCall = new WeakMap(), _AssistantStream_currentEvent = new WeakMap(), _AssistantStream_currentRunSnapshot = new WeakMap(), _AssistantStream_currentRunStepSnapshot = new WeakMap(), _AssistantStream_instances = new WeakSet(), Symbol.asyncIterator)]() {\n const pushQueue = [];\n const readQueue = [];\n let done = false;\n //Catch all for passing along all events\n this.on('event', (event) => {\n const reader = readQueue.shift();\n if (reader) {\n reader.resolve(event);\n }\n else {\n pushQueue.push(event);\n }\n });\n this.on('end', () => {\n done = true;\n for (const reader of readQueue) {\n reader.resolve(undefined);\n }\n readQueue.length = 0;\n });\n this.on('abort', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n this.on('error', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n return {\n next: async () => {\n if (!pushQueue.length) {\n if (done) {\n return { value: undefined, done: true };\n }\n return new Promise((resolve, reject) => readQueue.push({ resolve, reject })).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));\n }\n const chunk = pushQueue.shift();\n return { value: chunk, done: false };\n },\n return: async () => {\n this.abort();\n return { value: undefined, done: true };\n },\n };\n }\n static fromReadableStream(stream) {\n const runner = new AssistantStream();\n runner._run(() => runner._fromReadableStream(stream));\n return runner;\n }\n async _fromReadableStream(readableStream, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n this._connected();\n const stream = streaming_1.Stream.fromReadableStream(readableStream, this.controller);\n for await (const event of stream) {\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new error_1.APIUserAbortError();\n }\n return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n }\n toReadableStream() {\n const stream = new streaming_1.Stream(this[Symbol.asyncIterator].bind(this), this.controller);\n return stream.toReadableStream();\n }\n static createToolAssistantStream(threadId, runId, runs, params, options) {\n const runner = new AssistantStream();\n runner._run(() => runner._runToolAssistantStream(threadId, runId, runs, params, {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n }));\n return runner;\n }\n async _createToolAssistantStream(run, threadId, runId, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n const body = { ...params, stream: true };\n const stream = await run.submitToolOutputs(threadId, runId, body, {\n ...options,\n signal: this.controller.signal,\n });\n this._connected();\n for await (const event of stream) {\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new error_1.APIUserAbortError();\n }\n return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n }\n static createThreadAssistantStream(params, thread, options) {\n const runner = new AssistantStream();\n runner._run(() => runner._threadAssistantStream(params, thread, {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n }));\n return runner;\n }\n static createAssistantStream(threadId, runs, params, options) {\n const runner = new AssistantStream();\n runner._run(() => runner._runAssistantStream(threadId, runs, params, {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n }));\n return runner;\n }\n currentEvent() {\n return __classPrivateFieldGet(this, _AssistantStream_currentEvent, \"f\");\n }\n currentRun() {\n return __classPrivateFieldGet(this, _AssistantStream_currentRunSnapshot, \"f\");\n }\n currentMessageSnapshot() {\n return __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\");\n }\n currentRunStepSnapshot() {\n return __classPrivateFieldGet(this, _AssistantStream_currentRunStepSnapshot, \"f\");\n }\n async finalRunSteps() {\n await this.done();\n return Object.values(__classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\"));\n }\n async finalMessages() {\n await this.done();\n return Object.values(__classPrivateFieldGet(this, _AssistantStream_messageSnapshots, \"f\"));\n }\n async finalRun() {\n await this.done();\n if (!__classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\"))\n throw Error('Final run was not received.');\n return __classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\");\n }\n async _createThreadAssistantStream(thread, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n const body = { ...params, stream: true };\n const stream = await thread.createAndRun(body, { ...options, signal: this.controller.signal });\n this._connected();\n for await (const event of stream) {\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new error_1.APIUserAbortError();\n }\n return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n }\n async _createAssistantStream(run, threadId, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n const body = { ...params, stream: true };\n const stream = await run.create(threadId, body, { ...options, signal: this.controller.signal });\n this._connected();\n for await (const event of stream) {\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new error_1.APIUserAbortError();\n }\n return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n }\n static accumulateDelta(acc, delta) {\n for (const [key, deltaValue] of Object.entries(delta)) {\n if (!acc.hasOwnProperty(key)) {\n acc[key] = deltaValue;\n continue;\n }\n let accValue = acc[key];\n if (accValue === null || accValue === undefined) {\n acc[key] = deltaValue;\n continue;\n }\n // We don't accumulate these special properties\n if (key === 'index' || key === 'type') {\n acc[key] = deltaValue;\n continue;\n }\n // Type-specific accumulation logic\n if (typeof accValue === 'string' && typeof deltaValue === 'string') {\n accValue += deltaValue;\n }\n else if (typeof accValue === 'number' && typeof deltaValue === 'number') {\n accValue += deltaValue;\n }\n else if (Core.isObj(accValue) && Core.isObj(deltaValue)) {\n accValue = this.accumulateDelta(accValue, deltaValue);\n }\n else if (Array.isArray(accValue) && Array.isArray(deltaValue)) {\n if (accValue.every((x) => typeof x === 'string' || typeof x === 'number')) {\n accValue.push(...deltaValue); // Use spread syntax for efficient addition\n continue;\n }\n for (const deltaEntry of deltaValue) {\n if (!Core.isObj(deltaEntry)) {\n throw new Error(`Expected array delta entry to be an object but got: ${deltaEntry}`);\n }\n const index = deltaEntry['index'];\n if (index == null) {\n console.error(deltaEntry);\n throw new Error('Expected array delta entry to have an `index` property');\n }\n if (typeof index !== 'number') {\n throw new Error(`Expected array delta entry \\`index\\` property to be a number but got ${index}`);\n }\n const accEntry = accValue[index];\n if (accEntry == null) {\n accValue.push(deltaEntry);\n }\n else {\n accValue[index] = this.accumulateDelta(accEntry, deltaEntry);\n }\n }\n continue;\n }\n else {\n throw Error(`Unhandled record type: ${key}, deltaValue: ${deltaValue}, accValue: ${accValue}`);\n }\n acc[key] = accValue;\n }\n return acc;\n }\n _addRun(run) {\n return run;\n }\n async _threadAssistantStream(params, thread, options) {\n return await this._createThreadAssistantStream(thread, params, options);\n }\n async _runAssistantStream(threadId, runs, params, options) {\n return await this._createAssistantStream(runs, threadId, params, options);\n }\n async _runToolAssistantStream(threadId, runId, runs, params, options) {\n return await this._createToolAssistantStream(runs, threadId, runId, params, options);\n }\n}\nexports.AssistantStream = AssistantStream;\n_AssistantStream_addEvent = function _AssistantStream_addEvent(event) {\n if (this.ended)\n return;\n __classPrivateFieldSet(this, _AssistantStream_currentEvent, event, \"f\");\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleEvent).call(this, event);\n switch (event.event) {\n case 'thread.created':\n //No action on this event.\n break;\n case 'thread.run.created':\n case 'thread.run.queued':\n case 'thread.run.in_progress':\n case 'thread.run.requires_action':\n case 'thread.run.completed':\n case 'thread.run.incomplete':\n case 'thread.run.failed':\n case 'thread.run.cancelling':\n case 'thread.run.cancelled':\n case 'thread.run.expired':\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleRun).call(this, event);\n break;\n case 'thread.run.step.created':\n case 'thread.run.step.in_progress':\n case 'thread.run.step.delta':\n case 'thread.run.step.completed':\n case 'thread.run.step.failed':\n case 'thread.run.step.cancelled':\n case 'thread.run.step.expired':\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleRunStep).call(this, event);\n break;\n case 'thread.message.created':\n case 'thread.message.in_progress':\n case 'thread.message.delta':\n case 'thread.message.completed':\n case 'thread.message.incomplete':\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleMessage).call(this, event);\n break;\n case 'error':\n //This is included for completeness, but errors are processed in the SSE event processing so this should not occur\n throw new Error('Encountered an error event in event processing - errors should be processed earlier');\n default:\n assertNever(event);\n }\n}, _AssistantStream_endRequest = function _AssistantStream_endRequest() {\n if (this.ended) {\n throw new error_1.OpenAIError(`stream has ended, this shouldn't happen`);\n }\n if (!__classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\"))\n throw Error('Final run has not been received');\n return __classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\");\n}, _AssistantStream_handleMessage = function _AssistantStream_handleMessage(event) {\n const [accumulatedMessage, newContent] = __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_accumulateMessage).call(this, event, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n __classPrivateFieldSet(this, _AssistantStream_messageSnapshot, accumulatedMessage, \"f\");\n __classPrivateFieldGet(this, _AssistantStream_messageSnapshots, \"f\")[accumulatedMessage.id] = accumulatedMessage;\n for (const content of newContent) {\n const snapshotContent = accumulatedMessage.content[content.index];\n if (snapshotContent?.type == 'text') {\n this._emit('textCreated', snapshotContent.text);\n }\n }\n switch (event.event) {\n case 'thread.message.created':\n this._emit('messageCreated', event.data);\n break;\n case 'thread.message.in_progress':\n break;\n case 'thread.message.delta':\n this._emit('messageDelta', event.data.delta, accumulatedMessage);\n if (event.data.delta.content) {\n for (const content of event.data.delta.content) {\n //If it is text delta, emit a text delta event\n if (content.type == 'text' && content.text) {\n let textDelta = content.text;\n let snapshot = accumulatedMessage.content[content.index];\n if (snapshot && snapshot.type == 'text') {\n this._emit('textDelta', textDelta, snapshot.text);\n }\n else {\n throw Error('The snapshot associated with this text delta is not text or missing');\n }\n }\n if (content.index != __classPrivateFieldGet(this, _AssistantStream_currentContentIndex, \"f\")) {\n //See if we have in progress content\n if (__classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\")) {\n switch (__classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\").type) {\n case 'text':\n this._emit('textDone', __classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\").text, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n break;\n case 'image_file':\n this._emit('imageFileDone', __classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\").image_file, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n break;\n }\n }\n __classPrivateFieldSet(this, _AssistantStream_currentContentIndex, content.index, \"f\");\n }\n __classPrivateFieldSet(this, _AssistantStream_currentContent, accumulatedMessage.content[content.index], \"f\");\n }\n }\n break;\n case 'thread.message.completed':\n case 'thread.message.incomplete':\n //We emit the latest content we were working on on completion (including incomplete)\n if (__classPrivateFieldGet(this, _AssistantStream_currentContentIndex, \"f\") !== undefined) {\n const currentContent = event.data.content[__classPrivateFieldGet(this, _AssistantStream_currentContentIndex, \"f\")];\n if (currentContent) {\n switch (currentContent.type) {\n case 'image_file':\n this._emit('imageFileDone', currentContent.image_file, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n break;\n case 'text':\n this._emit('textDone', currentContent.text, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n break;\n }\n }\n }\n if (__classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\")) {\n this._emit('messageDone', event.data);\n }\n __classPrivateFieldSet(this, _AssistantStream_messageSnapshot, undefined, \"f\");\n }\n}, _AssistantStream_handleRunStep = function _AssistantStream_handleRunStep(event) {\n const accumulatedRunStep = __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_accumulateRunStep).call(this, event);\n __classPrivateFieldSet(this, _AssistantStream_currentRunStepSnapshot, accumulatedRunStep, \"f\");\n switch (event.event) {\n case 'thread.run.step.created':\n this._emit('runStepCreated', event.data);\n break;\n case 'thread.run.step.delta':\n const delta = event.data.delta;\n if (delta.step_details &&\n delta.step_details.type == 'tool_calls' &&\n delta.step_details.tool_calls &&\n accumulatedRunStep.step_details.type == 'tool_calls') {\n for (const toolCall of delta.step_details.tool_calls) {\n if (toolCall.index == __classPrivateFieldGet(this, _AssistantStream_currentToolCallIndex, \"f\")) {\n this._emit('toolCallDelta', toolCall, accumulatedRunStep.step_details.tool_calls[toolCall.index]);\n }\n else {\n if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\")) {\n this._emit('toolCallDone', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n }\n __classPrivateFieldSet(this, _AssistantStream_currentToolCallIndex, toolCall.index, \"f\");\n __classPrivateFieldSet(this, _AssistantStream_currentToolCall, accumulatedRunStep.step_details.tool_calls[toolCall.index], \"f\");\n if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"))\n this._emit('toolCallCreated', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n }\n }\n }\n this._emit('runStepDelta', event.data.delta, accumulatedRunStep);\n break;\n case 'thread.run.step.completed':\n case 'thread.run.step.failed':\n case 'thread.run.step.cancelled':\n case 'thread.run.step.expired':\n __classPrivateFieldSet(this, _AssistantStream_currentRunStepSnapshot, undefined, \"f\");\n const details = event.data.step_details;\n if (details.type == 'tool_calls') {\n if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\")) {\n this._emit('toolCallDone', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n __classPrivateFieldSet(this, _AssistantStream_currentToolCall, undefined, \"f\");\n }\n }\n this._emit('runStepDone', event.data, accumulatedRunStep);\n break;\n case 'thread.run.step.in_progress':\n break;\n }\n}, _AssistantStream_handleEvent = function _AssistantStream_handleEvent(event) {\n __classPrivateFieldGet(this, _AssistantStream_events, \"f\").push(event);\n this._emit('event', event);\n}, _AssistantStream_accumulateRunStep = function _AssistantStream_accumulateRunStep(event) {\n switch (event.event) {\n case 'thread.run.step.created':\n __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id] = event.data;\n return event.data;\n case 'thread.run.step.delta':\n let snapshot = __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id];\n if (!snapshot) {\n throw Error('Received a RunStepDelta before creation of a snapshot');\n }\n let data = event.data;\n if (data.delta) {\n const accumulated = AssistantStream.accumulateDelta(snapshot, data.delta);\n __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id] = accumulated;\n }\n return __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id];\n case 'thread.run.step.completed':\n case 'thread.run.step.failed':\n case 'thread.run.step.cancelled':\n case 'thread.run.step.expired':\n case 'thread.run.step.in_progress':\n __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id] = event.data;\n break;\n }\n if (__classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id])\n return __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id];\n throw new Error('No snapshot available');\n}, _AssistantStream_accumulateMessage = function _AssistantStream_accumulateMessage(event, snapshot) {\n let newContent = [];\n switch (event.event) {\n case 'thread.message.created':\n //On creation the snapshot is just the initial message\n return [event.data, newContent];\n case 'thread.message.delta':\n if (!snapshot) {\n throw Error('Received a delta with no existing snapshot (there should be one from message creation)');\n }\n let data = event.data;\n //If this delta does not have content, nothing to process\n if (data.delta.content) {\n for (const contentElement of data.delta.content) {\n if (contentElement.index in snapshot.content) {\n let currentContent = snapshot.content[contentElement.index];\n snapshot.content[contentElement.index] = __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_accumulateContent).call(this, contentElement, currentContent);\n }\n else {\n snapshot.content[contentElement.index] = contentElement;\n // This is a new element\n newContent.push(contentElement);\n }\n }\n }\n return [snapshot, newContent];\n case 'thread.message.in_progress':\n case 'thread.message.completed':\n case 'thread.message.incomplete':\n //No changes on other thread events\n if (snapshot) {\n return [snapshot, newContent];\n }\n else {\n throw Error('Received thread message event with no existing snapshot');\n }\n }\n throw Error('Tried to accumulate a non-message event');\n}, _AssistantStream_accumulateContent = function _AssistantStream_accumulateContent(contentElement, currentContent) {\n return AssistantStream.accumulateDelta(currentContent, contentElement);\n}, _AssistantStream_handleRun = function _AssistantStream_handleRun(event) {\n __classPrivateFieldSet(this, _AssistantStream_currentRunSnapshot, event.data, \"f\");\n switch (event.event) {\n case 'thread.run.created':\n break;\n case 'thread.run.queued':\n break;\n case 'thread.run.in_progress':\n break;\n case 'thread.run.requires_action':\n case 'thread.run.cancelled':\n case 'thread.run.failed':\n case 'thread.run.completed':\n case 'thread.run.expired':\n __classPrivateFieldSet(this, _AssistantStream_finalRun, event.data, \"f\");\n if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\")) {\n this._emit('toolCallDone', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n __classPrivateFieldSet(this, _AssistantStream_currentToolCall, undefined, \"f\");\n }\n break;\n case 'thread.run.cancelling':\n break;\n }\n};\nfunction assertNever(_x) { }\n//# sourceMappingURL=AssistantStream.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Disclaimer: modules in _shims aren't intended to be imported by SDK users.\n */\n__exportStar(require(\"../web-runtime.js\"), exports);\n//# sourceMappingURL=runtime.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Completions = void 0;\nconst resource_1 = require(\"../resource.js\");\nclass Completions extends resource_1.APIResource {\n create(body, options) {\n return this._client.post('/completions', { body, ...options, stream: body.stream ?? false });\n }\n}\nexports.Completions = Completions;\n//# sourceMappingURL=completions.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ModelsPage = exports.Models = void 0;\nconst resource_1 = require(\"../resource.js\");\nconst pagination_1 = require(\"../pagination.js\");\nclass Models extends resource_1.APIResource {\n /**\n * Retrieves a model instance, providing basic information about the model such as\n * the owner and permissioning.\n */\n retrieve(model, options) {\n return this._client.get(`/models/${model}`, options);\n }\n /**\n * Lists the currently available models, and provides basic information about each\n * one such as the owner and availability.\n */\n list(options) {\n return this._client.getAPIList('/models', ModelsPage, options);\n }\n /**\n * Delete a fine-tuned model. You must have the Owner role in your organization to\n * delete a model.\n */\n del(model, options) {\n return this._client.delete(`/models/${model}`, options);\n }\n}\nexports.Models = Models;\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nclass ModelsPage extends pagination_1.Page {\n}\nexports.ModelsPage = ModelsPage;\nModels.ModelsPage = ModelsPage;\n//# sourceMappingURL=models.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChatCompletionStoreMessagesPage = exports.Messages = void 0;\nconst resource_1 = require(\"../../../resource.js\");\nconst core_1 = require(\"../../../core.js\");\nconst completions_1 = require(\"./completions.js\");\nObject.defineProperty(exports, \"ChatCompletionStoreMessagesPage\", { enumerable: true, get: function () { return completions_1.ChatCompletionStoreMessagesPage; } });\nclass Messages extends resource_1.APIResource {\n list(completionId, query = {}, options) {\n if ((0, core_1.isRequestOptions)(query)) {\n return this.list(completionId, {}, query);\n }\n return this._client.getAPIList(`/chat/completions/${completionId}/messages`, completions_1.ChatCompletionStoreMessagesPage, { query, ...options });\n }\n}\nexports.Messages = Messages;\n//# sourceMappingURL=messages.js.map","\"use strict\";\n// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContentFilterFinishReasonError = exports.LengthFinishReasonError = exports.InternalServerError = exports.RateLimitError = exports.UnprocessableEntityError = exports.ConflictError = exports.NotFoundError = exports.PermissionDeniedError = exports.AuthenticationError = exports.BadRequestError = exports.APIConnectionTimeoutError = exports.APIConnectionError = exports.APIUserAbortError = exports.APIError = exports.OpenAIError = void 0;\nconst core_1 = require(\"./core.js\");\nclass OpenAIError extends Error {\n}\nexports.OpenAIError = OpenAIError;\nclass APIError extends OpenAIError {\n constructor(status, error, message, headers) {\n super(`${APIError.makeMessage(status, error, message)}`);\n this.status = status;\n this.headers = headers;\n this.request_id = headers?.['x-request-id'];\n this.error = error;\n const data = error;\n this.code = data?.['code'];\n this.param = data?.['param'];\n this.type = data?.['type'];\n }\n static makeMessage(status, error, message) {\n const msg = error?.message ?\n typeof error.message === 'string' ?\n error.message\n : JSON.stringify(error.message)\n : error ? JSON.stringify(error)\n : message;\n if (status && msg) {\n return `${status} ${msg}`;\n }\n if (status) {\n return `${status} status code (no body)`;\n }\n if (msg) {\n return msg;\n }\n return '(no status code or body)';\n }\n static generate(status, errorResponse, message, headers) {\n if (!status || !headers) {\n return new APIConnectionError({ message, cause: (0, core_1.castToError)(errorResponse) });\n }\n const error = errorResponse?.['error'];\n if (status === 400) {\n return new BadRequestError(status, error, message, headers);\n }\n if (status === 401) {\n return new AuthenticationError(status, error, message, headers);\n }\n if (status === 403) {\n return new PermissionDeniedError(status, error, message, headers);\n }\n if (status === 404) {\n return new NotFoundError(status, error, message, headers);\n }\n if (status === 409) {\n return new ConflictError(status, error, message, headers);\n }\n if (status === 422) {\n return new UnprocessableEntityError(status, error, message, headers);\n }\n if (status === 429) {\n return new RateLimitError(status, error, message, headers);\n }\n if (status >= 500) {\n return new InternalServerError(status, error, message, headers);\n }\n return new APIError(status, error, message, headers);\n }\n}\nexports.APIError = APIError;\nclass APIUserAbortError extends APIError {\n constructor({ message } = {}) {\n super(undefined, undefined, message || 'Request was aborted.', undefined);\n }\n}\nexports.APIUserAbortError = APIUserAbortError;\nclass APIConnectionError extends APIError {\n constructor({ message, cause }) {\n super(undefined, undefined, message || 'Connection error.', undefined);\n // in some environments the 'cause' property is already declared\n // @ts-ignore\n if (cause)\n this.cause = cause;\n }\n}\nexports.APIConnectionError = APIConnectionError;\nclass APIConnectionTimeoutError extends APIConnectionError {\n constructor({ message } = {}) {\n super({ message: message ?? 'Request timed out.' });\n }\n}\nexports.APIConnectionTimeoutError = APIConnectionTimeoutError;\nclass BadRequestError extends APIError {\n}\nexports.BadRequestError = BadRequestError;\nclass AuthenticationError extends APIError {\n}\nexports.AuthenticationError = AuthenticationError;\nclass PermissionDeniedError extends APIError {\n}\nexports.PermissionDeniedError = PermissionDeniedError;\nclass NotFoundError extends APIError {\n}\nexports.NotFoundError = NotFoundError;\nclass ConflictError extends APIError {\n}\nexports.ConflictError = ConflictError;\nclass UnprocessableEntityError extends APIError {\n}\nexports.UnprocessableEntityError = UnprocessableEntityError;\nclass RateLimitError extends APIError {\n}\nexports.RateLimitError = RateLimitError;\nclass InternalServerError extends APIError {\n}\nexports.InternalServerError = InternalServerError;\nclass LengthFinishReasonError extends OpenAIError {\n constructor() {\n super(`Could not parse response content as the length limit was reached`);\n }\n}\nexports.LengthFinishReasonError = LengthFinishReasonError;\nclass ContentFilterFinishReasonError extends OpenAIError {\n constructor() {\n super(`Could not parse response content as the request was rejected by the content filter`);\n }\n}\nexports.ContentFilterFinishReasonError = ContentFilterFinishReasonError;\n//# sourceMappingURL=error.js.map","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _LineDecoder_carriageReturnIndex;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findDoubleNewlineIndex = exports.LineDecoder = void 0;\nconst error_1 = require(\"../../error.js\");\n/**\n * A re-implementation of httpx's `LineDecoder` in Python that handles incrementally\n * reading lines from text.\n *\n * https://github.com/encode/httpx/blob/920333ea98118e9cf617f246905d7b202510941c/httpx/_decoders.py#L258\n */\nclass LineDecoder {\n constructor() {\n _LineDecoder_carriageReturnIndex.set(this, void 0);\n this.buffer = new Uint8Array();\n __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, \"f\");\n }\n decode(chunk) {\n if (chunk == null) {\n return [];\n }\n const binaryChunk = chunk instanceof ArrayBuffer ? new Uint8Array(chunk)\n : typeof chunk === 'string' ? new TextEncoder().encode(chunk)\n : chunk;\n let newData = new Uint8Array(this.buffer.length + binaryChunk.length);\n newData.set(this.buffer);\n newData.set(binaryChunk, this.buffer.length);\n this.buffer = newData;\n const lines = [];\n let patternIndex;\n while ((patternIndex = findNewlineIndex(this.buffer, __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\"))) != null) {\n if (patternIndex.carriage && __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") == null) {\n // skip until we either get a corresponding `\\n`, a new `\\r` or nothing\n __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, patternIndex.index, \"f\");\n continue;\n }\n // we got double \\r or \\rtext\\n\n if (__classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") != null &&\n (patternIndex.index !== __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") + 1 || patternIndex.carriage)) {\n lines.push(this.decodeText(this.buffer.slice(0, __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") - 1)));\n this.buffer = this.buffer.slice(__classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\"));\n __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, \"f\");\n continue;\n }\n const endIndex = __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") !== null ? patternIndex.preceding - 1 : patternIndex.preceding;\n const line = this.decodeText(this.buffer.slice(0, endIndex));\n lines.push(line);\n this.buffer = this.buffer.slice(patternIndex.index);\n __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, \"f\");\n }\n return lines;\n }\n decodeText(bytes) {\n if (bytes == null)\n return '';\n if (typeof bytes === 'string')\n return bytes;\n // Node:\n if (typeof Buffer !== 'undefined') {\n if (bytes instanceof Buffer) {\n return bytes.toString();\n }\n if (bytes instanceof Uint8Array) {\n return Buffer.from(bytes).toString();\n }\n throw new error_1.OpenAIError(`Unexpected: received non-Uint8Array (${bytes.constructor.name}) stream chunk in an environment with a global \"Buffer\" defined, which this library assumes to be Node. Please report this error.`);\n }\n // Browser\n if (typeof TextDecoder !== 'undefined') {\n if (bytes instanceof Uint8Array || bytes instanceof ArrayBuffer) {\n this.textDecoder ?? (this.textDecoder = new TextDecoder('utf8'));\n return this.textDecoder.decode(bytes);\n }\n throw new error_1.OpenAIError(`Unexpected: received non-Uint8Array/ArrayBuffer (${bytes.constructor.name}) in a web platform. Please report this error.`);\n }\n throw new error_1.OpenAIError(`Unexpected: neither Buffer nor TextDecoder are available as globals. Please report this error.`);\n }\n flush() {\n if (!this.buffer.length) {\n return [];\n }\n return this.decode('\\n');\n }\n}\nexports.LineDecoder = LineDecoder;\n_LineDecoder_carriageReturnIndex = new WeakMap();\n// prettier-ignore\nLineDecoder.NEWLINE_CHARS = new Set(['\\n', '\\r']);\nLineDecoder.NEWLINE_REGEXP = /\\r\\n|[\\n\\r]/g;\n/**\n * This function searches the buffer for the end patterns, (\\r or \\n)\n * and returns an object with the index preceding the matched newline and the\n * index after the newline char. `null` is returned if no new line is found.\n *\n * ```ts\n * findNewLineIndex('abc\\ndef') -> { preceding: 2, index: 3 }\n * ```\n */\nfunction findNewlineIndex(buffer, startIndex) {\n const newline = 0x0a; // \\n\n const carriage = 0x0d; // \\r\n for (let i = startIndex ?? 0; i < buffer.length; i++) {\n if (buffer[i] === newline) {\n return { preceding: i, index: i + 1, carriage: false };\n }\n if (buffer[i] === carriage) {\n return { preceding: i, index: i + 1, carriage: true };\n }\n }\n return null;\n}\nfunction findDoubleNewlineIndex(buffer) {\n // This function searches the buffer for the end patterns (\\r\\r, \\n\\n, \\r\\n\\r\\n)\n // and returns the index right after the first occurrence of any pattern,\n // or -1 if none of the patterns are found.\n const newline = 0x0a; // \\n\n const carriage = 0x0d; // \\r\n for (let i = 0; i < buffer.length - 1; i++) {\n if (buffer[i] === newline && buffer[i + 1] === newline) {\n // \\n\\n\n return i + 2;\n }\n if (buffer[i] === carriage && buffer[i + 1] === carriage) {\n // \\r\\r\n return i + 2;\n }\n if (buffer[i] === carriage &&\n buffer[i + 1] === newline &&\n i + 3 < buffer.length &&\n buffer[i + 2] === carriage &&\n buffer[i + 3] === newline) {\n // \\r\\n\\r\\n\n return i + 4;\n }\n }\n return -1;\n}\nexports.findDoubleNewlineIndex = findDoubleNewlineIndex;\n//# sourceMappingURL=line.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(8258);\n"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE__156__","Object","defineProperty","value","stringify","utils_1","formats_1","has","prototype","hasOwnProperty","array_prefix_generators","brackets","prefix","String","comma","indices","key","repeat","is_array","Array","isArray","push","push_to_array","arr","value_or_array","apply","to_ISO","Date","toISOString","defaults","addQueryPrefix","allowDots","allowEmptyArrays","arrayFormat","charset","charsetSentinel","delimiter","encode","encodeDotInKeys","encoder","encodeValuesOnly","format","default_format","formatter","formatters","serializeDate","date","call","skipNulls","strictNullHandling","sentinel","inner_stringify","object","generateArrayPrefix","commaRoundTrip","filter","sort","sideChannel","obj","tmp_sc","step","find_flag","get","pos","RangeError","maybe_map","v","is_buffer","key_value","values","obj_keys","length","join","keys","encoded_prefix","replace","adjusted_prefix","j","encoded_key","key_prefix","set","valueSideChannel","WeakMap","opts","options","TypeError","normalize_stringify_options","i","joined","getRuntime","MultipartBody_1","manuallyImported","recommendation","_fetch","_Request","_Response","_Headers","fetch","Request","Response","Headers","error","Error","message","kind","FormData","constructor","Blob","File","ReadableStream","getMultipartRequestOptions","async","form","body","MultipartBody","getDefaultAgent","url","fileFromPath","isFsReadStream","extendStatics","d","b","setPrototypeOf","__proto__","p","__extends","__","create","__assign","assign","t","s","n","arguments","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","next","e","rejected","result","done","then","__generator","f","y","g","_","label","sent","trys","ops","verb","Symbol","iterator","op","pop","__spreadArray","to","from","pack","ar","l","slice","concat","Bounds","left","top","width","height","add","x","w","h","fromClientRect","context","clientRect","windowBounds","fromDOMRectList","domRectList","domRect","find","rect","EMPTY","parseBounds","node","getBoundingClientRect","toCodePoints$1","str","codePoints","charCodeAt","extra","fromCodePoint$1","_i","fromCodePoint","codeUnits","index","codePoint","fromCharCode","chars$2","lookup$2","Uint8Array","i$2","chars$1$1","lookup$1$1","i$1$1","slice16$1","view","start","end","Uint16Array","Trie$1","Trie","initialValue","errorValue","highStart","highValueIndex","data","ix","UTRIE2_DATA_BLOCK_LENGTH$1","UTRIE2_INDEX_1_OFFSET$1","UTRIE2_INDEX_2_BLOCK_LENGTH$1","chars$3","lookup$3","i$3","SP","BA","HY","CL","CP","EX","IN","NS","OP","IS","NU","PO","PR","SY","AL","EB","EM","H2","H3","ID","JL","JV","JT","SA","ea_OP","BREAK_NOT_ALLOWED$1","BREAK_ALLOWED$1","UnicodeTrie$1","base64","buffer","encoded1","encoded2","encoded3","encoded4","bufferLength","len","ArrayBuffer","bytes","decode$1","view32","polyUint32Array$1","Uint32Array","view16","polyUint16Array$1","headerLength","Math","ceil","createTrieFromBase64$1","ALPHABETICS","HARD_LINE_BREAKS","SPACE$1","PREFIX_POSTFIX","LINE_BREAKS","KOREAN_SYLLABLE_BLOCK","HYPHEN","isAdjacentWithSpaceIgnored","a","currentIndex","classTypes","current","indexOf","prev","previousNonSpaceClassType","type","_lineBreakAtIndex","indicies","forbiddenBreaks","beforeIndex","afterIndex","before","prevIndex","count","cssFormattedClasses","lineBreak","wordBreak","_a","types","categories","forEach","classType","codePointsToCharacterClasses","isLetterNumber","map","forbiddenBreakpoints","letterNumber","undefined","Break","required","HYPHEN_MINUS","PLUS_SIGN","EOF","isDigit","isHex","isWhiteSpace","isNameStartCodePoint","isLowerCaseLetter","isUpperCaseLetter","isLetter","isNonASCIICodePoint","isNameCodePoint","isNonPrintableCodePoint","isValidEscape","c1","c2","isIdentifierStart","c3","isNumberStart","stringToNumber","c","sign","integers","int","parseInt","fraction","fracd","frac","expsign","exponent","exp","pow","LEFT_PARENTHESIS_TOKEN","RIGHT_PARENTHESIS_TOKEN","COMMA_TOKEN","SUFFIX_MATCH_TOKEN","PREFIX_MATCH_TOKEN","COLUMN_TOKEN","DASH_MATCH_TOKEN","INCLUDE_MATCH_TOKEN","LEFT_CURLY_BRACKET_TOKEN","RIGHT_CURLY_BRACKET_TOKEN","SUBSTRING_MATCH_TOKEN","BAD_URL_TOKEN","BAD_STRING_TOKEN","CDO_TOKEN","CDC_TOKEN","COLON_TOKEN","SEMICOLON_TOKEN","LEFT_SQUARE_BRACKET_TOKEN","RIGHT_SQUARE_BRACKET_TOKEN","WHITESPACE_TOKEN","EOF_TOKEN","Tokenizer","_value","write","chunk","read","tokens","token","consumeToken","consumeCodePoint","consumeStringToken","peekCodePoint","flags","consumeName","reconsumeCodePoint","consumeNumericToken","e1","e2","e3","consumeIdentLikeToken","a1","a2","a3","u1","u2","consumeUnicodeRangeToken","consumeWhiteSpace","shift","unshift","delta","digits","questionMarks","digit","endDigits","toLowerCase","consumeUrlToken","stringToken","consumeBadUrlRemnants","consumeEscapedCodePoint","consumeStringSlice","amount","min","splice","endingCodePoint","consumeNumber","repr","number","unit","hex","hexCodePoint","isSurrogateCodePoint","Parser","_tokens","tokenizer","parseValue","parseComponentValue","parseValues","parseComponentValues","SyntaxError","reconsumeToken","consumeComponentValue","consumeSimpleBlock","consumeFunction","block","isEndingTokenFor","functionToken","cssFunction","name","isDimensionToken","isNumberToken","isIdentToken","isStringToken","isIdentWithValue","nonWhiteSpace","nonFunctionArgSeparator","parseFunctionArgs","args","arg","isLength","isLengthPercentage","parseLengthPercentageTuple","ZERO_LENGTH","FIFTY_PERCENT","HUNDRED_PERCENT","getAbsoluteValueForTuple","tuple","getAbsoluteValue","parent","GRAD","TURN","angle","_context","PI","isAngle","parseNamedSide","ident","deg","color$1","colorFunction","SUPPORTED_COLOR_FUNCTIONS","r","substring","namedColor","COLORS","toUpperCase","TRANSPARENT","isTransparent","color","asString","alpha","blue","green","red","round","getTokenColorValue","max","rgb","_b","hue2rgb","t1","t2","hue","hsl","saturation","lightness","hsla","rgba","parseColor","ALICEBLUE","ANTIQUEWHITE","AQUA","AQUAMARINE","AZURE","BEIGE","BISQUE","BLACK","BLANCHEDALMOND","BLUE","BLUEVIOLET","BROWN","BURLYWOOD","CADETBLUE","CHARTREUSE","CHOCOLATE","CORAL","CORNFLOWERBLUE","CORNSILK","CRIMSON","CYAN","DARKBLUE","DARKCYAN","DARKGOLDENROD","DARKGRAY","DARKGREEN","DARKGREY","DARKKHAKI","DARKMAGENTA","DARKOLIVEGREEN","DARKORANGE","DARKORCHID","DARKRED","DARKSALMON","DARKSEAGREEN","DARKSLATEBLUE","DARKSLATEGRAY","DARKSLATEGREY","DARKTURQUOISE","DARKVIOLET","DEEPPINK","DEEPSKYBLUE","DIMGRAY","DIMGREY","DODGERBLUE","FIREBRICK","FLORALWHITE","FORESTGREEN","FUCHSIA","GAINSBORO","GHOSTWHITE","GOLD","GOLDENROD","GRAY","GREEN","GREENYELLOW","GREY","HONEYDEW","HOTPINK","INDIANRED","INDIGO","IVORY","KHAKI","LAVENDER","LAVENDERBLUSH","LAWNGREEN","LEMONCHIFFON","LIGHTBLUE","LIGHTCORAL","LIGHTCYAN","LIGHTGOLDENRODYELLOW","LIGHTGRAY","LIGHTGREEN","LIGHTGREY","LIGHTPINK","LIGHTSALMON","LIGHTSEAGREEN","LIGHTSKYBLUE","LIGHTSLATEGRAY","LIGHTSLATEGREY","LIGHTSTEELBLUE","LIGHTYELLOW","LIME","LIMEGREEN","LINEN","MAGENTA","MAROON","MEDIUMAQUAMARINE","MEDIUMBLUE","MEDIUMORCHID","MEDIUMPURPLE","MEDIUMSEAGREEN","MEDIUMSLATEBLUE","MEDIUMSPRINGGREEN","MEDIUMTURQUOISE","MEDIUMVIOLETRED","MIDNIGHTBLUE","MINTCREAM","MISTYROSE","MOCCASIN","NAVAJOWHITE","NAVY","OLDLACE","OLIVE","OLIVEDRAB","ORANGE","ORANGERED","ORCHID","PALEGOLDENROD","PALEGREEN","PALETURQUOISE","PALEVIOLETRED","PAPAYAWHIP","PEACHPUFF","PERU","PINK","PLUM","POWDERBLUE","PURPLE","REBECCAPURPLE","RED","ROSYBROWN","ROYALBLUE","SADDLEBROWN","SALMON","SANDYBROWN","SEAGREEN","SEASHELL","SIENNA","SILVER","SKYBLUE","SLATEBLUE","SLATEGRAY","SLATEGREY","SNOW","SPRINGGREEN","STEELBLUE","TAN","TEAL","THISTLE","TOMATO","TURQUOISE","VIOLET","WHEAT","WHITE","WHITESMOKE","YELLOW","YELLOWGREEN","backgroundClip","parse","backgroundColor","parseColorStop","stop","processColorStops","stops","lineLength","first","last","processStops","previous","stop_1","absoluteValue","gapBegin","stop_2","gapLength","gapValue","calculateGradientDirection","radian","corner","centerX","centerY","atan2","getAngleFromCorner","abs","sin","cos","halfWidth","halfHeight","halfLineLength","yDiff","xDiff","distance","sqrt","findCorner","closest","reduce","stat","cx","cy","optimumDistance","optimumCorner","Infinity","prefixLinearGradient","angle$1","firstToken","colorStop","CLOSEST_SIDE","FARTHEST_SIDE","CLOSEST_CORNER","FARTHEST_CORNER","CIRCLE","ELLIPSE","COVER","CONTAIN","prefixRadialGradient","shape","size","position","isColorStop","acc","image","image_1","cache","addImage","imageFunction","SUPPORTED_IMAGE_FUNCTIONS","BACKGROUND_SIZE","isAtPosition_1","backgroundImage","isSupportedImage","backgroundOrigin","backgroundPosition","backgroundRepeat","parseBackgroundRepeat","LINE_BREAK","backgroundSize","isBackgroundSizeInfoToken","borderColorForSide","side","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderRadiusForSide","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","borderStyleForSide","style","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderWidthForSide","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","direction","display","bit","parseDisplayValue","float","letterSpacing","WORD_BREAK","STRICT","NORMAL","lineHeight","computeLineHeight","fontSize","listStyleImage","listStylePosition","listStyleType","marginForSide","marginTop","marginRight","marginBottom","marginLeft","overflow","overflowWrap","paddingForSide","paddingTop","paddingRight","paddingBottom","paddingLeft","textAlign","textShadow","shadow","offsetX","offsetY","blur","textTransform","transform$1","transformFunction","SUPPORTED_TRANSFORM_FUNCTIONS","matrix","matrix3d","b1","b2","a4","b4","DEFAULT_VALUE","DEFAULT","transformOrigin","origins","visibility","BREAK_ALL","KEEP_ALL","zIndex","auto","order","time","opacity","textDecorationColor","textDecorationLine","line","fontFamily","accumulator","results","toString","fontWeight","fontVariant","fontStyle","contains","content","counterIncrement","increments","filtered","counter","increment","counterReset","resets","reset","duration","quotes","open_1","close_1","open","close","getQuote","depth","quote","boxShadow","spread","inset","paintOrder","layers","webkitTextStrokeColor","webkitTextStrokeWidth","CSSParsedDeclaration","declaration","animationDuration","cssFloat","overflowTuple","overflowX","overflowY","textDecoration","transform","isVisible","isTransformed","isPositioned","isPositionedWithZIndex","isFloating","isInlineLevel","CSSParsedPseudoDeclaration","CSSParsedCounterDeclaration","descriptor","parser","length_1","value_1","isDebugging","element","elementType","getAttribute","getElementDebugType","ElementContainer","textNodes","elements","styles","window","getComputedStyle","isHTMLElementNode","some","bounds","chars$1","lookup$1","i$1","slice16","UTRIE2_DATA_BLOCK_LENGTH","UTRIE2_INDEX_1_OFFSET","UTRIE2_INDEX_2_BLOCK_LENGTH","chars","lookup","PseudoElementType","L","V","LV","LVT","UnicodeTrie","decode","polyUint32Array","polyUint16Array","createTrieFromBase64","BREAK_NOT_ALLOWED","codePointToClass","_graphemeBreakAtIndex","_codePoints","countRI","GraphemeBreaker","toCodePoints","lastEnd","graphemeBreak","isGreenPixel","createForeignObjectSVG","xmlns","svg","document","createElementNS","foreignObject","setAttributeNS","appendChild","loadSerializedSVG$1","img","Image","onload","onerror","src","encodeURIComponent","XMLSerializer","serializeToString","FEATURES","SUPPORT_RANGE_BOUNDS","createRange","range","testElement","createElement","TEST_HEIGHT","selectNode","rangeBounds","rangeHeight","removeChild","testRangeBounds","SUPPORT_WORD_BREAKING","wordSpacing","innerHTML","firstChild","textList","offset","supports","every","text","setStart","setEnd","boundAhead","testIOSLineBreak","SUPPORT_SVG_DRAWING","canvas","ctx","getContext","drawImage","toDataURL","testSVG","SUPPORT_FOREIGNOBJECT_DRAWING","fillStyle","fillRect","greenImageSrc","getImageData","catch","testForeignObject","SUPPORT_CORS_IMAGES","crossOrigin","SUPPORT_RESPONSE_TYPE","XMLHttpRequest","responseType","SUPPORT_CORS_XHR","SUPPORT_NATIVE_TEXT_SEGMENTATION","Intl","Segmenter","TextBounds","getWrapperBounds","ownerDocument","wrapper","cloneNode","parentNode","replaceChild","segmentGraphemes","segmenter","granularity","segment","bk","breaker","graphemes","splitGraphemes","breakText","breakWords","segmentWords","wordSeparators","nextIndex","LineBreaker","words","_loop_1","word_1","TextContainer","textBounds","trim","clientRects","getClientRects","subSegments","subOffset_1","subSegment","replacementNode","splitText","parseTextBounds","CAPITALIZE","capitalize","m","p1","p2","ImageElementContainer","_super","_this","currentSrc","intrinsicWidth","naturalWidth","intrinsicHeight","naturalHeight","CanvasElementContainer","SVGElementContainer","setAttribute","baseVal","LIElementContainer","OLElementContainer","reversed","CHECKBOX_BORDER_RADIUS","RADIO_BORDER_RADIUS","CHECKBOX","RADIO","PASSWORD","INPUT_COLOR","InputElementContainer","input","checked","placeholder","SelectElementContainer","option","selectedIndex","TextareaElementContainer","IFrameElementContainer","iframe","contentWindow","documentElement","tree","parseTree","documentBackgroundColor","bodyBackgroundColor","LIST_OWNERS","parseNodeTree","childNode","nextNode","nextSibling","isTextNode","isElementNode","isSlotElement","assignedNodes","container","createContainer","createsRealStackingContext","createsStackingContext","tagName","slot","shadowRoot","isTextareaElement","isSVGElement","isSelectElement","isImageElement","isCanvasElement","isLIElement","isOLElement","isInputElement","isIFrameElement","isBodyElement","nodeType","Node","TEXT_NODE","ELEMENT_NODE","isSVGElementNode","className","isVideoElement","isStyleElement","isCustomElement","CounterState","counters","getCounterValue","getCounterValues","canReset","entry","counterNames","ROMAN_UPPER","ARMENIAN","HEBREW","GEORGIAN","createAdditiveCounter","symbols","fallback","suffix","createCounterText","string","integer","createCounterStyleWithSymbolResolver","codePointRangeLength","isNumeric","resolver","createCounterStyleFromRange","codePointRangeStart","codePointRangeEnd","floor","createCounterStyleFromSymbols","createCJKCounter","numbers","multipliers","negativeSign","tmp","coefficient","CHINESE_INFORMAL_MULTIPLIERS","CHINESE_FORMAL_MULTIPLIERS","JAPANESE_NEGATIVE","KOREAN_NEGATIVE","appendSuffix","defaultSuffix","cjkSuffix","koreanSuffix","spaceSuffix","CJK_TEN_COEFFICIENTS","CJK_ZEROS","IGNORE_ATTRIBUTE","DocumentCloner","scrolledElements","referenceElement","quoteDepth","toIFrame","windowSize","createIFrameContainer","scrollX","defaultView","pageXOffset","scrollY","pageYOffset","cloneWindow","documentClone","iframeLoad","iframeLoader","onclone","restoreNodeScroll","scrollTo","test","navigator","userAgent","logger","warn","clonedReferenceElement","nodeName","fonts","ready","imagesReady","serializeDoctype","doctype","restoreOwnerScroll","adoptNode","createElementClone","createCanvasClone","createVideoClone","createStyleClone","clone","srcset","loading","createCustomElementClone","copyCSSStyles","sheet","cssRules","css","rule","cssText","textContent","inlineImages","info","clonedCanvas","clonedCtx","allowTaint","putImageData","gl","attribs","getContextAttributes","preserveDrawingBuffer","video","offsetWidth","offsetHeight","blankCanvas","appendChildNode","child","copyStyles","hasAttribute","ignoreElements","cloneChildNodes","assignedNode","createTextNode","transitionProperty","styleBefore","styleAfter","createPseudoHideStyles","resolvePseudoContent","BEFORE","insertBefore","after","AFTER","scrollTop","scrollLeft","pseudoElt","anonymousReplacedElement","attr","counterStyle","counterState","counterType","delim","counterStates","counterType_1","separator","PSEUDO_HIDE_ELEMENT_CLASS_BEFORE","PSEUDO_HIDE_ELEMENT_CLASS_AFTER","newClassName","baseValue","destroy","CORNER","cloneIframeContainer","border","scrolling","imageReady","complete","all","images","interval","setInterval","childNodes","readyState","clearInterval","ignoredStyleProperties","target","property","item","setProperty","getPropertyValue","internalSubset","publicId","systemId","PSEUDO_HIDE_ELEMENT_STYLE","createStyles","CacheStorage","getOrigin","link","_link","href","protocol","hostname","port","isSameOrigin","_origin","setContext","location","Cache","_options","_cache","isBlobImage","isRenderable","loadImage","match","useCORS","useProxy","isInlineImage","proxy","debug","isInlineBase64Image","setTimeout","imageTimeout","xhr","status","response","reader_1","FileReader","addEventListener","readAsDataURL","queryString","timeout_1","timeout","ontimeout","send","INLINE_SVG","INLINE_BASE64","INLINE_IMG","isSVG","substr","Vector","deltaX","deltaY","lerp","BezierCurve","startControl","endControl","subdivide","firstHalf","ab","bc","cd","abbc","bccd","dest","reverse","isBezierCurve","path","BoundCurves","tlh","tlv","trh","trv","_c","brh","brv","_d","blh","blv","factors","maxFactor","topWidth","rightHeight","bottomWidth","leftHeight","topLeftBorderDoubleOuterBox","getCurvePoints","TOP_LEFT","topRightBorderDoubleOuterBox","TOP_RIGHT","bottomRightBorderDoubleOuterBox","BOTTOM_RIGHT","bottomLeftBorderDoubleOuterBox","BOTTOM_LEFT","topLeftBorderDoubleInnerBox","topRightBorderDoubleInnerBox","bottomRightBorderDoubleInnerBox","bottomLeftBorderDoubleInnerBox","topLeftBorderStroke","topRightBorderStroke","bottomRightBorderStroke","bottomLeftBorderStroke","topLeftBorderBox","topRightBorderBox","bottomRightBorderBox","bottomLeftBorderBox","topLeftPaddingBox","topRightPaddingBox","bottomRightPaddingBox","bottomLeftPaddingBox","topLeftContentBox","topRightContentBox","bottomRightContentBox","bottomLeftContentBox","r1","r2","kappa","ox","oy","xm","ym","calculateBorderBoxPath","curves","calculatePaddingBoxPath","TransformEffect","ClipEffect","OpacityEffect","isClipEffect","effect","equalPath","StackingContext","inlineLevel","nonInlineLevel","negativeZIndex","zeroOrAutoZIndexOrTransformedOrOpacity","positiveZIndex","nonPositionedFloats","nonPositionedInlineLevel","ElementPaint","effects","borderBox","paddingBox","getEffects","inFlow","croplessEffects","parseStackTree","stackingContext","realStackingContext","listItems","treatAsRealStackingContext","paintContainer","listOwnerItems","parentStack","stack","order_1","index_1","index_2","processListItems","owner","numbering","listValue","parsePathForBorder","borderSide","createPathFromCurves","createStrokePathFromCurves","outer1","outer2","inner1","inner2","contentBox","calculateBackgroundRendering","intrinsicSize","backgroundPositioningArea","calculateBackgroundPositioningArea","getBackgroundValueForIndex","backgroundPaintingArea","calculateBackgroundPaintingArea","backgroundImageSize","calculateBackgroundSize","sizeWidth","sizeHeight","calculateBackgroundRepeatPath","isAuto","AUTO","hasIntrinsicValue","intrinsicProportion","second","hasIntrinsicProportion","hasIntrinsicWidth","hasIntrinsicHeight","hasIntrinsicDimensions","width_3","height_3","SAMPLE_TEXT","FontMetrics","_data","_document","parseMetrics","span","margin","padding","whiteSpace","verticalAlign","baseline","offsetTop","middle","getMetrics","Renderer","CanvasRenderer","_activeEffects","scale","fontMetrics","translate","textBaseline","applyEffects","popEffect","applyEffect","save","isOpacityEffect","globalAlpha","isTransformEffect","clip","restore","renderStack","renderStackContent","renderNode","paint","renderNodeBackgroundAndBorders","renderNodeContent","renderTextWithLetterSpacing","fillText","letter","measureText","createFontStyle","variant","fixIOSSystemFonts","renderTextNode","font","paintOrderLayer","textShadows","shadowColor","shadowOffsetX","shadowOffsetY","shadowBlur","strokeStyle","lineWidth","lineJoin","chrome","strokeText","renderReplacedElement","box","render","fill","beginPath","arc","isTextInputElement","canvasTextAlign","_e","_f","_g","_h","_j","_k","_l","_m","_o","_p","mask","paths","moveTo","lineTo","formatPath","closePath","point","bezierCurveTo","renderRepeat","pattern","resizeImage","renderBackgroundImage","this_1","x0","x1","y0","y1","gradient_1","top_1","rx","ry","radialGradient_1","midX","midY","invF","createPattern","createLinearGradient","addColorStop","background","isRadialGradient","gradient","calculateRadius","createRadialGradient","renderSolidBorder","curvePoints","renderDoubleBorder","outerPaths","innerPaths","parsePathForBorderDoubleOuter","parsePathForBorderDoubleInner","hasBackground","borders","borders_1","calculateBackgroundCurvedPaintingArea","deltaW","deltaH","borderBoxArea","maskOffset","shadowPaintingArea","renderDashedDottedBorder","strokePaths","boxPaths","startX","startY","endX","endY","dashLength","spaceLength","useLineDash","multiplier","numberOfDashes","minSpace","maxSpace","path1","path2","parsePathForBorderStroke","setLineDash","lineCap","stroke","calculateContentBoxPath","iOSBrokenFonts","fontFamilies","ForeignObjectRenderer","loadSerializedSVG","Logger","id","enabled","now","console","getTime","instances","Context","instanceName","instanceCount","logging","renderElement","resourceOptions","contextOptions","windowOptions","foreignObjectRendering","cloneOptions","documentCloner","clonedElement","renderOptions","_q","_r","_s","_t","_u","windowWidth","innerWidth","windowHeight","innerHeight","scrollWidth","clientWidth","scrollHeight","clientHeight","parseDocumentSize","parseBackgroundColor","devicePixelRatio","removeContainer","backgroundColorOverride","defaultBackgroundColor","_EventStream_instances","_EventStream_connectedPromise","_EventStream_resolveConnectedPromise","_EventStream_rejectConnectedPromise","_EventStream_endPromise","_EventStream_resolveEndPromise","_EventStream_rejectEndPromise","_EventStream_listeners","_EventStream_ended","_EventStream_errored","_EventStream_aborted","_EventStream_catchingPromiseCreated","_EventStream_handleError","__classPrivateFieldSet","receiver","state","__classPrivateFieldGet","EventStream","error_1","controller","AbortController","_run","executor","_emitFinal","_emit","bind","_connected","ended","errored","aborted","abort","on","event","listener","off","listeners","findIndex","once","emitted","WeakSet","APIUserAbortError","OpenAIError","openAIError","cause","__createBinding","o","k","k2","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","__setModuleDefault","__importStar","mod","ResponseItemsPage","Responses","ResponsesParser_1","core_1","resource_1","InputItemsAPI","input_items_1","ResponseStream_1","pagination_1","APIResource","super","inputItems","InputItems","_client","post","stream","_thenUnwrap","rsp","addOutputText","retrieve","responseId","query","isRequestOptions","del","delete","headers","Accept","responses","parseResponse","ResponseStream","createResponse","CursorPage","_AbstractChatCompletionRunner_instances","_AbstractChatCompletionRunner_getFinalContent","_AbstractChatCompletionRunner_getFinalMessage","_AbstractChatCompletionRunner_getFinalFunctionCall","_AbstractChatCompletionRunner_getFinalFunctionCallResult","_AbstractChatCompletionRunner_calculateTotalUsage","_AbstractChatCompletionRunner_validateParams","_AbstractChatCompletionRunner_stringifyFunctionCallResult","AbstractChatCompletionRunner","RunnableFunction_1","chatCompletionUtils_1","EventStream_1","parser_1","DEFAULT_MAX_CHAT_COMPLETIONS","_chatCompletions","messages","_addChatCompletion","chatCompletion","choices","_addMessage","emit","isFunctionMessage","isToolMessage","isAssistantMessage","function_call","tool_calls","tool_call","function","finalChatCompletion","completion","finalContent","finalMessage","finalFunctionCall","finalFunctionCallResult","totalUsage","allChatCompletions","usage","_createChatCompletion","client","params","signal","chat","completions","parseChatCompletion","_runChatCompletion","_runFunctions","role","restParams","singleFunctionToCall","maxChatCompletions","functionsByName","functions","parameters","description","fn","JSON","parsed","isRunnableFunctionWithParse","rawContent","_runTools","tool_choice","inputTools","tools","tool","isAutoParsableTool","$callback","$parseRaw","strict","tool_call_id","rest","ret","refusal","at","total","completion_tokens","prompt_tokens","total_tokens","Embeddings","Audio","SpeechAPI","speech_1","TranscriptionsAPI","transcriptions_1","TranslationsAPI","translations_1","transcriptions","Transcriptions","translations","Translations","speech","Speech","Chat","CompletionsAPI","Completions","formats","RFC1738","RFC3986","default","stringify_1","FileObjectsPage","Files","core_2","Core","multipartFormRequestOptions","fileId","list","getAPIList","__binaryResponse","retrieveContent","waitForProcessing","pollInterval","maxWait","TERMINAL_STATES","Set","file","sleep","APIConnectionTimeoutError","atob","globalThis","btoa","RealtimeUtils","floatTo16BitPCM","float32Array","DataView","setInt16","base64ToArrayBuffer","binaryString","arrayBufferToBase64","arrayBuffer","Float32Array","Int16Array","binary","subarray","mergeInt16Arrays","right","newValues","generateId","random","RealtimeEventHandler","eventHandlers","nextEventHandlers","clearEventHandlers","eventName","callback","onNext","handlers","offNext","nextHandlers","waitForNext","t0","nextEvent","dispatch","handler","nextHandler","RealtimeAPI","apiKey","dangerouslyAllowAPIKeyInBrowser","defaultUrl","ws","isConnected","log","logs","connect","model","WebSocket","receive","connectionErrorHandler","disconnect","removeEventListener","moduleName","import","finishRequest","request","setHeader","removeListener","event_id","RealtimeConversation","defaultFrequency","EventProcessors","newItem","itemLookup","items","formatted","audio","transcript","queuedSpeechItems","includes","queuedTranscriptItems","queuedInputAudio","call_id","output","item_id","audio_end_ms","endIndex","content_index","formattedTranscript","audio_start_ms","inputAudioBuffer","startIndex","responseLookup","response_id","foundItem","part","appendValues","clear","queueInputAudio","inputAudio","processEvent","eventProcessor","getItem","getItems","RealtimeClient","defaultSessionConfig","modalities","instructions","voice","input_audio_format","output_audio_format","input_audio_transcription","turn_detection","temperature","max_response_output_tokens","sessionConfig","transcriptionModels","defaultServerVadConfig","threshold","prefix_padding_ms","silence_duration_ms","realtime","conversation","_resetConfig","_addAPIEventHandlers","sessionCreated","realtimeEvent","source","handlerWithDispatch","callTool","jsonArguments","toolConfig","updateSession","waitForSessionCreated","getTurnDetectionType","addTool","definition","removeTool","deleteItem","useTools","toolDefinition","session","sendUserMessageContent","appendInputAudio","byteLength","cancelResponse","sampleCount","audioIndex","waitForNextItem","waitForNextCompletedItem","FineTuningJobEventsPage","FineTuningJobsPage","Jobs","CheckpointsAPI","checkpoints_1","checkpoints","Checkpoints","fineTuningJobId","cancel","listEvents","FineTuningJobCheckpointsPage","RunsPage","Runs","AssistantStream_1","StepsAPI","steps_1","steps","Steps","threadId","include","runId","update","createAndPoll","run","poll","createAndStream","AssistantStream","createAssistantStream","beta","threads","runs","pollIntervalMs","withResponse","sleepInterval","headerInterval","headerIntervalMs","isNaN","submitToolOutputs","submitToolOutputsAndPoll","submitToolOutputsStream","createToolAssistantStream","RunStepsPage","UnprocessableEntityError","PermissionDeniedError","InternalServerError","AuthenticationError","BadRequestError","RateLimitError","ConflictError","NotFoundError","APIConnectionError","APIError","toFile","AzureOpenAI","OpenAI","qs","Errors","Uploads","API","batches_1","completions_1","embeddings_1","files_1","images_1","models_1","moderations_1","audio_1","beta_1","chat_1","fine_tuning_1","responses_1","uploads_1","vector_stores_1","completions_2","APIClient","baseURL","readEnv","organization","project","dangerouslyAllowBrowser","isRunningInBrowser","httpAgent","maxRetries","embeddings","files","Images","moderations","Moderations","models","Models","fineTuning","FineTuning","vectorStores","VectorStores","Beta","batches","Batches","uploads","defaultQuery","defaultHeaders","authHeaders","Authorization","stringifyQuery","DEFAULT_TIMEOUT","ChatCompletionsPage","ModelsPage","VectorStoresPage","VectorStoreSearchResponsesPage","BatchesPage","apiVersion","endpoint","deployment","azureADTokenProvider","API_KEY_SENTINEL","process","env","_azureADTokenProvider","deploymentName","buildRequest","props","_deployments_endpoints","method","isObj","__metadata","_getAzureADToken","prepareOptions","uploads_2","shims","setShims","Page","AbstractPage","getPaginatedItems","nextPageParams","nextPageInfo","has_more","hasNextPage","fromEntries","searchParams","batchId","Threads","MessagesAPI","messages_1","RunsAPI","runs_1","Messages","createAndRun","createAndRunPoll","thread_id","createAndRunStream","createThreadAssistantStream","MessagesPage","ChatCompletionStoreMessagesPage","AssistantsPage","Assistants","assistantId","PartsAPI","parts_1","parts","Parts","uploadId","completionId","VectorStoreFilesPage","FileBatches","Util_1","vectorStoreId","batch","listFiles","uploadAndPoll","fileIds","configuredConcurrency","maxConcurrency","concurrencyLimit","fileIterator","allFileIds","workers","fileObj","purpose","allSettledWithThrow","file_ids","promises","allSettled","reason","validateInputTools","hasAutoParseableInput","shouldParseToolCall","maybeParseChatCompletion","makeParseableTool","isAutoParsableResponseFormat","makeParseableTextFormat","makeParseableResponseFormat","response_format","choice","finish_reason","LengthFinishReasonError","ContentFilterFinishReasonError","toolCall","inputTool","parsed_arguments","parseToolCall","parseResponseFormat","defineProperties","$brand","JobsAPI","jobs_1","jobs","MalformedJSON","PartialJSON","partialParse","jsonString","allowPartial","ATOM","allow","markPartialJSON","msg","throwMalformedError","parseAny","skipBlank","parseStr","parseObj","parseArr","startsWith","NaN","parseNum","escape","charAt","Number","lastIndexOf","_parseJSON","parseJSON","Allow","Realtime","SessionsAPI","sessions_1","sessions","Sessions","FileContentResponsesPage","fileResponse","upload","fileInfo","file_id","__exportStar","createForm","maybeMultipartFormRequestOptions","isMultipartBody","isUploadable","isBlobLike","isFileLike","isResponseLike","blob","URL","pathname","split","bits","isView","isAsyncIterableIterator","getOwnPropertyNames","propsForError","getBytes","getStringFromMaybeBuffer","filename","getName","lastModified","Buffer","asyncIterator","toStringTag","hasUploadableValue","entries","addFormValue","append","prop","FileBatchesAPI","file_batches_1","FilesAPI","fileBatches","search","ChatCompletionRunner","AbstractChatCompletionRunner_1","runFunctions","runner","runTools","ParsingToolFunction","ParsingFunction","_ChatCompletionStream_instances","_ChatCompletionStream_params","_ChatCompletionStream_choiceEventStates","_ChatCompletionStream_currentChatCompletionSnapshot","_ChatCompletionStream_beginRequest","_ChatCompletionStream_getChoiceEventState","_ChatCompletionStream_addChunk","_ChatCompletionStream_emitToolCallDoneEvent","_ChatCompletionStream_emitContentDoneEvents","_ChatCompletionStream_endRequest","_ChatCompletionStream_getAutoParseableResponseFormat","_ChatCompletionStream_accumulateChatCompletion","ChatCompletionStream","streaming_1","parser_2","currentChatCompletionSnapshot","fromReadableStream","_fromReadableStream","createChatCompletion","readableStream","Stream","chatId","content_done","refusal_done","logprobs_content_done","logprobs_refusal_done","done_tool_calls","current_tool_call_index","choiceSnapshot","snapshot","logprobs","toolCallDelta","toolCallSnapshot","arguments_delta","toolCallIndex","responseFormat","created","system_fingerprint","choiceRest","messageRest","toolRest","fnRest","finalizeChatCompletion","other","pushQueue","readQueue","reader","err","return","toReadableStream","VERSION","messageId","AssistantsAPI","ChatAPI","assistants_1","realtime_1","ThreadsAPI","threads_1","assistants","isPresent","HarmCategory","HarmBlockThreshold","HarmProbability","BlockReason","FinishReason","TaskType","Task","GoogleGenerativeAIError","GoogleGenerativeAIResponseError","RequestUrl","task","makeRequest","requestOptions","fetchOptions","abortController","buildFetchOptions","ok","json","details","statusText","addHelpers","candidates","hadBadFinishReason","formatBlockErrorMessage","getText","promptFeedback","badFinishReasons","RECITATION","SAFETY","candidate","finishReason","firstCandidate","finishMessage","blockReason","blockReasonMessage","__await","SuppressedError","responseLineRE","getResponsePromise","allResponses","getReader","aggregateResponses","generateResponseSequence","q","resume","fulfill","settle","__asyncGenerator","lastResponse","aggregatedResponse","citationMetadata","safetyRatings","generateContentStream","STREAM_GENERATE_CONTENT","responseStream","inputStream","currentText","pump","parsedResponse","enqueue","getResponseStream","pipeThrough","TextDecoderStream","fatal","stream1","stream2","tee","processStream","generateContent","GENERATE_CONTENT","formatNewContent","newParts","partOrString","formatGenerateContentInput","contents","SILENT_ERROR","ChatSession","_history","_sendPromise","_apiKey","history","getHistory","sendMessage","newContent","generateContentRequest","safetySettings","generationConfig","finalResult","responseContent","blockErrorMessage","sendMessageStream","streamPromise","_ignored","streamResult","GenerativeModel","modelParams","formattedParams","startChat","startChatParams","countTokens","COUNT_TOKENS","embedContent","EMBED_CONTENT","batchEmbedContents","batchEmbedContentRequest","BATCH_EMBED_CONTENTS","requestsWithModel","requests","GoogleGenerativeAI","getGenerativeModel","_ResponseStream_instances","_ResponseStream_params","_ResponseStream_currentResponseSnapshot","_ResponseStream_finalResponse","_ResponseStream_beginRequest","_ResponseStream_addEvent","_ResponseStream_endRequest","_ResponseStream_accumulateResponse","_createResponse","output_index","maybeParseResponse","finalizeResponse","finalResponse","ReadableStreamToAsyncIterable","releaseLock","cancelPromise","_iterSSEMessages","line_1","stream_utils_1","error_2","fromSSEResponse","consumed","sse","raw","lineDecoder","LineDecoder","iter","flush","iterLines","teeIterator","queue","self","TextEncoder","pull","ctrl","sseDecoder","SSEDecoder","sseChunk","binaryChunk","patternIndex","newData","findDoubleNewlineIndex","iterSSEChunks","chunks","endsWith","fieldname","partition","createVariation","edit","generate","ChatCompletionStreamingRunner","ChatCompletionStream_1","stepId","makeParseableResponseTool","parseTextFormat","text_format","getInputToolByName","input_tools","texts","output_text","output_parsed","ChatCompletionRunner_1","ChatCompletionStreamingRunner_1","ChatCompletionStreamingRunner_2","ChatCompletionStream_2","ChatCompletionRunner_2","getReactHooks","React","useState","useEffect","useRef","geminiFlash","NEXT_PUBLIC_OPENAI_API_KEY","customPrompt","shortcutKey","bottom","onError","setStatus","setResponse","isClient","setIsClient","componentPosition","isHighlighting","setIsHighlighting","hasInteracted","setHasInteracted","componentRef","openaiClientRef","realtimeClientRef","screenshotRef","audioContextRef","outputAudioBufferRef","audioChunksRef","isPlayingAudioRef","screenshotAnalysisRef","mediaRecorderRef","localStorage","highlightElement","selector","querySelector","animation","clickEffectContainer","clickRipple","clickDot","htmlElement","originalBoxShadow","originalTransition","transition","originalZIndex","clickEvent","MouseEvent","bubbles","cancelable","dispatchEvent","remove","properties","fullResponse","audioBuffer","playAudioBuffer","AudioContext","sampleRate","int16View","floatArray","createBuffer","getChannelData","createBufferSource","gainNode","createGain","gain","lowPassFilter","createBiquadFilter","frequency","Q","destination","onended","handleKeyDown","metaKey","ctrlKey","preventDefault","handleToggleRecording","setItem","startRecording","stopRecording","dataUrl","analyzeScreenshot","mediaDevices","getUserMedia","echoCancellation","noiseSuppression","autoGainControl","channelCount","sampleSize","audioCtxError","supportedType","MediaRecorder","isTypeSupported","mimeType","audioBitsPerSecond","ondataavailable","onstart","onstop","processScreenshot","getTracks","track","startTime","performance","imagePrompt","onloadend","base64Image","base64Data","imagePart","inlineData","geminiResponse","screenDescription","endTime","transcription","transcriptionPromise","fileExtension","audioBlob","audioFile","language","transcriptionResult","ref","onClick","title","combine","is_regexp","compact","assign_single_source","merge","hex_table","array","plainObjects","allowPrototypes","mergeTarget","array_to_object","targetItem","strWithoutPlus","unescape","decodeURIComponent","limit","_defaultEncoder","_kind","$0","out","refs","val","compacted","compact_queue","isBuffer","mapped","_AbstractPage_client","toBase64","getHeader","getRequiredHeader","isHeadersProtocol","hasOwn","isEmptyObj","maybeCoerceBoolean","maybeCoerceFloat","maybeCoerceInteger","coerceBoolean","coerceFloat","coerceInteger","ensurePresent","castToError","safeJSON","createResponseHeaders","PagePromise","APIPromise","version_1","defaultParseResponse","__streamClass","contentType","mediaType","_addRequestID","responsePromise","asResponse","request_id","parsedPromise","onfulfilled","onrejected","onfinally","finally","overriddenFetch","validatePositiveInteger","getUserAgent","getPlatformHeaders","validateHeaders","customHeaders","defaultIdempotencyKey","uuid4","methodRequest","patch","put","requestAPIList","calculateContentLength","retryCount","__binaryRequest","contentLength","buildURL","minAgentTimeout","idempotencyHeader","idempotencyKey","req","buildHeaders","agent","reqHeaders","applyHeadersMut","prepareRequest","parseHeaders","header","makeStatusError","remainingRetries","optionsInput","retriesRemaining","fetchWithTimeout","retryRequest","responseHeaders","shouldRetry","errText","errJSON","errMessage","isAbsoluteURL","init","ms","clearTimeout","shouldRetryHeader","timeoutMillis","retryAfterMillisHeader","timeoutMs","parseFloat","retryAfterHeader","timeoutSeconds","calculateDefaultRetryTimeoutMillis","numRetries","getNextPage","nextInfo","nextOptions","iterPages","page","Proxy","requestOptionsKeys","normalizeArch","arch","normalizePlatform","platform","_platformHeaders","Deno","build","os","version","deno","EdgeRuntime","browserInfo","browserPatterns","exec","browser","getBrowserInfo","getPlatformProperties","startsWithSchemeRegexp","isInteger","targetHeaders","newHeaders","lowerKey","Boolean","SENSITIVE_HEADERS","action","modifiedArgs","modifiedArg","foundHeader","lowerCasedHeader","intercapsHeader","g1","g2","_AssistantStream_instances","_AssistantStream_events","_AssistantStream_runStepSnapshots","_AssistantStream_messageSnapshots","_AssistantStream_messageSnapshot","_AssistantStream_finalRun","_AssistantStream_currentContentIndex","_AssistantStream_currentContent","_AssistantStream_currentToolCallIndex","_AssistantStream_currentToolCall","_AssistantStream_currentEvent","_AssistantStream_currentRunSnapshot","_AssistantStream_currentRunStepSnapshot","_AssistantStream_addEvent","_AssistantStream_endRequest","_AssistantStream_handleMessage","_AssistantStream_handleRunStep","_AssistantStream_handleEvent","_AssistantStream_accumulateRunStep","_AssistantStream_accumulateMessage","_AssistantStream_accumulateContent","_AssistantStream_handleRun","_addRun","_runToolAssistantStream","_createToolAssistantStream","thread","_threadAssistantStream","_runAssistantStream","currentEvent","currentRun","currentMessageSnapshot","currentRunStepSnapshot","finalRunSteps","finalMessages","finalRun","_createThreadAssistantStream","_createAssistantStream","accumulateDelta","deltaValue","accValue","deltaEntry","accEntry","accumulatedMessage","snapshotContent","textDelta","image_file","currentContent","accumulatedRunStep","step_details","accumulated","contentElement","makeMessage","code","param","errorResponse","_LineDecoder_carriageReturnIndex","lines","findNewlineIndex","carriage","decodeText","preceding","TextDecoder","textDecoder","NEWLINE_CHARS","NEWLINE_REGEXP","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","__webpack_exports__"],"sourceRoot":""}