@pacem/pacem 1.0.0-euler → 1.0.0-galois
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.
- package/dist/browser/pacem-2d.js +1 -1
- package/dist/browser/pacem-2d.min.js +1 -1
- package/dist/browser/pacem-3d.js +4 -2
- package/dist/browser/pacem-3d.js.map +1 -1
- package/dist/browser/pacem-3d.min.js +2 -2
- package/dist/browser/pacem-charts.js +1 -1
- package/dist/browser/pacem-charts.min.js +1 -1
- package/dist/browser/pacem-cms.js +1 -1
- package/dist/browser/pacem-cms.min.js +1 -1
- package/dist/browser/pacem-core.js +1 -1
- package/dist/browser/pacem-core.min.js +1 -1
- package/dist/browser/pacem-foundation.js +1 -1
- package/dist/browser/pacem-foundation.min.js +1 -1
- package/dist/browser/pacem-fx.js +1 -1
- package/dist/browser/pacem-fx.min.js +1 -1
- package/dist/browser/pacem-logging.js +1 -1
- package/dist/browser/pacem-logging.min.js +1 -1
- package/dist/browser/pacem-maps.js +1 -1
- package/dist/browser/pacem-maps.min.js +1 -1
- package/dist/browser/pacem-media.js +1 -1
- package/dist/browser/pacem-media.min.js +1 -1
- package/dist/browser/pacem-networking.js +1 -1
- package/dist/browser/pacem-networking.min.js +1 -1
- package/dist/browser/pacem-numerical.js +1 -1
- package/dist/browser/pacem-numerical.min.js +1 -1
- package/dist/browser/pacem-plus.js +2 -2
- package/dist/browser/pacem-plus.js.map +1 -1
- package/dist/browser/pacem-plus.min.js +2 -2
- package/dist/browser/pacem-scaffolding.js +66 -23
- package/dist/browser/pacem-scaffolding.js.map +1 -1
- package/dist/browser/pacem-scaffolding.min.js +2 -2
- package/dist/browser/pacem-ui.js +47 -34
- package/dist/browser/pacem-ui.js.map +1 -1
- package/dist/browser/pacem-ui.min.js +2 -2
- package/dist/bundle/pacem.min.mjs +144 -144
- package/dist/bundle/pacem.mjs +104 -51
- package/dist/bundle/pacem.mjs.map +2 -2
- package/dist/docs/pacem-ui.json +96 -0
- package/dist/typings/index.d.ts +6 -2
- package/dist/vscode.html-custom.json +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pacem-scaffolding.js","sources":["../esm/types.js","../esm/openapi/types.js","../esm/openapi/swagger.js","../esm/openapi/openapi3.js","../esm/openapi/openapi.js","../esm/l10n.js","../esm/form.js","../esm/types-components.js","../esm/char-counter.js","../esm/contenteditable.js","../esm/contenteditable/types.js","../esm/contenteditable/historycommand.js","../esm/contenteditable/linkcommand.js","../esm/contenteditable/imagecommand.js","../esm/contenteditable/execcommand.js","../esm/contenteditable/utils.js","../esm/contenteditable/aligncommand.js","../esm/contenteditable/placeholdercommand.js","../esm/contenteditable/wrapcommand.js","../esm/calendar-picker.js","../esm/checkbox.js","../esm/checkbox-list.js","../esm/childform.js","../esm/datetime-picker.js","../esm/validators.js","../esm/formfield.js","../esm/geolocate.js","../esm/hierarchy.js","../esm/input.js","../esm/input-chars.js","../esm/input-color.js","../esm/input-email.js","../esm/input-file.js","../esm/input-hidden.js","../esm/snapshot.js","../esm/input-image.js","../esm/input-number.js","../esm/input-password.js","../esm/input-search.js","../esm/input-tel.js","../esm/input-text.js","../esm/input-url.js","../esm/latlng.js","../esm/namevalue-list.js","../esm/property-picker.js","../esm/radio.js","../esm/radio-list.js","../esm/select.js","../esm/slider.js","../esm/suggest.js","../esm/tags.js","../esm/textarea.js","../esm/textarea-markdown.js","../esm/index-iife.js"],"sourcesContent":["import { CustomTypedEvent } from '@pacem/pacem-core';\n/** Event type name (`'change'`) dispatched as a {@link FieldChangeEvent}. */\nexport const FieldChangeEventName = 'change';\n/** Dispatched by a scaffolding field (see `PacemBaseElement.changeHandler` in `types-components.ts`) whenever its `value` actually changes as a result of user interaction; bubbles so an ancestor {@link PacemFormElement}/`PacemFormFieldElement` can react to it. */\nexport class FieldChangeEvent extends CustomTypedEvent {\n constructor(args) {\n super(FieldChangeEventName, args, { bubbles: true, cancelable: false });\n }\n}\n//}\n",";\n/** The primitive kinds an {@link ApiParameter} (or {@link DataField}) can be translated to, used to choose the appropriate auto-generated form field editor. */\nexport var ApiParameterType;\n(function (ApiParameterType) {\n ApiParameterType[\"String\"] = \"string\";\n ApiParameterType[\"Number\"] = \"number\";\n ApiParameterType[\"Datetime\"] = \"datetime\";\n ApiParameterType[\"Boolean\"] = \"boolean\";\n ApiParameterType[\"Binary\"] = \"binary\";\n ApiParameterType[\"Object\"] = \"object\";\n})(ApiParameterType || (ApiParameterType = {}));\n/** Shared base for the OpenAPI/Swagger parsers: implements the common fetch-then-parse {@link ApiParser.load} flow, leaving the actual schema-to-{@link ApiManifest} translation to derived classes' `parse` implementation. */\nexport class ApiParserBase {\n /**\n * Fetches the API description document from `url` and parses it into an {@link ApiManifest}.\n * @param url Url the API description (OpenAPI/Swagger document) is fetched from.\n * @param headers Optional request headers (e.g. for authentication) sent along with the fetch.\n * @returns The parsed manifest, or `null` if the response could not be retrieved/parsed as JSON.\n */\n async load(url, headers) {\n let resp = await fetch(url, {\n mode: 'cors', credentials: 'omit', headers: headers\n });\n try {\n let json = await resp.json();\n return this.parse(json, url);\n }\n catch (e) {\n return null;\n }\n }\n}\nconst $refPattern = /^#\\/(definitions|components\\/schemas)\\/(.+)$/;\n/**\n * Resolves a `$ref` pointer (e.g. `#/definitions/Foo` or `#/components/schemas/Foo`) against an {@link ApiManifest}'s `definitions` map.\n * @param manifest Manifest whose `definitions` are searched.\n * @param $ref The `$ref` pointer to resolve.\n * @returns The referenced definition's name and schema, or `null` if `$ref` doesn't match the expected pattern.\n */\nexport function getOpenApiDefinition(manifest, $ref) {\n var rec = $refPattern.exec($ref);\n if (rec && rec.length > 2) {\n return { name: rec[2], schema: manifest.definitions[rec[2]] };\n }\n return null;\n}\n//}\n","import { Net } from '@pacem/pacem-core';\nimport { ApiParserBase, ApiParameterType } from './types';\n//namespace Pacem.Scaffolding.OpenApi {\nconst ApiMethod = Net.HttpMethod;\n/** Parses a Swagger (OpenAPI 2.0) document into a format-agnostic {@link ApiManifest}, translating its `paths`/`definitions` into endpoints, resolved schema definitions and parameter types used to auto-generate form fields. */\nexport class SwaggerParser extends ApiParserBase {\n _findDefinitionName(definitionHashTag) {\n var pattern = /#\\/definitions\\/(.+)/;\n var arr = pattern.exec(definitionHashTag);\n if (arr == null || arr.length < 2)\n return definitionHashTag;\n return arr[1];\n }\n /**\n * Parses a Swagger (OpenAPI 2.0) document into an {@link ApiManifest}.\n * @param content The Swagger document, either as a parsed object or as a JSON string.\n * @param url Base url of the API, used to derive `baseUrl` when the document doesn't specify `host`/`schemes`.\n * @returns The parsed manifest, with endpoints and resolved schema definitions.\n */\n parse(content, url) {\n let j = content;\n if (typeof j === 'string') {\n j = JSON.parse(j);\n }\n const json = j;\n let definitions = {};\n for (let def in json.definitions) {\n let name = this._findDefinitionName(def);\n definitions[name] = json.definitions[def];\n }\n let baseUrl = '';\n if (json.host && json.schemes.length > 0) {\n baseUrl = json.schemes[0] + '://' + json.host + json.basePath;\n }\n else if (url) {\n // add scheme, host and basePath just-in-case\n let parsed = /^(https?):\\/\\/([^\\/]+)/.exec(url);\n if (parsed && parsed.length) {\n if (!(json.schemes) && parsed.length > 1) {\n json.schemes = [parsed[1]];\n }\n if (!json.host && parsed.length > 2) {\n json.host = parsed[2];\n json.basePath = '';\n }\n baseUrl = parsed[0];\n }\n }\n else {\n console.warn('Not able to find a base url from the OpenApi specs.');\n }\n let retval = { endpoints: [], definitions: definitions, baseUrl: baseUrl };\n for (let path in json.paths) {\n let src = json.paths[path];\n for (let method of [ApiMethod.Get, ApiMethod.Delete, ApiMethod.Post, ApiMethod.Put]) {\n let op = src[method.toLowerCase()];\n if (op) {\n let endpoint = this._tryGetEndpoint(json, op, path, method);\n retval.endpoints.push(endpoint);\n }\n }\n }\n return retval;\n }\n _tryGetEndpoint(json, op, path, method) {\n return {\n response: this._tryGetResponse(json, op),\n path: path,\n method: method,\n parameters: this._tryGetParameters(json, op)\n };\n }\n _translateType(type, format) {\n switch (type) {\n case 'number':\n case 'integer':\n return ApiParameterType.Number;\n case 'boolean':\n return ApiParameterType.Boolean;\n case 'string':\n switch (format) {\n case 'date':\n case 'date-time':\n return ApiParameterType.Datetime;\n case 'byte':\n return ApiParameterType.Binary;\n case 'binary':\n throw `Binary octets not supported.`;\n }\n return ApiParameterType.String;\n }\n return ApiParameterType.String;\n }\n _tryGetParameters(json, operation) {\n return (operation.parameters || []).map(p => {\n const pb = p;\n let retval = {\n name: pb.name,\n required: pb.required || false\n };\n let type = p.type;\n if (p.schema) {\n let pbody = p;\n retval.type = ApiParameterType.Object;\n let name = retval.fullType = this._findDefinitionName(pbody.schema.$ref);\n retval.meta = json.definitions[name];\n }\n else if (type) {\n retval.type = this._translateType(type, p.format);\n }\n return retval;\n });\n }\n _tryGetResponse(json, operation) {\n let ok = operation.responses['200'];\n if (!ok || !ok.schema)\n return null;\n let type = ok.schema.type || 'object', meta, name;\n if (ok.schema.$ref) {\n name = this._findDefinitionName(ok.schema.$ref);\n meta = json.definitions[name];\n }\n else {\n meta = ok.schema;\n if (ok.schema.items) {\n if (ok.schema.items.hasOwnProperty('$ref')) {\n name = this._findDefinitionName(ok.schema.items.$ref);\n meta = json.definitions[name];\n }\n else {\n meta = ok.schema.items;\n }\n }\n }\n return { type: type, fullType: name, meta: meta };\n }\n}\n","import { Utils } from '@pacem/pacem-core';\nimport { ApiParserBase, ApiParameterType } from './types';\n/** Parses an OpenAPI 3.x document into a format-agnostic {@link ApiManifest}, translating its `paths`/`components.schemas` into endpoints, resolved schema definitions and parameter types used to auto-generate form fields. */\nexport class OpenApi3Parser extends ApiParserBase {\n /**\n * Parses an OpenAPI 3.x document into an {@link ApiManifest}.\n * @param content The OpenAPI 3.x document, either as a parsed object or as a JSON string.\n * @param url Base url of the API, used as the manifest's `baseUrl`.\n * @returns The parsed manifest, with endpoints and resolved schema definitions.\n */\n parse(content, url) {\n let j = content;\n if (typeof j === 'string') {\n j = JSON.parse(j);\n }\n const json = j;\n const endpoints = [];\n const definitions = this._gatherDefinitions(new Map(), json.components.schemas);\n for (let path in json.paths) {\n for (let method in json.paths[path]) {\n const endpoint = json.paths[path][method];\n endpoints.push({\n path,\n method: method.toUpperCase(),\n parameters: this._convertToApiParameters(endpoint.parameters),\n response: this._tryGetResponse(definitions, endpoint.responses)\n });\n }\n }\n return { endpoints, definitions, baseUrl: url };\n }\n _convertToApiParameters(parameters = []) {\n const output = [];\n for (let p of parameters) {\n const schema = p.schema;\n if ('type' in schema) {\n output.push({ name: p.name, required: p.required, type: this._translateType(schema.type, schema['format']) });\n }\n }\n return output;\n }\n _translateType(type, format) {\n switch (type) {\n case 'number':\n case 'integer':\n return ApiParameterType.Number;\n case 'boolean':\n return ApiParameterType.Boolean;\n case 'string':\n switch (format) {\n case 'date':\n case 'date-time':\n return ApiParameterType.Datetime;\n case 'byte':\n return ApiParameterType.Binary;\n case 'binary':\n throw `Binary octets not supported.`;\n }\n return ApiParameterType.String;\n }\n return ApiParameterType.String;\n }\n _gatherDefinitions(memoizer, schemas) {\n const retval = {};\n for (let schema in schemas) {\n retval[schema] = this._findDefinition(memoizer, schemas, schema);\n }\n return retval;\n }\n _findDefinition(memoizer, schemas, type) {\n if (memoizer.has(type)) {\n return memoizer.get(type);\n }\n if (type in schemas) {\n // is that enough?\n const retval = schemas[type];\n memoizer.set(type, retval);\n return retval;\n }\n return null;\n }\n _findDefinitionName(definitionHashTag) {\n var pattern = /#\\/components\\/schemas\\/(.+)/;\n var arr = pattern.exec(definitionHashTag);\n if (arr == null || arr.length < 2)\n return definitionHashTag;\n return arr[1];\n }\n _tryGetResponse(definitions, responses) {\n const operation = { responses };\n let ok = operation.responses['200'];\n if (Utils.isNullOrEmpty(ok && ok.content)) {\n return null;\n }\n let schema;\n for (let mime in ok.content) {\n schema = ok.content[mime].schema;\n break;\n }\n let type = 'object', meta, name;\n if (\"$ref\" in schema) {\n name = this._findDefinitionName(schema.$ref),\n meta = definitions[name];\n }\n else {\n type = schema.type;\n meta = schema;\n if (schema.type === 'array') {\n if ('$ref' in schema.items) {\n name = this._findDefinitionName(schema.items.$ref);\n meta = definitions[name];\n }\n else {\n meta = schema.items;\n }\n }\n }\n return { type, fullType: name, meta };\n }\n}\n","import { SwaggerParser } from './swagger';\nimport { ApiParserBase } from './types';\nimport { OpenApi3Parser } from './openapi3';\n//namespace Pacem.Scaffolding.OpenApi {\n/** Format-detecting facade parser: inspects an API description document and delegates to {@link OpenApi3Parser} or {@link SwaggerParser} accordingly, producing a unified {@link ApiManifest} used to auto-generate form fields regardless of the source spec version. */\nexport class OpenApiParser extends ApiParserBase {\n constructor(_openApi3 = new OpenApi3Parser(), _swagger = new SwaggerParser()) {\n super();\n this._openApi3 = _openApi3;\n this._swagger = _swagger;\n }\n /**\n * Parses `content` as either an OpenAPI 3.x or a Swagger (OpenAPI 2.0) document, dispatching on the presence of an `openapi` property.\n * @param content The API description, either as a parsed object or as a JSON string.\n * @param url Base url of the API, forwarded to the delegate parser to resolve/derive the manifest's `baseUrl`.\n * @returns The parsed manifest.\n */\n parse(content, url) {\n let j = content;\n if (typeof j === 'string') {\n j = JSON.parse(j);\n }\n const json = j;\n if ('openapi' in json) {\n return this._openApi3.parse(json, url);\n }\n return this._swagger.parse(json, url);\n }\n}\n//}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Utils, Transformer } from '@pacem/pacem-core';\nconst DefaultFormLocalizationOptions = {\n display: (displayProp, prop, dictionary) => dictionary[`${displayProp}_${prop}`],\n validator: (validatorType, validatorTypeIndex, prop, dictionary) => dictionary['validator_' + validatorType + '_' + prop] ?? dictionary['validator_' + validatorType + validatorTypeIndex + '_' + prop],\n commandTooltip: (commandName, dictionary) => dictionary['command_tooltip_' + commandName]\n};\n/** Namespace-like static helper for localizing form {@link TypeMetadata} (labels, watermarks, descriptions, validator error messages, command tooltips) against a translation dictionary. */\nexport class Forms {\n /**\n * Localizes the metadata of a form **in place** using a translation dictionary.\n *\n * @param metadata The default metadata.\n * @param dictionary The translation dictionary.\n * @param options Custom replacement strategy, just in case.\n * @returns The localized metadata.\n */\n static localizeMetadata(metadata, dictionary, options) {\n return Forms._localizeMetadata(metadata, dictionary, options);\n }\n static _localizeMetadata(metadata, dictionary, options, prefix = '') {\n options = Utils.extend({}, DefaultFormLocalizationOptions, options);\n for (let prop of metadata.props) {\n // child form\n if ('props' in prop && typeof prop.props === 'object' && !Utils.isArray(prop.props)) {\n const pre = prefix + prop.prop + '.';\n prop.props = Forms._localizeMetadata(prop.props, dictionary, options, pre);\n }\n const display = prop.display = prop.display ?? {};\n const property = prefix + prop.prop;\n display.name = options.display('name', property, dictionary) ?? display.name;\n display.watermark = options.display('watermark', property, dictionary) ?? display.watermark;\n display.description = options.display('description', property, dictionary) ?? display.description;\n if (!Utils.isNullOrEmpty(prop.commands)) {\n for (let command of prop.commands) {\n const tooltip = options.commandTooltip(command.name, dictionary);\n if (!Utils.isNullOrEmpty(tooltip)) {\n command.tooltip = tooltip;\n }\n }\n }\n if (!Utils.isNullOrEmpty(prop.validators)) {\n const memoizer = {};\n for (let validator of prop.validators) {\n const type = validator.type;\n if (typeof type === 'string') {\n const index = memoizer[type] = (memoizer[type] ?? -1) + 1;\n const errorMessage = options.validator(type, index, property, dictionary);\n if (!Utils.isNullOrEmpty(errorMessage)) {\n validator['errorMessage'] = errorMessage;\n }\n }\n }\n }\n }\n return metadata;\n }\n}\n__decorate([\n Transformer('forms.localizeMetadata')\n], Forms, \"localizeMetadata\", null);\n//}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, CustomTypedEvent, CommandEventName, Components, Net, Debounce, avoidHandler, PropertyChangeEvent, PropertyChangeEventName, DeferPromise, Logging, CustomElementUtils } from '@pacem/pacem-core';\nimport { PacemModelElement } from './types-components';\nimport { FieldChangeEventName } from './types';\n/** Event type name (`'submit'`) dispatched as a {@link FormSubmitEvent}. */\nexport const FormSubmitEventName = 'submit';\n/** Event type name (`'reset'`) dispatched as a {@link FormResetEvent}. */\nexport const FormResetEventName = 'reset';\n/**\n * Dispatched by {@link PacemFormElement} right before a submission is actually sent to the server, once all\n * fields have validated successfully. Cancelable: calling `preventDefault()` (or handling the event and\n * returning `false`) aborts the submission before any request is made - useful to inject/transform\n * {@link FormSubmitEventArgs#parameters} or veto the submit outright.\n */\nexport class FormSubmitEvent extends CustomTypedEvent {\n constructor(args) {\n super(FormSubmitEventName, args, { bubbles: true, cancelable: true });\n }\n}\n/** Dispatched by {@link PacemFormElement} when the form is about to be reset (programmatically or via its generated reset button). Cancelable: calling `preventDefault()` aborts the reset, leaving fields as they were. */\nexport class FormResetEvent extends Event {\n constructor() {\n super(FormResetEventName, { bubbles: true, cancelable: true });\n }\n}\n/** Event types re-dispatched/handled on behalf of a {@link PacemFormElement} by its {@link FormEventEmitter}: upload `download` events, field {@link FieldChangeEventName} changes, and item `command` events (see {@link Components.CommandEvent}). */\nconst EMITTABLE_EVENT_TYPES = ['download' /* < dedicated, for the upload custom element */, FieldChangeEventName /* expose */, CommandEventName];\n/** Sentinel value used to reject a submission's promise when it was canceled via {@link FormSubmitEvent#preventDefault}, as opposed to a genuine fetch failure. */\nconst SUBMIT_CANCELLATION_TOKEN = false;\n/**\n * Listens on a {@link PacemEventTarget} (typically a {@link PacemFormElement}) for the events listed in\n * {@link EMITTABLE_EVENT_TYPES} and pipes each through the target's `handle` method, additionally\n * re-dispatching `command` events as a synthesized `'item' + commandName`-named `CustomEvent` (e.g.\n * `itemdelete`, `itemselect`) so listeners can subscribe to the specific command they care about.\n */\nexport class FormEventEmitter {\n constructor(_element) {\n this._element = _element;\n this._itemEmitHandler = (e) => {\n // handle the actual event first\n this._element.handle(e);\n if (e.type === CommandEventName) {\n // then command-specific event, name being 'item' + command name in lowercase (e.g. 'itemdelete', 'itemselect', ...)\n const evt = e;\n this._element.handle(new CustomEvent('item' + evt.detail.commandName.toLowerCase(), { detail: evt.detail.commandArgument }));\n }\n };\n }\n /** Starts listening for {@link EMITTABLE_EVENT_TYPES} on the target element. */\n start() {\n EMITTABLE_EVENT_TYPES.forEach(t => this._element.addEventListener(t, this._itemEmitHandler, false));\n }\n /** Stops listening for {@link EMITTABLE_EVENT_TYPES} on the target element. */\n stop() {\n EMITTABLE_EVENT_TYPES.forEach(t => this._element.removeEventListener(t, this._itemEmitHandler, false));\n }\n}\n/** Base class for elements that need a reference to their closest ancestor {@link PacemFormElement} (form fields, validators): resolves and exposes it as {@link form} on activation. */\nexport class PacemFormRelevantElement extends Components.PacemElement {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.form = CustomElementUtils.findAncestorOfType(this, PacemFormElement);\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemFormRelevantElement.prototype, \"form\", void 0);\n/**\n * `<p-form>`: the scaffolding package's central form element. Aggregates the validity/dirty state of its\n * registered fields ({@link registerField}) and validators ({@link registerValidator}), of any nested\n * sub-forms ({@link registerSubForm} - e.g. from a {@link Pacem.Components.Scaffolding.PacemChildFormElement}\n * in `childform.ts`), drives submission ({@link submit}) and reset ({@link reset}), and - when `autogenerate`\n * is `true` and `metadata` is provided - builds its own field markup from a {@link TypeMetadata}/\n * {@link PropertyMetadata} description instead of requiring hand-authored markup.\n */\nlet PacemFormElement = class PacemFormElement extends PacemFormRelevantElement {\n constructor() {\n super('form');\n /** Gets or sets the HTTP method used by the auto-generated fetcher. Defaults to `POST`. */\n this.method = Net.HttpMethod.Post;\n this._emitter = null;\n this._buttons = { submit: undefined, reset: undefined };\n this.#fetching = false;\n this._keyupHandler = (evt) => {\n if (evt.keyCode === /* Enter */ 13\n // no modifiers\n && !evt.shiftKey && !evt.ctrlKey && !evt.altKey && !evt.metaKey) {\n let btn = evt.currentTarget.querySelector(P + '-button[type=submit]');\n if (!Utils.isNull(btn) && Utils.isVisible(btn) && !btn.disabled) {\n btn.click();\n }\n }\n };\n this._submit = (fetcher, evt) => {\n if (!Utils.isNull(evt)) {\n avoidHandler(evt);\n }\n Promise.all(this._validateAllFields()).then(p => {\n if (p.findIndex(f => f === false) === -1) {\n this.submit(fetcher).then(_ => {\n // successful submission here\n this.setPristine();\n }, _ => {\n // catch rejected/canceled\n });\n }\n });\n };\n this._reset = (evt) => {\n if (!Utils.isNull(evt))\n avoidHandler(evt);\n var resetEvt = new FormResetEvent();\n this.dispatchEvent(resetEvt);\n if (resetEvt.defaultPrevented) {\n return;\n }\n // reset\n // fields first\n for (var field in this._fields) {\n var fld = this._fields[field];\n if (fld instanceof PacemModelElement)\n fld.reset();\n }\n // then sub-forms\n for (var form of this._subForms) {\n form._reset();\n }\n };\n this._fields = {};\n this._validators = {};\n this._subForms = [];\n this._fieldPropertyChanged = (evt) => {\n switch (evt.detail.propertyName) {\n case 'value':\n // validate:\n let model = evt.target;\n this._checkFieldValidity(model.name);\n break;\n case 'dirty':\n this._checkDirtyness();\n break;\n case 'valid':\n this._checkValidity();\n break;\n }\n };\n this._validatorPropertyChanged = (evt) => {\n const validator = evt.target, name = validator.watch;\n if (evt.detail.propertyName === 'invalid') {\n let model = this._fields[validator.watch];\n if (validator.invalid)\n model.valid = false;\n else\n this._checkFieldValidity(name);\n }\n else {\n this._checkFieldValidity(name);\n }\n };\n /** Gets or sets whether to hint invalid fields even if still pristine (default 'true').\n * When 'true' - and form is autogenerated - the submit button status is tightly bound to the form valid state. */\n this.suddenValidation = true;\n /** Gets or sets whether the form should show - when autogenerated - the reset button. */\n this.resettable = true;\n this._emitter = new FormEventEmitter(this);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if ((name === 'method' && this.autogenerate === true && !Utils.isNullOrEmpty(this.metadata)) ||\n (name === 'metadata' && this.autogenerate === true) ||\n (name === 'autogenerate' && val === true && this.metadata && (this.metadata['props'] || this.metadata).length > 0)) {\n this._buildUpForm();\n }\n else {\n switch (name) {\n case 'readonly':\n //this._lockSubForms(val);\n break;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.form && this.form.registerSubForm(this);\n this._checkValidity();\n this.addEventListener('keyup', this._keyupHandler, false);\n this._emitter.start();\n }\n disconnectedCallback() {\n this._emitter.stop();\n this.removeEventListener('keyup', this._keyupHandler, false);\n this.form && this.form.unregisterSubForm(this);\n super.disconnectedCallback();\n }\n _buildUpForm() {\n const key = '_' + Utils.uniqueCode();\n const uid = this.id = (this.id || key);\n const f_uid = 'fetch' + key;\n //\n const form = document.createElement('form');\n form.id = \"form\" + key;\n form.className = PCSS + '-form';\n form.setAttribute('pacem', '');\n form.setAttribute('novalidate', '');\n const html = `<${P}-repeater datasource=\"{{ #${uid}.metadata && (#${uid}.metadata.props || #${uid}.metadata) }}\">\r\n <${P}-panel css=\"{{ #${uid}.metadata.display && #${uid}.metadata.display.css }}\" css-class=\"{{ (#${uid}.metadata.display && #${uid}.metadata.display.cssClass || []).concat(#${uid}.suddenValidation ? [] : ['lazy-validation']) }}\" class=\"${PCSS}-animatable-list ${PCSS}-list-appear\">\r\n <template>\r\n <${P}-form-field fetch-credentials=\"{{ #${uid}.fetchCredentials }}\" fetch-headers=\"{{ #${uid}.fetchHeaders }}\"\r\n logger=\"{{ #${uid}.logger }}\" entity=\"{{ #${uid}.entity, twoway }}\" \r\n metadata=\"{{ ^item }}\" readonly=\"{{ #${uid}.readonly || ^item.isReadOnly }}\"></${P}-form-field>\r\n </template>\r\n </${P}-panel>\r\n</${P}-repeater>\r\n<${P}-fetch logger=\"{{ #${uid}.logger }}\" id=\"${f_uid}\" method=\"${this.method}\" credentials=\"{{ #${uid}.fetchCredentials }}\" headers=\"{{ #${uid}.fetchHeaders }}\"></${P}-fetch> \r\n<div class=\"${PCSS}-buttonset buttons\">\r\n <div class=\"buttonset-left\">\r\n <${P}-button logger=\"{{ #${uid}.logger }}\" on-click=\"#${uid}._submit(#${uid}.fetcher || #${f_uid}, $event)\" type=\"submit\" hide=\"{{ #${uid}.readonly || $pacem.isNullOrEmpty(#${uid}.action) || !$pacem.isNull(#${uid}.form) }}\"\r\nclass=\"button primary button-size size-small\"\r\ncss-class=\"{{ {'buttonset-last': !#${uid}.resettable || !#${uid}.dirty || !$pacem.isNull(#${uid}.form) } }}\" \r\ndisabled=\"{{ (#${uid}.suddenValidation && (!(#${uid}.valid && #${uid}.dirty))) || #${uid}.fetching }}\">\r\n <${P}-panel class=\"submit-spinner ${PCSS}-anim anim-pop\" hide=\"{{ !#${uid}.fetching }}\"><i class=\"${PCSS}-icon ${PCSS}-anim anim-rotate rotate-uniform display-block\">refresh</i></${P}-panel>\r\n <${P}-text text=\"{{ #${uid}.submitCaption || 'OK' }}\"></${P}-text>\r\n </${P}-button>\r\n <${P}-button logger=\"{{ #${uid}.logger }}\" on-click=\"#${uid}._reset($event)\" type=\"reset\" class=\"button button-size size-small\" css-class=\"{{ {'buttonset-first': #${uid}.readonly || $pacem.isNullOrEmpty(#${uid}.action) || !$pacem.isNull(#${uid}.form)} }}\" hide=\"{{ !#${uid}.resettable || #${uid}.readonly || !#${uid}.dirty || !$pacem.isNull(#${uid}.form) }}\" disabled=\"{{ #${uid}.fetching }}\">\r\n <${P}-text text=\"{{ #${uid}.resetCaption || 'Reset' }}\"></${P}-text>\r\n </${P}-button>\r\n</div></div>`;\n // buttons are kept hidden if...\n form.innerHTML = html;\n this.innerHTML = '';\n this.appendChild(form);\n form.addEventListener('submit', avoidHandler, false);\n const old = this._buttons;\n const val = this._buttons = {\n submit: form.lastElementChild.firstElementChild.firstElementChild,\n reset: form.lastElementChild.firstElementChild.lastElementChild\n };\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'formButtons', currentValue: val, oldValue: old }));\n }\n /** Gets the 'submit' and 'reset' form buttons. */\n get formButtons() {\n return this._buttons;\n }\n #fetching;\n /** @readonly Gets whether a submission is currently in flight; also reflected as the `pacem-fetching` CSS class. */\n get fetching() {\n return this.#fetching;\n }\n /**\n * Submits the form data via a provided fetcher.\n * @param fetcher The fetching delegate.\n */\n submit(fetcher) {\n return new Promise((resolve, reject) => {\n if (Utils.isNull(fetcher)) {\n reject(`Fetcher cannot be null while submitting a form.`);\n }\n this._submitInternally(fetcher).then(result => {\n this.dispatchEvent(new CustomEvent(\"success\", { detail: result }));\n resolve(result);\n }, err => {\n if (err !== SUBMIT_CANCELLATION_TOKEN) {\n this.dispatchEvent(new CustomEvent(\"fail\", { detail: err }));\n }\n reject(err);\n });\n });\n }\n /** Resets the form to its pristine values. */\n reset() {\n this._reset();\n }\n _submitInternally(fetcher, args) {\n if (Utils.isNull(fetcher))\n throw `Fetcher cannot be null while submitting a form.`;\n var deferred = DeferPromise.defer();\n const entity = this.entity, entityName = this.entityName;\n var model = {};\n if (!Utils.isNullOrEmpty(entityName)) {\n model[entityName] = entity;\n }\n else {\n model = entity;\n }\n var args = { parameters: model, fields: this._getAllFields() };\n // allow to inject some logic while submitting...\n var submitEvt = new FormSubmitEvent(args);\n this.dispatchEvent(submitEvt);\n if (submitEvt.defaultPrevented) {\n // rejection using `false` identifies a canceled submission.\n deferred.reject(SUBMIT_CANCELLATION_TOKEN);\n }\n else {\n // ...use the output parameters\n fetcher.parameters = Utils.extend({}, submitEvt.detail.parameters);\n // a) fetcher 'success' event listener\n const fnSuccess = (evt) => {\n fetcher.removeEventListener(Net.FetchSuccessEventName, fnSuccess, false);\n fetcher.removeEventListener(Net.FetchErrorEventName, fnError, false);\n const r = evt.detail, empty = Net.Fetcher.isEmpty(r);\n if (empty) {\n // if no content gets fetched (e.g. '204') then resolve right here (because it won't enter 'fnResult')\n fetcher.removeEventListener(Net.FetchResultEventName, fnResult, false);\n this.success = true;\n deferred.resolve({});\n }\n switch (r.status) {\n case 205 /*'Reset Content'*/:\n this._reset();\n break;\n }\n };\n // b) fetcher 'fetchresult' event listener\n const fnResult = (evt) => {\n // remove listeners (others have already been removed in 'fnSuccess')\n fetcher.removeEventListener(Net.FetchResultEventName, fnResult, false);\n //\n var result = evt.detail;\n if (typeof (result) === 'object' && result.hasOwnProperty('success')) {\n // DEPRECATED code branch\n if (result.success === true) {\n this.success = true;\n deferred.resolve(result.result || {});\n }\n else {\n this.fail = true;\n deferred.reject(result.error);\n }\n }\n else {\n this.success = true;\n deferred.resolve(result);\n }\n };\n // c) fetcher 'error' event listener\n const fnError = (evt) => {\n // remove listeners\n fetcher.removeEventListener(Net.FetchSuccessEventName, fnSuccess, false);\n fetcher.removeEventListener(Net.FetchResultEventName, fnResult, false);\n fetcher.removeEventListener(Net.FetchErrorEventName, fnError, false);\n this.fail = true;\n const response = evt.detail;\n deferred.reject(response);\n };\n // fetcher propertychange event listener\n const fnPropChange = (evt) => {\n switch (evt.detail.propertyName) {\n case 'fetching':\n if (evt.detail.currentValue === true) {\n Utils.addClass(this, PCSS + '-fetching');\n this.#fetching = true;\n this.dispatchEvent(new PropertyChangeEvent({ currentValue: true, oldValue: false, propertyName: 'fetching' }));\n }\n else {\n this.#fetching = false;\n this.dispatchEvent(new PropertyChangeEvent({ currentValue: false, oldValue: true, propertyName: 'fetching' }));\n Utils.removeClass(this, PCSS + '-fetching');\n fetcher.removeEventListener(PropertyChangeEventName, fnPropChange, false);\n }\n break;\n }\n };\n fetcher.addEventListener(PropertyChangeEventName, fnPropChange, false);\n fetcher.addEventListener(Net.FetchSuccessEventName, fnSuccess, false);\n fetcher.addEventListener(Net.FetchResultEventName, fnResult, false);\n fetcher.addEventListener(Net.FetchErrorEventName, fnError, false);\n if (!Utils.isNullOrEmpty(this.action)) {\n fetcher.url = this.action;\n }\n // is it an 'inert' PacemFetchElement?\n if (fetcher instanceof Components.PacemFetchElement && !fetcher.autofetch) {\n fetcher.fetch();\n }\n this.success = this.fail = false;\n }\n //\n return deferred.promise;\n }\n _getAllFields(accumulator = {}) {\n Utils.extend(accumulator, this._fields);\n for (var form of this._subForms) {\n form._getAllFields(accumulator);\n }\n return accumulator;\n }\n /** Modifies the state of the current entity programmatically. */\n apply(state) {\n if (Utils.isNullOrEmpty(state)) {\n return;\n }\n this.entity = Utils.extend({}, this.entity, state);\n for (let name in state) {\n this.setDirty(name);\n }\n }\n /** Sets the current form (or the fields of it having the specified names) in a pristine state. */\n setPristine(...names) {\n this._setAs(false, ...names);\n }\n /** Sets the current form (or the fields of it having the specified names) in a dirty state. */\n setDirty(...names) {\n this._setAs(true, ...names);\n }\n _setAs(dirty, ...names) {\n const hasNames = !Utils.isEmpty(names);\n for (let field in this._fields) {\n if (!hasNames || names.indexOf(field) >= 0) {\n const fld = this._fields[field];\n if (fld instanceof PacemModelElement) {\n dirty ? fld.setDirty() : fld.setPristine();\n }\n }\n }\n for (let form of this._subForms) {\n dirty ? form.setDirty(...names) : form.setPristine(...names);\n }\n }\n _checkFieldValidity(name) {\n if (!this.suddenValidation) {\n return Promise.resolve(null);\n }\n if (name in this._fields) {\n return this._validateField(name, false);\n }\n return Promise.resolve(false);\n }\n /**\n * Validates a single named field, or - when `name` is omitted - every field of this form and its\n * sub-forms, running each field's registered validators and updating their `valid`/`invalid` state.\n * @param name Optional name of a single field to validate; validates the whole form (recursively) when omitted.\n */\n // @Concurrent()\n validate(name) {\n if (!Utils.isNullOrEmpty(name)) {\n return this._validateField(name, false);\n }\n else {\n return Promise.all(this._validateAllFields()).then(b => !b.some(b0 => b0 === false));\n }\n }\n _validateAllFields(setAsDirty = true) {\n const tasks = [];\n for (let field in this._fields) {\n tasks.push(this._validateField(field, setAsDirty));\n }\n for (let sub of this._subForms) {\n Array.prototype.push.apply(tasks, sub._validateAllFields(setAsDirty));\n }\n return tasks;\n }\n // Remove Concurrent from here, better check the closure for params in @Concurrent\n //@Concurrent()\n _validateField(name, setAsDirty) {\n return new Promise((resolve, _) => {\n var model = this._fields[name];\n if (model) {\n var validators = this._validators[model.name];\n if (validators && validators.length > 0) {\n this.log(Logging.LogLevel.Log, `Computing \"${model.name}\" validity.`);\n Promise.all(validators.map(v => v.validate(model.value)\n .then(_ => !(v.invalid = !_))))\n .then(results => {\n let valid = true;\n for (var result of results) {\n if (result === false) {\n valid = false;\n // set dirty only when not valid\n if (setAsDirty) {\n model.setDirty();\n }\n break;\n }\n }\n this.log(Logging.LogLevel.Log, `Property \"${model.name}\" turns out to be ${(valid ? '' : 'not ')}valid.`);\n resolve(model.valid = valid);\n });\n }\n else {\n this.log(Logging.LogLevel.Log, `Property \"${model.name}\" has no validators.`);\n resolve(model.valid = true);\n }\n }\n else {\n this.log(Logging.LogLevel.Log, `Property \"${name}\" has no fields in this form.`);\n resolve(true);\n }\n });\n }\n // #region FORM HIERARCHY validity/dirtyness\n _checkDirtyness() {\n let dirty = false;\n for (var model in this._fields) {\n if (this._fields[model].dirty === true) {\n dirty = true;\n break;\n }\n }\n if ( /* still */dirty === false) {\n for (var form of this._subForms) {\n if (form.dirty) {\n dirty = true;\n break;\n }\n }\n }\n this.dirty = dirty;\n }\n ;\n _checkValidity() {\n let valid = true;\n for (var model in this._fields) {\n this.log(Logging.LogLevel.Log, `Checking \"${model}\" validity.`);\n if (this._fields[model].valid === false) {\n this.log(Logging.LogLevel.Log, `\"${model}\" is not valid.`);\n valid = false;\n break;\n }\n }\n if ( /* still */valid === true) {\n for (var form of this._subForms) {\n if (!form.valid) {\n valid = false;\n break;\n }\n }\n }\n this.valid = valid;\n }\n ;\n /**\n * Registers a nested {@link PacemFormElement} (e.g. rendered by a `PacemChildFormElement`, see\n * `childform.ts`) so its fields' validity/dirtyness roll up into this form's own {@link valid}/{@link dirty}.\n * @param form Sub-form to enroll\n */\n registerSubForm(form) {\n let arr = this._subForms;\n if (arr.indexOf(form) == -1) {\n form.addEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false);\n arr.push(form);\n this._checkValidity();\n this._checkDirtyness();\n }\n }\n /**\n * Removes a previously-registered nested form; its fields no longer influence this form's {@link valid}/{@link dirty}.\n * @param form Sub-form to remove\n */\n unregisterSubForm(form) {\n let arr = this._subForms, ndx = arr.indexOf(form);\n if (ndx >= 0) {\n form.removeEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false);\n arr.splice(ndx, 1);\n this._checkValidity();\n this._checkDirtyness();\n }\n }\n /**\n * Registers a field's {@link PacemModel} under `name`, so it is included in submission ({@link FormSubmitEventArgs#fields}), validation, dirty/valid roll-up and reset. Typically called by the field itself (see `PacemModelElement._registerFieldConditionally` in `types-components.ts`) rather than directly.\n * @param name Field name to register under\n * @param model Field implementing {@link PacemModel}\n */\n registerField(name, model) {\n var container = this._fields;\n if (container[name] != model) {\n this.unregisterField(name, false);\n container[name] = model;\n this.log(Logging.LogLevel.Log, `Registering \"${name}\" field.`);\n if (model instanceof HTMLElement) {\n model.addEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false);\n }\n this._checkFieldValidity(name);\n this._checkDirtyness();\n }\n }\n /**\n * Removes a previously-registered field.\n * @param name Field name to remove\n * @param check Whether to re-check the form's overall validity/dirtyness afterwards (default `true`)\n */\n unregisterField(name, check = true) {\n var container = this._fields, current = container[name];\n if (current instanceof HTMLElement) {\n current.removeEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false);\n }\n delete container[name];\n if (current && check === true) {\n this._checkValidity();\n this._checkDirtyness();\n }\n }\n /**\n * Registers a {@link Validator} (typically a {@link PacemBaseValidatorElement}) against the named field, so it participates in that field's validation. Typically called by the validator itself rather than directly.\n * @param name Name of the field being validated\n * @param validator Validator to enroll\n */\n registerValidator(name, validator) {\n var container = this._validators[name] = this._validators[name] || [], index = container.indexOf(validator);\n if (index == -1) {\n container.push(validator);\n if (validator instanceof HTMLElement) {\n validator.addEventListener(PropertyChangeEventName, this._validatorPropertyChanged, false);\n }\n this.log(Logging.LogLevel.Log, `Calling \"${name}\" validity check after validator registration.`);\n // most likely, at this point, the corresponding field isn't available yet.\n this._checkFieldValidity(name);\n }\n }\n /**\n * Removes a previously-registered validator from the named field.\n * @param name Name of the field the validator was registered against\n * @param validator Validator to remove\n */\n unregisterValidator(name, validator) {\n this._unregisterValidator(name, validator, true);\n }\n _unregisterValidator(name, validator, check) {\n var container = this._validators[name] = this._validators[name] || [], index = container.indexOf(validator);\n if (index >= 0) {\n if (validator instanceof HTMLElement) {\n validator.removeEventListener(PropertyChangeEventName, this._validatorPropertyChanged, false);\n }\n container.splice(index, 1);\n if (check) {\n this._checkFieldValidity(name);\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemFormElement.prototype, \"fetcher\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemFormElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"method\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"submitCaption\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"resetCaption\", void 0);\n__decorate([\n Debounce(100)\n], PacemFormElement.prototype, \"_buildUpForm\", null);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"valid\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"dirty\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"readonly\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"success\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"fail\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemFormElement.prototype, \"entity\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"entityName\", void 0);\n__decorate([\n Watch()\n], PacemFormElement.prototype, \"metadata\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"autogenerate\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"suddenValidation\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"resettable\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"action\", void 0);\nPacemFormElement = __decorate([\n CustomElement({ tagName: P + '-form' })\n], PacemFormElement);\nexport { PacemFormElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElementUtils, Utils, Components, PropertyConverters, CustomElement, Watch, stopPropagationHandler, DefaultComparer, PropertyChangeEventName, Debounce } from '@pacem/pacem-core';\nimport { FieldChangeEvent } from './types';\nimport { PacemFormRelevantElement } from './form';\n/** Attached-property key used to stash a field's pristine value on the element itself (see {@link PacemModelElement.originalValue}). */\nconst ORIGINAL_VALUE_FIELD = 'pacem:model:original-value';\n/**\n * Base class for any element that behaves as a bindable, form-aware model value: it registers itself by\n * `name` with the ancestor {@link PacemFormElement} (found via {@link PacemFormRelevantElement}), tracks\n * `dirty`/`valid` state (reflected as `pacem-dirty`/`pacem-invalid` CSS classes), and remembers the value it\n * had when activated/set-pristine so {@link reset} can restore it.\n *\n * Concrete input/selection fields don't extend this directly - see {@link PacemBaseElement}, the abstract\n * subclass that adds readonly/required/focus/keyboard handling on top of it.\n */\nexport class PacemModelElement extends PacemFormRelevantElement {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._registerFieldConditionally();\n this._setAsOriginalValue(this.value);\n }\n _registerFieldConditionally() {\n const name = this.name, form = this.form;\n if (!Utils.isNullOrEmpty(name) && !Utils.isNull(form)\n && (!this.hasAttribute('autobind')\n || (this.getAttribute('autobind') !== 'off' && this.getAttribute('autobind') !== 'false'))) {\n form.registerField(name, this);\n // automatic bind value given the field name\n if (!this.hasAttribute('value')) {\n const formId = form.id = form.id || 'frm_' + Utils.uniqueCode();\n this.setAttribute('value', `{{ #${formId}.entity.${name}, twoway }}`);\n }\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'value':\n this.viewValue = this.getViewValue(val);\n break;\n case 'valid':\n if (!val) {\n Utils.addClass(this, PCSS + '-invalid');\n }\n else {\n Utils.removeClass(this, PCSS + '-invalid');\n }\n break;\n case 'dirty':\n if (val) {\n Utils.addClass(this, PCSS + '-dirty');\n }\n else {\n Utils.removeClass(this, PCSS + '-dirty');\n }\n break;\n case 'name':\n let form = this.form;\n if (form != null) {\n if (old)\n form.unregisterField(old);\n }\n this._registerFieldConditionally();\n break;\n case 'form':\n let n = this.name;\n if (!Utils.isNullOrEmpty(n)) {\n if (old != null)\n old.unregisterField(n);\n }\n this._registerFieldConditionally();\n break;\n }\n }\n disconnectedCallback() {\n let name = this.name, form = this.form;\n if (!Utils.isNullOrEmpty(name) && !Utils.isNull(form))\n form.unregisterField(name);\n super.disconnectedCallback();\n }\n /** @readonly The `value` this element had the last time it was activated or explicitly marked pristine (via {@link setPristine}); what {@link reset} restores. */\n get originalValue() {\n return CustomElementUtils.getAttachedPropertyValue(this, ORIGINAL_VALUE_FIELD);\n }\n _setAsOriginalValue(v) {\n CustomElementUtils.setAttachedPropertyValue(this, ORIGINAL_VALUE_FIELD, v);\n }\n /** Restores {@link value} to {@link originalValue} and clears {@link dirty}. */\n reset() {\n this.value = this.originalValue;\n // then\n this.dirty = false;\n }\n /** Marks the current `value` as the new baseline for {@link reset}/{@link originalValue} and clears {@link dirty}. */\n setPristine() {\n this._setAsOriginalValue(this.value);\n //\n this.dirty = false;\n }\n /** Marks this field as `dirty`. */\n setDirty() {\n this.dirty = true;\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemModelElement.prototype, \"viewValue\", void 0);\n__decorate([\n Watch({\n converter: {\n convert: (attr, element) => {\n if (!(element instanceof PacemModelElement)) {\n return attr;\n }\n return element.convertValueAttributeToProperty(attr);\n },\n convertBack: (prop) => prop.toString()\n }\n })\n], PacemModelElement.prototype, \"value\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemModelElement.prototype, \"dirty\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemModelElement.prototype, \"valid\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemModelElement.prototype, \"name\", void 0);\n/**\n * Base class for editable form fields: it adds `required`/`autofocus`/`readonly`/`placeholder` state, focus\n * and keyboard handling (Esc to revert, Enter submit prevention), and the plumbing that wires the\n * `focus`/`blur`/`change`/`keydown`/`keyup` handlers onto whichever native {@link inputFields} a derived\n * class exposes.\n *\n * Not extended directly by concrete fields either - see {@link PacemBaseInputElement} (in `input.ts`) for\n * `<input>`/`<textarea>`-backed fields, and {@link PacemDataSourceElement} for datasource-driven ones\n * (lists, selects, radio groups, ...).\n */\nexport class PacemBaseElement extends PacemModelElement {\n constructor() {\n super(...arguments);\n this.focusHandler = (evt) => {\n const focusFieldgroup = (add = true) => {\n // TODO: re-think, since this is an ugly workaround just to properly set the outline and borders of the fieldgroup \n if (Utils.hasClass(this.parentElement, '.' + PCSS + '-fieldgroup')) {\n (add ? Utils.addClass : Utils.removeClass).apply(this, [this.parentElement, PCSS + '-focus']);\n }\n };\n const blurFieldgroup = () => focusFieldgroup(false);\n switch (evt.type) {\n case 'focus':\n Utils.addClass(this, PCSS + '-focus');\n focusFieldgroup();\n this._preFocusValue = this.value;\n break;\n case 'blur':\n Utils.removeClass(this, PCSS + '-focus');\n blurFieldgroup();\n break;\n }\n if (evt.bubbles)\n this.emit(evt);\n else\n this.dispatchEvent(new FocusEvent(evt.type));\n };\n this.changeHandler = (evt) => {\n const val = this.value;\n this.onChange(evt).then(v => {\n if (!this.compareValuePropertyValues(val, v)) {\n this.dispatchEvent(new FieldChangeEvent({\n fieldName: this.name,\n oldValue: val,\n currentValue: v,\n firstChange: !this.dirty\n }));\n this.dirty = true;\n }\n }, _ => {\n // do nothing\n });\n };\n this.keydownHandler = (evt) => {\n stopPropagationHandler(evt);\n };\n this.keyupHandler = (evt) => {\n switch (evt.keyCode) {\n case /* Esc */ 27:\n stopPropagationHandler(evt);\n // choose between reset and set\n if (this.compareValuePropertyValues(this.originalValue, this._preFocusValue)) {\n this.reset();\n }\n else {\n this.value = this._preFocusValue;\n }\n this.blur();\n break;\n case /* Enter */ 13:\n if (this.preventKeyboardSubmit) {\n stopPropagationHandler(evt);\n }\n break;\n }\n };\n }\n compareValuePropertyValues(old, val) {\n return DefaultComparer(old, val);\n }\n /** @overridable Whether pressing Enter within this field should be prevented from submitting an ancestor form. Defaults to `false`. */\n get preventKeyboardSubmit() {\n return false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'required':\n case 'disabled':\n case 'autofocus':\n case 'placeholder':\n case 'readonly':\n for (let inputField of this.inputFields) {\n val ? inputField.setAttribute(name, val) : inputField.removeAttribute(name);\n }\n break;\n //case 'name':\n case 'tabOrder':\n for (let inputField of this.inputFields) {\n inputField.setAttribute('tabindex', val);\n }\n break;\n case 'value':\n this.acceptValue(val);\n break;\n }\n if (name === 'required'\n || name === 'disabled'\n || name === 'readonly') {\n let className = `${PCSS}-${name}`;\n val ? Utils.addClass(this, className) : Utils.removeClass(this, className);\n }\n if (name === 'readonly') {\n this.toggleReadonlyView(val);\n }\n // aria-... attributes\n else if (name === 'required') {\n this.aria.attributes.set('required', !!val + '');\n }\n else if (name === 'valid') {\n // Specs say that 'aria-invalid' on required attributes SHOULD NOT be set before submission, \n // think about a 'submitted state'(?) to check against...\n this.aria.attributes.set('invalid', (!val && !!this.dirty) + '');\n }\n }\n registerInputFields(inputFields = this.inputFields) {\n if (!Utils.isNull(inputFields) && !Utils.isArray(inputFields)) {\n inputFields = [inputFields];\n }\n for (let inputField of inputFields) {\n inputField.addEventListener('focus', this.focusHandler, false);\n inputField.addEventListener('blur', this.focusHandler, false);\n inputField.addEventListener('change', this.changeHandler, false);\n // avoid interference with other handlers (e.g. cref UI.PacemAdapterElement)\n inputField.addEventListener('keydown', this.keydownHandler, false);\n inputField.addEventListener('keyup', this.keyupHandler, false);\n inputField.addEventListener('mousedown', stopPropagationHandler, false);\n inputField.addEventListener('touchstart', stopPropagationHandler, { passive: false, capture: false });\n }\n }\n unregisterInputFields(inputFields = this.inputFields) {\n if (!Utils.isNull(inputFields) && !Utils.isArray(inputFields)) {\n inputFields = [inputFields];\n }\n for (let inputField of inputFields) {\n if (Utils.isNull(inputField))\n continue;\n inputField.removeEventListener('touchstart', stopPropagationHandler, { capture: false });\n inputField.removeEventListener('keydown', this.keydownHandler, false);\n inputField.removeEventListener('keyup', this.keyupHandler, false);\n inputField.removeEventListener('mousedown', stopPropagationHandler, false);\n //\n inputField.removeEventListener('change', this.changeHandler, false);\n inputField.removeEventListener('focus', this.focusHandler, false);\n inputField.removeEventListener('blur', this.focusHandler, false);\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.toggleReadonlyView(this.readonly || false);\n // aria-attribute\n if (!Utils.isNullOrEmpty(this.id)) {\n const label = document.querySelector(`label[for=${this.id}]`);\n if (label) {\n if (label.id) {\n this.aria.attributes.set('labelledby', label.id);\n }\n else {\n this.aria.attributes.set('label', label.textContent);\n }\n }\n else {\n this.aria.attributes.remove('labelledby');\n this.aria.attributes.remove('label');\n }\n ;\n }\n // add handlers\n this.registerInputFields();\n }\n disconnectedCallback() {\n // remove handlers\n this.unregisterInputFields();\n super.disconnectedCallback();\n }\n focus() {\n const fields = this.inputFields;\n if (fields && fields.length) {\n fields[0].focus();\n }\n }\n blur() {\n const fields = this.inputFields;\n if (!Utils.isNullOrEmpty(fields)) {\n for (let field of fields) {\n field.blur();\n }\n }\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemBaseElement.prototype, \"required\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemBaseElement.prototype, \"autofocus\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemBaseElement.prototype, \"readonly\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemBaseElement.prototype, \"name\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemBaseElement.prototype, \"placeholder\", void 0);\n/**\n * Scaffolding-specific counterpart of `@pacem/pacem-ui`'s `PacemItemElement`: a base class for elements that\n * register themselves against an ancestor {@link PacemItemsContainerBaseElement} (found via\n * {@link findContainer}) on activation, and unregister on disconnect. Extended by {@link PacemDataItemElement}.\n */\nexport class PacemItemElement extends Components.PacemElement {\n #container;\n /** @overridable Locates the ancestor items-container this item registers against. Defaults to the nearest {@link PacemItemsContainerBaseElement}. */\n findContainer() {\n return CustomElementUtils.findAncestor(this, n => n instanceof PacemItemsContainerBaseElement);\n }\n /** @readonly Gets the items-container this item is currently registered with, if any. */\n get container() {\n return this.#container;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const container = this.#container = this.findContainer();\n if (!Utils.isNull(container)) {\n container.register(this);\n }\n }\n disconnectedCallback() {\n if (!Utils.isNull(this.#container)) {\n this.#container.unregister(this);\n }\n super.disconnectedCallback();\n }\n}\n/**\n * Base class for form fields that also act as a registry of {@link PacemItemElement} children (e.g. a\n * datasource-backed selection field whose options are declared, not just databound). Combines\n * {@link PacemBaseElement}'s field behavior with `ItemsContainer<TItem>`'s registration API.\n * See {@link PacemDataSourceElement} for the concrete specialization holding {@link PacemDataItemElement}s.\n */\nexport class PacemItemsContainerBaseElement extends PacemBaseElement {\n /**\n * Registers a new item among the items.\n * @param item {PacemDataItemElement} Item to be enrolled\n */\n register(item) {\n let flag = true;\n if (Utils.isNull(this.items)) {\n this.items = [item];\n }\n else if (this.items.indexOf(item) === -1) {\n this.items.push(item);\n }\n else {\n flag = false;\n }\n return flag;\n }\n /**\n * Removes an existing element from the items.\n * @param item {PacemDataItemElement} Item to be removed\n */\n unregister(item) {\n const ndx = !Utils.isNull(this.items) && this.items.indexOf(item);\n if (ndx >= 0) {\n this.items.splice(ndx, 1)[0];\n return true;\n }\n return false;\n }\n}\n__decorate([\n Watch( /* can only be databound or assigned at runtime */)\n], PacemItemsContainerBaseElement.prototype, \"items\", void 0);\n/** A single, declaratively-authored option (`<p-data-item>`) of a {@link PacemDataSourceElement}, as an alternative to a databound `datasource` array. */\nlet PacemDataItemElement = class PacemDataItemElement extends PacemItemElement {\n};\n__decorate([\n Watch({\n converter: {\n convert: (attr, element) => {\n // boolean?\n if (attr === 'true')\n return true;\n if (attr === 'false')\n return false;\n // number?\n let num = parseFloat(attr);\n if (!isNaN(num))\n return num;\n // date?\n let date = Utils.Dates.parse(attr);\n if (Utils.Dates.isDate(date))\n return date;\n return attr;\n },\n convertBack: (prop) => prop.toString()\n }\n })\n], PacemDataItemElement.prototype, \"value\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemDataItemElement.prototype, \"label\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemDataItemElement.prototype, \"disabled\", void 0);\nPacemDataItemElement = __decorate([\n CustomElement({ tagName: P + '-data-item' })\n], PacemDataItemElement);\nexport { PacemDataItemElement };\n/**\n * Base class for datasource-driven selection fields (lists, dropdowns, radio/checkbox groups, autocomplete,\n * ...): adapts a raw `datasource` (an array of arbitrary entities, or declared {@link PacemDataItemElement}\n * children registered via {@link PacemItemsContainerBaseElement}) into a normalized {@link DataSource}, and\n * provides the value/view-value mapping and selection-matching logic (single or, when `multipleChoice` is\n * `true`, multi-select) that concrete subclasses build their UI on top of.\n */\nexport class PacemDataSourceElement extends PacemItemsContainerBaseElement {\n constructor(multipleChoice = false) {\n super();\n this.multipleChoice = multipleChoice;\n this._itemPropertyChangedHandler = (evt) => {\n this.databind();\n };\n }\n /**\n * Registers a new item among the items.\n * @param item {PacemDataItemElement} Item to be enrolled\n */\n register(item) {\n const flag = super.register(item);\n if (flag) {\n item.addEventListener(PropertyChangeEventName, this._itemPropertyChangedHandler, false);\n }\n return flag;\n }\n /**\n * Removes an existing element from the items.\n * @param item {PacemDataItemElement} Item to be removed\n */\n unregister(item) {\n const flag = super.register(item);\n if (flag) {\n item.removeEventListener(PropertyChangeEventName, this._itemPropertyChangedHandler, false);\n }\n return flag;\n }\n /** @overridable Maps a raw `datasource` array into its {@link DataSource} representation via {@link mapEntityToItem}. */\n buildAdaptedDatasource(ds = this.datasource) {\n return ds && ds.map(i => this.mapEntityToItem(i));\n }\n /** Recomputes {@link adaptedDatasource} and, if the current `value` no longer matches any item, calls {@link handleDatasourceMismatch}. Debounced. */\n databind(datasource = this.buildAdaptedDatasource(this.datasource)) {\n if (Utils.isNull(datasource) && Utils.isNull(this.adaptedDatasource))\n return;\n const ds = this.adaptedDatasource = datasource || []; /*\n .map(i => this.mapEntityToItem(i))*/\n ;\n if (Utils.isNullOrEmpty(ds.filter(i => this.isDataSourceItemSelected(i))))\n this.handleDatasourceMismatch(ds);\n }\n /** @overridable Called by {@link databind} when the current `value` matches none of the adapted `datasource` items. Defaults to clearing `value`. */\n handleDatasourceMismatch(datasource) {\n this.value = undefined;\n }\n /**\n * Checks wether the provided `item` matches the control's criteria for a selected option against a provided value (which defaults to control's value).\n * @param item {any} item to check against\n * @param value {any} value to match\n */\n isItemSelected(item, value = this.value) {\n if (Utils.isNullOrEmpty(value)) {\n return false;\n }\n const v = this.mapEntityToValue(item), c = this.compareBy;\n if (this.multipleChoice && Utils.isArray(value))\n return !Utils.isNull(value.find(j => \n // caution: numbers and strings might be compared, ease the comparison by loosing equality constraints: `===` to `==`.\n j /* value item */ == /*=*/ v /* datasource item */ || (typeof j === 'object' && !Utils.isNullOrEmpty(c) && c in v && c in j && v[c] == /*=*/ j[c])));\n else if (!this.multipleChoice) {\n return value == /*=*/ v || (typeof value === 'object' && !Utils.isNullOrEmpty(c) && c in v && c in value && v[c] == /*=*/ value[c]);\n }\n else {\n return false;\n }\n }\n /**\n * Checks wether the provided `item` matches the control's criteria for a selected option against a provided value (which defaults to control's value).\n * @param item {DataSourceItem} item to check against\n * @param value {any} value to match\n */\n isDataSourceItemSelected(item, value = this.value) {\n if (Utils.isNullOrEmpty(value)) {\n return false;\n }\n if (item.disabled) {\n return false;\n }\n const c = this.compareBy;\n if (this.multipleChoice && Utils.isArray(value)) {\n // caution: numbers and strings might be compared, ease the comparison by loosing equality constraints: `===` to `==`.\n let found = value.find(j => j == /*=*/ item.value || (typeof j === 'object' && !Utils.isNullOrEmpty(c) && c in j && !Utils.isNullOrEmpty(item.value) && c in item.value && j[c] == /*=*/ item.value[c]));\n return !Utils.isNull(found);\n }\n else if (!this.multipleChoice && !Utils.isNullOrEmpty(item.value)) {\n return value == /*=*/ item.value || (typeof value === 'object' && !Utils.isNullOrEmpty(c) && c in value && !Utils.isNullOrEmpty(item.value) && c in item.value && value[c] == /*=*/ item.value[c]);\n }\n else {\n return false;\n }\n }\n /** @overridable Extracts the selectable `value` out of a raw datasource entity (via {@link valueProperty}, or `entity.value` for a {@link PacemDataItemElement}). */\n mapEntityToValue(entity) {\n if (entity == null) {\n throw 'entity cannot be null';\n }\n // declared\n if (entity instanceof PacemDataItemElement) {\n return entity.value;\n }\n // databound\n let value = entity, prop;\n if (prop = this.valueProperty) {\n value = entity[prop];\n }\n return value;\n }\n /** @overridable Extracts the display text out of a raw datasource entity (via {@link textProperty}, or `entity.label`/`entity.value` for a {@link PacemDataItemElement}). */\n mapEntityToViewValue(entity) {\n if (entity == null)\n throw 'entity cannot be null';\n // declared\n if (entity instanceof PacemDataItemElement) {\n return entity.label || entity.value;\n }\n // databound\n let viewValue = entity.toString(), prop;\n if (prop = this.textProperty) {\n viewValue = entity[prop];\n }\n return viewValue;\n }\n /** @overridable Adapts a raw datasource entity into its normalized {@link DataSourceItem} shape, using {@link mapEntityToValue}, {@link mapEntityToViewValue} and {@link disabledProperty}. */\n mapEntityToItem(entity) {\n if (entity == null) {\n throw 'entity cannot be null';\n }\n // declared\n if (entity instanceof PacemDataItemElement) {\n return { value: entity.value, viewValue: entity.label || entity.value, disabled: entity.disabled, data: entity };\n }\n // databound\n let disabled = false;\n const disabledProp = this.disabledProperty;\n if (!Utils.isNullOrEmpty(disabledProp)) {\n disabled = entity[disabledProp] || false;\n }\n return { value: this.mapEntityToValue(entity), viewValue: this.mapEntityToViewValue(entity), disabled: disabled, data: entity };\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'datasource':\n case 'textProperty':\n case 'disabledProperty':\n case 'valueProperty':\n cancelAnimationFrame(this._handle);\n this._handle = requestAnimationFrame(() => {\n this.databind();\n // refresh view value, since it depends on selected items.\n this.viewValue = this.getViewValue(this.value);\n });\n break;\n case 'items':\n cancelAnimationFrame(this._handleItems);\n this._handleItems = requestAnimationFrame(() => {\n this.datasource = this.items;\n });\n break;\n }\n }\n getViewValue(val) {\n if (Utils.isNullOrEmpty(this.datasource)) {\n return undefined;\n }\n return this.datasource.filter(i => this.isItemSelected(i)).map(i => this.mapEntityToViewValue(i)).join(', ');\n }\n convertValueAttributeToProperty(attr) {\n if (this.multipleChoice) {\n return attr.split(',').map(i => i.trim());\n }\n return attr;\n }\n compareValuePropertyValues(old, val) {\n return DefaultComparer(old, val);\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemDataSourceElement.prototype, \"datasource\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataSourceElement.prototype, \"valueProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataSourceElement.prototype, \"textProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataSourceElement.prototype, \"disabledProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataSourceElement.prototype, \"compareBy\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemDataSourceElement.prototype, \"adaptedDatasource\", void 0);\n__decorate([\n Debounce(true)\n], PacemDataSourceElement.prototype, \"databind\", null);\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Components, CustomElement, Defaults, P, PCSS, PropertyConverters, Watch } from '@pacem/pacem-core';\n//namespace Pacem.Components.Scaffolding {\n/** Markup fragment for a `pacem-char-count` companion element, meant to be spliced into a `@CustomElement` template so a text field can display its own character counter. */\nexport const CHAR_COUNTER_CHILD = `<${P}-char-count hide=\"{{ :host.readonly || !(:host.minlength > 0 || :host.maxlength > 0) }}\" minlength=\"{{ :host.minlength }}\" maxlength=\"{{ :host.maxlength }}\" string=\"{{ :host.value }}\"></${P}-char-count>`;\n/** Displays how many characters {@link string} contains, relative to {@link minlength}/{@link maxlength}, flagging validity via CSS class. */\nlet PacemCharCountElement = class PacemCharCountElement extends Components.PacemElement {\n _isValid(v) {\n const l = this._length(v);\n if (this.minlength > 0 && l < this.minlength)\n return false;\n if (this.maxlength > 0 && l > this.maxlength)\n return false;\n return true;\n }\n _length(s) {\n return (s && s.length) || 0;\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemCharCountElement.prototype, \"minlength\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemCharCountElement.prototype, \"maxlength\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCharCountElement.prototype, \"string\", void 0);\nPacemCharCountElement = __decorate([\n CustomElement({\n tagName: P + '-char-count',\n shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-panel class=\"${PCSS}-char-count\" css-class=\"{{ {'valid': :host._isValid(:host.string), 'invalid': !:host._isValid(:host.string) } }}\">\r\n <${P}-span hide=\"{{ !(:host.minlength > 0) }}\" class=\"${PCSS}-char-min\" content=\"{{ :host.minlength }}\"></${P}-span>\r\n <${P}-span class=\"${PCSS}-char-curr\" content=\"{{ :host._length(:host.string) || '0' }}\"></${P}-span>\r\n <${P}-span hide=\"{{ !(:host.maxlength > 0) }}\" class=\"${PCSS}-char-max\" content=\"{{ :host.maxlength }}\"></${P}-span>\r\n</${P}-panel>`\n })\n], PacemCharCountElement);\nexport { PacemCharCountElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomTypedEvent, CustomEventUtils, Debounce, Utils, P, PCSS, CustomElement, Watch, Defaults, ViewChild, PropertyChangeEvent, PropertyChangeEventName } from '@pacem/pacem-core';\nimport { HistoryService } from '@pacem/pacem-foundation';\nimport { PacemItemElement, PacemItemsContainerBaseElement } from './types-components';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\nconst EXECUTECOMMAND_NAME = 'execute';\nconst EMPTY_CONTENT = '<p><br></p>';\nclass ContenteditableChangeEvent extends CustomTypedEvent {\n constructor(html) {\n super('contenteditablechange', { html: html });\n }\n}\n/** Base class for {@link PacemContenteditableElement} toolbar/command items, registered as {@link PacemItemElement} children of the editor. */\nexport class PacemContenteditableCommandElement extends PacemItemElement {\n constructor() {\n super(...arguments);\n this._containerPropChangeHandler = (evt) => {\n const p = evt.detail;\n this.containerPropertyChangedCallback(p.propertyName, p.oldValue, p.currentValue, p.firstChange);\n };\n }\n execCommand(...args) {\n const me = this;\n if (me.disabled) {\n return;\n }\n me.exec.apply(me, args).then(_ => {\n me.dispatchEvent(new Event(EXECUTECOMMAND_NAME));\n }, e => {\n console.error(e);\n });\n }\n connectedCallback() {\n super.connectedCallback();\n Utils.addClass(this, PCSS + '-contenteditable-command');\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const cnt = this.container;\n if (!Utils.isNull(cnt)) {\n this.contentElement = cnt.contentElement;\n cnt.addEventListener(PropertyChangeEventName, this._containerPropChangeHandler, false);\n }\n }\n disconnectedCallback() {\n const cnt = this.container;\n if (!Utils.isNull(cnt)) {\n cnt.removeEventListener(PropertyChangeEventName, this._containerPropChangeHandler, false);\n }\n super.disconnectedCallback();\n }\n containerPropertyChangedCallback(name, old, val, first) {\n if (name === 'range') {\n this.range = val;\n }\n }\n}\n__decorate([\n Watch()\n], PacemContenteditableCommandElement.prototype, \"range\", void 0);\n__decorate([\n Watch()\n], PacemContenteditableCommandElement.prototype, \"contentElement\", void 0);\nfunction isFileCommand(obj) {\n return obj instanceof PacemContenteditableCommandElement && 'pasteCallback' in obj && typeof obj['pasteCallback'] === 'function';\n}\nfunction isElement(node) {\n return node?.nodeType == Node.ELEMENT_NODE;\n}\n/** Rich-text (`contenteditable`) field, hosting {@link PacemContenteditableCommandElement} toolbar commands and tracking an undo/redo {@link history}. */\nlet PacemContenteditableElement = class PacemContenteditableElement extends PacemItemsContainerBaseElement {\n constructor() {\n super('rich text editor');\n this._focusHandler = (evt) => {\n this._ensureInteractiveMarkup();\n };\n this._blurHandler = (evt) => {\n // clean up the output\n const container = this._container;\n for (let command of this.items) {\n command.cleanUp(container);\n }\n this._checkChangedHandler(evt);\n };\n this._pasteHandler = (evt) => {\n // I'll manage it myself!\n evt.preventDefault();\n const range = this.range, files = evt.clipboardData.files;\n if (!Utils.isNull(range) && files.length === 0) {\n const text = evt.clipboardData.getData('text/plain');\n const plainText = text.replace(/</gi, '<').replace(/\\n/gi, '<br />');\n const frag = range.createContextualFragment(plainText);\n range.deleteContents();\n range.insertNode(frag);\n this._checkChangedHandler(evt);\n }\n else {\n for (let j = 0; j < files.length; j++) {\n const f = files.item(j);\n for (let cmd of this.items) {\n if (isFileCommand(cmd)) {\n cmd.pasteCallback(f).then(_ => this._checkChangedHandler(evt), _ => { });\n }\n }\n }\n // this._checkAndSynchronizeHandler(evt);\n }\n };\n this._shortcutHandler = (evt) => {\n // prevent any default shortcut combo apart from 'copy', 'cut' and 'paste' (mainly due to the clipboard access limitations)\n if (evt.ctrlKey && ['C', 'V', 'X'].indexOf(evt.key?.toUpperCase()) === -1) {\n // Let it manage it only if the relevant command is available\n evt.preventDefault();\n }\n };\n this._inputHandler = (evt) => {\n this._fixRangeMarkup();\n this._checkChangedHandler(evt);\n };\n this._checkChangedHandler = (evt) => {\n const container = this._container, inputHtml = container.innerHTML;\n var html = inputHtml;\n if (Utils.isNullOrEmpty(inputHtml)\n || inputHtml === '<br>'\n || inputHtml === EMPTY_CONTENT) {\n container.innerHTML = EMPTY_CONTENT;\n html = '';\n }\n if (html != this.value) {\n this.changeHandler(new ContenteditableChangeEvent(html));\n if (this.value != this.#history.current) {\n this._updateHistory();\n }\n }\n // fire history change in any case\n this._fireHistoryChange();\n };\n this._selectionChangeHandler = (evt) => {\n const selection = document.getSelection();\n if (selection && selection.anchorNode && this._container.contains(selection.anchorNode)) {\n const range = selection.getRangeAt(0);\n this.range = range.cloneRange();\n }\n else {\n this.range = null;\n }\n };\n //this._workspace = document.createElement('div');\n }\n #history;\n /** @readonly Gets the undo/redo history service tracking this editor's HTML content. */\n get history() {\n return this.#history;\n }\n reset() {\n super.reset();\n this.#history.reset();\n this._fireHistoryChange();\n }\n _fireHistoryChange() {\n const h = this.#history;\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'history', oldValue: h, currentValue: h }));\n }\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n toggleReadonlyView(readonly) {\n this._dashboard.hidden = readonly;\n if (readonly) {\n this._container.removeAttribute('contenteditable');\n }\n else {\n this._container.setAttribute('contenteditable', 'true');\n document.execCommand(\"defaultParagraphSeparator\", false, \"p\");\n }\n }\n register(item) {\n if (super.register(item)) {\n item.addEventListener(EXECUTECOMMAND_NAME, this._checkChangedHandler, false);\n return true;\n }\n return false;\n }\n unregister(item) {\n if (super.unregister(item)) {\n item.removeEventListener(EXECUTECOMMAND_NAME, this._checkChangedHandler, false);\n return true;\n }\n return false;\n }\n /** @override */\n get preventKeyboardSubmit() {\n return true;\n }\n get inputFields() {\n return [this._container];\n }\n get contentElement() {\n return this._container;\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n if (CustomEventUtils.isInstanceOf(evt, ContenteditableChangeEvent)) {\n const html = this.value = evt.detail.html;\n resolve(html);\n // find a less-instrusive way to call this...\n this._selectionChangeHandler(evt);\n }\n else\n resolve(this.value);\n });\n }\n _fixRangeMarkup() {\n const range = this.range, fnDownwards = (node) => {\n node.childNodes.forEach(i => fnDownwards(i));\n if (isElement(node) && node.tagName === 'SPAN') {\n Element.prototype.replaceWith.apply(node, Array.from(node.childNodes));\n }\n else if (node instanceof HTMLElement) {\n node.removeAttribute('style');\n }\n }, fn = (node) => {\n let element = node;\n if (!isElement(element)) {\n element = node.parentElement;\n }\n fnDownwards(element);\n };\n if (!Utils.isNull(range)) {\n fn(range.commonAncestorContainer);\n }\n }\n _ensureInteractiveMarkup() {\n const workspace = this._container, nodes = workspace.childNodes, childCount = nodes.length;\n if (childCount == 0 || workspace.innerHTML === EMPTY_CONTENT) {\n workspace.innerHTML = EMPTY_CONTENT;\n }\n else {\n let node, range;\n const closeRange = (n) => {\n range.setEndAfter(n);\n const p = document.createElement('p');\n range.surroundContents(p);\n };\n for (let j = 0; j < childCount; j++) {\n node = nodes.item(j);\n if (!(node instanceof Element)) {\n if (Utils.isNull(range)) {\n range = document.createRange();\n range.setStartBefore(node);\n }\n }\n else if (range) {\n closeRange(node.previousSibling);\n range = null;\n }\n }\n // open range?\n if (!Utils.isNull(range)) {\n closeRange(node);\n }\n }\n }\n _updateHistory() {\n this.#history.push(this.value);\n this._fireHistoryChange();\n }\n acceptValue(val) {\n if (!Utils.isNull(this._container) && /*the following `if` statement prevents from flashing the content and writing backwards!*/ val != this._container.innerHTML) {\n this._container.innerHTML = val;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const container = this._container;\n this.#history = new HistoryService(this.value);\n container.addEventListener('blur', this._blurHandler, false);\n container.addEventListener('keydown', this._shortcutHandler, false);\n container.addEventListener('focus', this._focusHandler, false);\n container.addEventListener('input', this._inputHandler, false);\n container.addEventListener('paste', this._pasteHandler, false);\n document.addEventListener('selectionchange', this._selectionChangeHandler, false);\n }\n disconnectedCallback() {\n document.removeEventListener('selectionchange', this._selectionChangeHandler, false);\n const container = this._container;\n if (!Utils.isNull(container)) {\n container.removeEventListener('keydown', this._shortcutHandler, false);\n container.removeEventListener('blur', this._blurHandler, false);\n container.removeEventListener('focus', this._focusHandler, false);\n container.removeEventListener('input', this._inputHandler, false);\n container.removeEventListener('paste', this._pasteHandler, false);\n }\n super.disconnectedCallback();\n }\n getViewValue(val) {\n return val;\n }\n};\n__decorate([\n ViewChild(\"div[pacem]\")\n], PacemContenteditableElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild(\"div[dashboard]\")\n], PacemContenteditableElement.prototype, \"_dashboard\", void 0);\n__decorate([\n Watch()\n], PacemContenteditableElement.prototype, \"range\", void 0);\n__decorate([\n Debounce(500)\n], PacemContenteditableElement.prototype, \"_updateHistory\", null);\nPacemContenteditableElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-contenteditable ${PCSS}-viewfinder\">\r\n <div contenteditable=\"true\" role=\"presenter\" pacem></div>\r\n</div>${CHAR_COUNTER_CHILD}\r\n<div dashboard>\r\n <${P}-content></${P}-content>\r\n</div>`\n })\n], PacemContenteditableElement);\nexport { PacemContenteditableElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PropertyConverters, Utils, Watch } from '@pacem/pacem-core';\nimport { PacemContenteditableCommandElement } from '../contenteditable';\n//namespace Pacem.Components.Scaffolding {\n/** Base class for the toolbar button-shaped contenteditable commands (bold, align, link, wrap, ...), sharing icon/shortcut/tooltip/active-state behavior. */\nexport class PacemContenteditableButtonCommandElement extends PacemContenteditableCommandElement {\n cleanUp(_) {\n // do nothing\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'range') {\n this.active = !Utils.isNull(val);\n }\n }\n getTooltip(altText = this.altText, shortcut = this.keyboardShortcut) {\n const hint = altText;\n if (Utils.isNullOrEmpty(shortcut)) {\n return hint;\n }\n return `${hint} (${shortcut})`;\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableButtonCommandElement.prototype, \"icon\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableButtonCommandElement.prototype, \"keyboardShortcut\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableButtonCommandElement.prototype, \"altText\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemContenteditableButtonCommandElement.prototype, \"active\", void 0);\nexport const CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE = `<${P}-button disabled=\"{{ !:host.active }}\" css-class=\"{{ {'text-primary': :host.isRelevant(:host.range)} }}\" tooltip=\"{{ :host.getTooltip(:host.altText, :host.keyboardShortcut) }}\" class=\"button\" on-click=\":host.execCommand()\"><${P}-icon class=\"text-rootsize\" icon=\"{{ :host.icon }}\"></${P}-icon></${P}-button>\r\n <${P}-shortcut disabled=\"{{ !:host.active }}\" target=\"{{ :host.contentElement }}\" combination=\"{{ :host.keyboardShortcut }}\" on-execute=\":host.execCommand()\"></${P}-shortcut>`;\n//}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Defaults, Utils, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\n//namespace Pacem.Components.Scaffolding {\n/** Toolbar button undoing or redoing the last change tracked by the contenteditable host's history. */\nlet PacemContenteditableHistoryCommandElement = class PacemContenteditableHistoryCommandElement extends PacemContenteditableButtonCommandElement {\n exec() {\n return new Promise((resolve, _) => {\n const history = this.container?.history;\n if (!Utils.isNull(history)) {\n switch (this.command) {\n case 'redo':\n if (history.canRedo) {\n history.redo();\n resolve();\n }\n break;\n default:\n if (history.canUndo) {\n history.undo();\n resolve();\n }\n break;\n }\n this.contentElement.innerHTML = history.current;\n }\n });\n }\n isRelevant(_) {\n return false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'command':\n this.icon = this.icon || val;\n this.altText = val;\n this.keyboardShortcut = this.keyboardShortcut || ('Ctrl+' + (val === 'redo' ? 'Y' : 'Z'));\n break;\n }\n }\n containerPropertyChangedCallback(name, old, val, first) {\n super.containerPropertyChangedCallback(name, old, val, first);\n const c = this.container, h = c.history;\n if (name === 'range' || name === 'history') {\n // override 'active' state setting\n this.active = !Utils.isNull(c.range) &&\n ((this.command === 'redo' && h?.canRedo) || (this.command !== 'redo' && h?.canUndo));\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String, reflectBack: true })\n], PacemContenteditableHistoryCommandElement.prototype, \"command\", void 0);\nPacemContenteditableHistoryCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-historycommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE\n })\n], PacemContenteditableHistoryCommandElement);\nexport { PacemContenteditableHistoryCommandElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Defaults, Utils, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\nimport { ContenteditableUtils } from './utils';\n//namespace Pacem.Components.Scaffolding {\n/** Toolbar button creating or removing a hyperlink (`<a>`) around the current selection. */\nlet PacemContenteditableLinkCommandElement = class PacemContenteditableLinkCommandElement extends PacemContenteditableButtonCommandElement {\n isRelevant(range) {\n return !Utils.isNull(ContenteditableUtils.findSurroundingNode(range, HTMLAnchorElement));\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (Utils.isNullOrEmpty(this.altText)) {\n this.altText = 'insert link';\n }\n if (Utils.isNullOrEmpty(this.icon)) {\n this.icon = 'insert_link';\n }\n if (Utils.isNullOrEmpty(this.keyboardShortcut)) {\n this.keyboardShortcut = 'Ctrl+H';\n }\n }\n exec(arg, target = this.target) {\n return new Promise((resolve, reject) => {\n var selection = this.range;\n var anchorNode = ContenteditableUtils.findSurroundingNode(selection, HTMLAnchorElement);\n //console.log('selection: ' + selection);\n var current = \"http://\";\n var regex = /<a.*href=\\\"([^\\\"]*)/;\n if (anchorNode && regex.test(anchorNode.outerHTML)) {\n current = regex.exec(anchorNode.outerHTML)[1];\n }\n //console.log('link: ' + current);\n if (arg === 'current') {\n return current == 'http://' ? '' : current;\n }\n var link = arg || (arg === void 0 && window.prompt('link (empty to unlink):', current));\n if (!link) {\n document.execCommand('unlink');\n }\n else {\n document.execCommand('createLink', false, link);\n anchorNode = ContenteditableUtils.findSurroundingNode(selection, HTMLAnchorElement);\n if (anchorNode) {\n anchorNode.setAttribute('target', target || '_blank');\n }\n }\n resolve();\n });\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemContenteditableLinkCommandElement.prototype, \"target\", void 0);\nPacemContenteditableLinkCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-linkcommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE\n })\n], PacemContenteditableLinkCommandElement);\nexport { PacemContenteditableLinkCommandElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PCSS, Utils, ViewChild } from '@pacem/pacem-core';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\nimport { ContenteditableUtils, ContenteditableDOMObserver } from './utils';\n//namespace Pacem.Components.Scaffolding {\n//@CustomElement({ tagName: P + '-contenteditable-selectable' })\n//export class PacemContenteditableSelectableBehaviorElement extends Pacem.Behaviors.PacemBehavior {\n// protected decorate(element: Element) {\n// if (element instanceof HTMLElement || element instanceof SVGElement) {\n// Utils.addClass(element, PCSS + '-contenteditable-selectable');\n// }\n// }\n// protected undecorate(element: Element) {\n// if (element instanceof HTMLElement || element instanceof SVGElement) {\n// Utils.removeClass(element, PCSS + '-contenteditable-selectable');\n// }\n// }\n//}\nfunction insertPicture(range, blob) {\n return new Promise((resolve, reject) => {\n Utils.blobToDataURL(blob)\n .then(Utils.loadImage)\n .then(img => {\n const pic = document.createElement('picture');\n pic.setAttribute('contenteditable', 'false');\n img.tabIndex = 0;\n pic.appendChild(img);\n range.deleteContents();\n range.insertNode(pic);\n resolve(pic);\n });\n });\n}\n/** Toolbar button inserting a (rescalable) picture into the contenteditable host, either by file picker or by pasted/dropped image file. */\nlet PacemContenteditableImageCommandElement = class PacemContenteditableImageCommandElement extends PacemContenteditableButtonCommandElement {\n constructor() {\n super(...arguments);\n this._setBehaviorHandler = (evt) => {\n const img = evt.target, pic = img.parentElement;\n // this._rescale.register(pic);\n this.range = ContenteditableUtils.select(pic);\n };\n this._disposeBehaviorHandler = (_) => {\n };\n // #endregion\n }\n pasteCallback(f) {\n if (f.type.startsWith('image')) {\n return insertPicture(this.range, f);\n }\n else {\n return Promise.reject();\n }\n }\n cleanUp(content) {\n content.querySelectorAll('picture[contenteditable=false]').forEach(pic => {\n const childCount = pic.childNodes.length;\n for (let j = childCount - 1; j > 0; j--) {\n // remove leftover rescale divs\n pic.childNodes.item(j).remove();\n }\n });\n // legacy leftovers\n content.querySelectorAll('div.' + PCSS + '-rescale').forEach(i => i.remove());\n }\n isRelevant(range) {\n return false;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (Utils.isNullOrEmpty(this.altText)) {\n this.altText = 'insert image';\n }\n if (Utils.isNullOrEmpty(this.icon)) {\n this.icon = 'insert_photo';\n }\n if (Utils.isNullOrEmpty(this.keyboardShortcut)) {\n this.keyboardShortcut = 'Ctrl+Shift+I';\n }\n this._rescale.addEventListener('rescale', this._rescaleImg, false);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._rescale)) {\n this._rescale.removeEventListener('rescale', this._rescaleImg, false);\n this._disposeContainer();\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'disabled':\n if (!Utils.isNull(this._rescale)) {\n this._rescale.disabled = val;\n }\n break;\n case 'contentElement':\n if (old) {\n this._disposeContainer(old);\n }\n if (val) {\n this._initContainer(val);\n }\n break;\n case 'range':\n this._rangeChangeCallback(old, val);\n break;\n }\n }\n exec() {\n return new Promise((resolve, reject) => {\n const file = this._file, range = this.range;\n file.onchange = (evt) => {\n const f = file.files[0];\n if (Utils.isNull(f)) {\n resolve();\n }\n else {\n insertPicture(range, f)\n .then(pic => {\n file.value = '';\n resolve();\n });\n }\n };\n file.click();\n });\n }\n // #region private\n _rescaleImg(evt) {\n evt.preventDefault();\n const pic = evt.detail.element, rect = evt.detail.targetRect, img = pic.firstElementChild;\n img.style.width = rect.width + 'px';\n img.style.height = rect.height + 'px';\n }\n #observer;\n _rangeChangeCallback(old, val) {\n if (!Utils.isNull(old)\n && !old.collapsed\n && old.commonAncestorContainer instanceof Element\n && old.commonAncestorContainer === old.startContainer\n && old.commonAncestorContainer === old.endContainer\n && old.startOffset === (old.endOffset - 1)) {\n const el = old.commonAncestorContainer.childNodes.item(old.startOffset);\n if (el instanceof HTMLPictureElement) {\n this._rescale.unregister(el);\n }\n }\n if (!Utils.isNull(val)\n && !val.collapsed\n && val.commonAncestorContainer instanceof Element\n && val.commonAncestorContainer === val.startContainer\n && val.commonAncestorContainer === val.endContainer\n && val.startOffset === (val.endOffset - 1)) {\n const el = val.commonAncestorContainer.childNodes.item(val.startOffset);\n if (el instanceof HTMLPictureElement) {\n this._rescale.register(el);\n }\n }\n }\n _enhancePictureElement(pic) {\n if (pic.firstElementChild) {\n pic.firstElementChild.addEventListener('focus', this._setBehaviorHandler, false);\n pic.firstElementChild.addEventListener('blur', this._disposeBehaviorHandler, false);\n }\n }\n _downgradePictureElement(pic) {\n if (pic.firstElementChild) {\n // this._rescale.unregister(pic);\n pic.firstElementChild.removeEventListener('focus', this._setBehaviorHandler, false);\n pic.firstElementChild.removeEventListener('blur', this._disposeBehaviorHandler, false);\n }\n }\n _initContainer(contentElement = this.contentElement) {\n this.#observer = new ContenteditableDOMObserver(contentElement, (pic, removed) => {\n if (pic instanceof HTMLPictureElement) {\n if (removed) {\n this._downgradePictureElement(pic);\n }\n else {\n this._enhancePictureElement(pic);\n }\n }\n }, 'picture');\n }\n _disposeContainer(_ = this.contentElement) {\n const observer = this.#observer;\n if (!Utils.isNull(observer)) {\n observer.dispose();\n }\n }\n};\n__decorate([\n ViewChild('input[type=file]')\n], PacemContenteditableImageCommandElement.prototype, \"_file\", void 0);\n__decorate([\n ViewChild(P + \"-rescale\")\n], PacemContenteditableImageCommandElement.prototype, \"_rescale\", void 0);\nPacemContenteditableImageCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-imagecommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<input type=\"file\" accept=\"image/png, image/gif, image/jpeg, image/bmp, image/x-icon\" class=\"${PCSS}-trasparent ${PCSS}-inert\" pacem hidden>` +\n CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE + `<${P}-rescale keep-proportions=\"true\"></${P}-rescale>`\n })\n], PacemContenteditableImageCommandElement);\nexport { PacemContenteditableImageCommandElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PropertyConverters, Utils, Watch } from '@pacem/pacem-core';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\nimport { ContenteditableUtils } from './utils';\n//namespace Pacem.Components.Scaffolding {\n/** Well-known `document.execCommand` commands supported out-of-the-box by {@link PacemContenteditableExecCommandElement}. */\nexport var KnownExecCommand;\n(function (KnownExecCommand) {\n KnownExecCommand[\"Bold\"] = \"bold\";\n KnownExecCommand[\"Italic\"] = \"italic\";\n KnownExecCommand[\"Underline\"] = \"underline\";\n KnownExecCommand[\"StrikeThrough\"] = \"strikeThrough\";\n KnownExecCommand[\"OrderedList\"] = \"insertOrderedList\";\n KnownExecCommand[\"UnorderedList\"] = \"insertUnorderedList\";\n KnownExecCommand[\"JustifyLeft\"] = \"justifyLeft\";\n KnownExecCommand[\"JustifyCenter\"] = \"justifyCenter\";\n KnownExecCommand[\"JustifyRight\"] = \"justifyRight\";\n KnownExecCommand[\"JustifyFull\"] = \"justifyFull\";\n //Copy = 'copy',\n //Cut = 'cut',\n //Paste = 'paste'\n //Undo = 'undo',\n //Redo = 'redo',\n})(KnownExecCommand || (KnownExecCommand = {}));\n;\n/**\n * Returns relevant material icon ligatures\n * @param cmd A known command\n */\nfunction getKnownCommandIcon(cmd) {\n const lower_cmd = cmd?.toLowerCase();\n switch (lower_cmd) {\n case \"bold\":\n case \"italic\":\n return 'format_' + lower_cmd;\n case 'underline':\n return 'format_underlined';\n case 'strikethrough':\n return 'strikethrough_s';\n case 'insertorderedlist':\n return 'format_list_numbered';\n case 'insertunorderedlist':\n return 'format_list_bulleted';\n case 'justifyleft':\n case 'justifyright':\n case 'justifycenter':\n return 'format_align_' + lower_cmd.substr(7 /* 'justify' */);\n case 'justifyfull':\n return 'format_align_justify';\n default:\n return 'help_outline';\n }\n}\nfunction getKnownCommandFilters(cmd, argument) {\n const lower_cmd = cmd?.toLowerCase();\n switch (lower_cmd) {\n case \"bold\":\n return ['b', 'strong'];\n case \"italic\":\n return ['i', 'em'];\n case 'underline':\n return ['u'];\n case 'strikethrough':\n return ['strike', 's', 'del'];\n case 'insertorderedlist':\n return ['ol'];\n case 'insertunorderedlist':\n return ['ul'];\n case 'justifyleft':\n return [{ style: { name: 'text-align', value: 'left' } }];\n case 'justifyright':\n return [{ style: { name: 'text-align', value: 'right' } }];\n case 'justifycenter':\n return [{ style: { name: 'text-align', value: 'center' } }];\n case 'justifyfull':\n return [{ style: { name: 'text-align', value: 'justify' } }];\n case 'formatblock':\n return [argument];\n default:\n return ['none'];\n }\n}\n/** Toolbar button applying a native `document.execCommand`-backed formatting command (bold, italic, lists, ...) to the contenteditable host. */\nlet PacemContenteditableExecCommandElement = class PacemContenteditableExecCommandElement extends PacemContenteditableButtonCommandElement {\n _matchRelevance(range, arg) {\n const found = (typeof arg === 'object') ?\n ContenteditableUtils.findSurroundingNode(range, node => node instanceof HTMLElement\n && (Utils.isNullOrEmpty(arg.tagName) || node.tagName === arg.tagName.toUpperCase())\n && node.style[arg.style.name] === arg.style.value)\n : ContenteditableUtils.findSurroundingNode(range, arg);\n return !Utils.isNull(found);\n }\n isRelevant(range) {\n const filters = getKnownCommandFilters(this.command, this.argument);\n for (let f of filters) {\n if (this._matchRelevance(range, f)) {\n return true;\n }\n }\n return false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'command') {\n if (Utils.isNullOrEmpty(this.icon) || this.icon === getKnownCommandIcon(old)) {\n this.icon = getKnownCommandIcon(val);\n }\n if (Utils.isNullOrEmpty(this.altText) || this.altText === old) {\n this.altText = val;\n }\n }\n }\n exec() {\n return new Promise((resolve, _) => {\n // check if selection is around an 'inert' ([contenteditable=false]) element\n const r = this.range, cmdfilter = getKnownCommandFilters(this.command, this.argument)[0];\n if (!Utils.isNull(r)) {\n // #region wrap/unwrap (manages contenteditable=false 'islands')\n const island = ContenteditableUtils.testInertElementWrapping(r);\n if (island.result\n && typeof cmdfilter === 'string' && ['b', 'i', 'strike', 'u'].indexOf(cmdfilter) >= 0) {\n // wrap or remove?\n const wrapper = ContenteditableUtils.findSurroundingNode(r, cmdfilter);\n if (!Utils.isNull(wrapper) && wrapper.childNodes.length === 1) {\n // remove\n const newChild = wrapper.childNodes.item(0), select = island.element;\n wrapper.parentElement.replaceChild(newChild, wrapper);\n ContenteditableUtils.select(select);\n }\n else {\n // wrap\n const n = document.createElement(cmdfilter), select = island.element;\n const frag = r.extractContents();\n r.insertNode(n);\n n.append(frag);\n ContenteditableUtils.select(select);\n }\n }\n // #endregion\n else {\n document.execCommand(this.command, false, this.argument);\n }\n }\n resolve();\n });\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableExecCommandElement.prototype, \"command\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemContenteditableExecCommandElement.prototype, \"argument\", void 0);\nPacemContenteditableExecCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-execcommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE\n })\n], PacemContenteditableExecCommandElement);\nexport { PacemContenteditableExecCommandElement };\n","import { Utils, PCSS } from '@pacem/pacem-core';\nimport { PacemContenteditableHistoryCommandElement } from './historycommand';\nimport { PacemContenteditableAlignCommandElement } from './aligncommand';\nimport { PacemContenteditableLinkCommandElement } from './linkcommand';\nimport { PacemContenteditableImageCommandElement } from './imagecommand';\nimport { PacemContenteditableExecCommandElement, KnownExecCommand } from './execcommand';\n//namespace Pacem.Components.Scaffolding {\nfunction isRoot(element) {\n return element instanceof HTMLDivElement\n && element.contentEditable === 'true'\n && element.hasAttribute('pacem')\n && element.hasAttribute('role')\n && element.attributes['role'].value === 'presenter';\n}\n/** Watches a contenteditable host for insertion/removal of elements matching a given selector (e.g. inert `[contenteditable=false]` islands), notifying a callback for each match, recursively. */\nexport class ContenteditableDOMObserver {\n /**\n * Initializes the observer, immediately scanning the given container and then watching it for further mutations.\n * @param contentElement The contenteditable container to observe.\n * @param mutationCallback Invoked for each matching node found, added or removed.\n * @param selector CSS selector used to filter relevant nodes.\n */\n constructor(contentElement, mutationCallback, selector = '*[contenteditable=false]') {\n this.#callback = mutationCallback;\n this.#selector = selector;\n this.#mutationObserver = new MutationObserver(list => {\n const fn = (item, removed) => {\n item.childNodes.forEach(i => /* recursion here */ fn(i, removed));\n mutationCallback(item, removed);\n };\n for (let entry of list) {\n const added = entry.addedNodes;\n const removed = entry.removedNodes;\n for (let j = 0; j < added.length; j++) {\n const item = added.item(j);\n fn(item, false);\n }\n for (let j = 0; j < removed.length; j++) {\n const item = removed.item(j);\n fn(item, true);\n }\n }\n });\n this._initContainer(contentElement);\n }\n _initContainer(contentElement) {\n contentElement.querySelectorAll(this.#selector).forEach(el => this.#callback(el));\n this.#mutationObserver.observe(contentElement, { subtree: true, childList: true });\n this.#contentElement = contentElement;\n }\n _disposeContainer(contentElement) {\n const observer = this.#mutationObserver;\n if (!Utils.isNull(observer)) {\n observer.disconnect();\n }\n contentElement.querySelectorAll(this.#selector).forEach(el => this.#callback(el, true));\n }\n /** Stops observing and notifies the callback, as a removal, for every currently matching node. */\n dispose() {\n this._disposeContainer(this.#contentElement);\n }\n #selector;\n #callback;\n #contentElement;\n #mutationObserver;\n}\n/** Collection of static DOM/Range helper methods shared by the contenteditable command elements. */\nexport class ContenteditableUtils {\n /** Builds the default toolbar dashboard (undo/redo, formatting, alignment, link and image commands) as a detached fragment. */\n static getDefaultDashboard() {\n const frag = new DocumentFragment();\n const toolbar0 = document.createElement('div');\n Utils.addClass(toolbar0, PCSS + '-contenteditable-toolbar');\n const undo = new PacemContenteditableHistoryCommandElement();\n undo.command = 'undo';\n undo.keyboardShortcut = \"Ctrl+Z\";\n const redo = new PacemContenteditableHistoryCommandElement();\n redo.command = 'redo';\n redo.keyboardShortcut = \"Ctrl+Y\";\n toolbar0.append(undo, redo);\n const separator0 = document.createElement('div');\n Utils.addClass(separator0, PCSS + '-contenteditable-separator');\n const toolbar1 = document.createElement('div');\n Utils.addClass(toolbar1, PCSS + '-contenteditable-toolbar');\n const bold = new PacemContenteditableExecCommandElement();\n bold.command = KnownExecCommand.Bold;\n bold.keyboardShortcut = \"Ctrl+B\";\n const italic = new PacemContenteditableExecCommandElement();\n italic.command = KnownExecCommand.Italic;\n italic.keyboardShortcut = \"Ctrl+I\";\n const underline = new PacemContenteditableExecCommandElement();\n underline.command = KnownExecCommand.Underline;\n underline.keyboardShortcut = \"Ctrl+U\";\n const strike = new PacemContenteditableExecCommandElement();\n strike.command = KnownExecCommand.StrikeThrough;\n underline.keyboardShortcut = \"Ctrl+K\";\n const ul = new PacemContenteditableExecCommandElement();\n ul.command = KnownExecCommand.UnorderedList;\n const ol = new PacemContenteditableExecCommandElement();\n ol.command = KnownExecCommand.OrderedList;\n const alignLeft = new PacemContenteditableAlignCommandElement();\n alignLeft.align = 'left';\n const alignCenter = new PacemContenteditableAlignCommandElement();\n alignCenter.align = 'center';\n const alignRight = new PacemContenteditableAlignCommandElement();\n alignRight.align = 'right';\n const justify = new PacemContenteditableAlignCommandElement();\n justify.align = 'justify';\n toolbar1.append(bold, italic, underline, strike, ul, ol, alignLeft, alignCenter, alignRight, justify);\n const separator1 = document.createElement('div');\n Utils.addClass(separator1, PCSS + '-contenteditable-separator');\n const toolbar2 = document.createElement('div');\n Utils.addClass(toolbar2, PCSS + '-contenteditable-toolbar');\n const link = new PacemContenteditableLinkCommandElement();\n const img = new PacemContenteditableImageCommandElement();\n toolbar2.append(link, img);\n frag.append(toolbar0, separator0, toolbar1, separator1, toolbar2);\n return frag;\n }\n static findSurroundingNode(range, arg1) {\n var node = range instanceof Node ? range : range.commonAncestorContainer;\n while (node && !(typeof arg1 === 'string' && node instanceof Element && node.tagName === arg1.toUpperCase()\n || typeof arg1 === 'function' && Utils.isNull(arg1.prototype) && arg1(node)\n || typeof arg1 === 'function' && !Utils.isNull(arg1.prototype) && node instanceof arg1)) {\n const parent = node.parentNode;\n if (isRoot(parent)) {\n node = null;\n break;\n }\n node = parent;\n }\n return node;\n }\n /**\n * Seeks for the nearest surrounding block-level element of a given Selection's range.\n * @param range\n */\n static findSurroundingBlockElement(range) {\n return this.findSurroundingNode(range, ContenteditableUtils.isBlockElement);\n }\n /**\n * Retrieves the sibling block-level elements (e.g. paragraphs) touched by a given Selection's range.\n * @param range\n */\n static findSurroundingSiblingBlockElements(range) {\n let output = [];\n if (isRoot(range.startContainer)) {\n if (!range.collapsed) {\n const root = range.startContainer;\n for (let k = range.startOffset; k <= range.endOffset; k++) {\n const child = root.children.item(k);\n if (this.isBlockElement(child)) {\n output.push(root.children.item(k));\n }\n }\n }\n return output;\n }\n // simil-collapsed\n if (range.startContainer === range.endContainer) {\n let retval = range.startContainer;\n while (!ContenteditableUtils.isBlockElement(retval) && retval.parentElement.contentEditable != 'true') {\n retval = retval.parentElement;\n }\n return retval instanceof Element ? [retval] :\n (retval.parentElement.contentEditable === 'true' ? [] : [retval.parentElement]);\n }\n // generic\n let root = range.commonAncestorContainer, started = false;\n for (let j = 0; j < root.childNodes.length; j++) {\n const iNode = root.childNodes.item(j);\n const pick = (!started && iNode.contains(range.startContainer))\n || started;\n if (pick && ContenteditableUtils.isBlockElement(iNode)) {\n output.push(iNode);\n started = true;\n if (iNode.contains(range.endContainer)) {\n break;\n }\n }\n }\n return started ? output : (root instanceof Element && !isRoot(root) ? [root] : []);\n }\n /**\n * Retrieves the top-level (direct children of the contenteditable root) elements spanned by a given Selection's range.\n * @param range\n */\n static findContainingRootElements(range) {\n const range1 = range.cloneRange(), range2 = range.cloneRange();\n range1.collapse(true);\n range2.collapse();\n let root = this.findSurroundingNode(range1, n => n.parentElement.contentEditable === 'true');\n const retval = [root];\n while (!root.contains(range2.startContainer)) {\n retval.push(root = root.nextElementSibling);\n }\n return retval;\n }\n /**\n * Checks whether the given node is an `Element` with a block-level (non-`inline*`) computed display.\n * @param node\n */\n static isBlockElement(node) {\n return node instanceof Element && !getComputedStyle(node).display.startsWith('inline');\n }\n /**\n * Selects a node (or its contents, when `inside` is `true`) and applies the resulting range to the current document Selection.\n * @param node\n * @param inside\n */\n static select(node, inside = false) {\n const range = document.createRange();\n if (!inside) {\n range.setStartBefore(node);\n range.setEndAfter(node);\n }\n else {\n range.setStart(node, 0);\n range.setEnd(node, node.childNodes.length);\n }\n const selection = document.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n return range;\n }\n /**\n * Copies all attributes from one element onto another.\n * @param to\n * @param from\n */\n static copyAttributes(to, from) {\n const attrs = from.attributes;\n for (let j = 0; j < attrs.length; j++) {\n const attr = attrs.item(j);\n to.setAttribute(attr.name, attr.value);\n }\n }\n /**\n * Checks whether the provided range wraps an 'inert' (contentEditable=false) element, and returns result accordingly.\n * @param range\n */\n static testInertElementWrapping(range) {\n if (!Utils.isNull(range)) {\n const parent = range.startContainer, index = range.startOffset;\n var node;\n if (parent === range.endContainer && index == (range.endOffset - 1) && (node = parent.childNodes.item(index)) instanceof HTMLElement && node.contentEditable === 'false') {\n return { result: true, element: node };\n }\n }\n return { result: false };\n }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PropertyConverters, Utils, Watch } from '@pacem/pacem-core';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\nimport { ContenteditableUtils } from './utils';\n//namespace Pacem.Components.Scaffolding {\nfunction getAlignIcon(align) {\n return 'format_align_' + align;\n}\n/** Toolbar button applying a text-alignment (left/center/right/justify) style to the block(s) touched by the current selection. */\nlet PacemContenteditableAlignCommandElement = class PacemContenteditableAlignCommandElement extends PacemContenteditableButtonCommandElement {\n isRelevant(range) {\n const els = ContenteditableUtils.findSurroundingSiblingBlockElements(range);\n if (Utils.isNullOrEmpty(els)) {\n return false;\n }\n const el = els[0], textAlign = getComputedStyle(el).textAlign;\n return textAlign == this.align;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'align') {\n if (Utils.isNullOrEmpty(this.icon) || this.icon === getAlignIcon(old)) {\n this.icon = getAlignIcon(val);\n }\n if (Utils.isNullOrEmpty(this.altText) || this.altText === old) {\n this.altText = val;\n }\n }\n }\n exec() {\n const elements = ContenteditableUtils.findSurroundingSiblingBlockElements(this.range);\n let targetAlign;\n for (let el of elements) {\n if (ContenteditableUtils.isBlockElement(el) && el instanceof HTMLElement) {\n // normalize alignment: pick one element (the 1st one) to rule them all\n if (Utils.isNull(targetAlign)) {\n targetAlign = Utils.hasClass(el, 'text-' + this.align) ? '' : this.align;\n }\n el.style.textAlign = '';\n Utils.removeClass(el, 'text-left text-right text-center text-justify');\n if (!Utils.isEmpty(targetAlign)) {\n Utils.addClass(el, 'text-' + targetAlign);\n }\n }\n }\n return Promise.resolve();\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableAlignCommandElement.prototype, \"align\", void 0);\nPacemContenteditableAlignCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-aligncommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE\n })\n], PacemContenteditableAlignCommandElement);\nexport { PacemContenteditableAlignCommandElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Defaults, Utils, Watch, PropertyConverters, ViewChild, PCSS } from '@pacem/pacem-core';\nimport { ContenteditableUtils, ContenteditableDOMObserver } from './utils';\nimport { PacemContenteditableCommandElement } from '../contenteditable';\n//namespace Pacem.Components.Scaffolding {\nfunction insertPlaceholder(range, placeholder) {\n const ins = document.createElement('ins');\n ins.textContent = placeholder;\n ins.setAttribute('contenteditable', 'false');\n // not necessary:\n // ins.style.display = 'inline-block';\n ins.tabIndex = 0;\n range.deleteContents();\n range.insertNode(ins);\n return ins;\n}\nfunction isPlaceholder(node) {\n return node instanceof HTMLModElement && node.tagName === 'INS';\n}\nfunction isRelevant(range) {\n const wraps = ContenteditableUtils.testInertElementWrapping(range);\n if (wraps.result && isPlaceholder(wraps.element)) {\n const element = wraps.element, placeholder = element.textContent;\n return { result: true, element, placeholder };\n }\n return { result: false };\n}\n/** Dropdown command inserting an inert (`contenteditable=false`) placeholder token, picked from a suggestable datasource, into the contenteditable host. */\nlet PacemContenteditablePlaceholderElement = class PacemContenteditablePlaceholderElement extends PacemContenteditableCommandElement {\n constructor() {\n super(...arguments);\n this._focusHandler = (evt) => {\n const ins = evt.target;\n this.range = ContenteditableUtils.select(ins);\n };\n // #endregion\n }\n #relevancy;\n #normalizedDatasource;\n cleanUp(content) {\n content.querySelectorAll('ins[contenteditable=false]').forEach(ins => {\n Utils.removeClass(ins, 'placeholder-selected');\n });\n }\n exec(ph) {\n const el = insertPlaceholder(this.range, ph);\n const range = ContenteditableUtils.select(el);\n range.collapse(false);\n return Promise.resolve(el);\n }\n isRelevant(_) {\n return this.#relevancy?.result ?? false;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._fillDropdown();\n this._initContainer();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'datasource':\n this._fillDropdown();\n break;\n case 'contentElement':\n if (old) {\n this._disposeContainer(old);\n }\n if (val) {\n this._initContainer(val);\n }\n break;\n case 'range':\n this._changeRelevancy();\n break;\n }\n }\n }\n disconnectedCallback() {\n this._disposeContainer();\n super.disconnectedCallback();\n }\n _changeRelevancy(range = this.range) {\n const old = this.#relevancy;\n if (!Utils.isNull(old?.element)) {\n Utils.removeClass(old.element, 'placeholder-selected');\n }\n const val = this.#relevancy = isRelevant(range);\n if (!Utils.isNull(val?.element)) {\n Utils.addClass(val.element, 'placeholder-selected');\n }\n if (val.result) {\n this._dropdown.value = val.placeholder;\n }\n else {\n this._dropdown.popout();\n this._dropdown.value = void 0;\n }\n }\n _fillDropdown(datasource = this.datasource || []) {\n const ds = this.#normalizedDatasource = datasource.map(i => { return typeof i === 'string' ? { placeholder: i, definition: i } : i; });\n const dd = this._dropdown;\n dd.textProperty =\n dd.valueProperty = 'placeholder';\n dd.datasource = ds;\n }\n // #region mutation observer\n #observer;\n _initContainer(contentElement = this.contentElement) {\n this.#observer = new ContenteditableDOMObserver(contentElement, (item, removed) => {\n if (isPlaceholder(item)) {\n if (removed) {\n this._downgradePlaceholderElement(item);\n }\n else {\n this._enhancePlaceholderElement(item);\n }\n }\n }, 'ins[contenteditable=false]');\n }\n _disposeContainer(_ = this.contentElement) {\n const observer = this.#observer;\n if (!Utils.isNull(observer)) {\n observer.dispose();\n }\n }\n _enhancePlaceholderElement(ins) {\n ins.addEventListener('focus', this._focusHandler, false);\n }\n _downgradePlaceholderElement(ins) {\n ins.removeEventListener('focus', this._focusHandler, false);\n }\n};\n__decorate([\n ViewChild('template')\n], PacemContenteditablePlaceholderElement.prototype, \"_itemtemplate\", void 0);\n__decorate([\n ViewChild(P + '-suggest')\n], PacemContenteditablePlaceholderElement.prototype, \"_dropdown\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemContenteditablePlaceholderElement.prototype, \"datasource\", void 0);\nPacemContenteditablePlaceholderElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-placeholder', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<template>\r\n<${P}-span text=\"{{ ^item.viewValue }}\" class=\"text-tech\"></${P}-span>\r\n<${P}-markdown hide=\"{{ $pacem.isNullOrEmpty(^item.data.definition) || ^item.viewValue === ^item.data.definition }}\" class=\"${PCSS}-margin margin-0 text-small\" value=\"{{ ^item.data.definition }}\"></${P}-markdown>\r\n</template>\r\n<${P}-suggest placeholder=\"Placeholder\" class=\"pacem-button button\" disabled=\"{{ $pacem.isNull(:host.range) }}\"\r\n on-change=\":host.execCommand($this.value)\"\r\n css-class=\"{{ {'text-primary': :host.isRelevant(:host.range)} }}\" \r\n compare-by=\"placeholder\" text-property=\"placeholder\" itemtemplate=\"{{ ::_itemtemplate }}\" prevent-focus=\"true\" allow-typing=\"false\"></${P}-suggest>`\n })\n], PacemContenteditablePlaceholderElement);\nexport { PacemContenteditablePlaceholderElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Defaults, Utils, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { ContenteditableUtils } from './utils';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\n//namespace Pacem.Components.Scaffolding {\n/** Toolbar button wrapping (or, if already applied, unwrapping) the block(s) touched by the current selection with a given tag (e.g. `blockquote`, `h1`). */\nlet PacemContenteditableWrapCommandElement = class PacemContenteditableWrapCommandElement extends PacemContenteditableButtonCommandElement {\n isRelevant(range) {\n return !Utils.isNull(ContenteditableUtils.findSurroundingNode(range, this.tagname));\n }\n exec() {\n return new Promise((resolve, _) => {\n const tagName = this.tagname;\n if (!Utils.isNullOrEmpty(tagName)) {\n const range = this.range;\n const alreadyEl = ContenteditableUtils.findSurroundingNode(range, tagName)\n || ContenteditableUtils.findSurroundingNode(range.startContainer, tagName)\n || ContenteditableUtils.findSurroundingNode(range.endContainer, tagName);\n if (Utils.isNull(alreadyEl)) {\n // WRAP\n const elementsToWrap = ContenteditableUtils.findSurroundingSiblingBlockElements(range);\n if (!Utils.isNullOrEmpty(elementsToWrap)) {\n const newChild = document.createElement(tagName);\n if (elementsToWrap.length === 1) {\n // replace\n const repl = elementsToWrap[0];\n range.setStart(repl, 0);\n range.setEnd(repl, repl.childNodes.length);\n const frag = range.extractContents();\n newChild.append(frag);\n ContenteditableUtils.copyAttributes(newChild, repl);\n repl.parentElement.insertBefore(newChild, repl);\n repl.remove();\n }\n else {\n // wrap\n range.setStartBefore(elementsToWrap[0]);\n range.setEndAfter(elementsToWrap[elementsToWrap.length - 1]);\n const frag = range.extractContents();\n newChild.append(frag);\n range.insertNode(newChild);\n }\n const r = ContenteditableUtils.select(newChild, true);\n r.collapse();\n }\n }\n else {\n // UNWRAP\n range.setStart(alreadyEl, 0);\n range.setEnd(alreadyEl, alreadyEl.childNodes.length);\n // replace or unwrap\n let replace = false;\n const childNodes = alreadyEl.childNodes;\n for (let j = 0; j < childNodes.length; j++) {\n const child = childNodes.item(j);\n if (!ContenteditableUtils.isBlockElement(child)) {\n replace = true;\n break;\n }\n }\n if (replace) {\n const p = document.createElement('p');\n ContenteditableUtils.copyAttributes(p, alreadyEl);\n p.append(range.extractContents());\n alreadyEl.parentNode.replaceChild(p, alreadyEl);\n const r = ContenteditableUtils.select(p, true);\n r.collapse();\n }\n else {\n // unwrap\n alreadyEl.parentNode.replaceChild(range.extractContents(), alreadyEl);\n const r = ContenteditableUtils.select(range.endContainer, true);\n r.collapse();\n }\n }\n }\n resolve();\n });\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableWrapCommandElement.prototype, \"tagname\", void 0);\nPacemContenteditableWrapCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-wrapcommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE\n })\n], PacemContenteditableWrapCommandElement);\nexport { PacemContenteditableWrapCommandElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Components, CustomElement, CustomElementUtils, CustomEventUtils, Defaults, P, PCSS, PropertyConverters, stopPropagationHandler, Utils, ViewChild, Watch } from '@pacem/pacem-core';\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nconst JsonOrStringConverter = {\n convert: (attr, el) => {\n return /\\{.+\\}/.test(attr) ? PropertyConverters.Json.convert(attr) : PropertyConverters.String.convert(attr);\n },\n convertBack: (prop, el) => {\n if (typeof prop === 'string') {\n return prop;\n }\n return PropertyConverters.Json.convertBack(prop, el);\n }\n};\n// #region MONTH-PICKER (util component)\nfunction buildMonthGrid() {\n let header = '';\n for (let month = 0; month < 12; month++) {\n header += `<div class=\"calendar-month month-${month + 1}\"><${P}-span class=\"month-button text-ellipsed\" on-click=\":host._setMonth(${month})\" css-class=\"{{ { 'selected-month': :host._isSelectedMonth(${month}, :host.month, :host.viewYear), 'this-month': :host._isThisMonth(${month}, :host.viewYear) } }}\" text=\"{{ :host._getMonthLabel(${month}) }}\"></${P}-span></div>`;\n }\n return header;\n}\n/** Utility 12-month grid picker, used internally by {@link PacemCalendarPickerElement} to pick a month within {@link viewYear}. */\nlet PacemCalendarMonthPickerElement = class PacemCalendarMonthPickerElement extends Components.PacemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'viewYear':\n this.dispatchEvent(new CustomEvent('viewyearchange', { detail: new Date(val, 0, 1), bubbles: false, cancelable: false }));\n Utils.removeClass(this, \"viewyear-next viewyear-previous\");\n requestAnimationFrame(() => {\n Utils.addClass(this, old > val ? \"viewyear-previous\" : \"viewyear-next\");\n });\n break;\n }\n }\n _getMonthLabel(m) {\n const year = new Date().getFullYear();\n const date = new Date(year, m, 1);\n return date.toLocaleString(Utils.lang(this), { month: 'short' });\n }\n _isThisMonth(m, v = this.viewYear) {\n return this._isSelectedMonth(m, new Date(), v);\n }\n _isSelectedMonth(m, d = this.month, v = this.viewYear) {\n const actual = Utils.parseDate(d);\n if (!Utils.Dates.isDate(actual)) {\n return false;\n }\n const viewYear = v ?? new Date().getFullYear();\n return actual.getMonth() === m && actual.getFullYear() === viewYear;\n }\n _setMonth(m) {\n const year = this.viewYear;\n const date = new Date(year, m, 1);\n this.month = date;\n this.dispatchEvent(new CustomEvent('monthselect', { detail: date, bubbles: false, cancelable: false }));\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Date })\n], PacemCalendarMonthPickerElement.prototype, \"month\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Date })\n], PacemCalendarMonthPickerElement.prototype, \"viewYear\", void 0);\nPacemCalendarMonthPickerElement = __decorate([\n CustomElement({\n tagName: P + '-calendar-month-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-month-picker\">${buildMonthGrid()}</div>`\n })\n], PacemCalendarMonthPickerElement);\nexport { PacemCalendarMonthPickerElement };\n/** Dispatched by {@link PacemCalendarPickerElement} when its clear button is used to unselect the current date. */\nexport class CalendarDateUnselectEvent extends ComponentsUI.UI.DateSelectEvent {\n constructor() {\n super(void 0);\n }\n}\n// #endregion\n// #region YEAR-PICKER (util component)\nconst YEARS_IN_RANGE = 12;\nfunction buildYearGrid() {\n let header = '';\n for (let year = 0; year < YEARS_IN_RANGE; year++) {\n header += `<div class=\"calendar-year year-${year + 1}\"><${P}-span class=\"year-button text-ellipsed\" on-click=\":host._setYear(${year})\" css-class=\"{{ { 'selected-year': :host._isSelectedYear(${year}, :host.year, :host.viewYear), 'this-year': :host._isThisYear(${year}, :host.viewYear) } }}\" text=\"{{ :host._getYearLabel(${year}, :host.viewYear) }}\"></${P}-span></div>`;\n }\n return header;\n}\nfunction rangeFirstYear(y) {\n const mod = y % 10;\n return y - mod;\n}\n/** Utility grid picker of {@link YEARS_IN_RANGE} years, used internally by {@link PacemCalendarPickerElement} to pick a year within the range containing {@link viewYear}. */\nlet PacemCalendarYearPickerElement = class PacemCalendarYearPickerElement extends Components.PacemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'viewYear':\n this.dispatchEvent(new CustomEvent('viewyearchange', { detail: new Date(val, 0, 1), bubbles: false, cancelable: false }));\n Utils.removeClass(this, \"viewyear-next viewyear-previous\");\n requestAnimationFrame(() => {\n Utils.addClass(this, old > val ? \"viewyear-previous\" : \"viewyear-next\");\n });\n break;\n }\n }\n _getYearLabel(y, year = this.viewYear) {\n const first = rangeFirstYear(year);\n return '' + (first + y);\n }\n _isThisYear(y, v = this.viewYear) {\n return this._isSelectedYear(y, new Date(), v);\n }\n _isSelectedYear(y, d = this.year, v = this.viewYear) {\n const actual = Utils.parseDate(d);\n if (!Utils.Dates.isDate(actual)) {\n return false;\n }\n const start = rangeFirstYear(v), computed = start + y;\n ;\n return actual.getFullYear() === computed;\n }\n _setYear(y) {\n const v = this.viewYear, first = rangeFirstYear(v);\n const date = new Date(first + y, 0, 1);\n this.year = date;\n this.dispatchEvent(new CustomEvent('yearselect', { detail: date, bubbles: false, cancelable: false }));\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Date })\n], PacemCalendarYearPickerElement.prototype, \"year\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Date })\n], PacemCalendarYearPickerElement.prototype, \"viewYear\", void 0);\nPacemCalendarYearPickerElement = __decorate([\n CustomElement({\n tagName: P + '-calendar-year-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-year-picker\">${buildYearGrid()}</div>`\n })\n], PacemCalendarYearPickerElement);\nexport { PacemCalendarYearPickerElement };\n// #endregion\nfunction buildCalendarHeader() {\n let header = '';\n for (let day = 0; day < 7; day++) {\n header += `<${P}-span class=\"calendar-heading day-${day + 1} text-ellipsed\" text=\"{{ :host._getHeaderLabel(:host._week[${day}]) }}\"></${P}-span>`;\n }\n return `<${P}-panel hide=\"{{ :host.viewmode !== 'calendar' }}\" class=\"calendar-header\">${header}</${P}-panel>`;\n}\n/** {@link PacemBaseInputElement}-alike field that pops up a `pacem-calendar` (with month/year zoom levels) to pick a `Date` value. */\nlet PacemCalendarPickerElement = class PacemCalendarPickerElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n /** Gets or sets which picker is currently shown in the dropdown: the day calendar, the month grid, or the year grid. */\n this.viewmode = 'calendar';\n this.#locked = false;\n this._swipeHandler = (e) => {\n const dir = e.detail.direction;\n switch (dir) {\n case 'left':\n this._next(e);\n break;\n case 'right':\n this._prev(e);\n break;\n }\n };\n this._clearBtnHandler = (evt) => {\n evt.preventDefault();\n this._viewDate = new Date();\n this.changeHandler(new CalendarDateUnselectEvent());\n };\n this._viewDateChangeHandler = (e) => {\n this._onViewDateChange(e);\n };\n this._popCalendarHandler = (e) => {\n if (this.#locked) {\n return;\n }\n this.viewmode = 'calendar';\n const dateValue = Utils.parseDate(this.value);\n this._calendar.viewDate =\n this._monthPicker.month =\n this._yearPicker.year =\n Utils.Dates.isDate(dateValue) ? dateValue : this._calendar.viewDate;\n const offset = Utils.offset(this._input);\n const dropdown = this._dropdown;\n dropdown.style.top = (offset.top + offset.height) + 'px';\n dropdown.style.left = offset.left + 'px';\n dropdown.hidden = false;\n requestAnimationFrame(() => {\n Utils.addClass(dropdown, 'dropdown-in');\n });\n };\n this._hideCalendarHandler = (e) => {\n const path = e.composedPath() || [];\n if (path.indexOf(this._input) >= 0 || path.indexOf(this._dropdown) >= 0) {\n return;\n }\n this._hideCalendar();\n };\n }\n #locked;\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'viewmode':\n case '_viewDate':\n this._onViewDateChange(this._viewDate);\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const dropdown = this._dropdown = this._proxy.dom[0];\n const calendar = this._calendar = dropdown.querySelector(P + '-calendar');\n const monthPicker = this._monthPicker = dropdown.querySelector(P + '-calendar-month-picker');\n const yearPicker = this._yearPicker = dropdown.querySelector(P + '-calendar-year-picker');\n this._monthLabel = dropdown.querySelector('.calendar-month');\n this._yearLabel = dropdown.querySelector('.calendar-year');\n this._rangeLabel = dropdown.querySelector('.calendar-year-range');\n const now = this._calendar.now = new Date();\n const dateValue = Utils.Dates.parse(this.value);\n const hasValue = Utils.Dates.isDate(dateValue);\n const date = hasValue ? dateValue : now;\n calendar.dayLabelFormatter = (d) => {\n return Utils.parseDate(d).toLocaleString(Utils.lang(this), { day: 'numeric' });\n };\n monthPicker.addEventListener('viewyearchange', this._viewDateChangeHandler, false);\n yearPicker.addEventListener('viewyearchange', this._viewDateChangeHandler, false);\n calendar.addEventListener('viewdatechange', this._viewDateChangeHandler, false);\n calendar.viewDate = date;\n calendar.date = dateValue;\n const input = this._input;\n input.addEventListener('focus', this._popCalendarHandler, false);\n input.addEventListener('mousedown', this._popCalendarHandler, false);\n dropdown.addEventListener('mousedown', stopPropagationHandler, false);\n window.document.body.addEventListener('mousedown', this._hideCalendarHandler, true);\n this._clearButton.addEventListener('mousedown', this._clearBtnHandler, false);\n // swiper\n const swiper = new Components.PacemSwipeElement();\n calendar.behaviors.push(swiper);\n monthPicker.behaviors.push(swiper);\n yearPicker.behaviors.push(swiper);\n swiper.addEventListener('swipe', this._swipeHandler, false);\n const body = CustomElementUtils.findAncestorShell(this);\n this._swiper = body.appendChild(swiper);\n }\n disconnectedCallback() {\n const input = this._input;\n if (!Utils.isNull(input)) {\n this._clearButton.removeEventListener('mousedown', this._clearBtnHandler, false);\n input.removeEventListener('focus', this._popCalendarHandler, false);\n input.removeEventListener('mousedown', this._popCalendarHandler, false);\n this._dropdown.removeEventListener('mousedown', stopPropagationHandler, false);\n window.document.body.removeEventListener('mousedown', this._hideCalendarHandler, true);\n this._calendar.removeEventListener('viewdatechange', this._viewDateChangeHandler, false);\n this._monthPicker.removeEventListener('viewyearchange', this._viewDateChangeHandler, false);\n this._yearPicker.removeEventListener('viewyearchange', this._viewDateChangeHandler, false);\n }\n const swiper = this._swiper;\n if (!Utils.isNull(swiper)) {\n const calendar = this._calendar, monthPicker = this._monthPicker, yearPicker = this._yearPicker;\n for (let el of [calendar, monthPicker, yearPicker]) {\n const behaviors = el.behaviors, swipeIndex = behaviors.indexOf(swiper);\n if (swipeIndex >= 0) {\n el.behaviors.splice(swipeIndex, 1);\n }\n }\n swiper.removeEventListener('swipe', this._swipeHandler, false);\n swiper.remove();\n this._swiper = null;\n }\n super.disconnectedCallback();\n }\n _getHeaderLabel(d, mode = this.viewmode) {\n const dte = Utils.parseDate(d);\n if (Utils.Dates.isDate(dte)) {\n return dte.toLocaleString(Utils.lang(this), { weekday: 'narrow' });\n }\n return '...';\n }\n _prev(e) {\n let months = -1;\n switch (this.viewmode) {\n case 'month':\n months = -12;\n break;\n case 'year':\n months = -120;\n break;\n }\n this._jumpMonths(months);\n }\n _next(e) {\n let months = 1;\n switch (this.viewmode) {\n case 'month':\n months = 12;\n break;\n case 'year':\n months = 120;\n break;\n }\n this._jumpMonths(months);\n }\n _jumpMonths(m) {\n const vd = Utils.parseDate(this._viewDate);\n this._viewDate = Utils.Dates.addMonths(vd, m);\n }\n _setMonth(e) {\n this._viewDate = e.detail;\n this.viewmode = 'calendar';\n }\n _setYear(e) {\n this._viewDate = e.detail;\n this.viewmode = 'month';\n }\n _onViewDateChange(e) {\n if (Utils.isNullOrEmpty(e)) {\n return;\n }\n const date = Utils.parseDate(this._viewDate);\n if (Utils.Dates.isDate(date) && !Utils.isNull(this._monthLabel)) {\n switch (this.viewmode) {\n case 'month':\n this._yearLabel.text = date.toLocaleString(Utils.lang(this), { year: 'numeric' });\n break;\n case 'year':\n const fy = rangeFirstYear(date.getFullYear());\n this._rangeLabel.text = `${fy} - ${fy + YEARS_IN_RANGE - 1}`;\n break;\n default:\n this._monthLabel.text = date.toLocaleString(Utils.lang(this), { month: 'long', year: 'numeric' });\n break;\n }\n }\n }\n _hideCalendar() {\n // animation just in case\n Utils.removeClass(this._dropdown, 'dropdown-in');\n Utils.addAnimationEndCallback(this._dropdown, e => {\n this._dropdown.hidden = true;\n Utils.removeClass(this._dropdown, 'dropdown-select');\n }, 250);\n }\n get inputFields() {\n return [this._input];\n }\n toggleReadonlyView(readonly) {\n if (this.isReady) {\n this._input.readOnly = true;\n this._input.hidden = readonly;\n this._span.hide = !readonly;\n }\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n if (CustomEventUtils.isInstanceOf(evt, ComponentsUI.UI.DateSelectEvent)) {\n Utils.addClass(this._dropdown, 'dropdown-select');\n const unselecting = CustomEventUtils.isInstanceOf(evt, CalendarDateUnselectEvent);\n if (unselecting) {\n this.#locked = true;\n }\n this.focus();\n this.#locked = false;\n this._hideCalendar();\n resolve(this.value = evt.detail);\n }\n else {\n resolve(this.value);\n }\n });\n }\n acceptValue(val) {\n this._input.value = this.viewValue;\n const calendar = this._calendar;\n if (!Utils.isNull(calendar)) {\n const dateVal = Utils.parseDate(val);\n if (Utils.Dates.isDate(dateVal)) {\n calendar.viewDate = calendar.date = dateVal;\n }\n else {\n calendar.date = void 0;\n }\n }\n }\n getViewValue(value) {\n const v = Utils.Dates.parse(value);\n if (Utils.Dates.isDate(v)) {\n return Utils.core.date(v, this.format || 'short', Utils.lang(this));\n }\n return '';\n }\n compareValuePropertyValues(old, val) {\n const dold = Utils.parseDate(old), dval = Utils.parseDate(val);\n if (Utils.isNullOrEmpty(dold) && Utils.isNullOrEmpty(dval)) {\n return true;\n }\n if (Utils.isNullOrEmpty(dold) || Utils.isNullOrEmpty(dval)) {\n return false;\n }\n return dold.valueOf() == dval.valueOf();\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Datetime.convert(attr);\n }\n};\n__decorate([\n ViewChild(\"input[type=text]\")\n], PacemCalendarPickerElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-readonly`)\n], PacemCalendarPickerElement.prototype, \"_span\", void 0);\n__decorate([\n ViewChild(`${P}-button[clear]`)\n], PacemCalendarPickerElement.prototype, \"_clearButton\", void 0);\n__decorate([\n ViewChild(P + \"-shell-proxy\")\n], PacemCalendarPickerElement.prototype, \"_proxy\", void 0);\n__decorate([\n Watch({ emit: false, converter: JsonOrStringConverter })\n], PacemCalendarPickerElement.prototype, \"format\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Eval })\n], PacemCalendarPickerElement.prototype, \"disabledRanges\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCalendarPickerElement.prototype, \"weekStart\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCalendarPickerElement.prototype, \"viewmode\", void 0);\n__decorate([\n Watch()\n], PacemCalendarPickerElement.prototype, \"_week\", void 0);\n__decorate([\n Watch()\n], PacemCalendarPickerElement.prototype, \"_viewDate\", void 0);\nPacemCalendarPickerElement = __decorate([\n CustomElement({\n tagName: P + '-calendar-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-calendar-picker\">\r\n <input type=\"text\" class=\"${PCSS}-input\" /><${P}-span text=\"{{ :host.viewValue }}\" class=\"${PCSS}-readonly\"></${P}-span>\r\n <${P}-button class=\"button-flat ${PCSS}-anim anim-pop anim-sudden anim-quick pos-absolute absolute-right absolute-top display-block ${PCSS}-margin margin-0\"\r\n tab-order=\"-1\"\r\n hide=\"{{ :host.readonly || :host.required || !Pacem.Utils.Dates.isDate(Pacem.Utils.Dates.parse(:host.value)) }}\"\r\n icon-glyph=\"close\"\r\n clear></${P}-button>\r\n</div>\r\n<${P}-shell-proxy>\r\n <div class=\"${PCSS}-calendar-picker-dropdown\" pacem hidden>\r\n <${P}-collapse collapse=\"false\">\r\n <div class=\"dropdown-grid\">\r\n <div class=\"calendar-title\">\r\n <${P}-span class=\"calendar-month calendar-zoom\" on-click=\":host.viewmode = 'month'\" hide=\"{{ :host.viewmode !== 'calendar' }}\"></${P}-span>\r\n <${P}-span class=\"calendar-year calendar-zoom\" on-click=\":host.viewmode = 'year'\" hide=\"{{ :host.viewmode !== 'month' }}\"></${P}-span>\r\n <${P}-span class=\"calendar-year-range\" hide=\"{{ :host.viewmode !== 'year' }}\"></${P}-span>\r\n </div>\r\n <div class=\"calendar-month-nav ${PCSS}-buttonset buttons\">\r\n <div class=\"buttonset-left\">\r\n <${P}-button class=\"button button-size size-auto\" on-click=\":host._prev($event)\" icon-glyph=\"chevron_left\"></${P}-button>\r\n <${P}-button class=\"button button-size size-auto\" on-click=\":host._next($event)\" icon-glyph=\"chevron_right\"></${P}-button>\r\n </div>\r\n </div>\r\n ${buildCalendarHeader()}\r\n <${P}-calendar hide=\"{{ :host.viewmode !== 'calendar' }}\" week=\"{{ :host._week, twoway }}\" view-date=\"{{ :host._viewDate, twoway }}\" week-start=\"{{ :host.weekStart }}\" disabled-ranges=\"{{ :host.disabledRanges }}\" on-dateselect=\"{{ :host.changeHandler($event) }}\"></${P}-calendar>\r\n <${P}-calendar-month-picker hide=\"{{ :host.viewmode !== 'month' }}\" on-monthselect=\":host._setMonth($event)\" month=\"{{ :host.value || Date.now() }}\" view-year=\"{{ :host._viewDate && :host._viewDate.getFullYear() }}\"></${P}-calendar-month-picker>\r\n <${P}-calendar-year-picker hide=\"{{ :host.viewmode !== 'year' }}\" on-yearselect=\":host._setYear($event)\" year=\"{{ :host.value || Date.now() }}\" view-year=\"{{ :host._viewDate && :host._viewDate.getFullYear() }}\"></${P}-calendar-year-picker>\r\n </div>\r\n <${P}-collapse>\r\n </div>\r\n</${P}-shell-proxy>`\n })\n], PacemCalendarPickerElement);\nexport { PacemCalendarPickerElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PCSS, PropertyConverters, Utils, ViewChild, Watch } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nconst StringOrBooleanPropertyConverter = {\n convert: (attr) => attr === 'true' ? true : (attr === 'false' ? false : attr),\n convertBack: (prop) => prop.toString()\n};\n/** {@link PacemBaseElement}-based single checkbox field, mapping its checked state to {@link trueValue}/{@link falseValue}. */\nlet PacemCheckboxElement = class PacemCheckboxElement extends PacemBaseElement {\n constructor() {\n super('checkbox');\n /** Gets or sets the label displayed next to the checkbox (and used as the read-only view value when checked). */\n this.caption = '';\n this._key = '_' + Utils.uniqueCode();\n }\n convertValueAttributeToProperty(attr) {\n StringOrBooleanPropertyConverter.convert(attr) === this.trueValue ? this.trueValue : this.falseValue;\n }\n toggleReadonlyView(readonly) {\n this.span.hidden = !readonly;\n this._checkbox.hidden = this._label.hidden = readonly;\n }\n get inputFields() {\n return [this._checkbox];\n }\n onChange(evt) {\n this.selected = this._checkbox.checked;\n const value = this.value = this.selected ? this.trueValue : this.falseValue;\n return Utils.fromResult(value);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._checkbox.id = this._label.htmlFor = this._key;\n this._synchronizeUi();\n if (this.value /* weak equality to deal with declarative values and conversions */ == this.trueValue)\n this.selected = true;\n else if (this.value /* weak equality to deal with declarative values and conversions */ == this.falseValue)\n this.selected = false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!this.isReady) {\n // the following are only UI-relevant modifications\n return;\n }\n switch (name) {\n case 'caption':\n this._label.hidden = Utils.isNullOrEmpty(val);\n break;\n case 'name':\n this._checkbox.name = val;\n break;\n case 'selected':\n this._synchronizeUi();\n break;\n }\n }\n _synchronizeUi(val = this.selected) {\n if (this._checkbox.checked = val) {\n this.value = this.trueValue;\n Utils.addClass(this, PCSS + '-selected');\n this.aria.attributes.set('checked', 'true');\n }\n else {\n this.value = this.falseValue;\n Utils.removeClass(this, PCSS + '-selected');\n this.aria.attributes.set('checked', 'false');\n }\n }\n acceptValue(val) {\n this.selected = val /* weak equality to deal with declarative values and conversions */ == this.trueValue;\n }\n getViewValue(val) {\n if (!Utils.isNull(val))\n return this.caption;\n return '';\n }\n};\n__decorate([\n ViewChild(\"input[type=checkbox]\")\n], PacemCheckboxElement.prototype, \"_checkbox\", void 0);\n__decorate([\n ViewChild(\"label\")\n], PacemCheckboxElement.prototype, \"_label\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-readonly`)\n], PacemCheckboxElement.prototype, \"span\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCheckboxElement.prototype, \"caption\", void 0);\n__decorate([\n Watch({ emit: false, converter: StringOrBooleanPropertyConverter })\n], PacemCheckboxElement.prototype, \"trueValue\", void 0);\n__decorate([\n Watch({ emit: false, converter: StringOrBooleanPropertyConverter })\n], PacemCheckboxElement.prototype, \"falseValue\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemCheckboxElement.prototype, \"selected\", void 0);\nPacemCheckboxElement = __decorate([\n CustomElement({\n tagName: P + '-checkbox',\n template: `<${P}-span class=\"${PCSS}-readonly ${PCSS}-checkbox\" text=\"{{ :host.caption }}\"></${P}-span>\r\n<input type=\"checkbox\" class=\"${PCSS}-input\" /><label class=\"${PCSS}-label ${PCSS}-checkbox ${PCSS}-viewfinder\" pacem><${P}-span content=\"{{ :host.caption }}\"></${P}-span></label>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemCheckboxElement);\nexport { PacemCheckboxElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PCSS, PropertyChangeEventName, Utils, ViewChild } from '@pacem/pacem-core';\nimport { PacemDataSourceElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\n/** Renders {@link PacemDataSourceElement#datasource} as a list of `pacem-checkbox` items, producing an array `value` of the checked items' mapped values. */\nlet PacemCheckboxListElement = class PacemCheckboxListElement extends PacemDataSourceElement {\n acceptValue(val) {\n // no need to implement\n }\n constructor() {\n super(true);\n this._selectedUiItems = [];\n this['key'] = '_' + Utils.uniqueCode();\n }\n get inputFields() {\n return [];\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'disabled') {\n this._disable.model = val;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._disable.model = this.disabled;\n }\n toggleReadonlyView(readonly) {\n this._span.hidden = !readonly;\n this._repeater.hidden = readonly;\n }\n _selectionChanged(evt, index, item) {\n if (evt.detail.propertyName === 'selected') {\n let ndx, uiItems = this._selectedUiItems;\n if (evt.detail.currentValue === true) {\n uiItems.push(this.datasource[index]);\n }\n else if ((ndx = uiItems.indexOf(this.datasource[index])) !== -1) {\n uiItems.splice(ndx, 1);\n }\n }\n }\n onChange(evt) {\n const val = this.value = this._selectedUiItems.map(i => this.mapEntityToValue(i));\n return Utils.fromResult(val);\n }\n};\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemCheckboxListElement.prototype, \"_span\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemCheckboxListElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(P + '-data')\n], PacemCheckboxListElement.prototype, \"_disable\", void 0);\nPacemCheckboxListElement = __decorate([\n CustomElement({\n tagName: P + '-checkbox-list', template: `<${P}-repeater datasource=\"{{ :host.adaptedDatasource }}\">\r\n <ol class=\"${PCSS}-checkbox-list ${PCSS}-viewfinder\" pacem>\r\n <template>\r\n <li><${P}-checkbox disabled=\"{{ ::_disable.model || ^item.disabled }}\" name=\"{{ :host.key, once }}\" autobind=\"off\" caption=\"{{ ^item.viewValue }}\" true-value=\"{{ ^item.value }}\" selected=\"{{ :host.isDataSourceItemSelected(^item, :host.value) }}\"\r\non-focus=\":host.focusHandler($event)\" on-blur=\":host.focusHandler($event)\"\r\non-${PropertyChangeEventName}=\":host._selectionChanged($event, ^index, ^item)\" on-change=\":host.changeHandler($event)\"></${P}-checkbox></li>\r\n </template>\r\n </ol>\r\n</${P}-repeater><span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span><${P}-data></${P}-data><${P}-content></${P}-content>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemCheckboxListElement);\nexport { PacemCheckboxListElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PCSS, PacemEventTarget, PropertyChangeEventName, Components, PropertyConverters, Utils, ViewChild, Watch, UI, avoidHandler } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n/** For internal use ONLY! */\nlet PacemChildFormPropagatorElement = class PacemChildFormPropagatorElement extends PacemEventTarget {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n const prop = this.property, value = this.watch, hasPropDefined = !Utils.isNullOrEmpty(prop), hasModelDefined = !Utils.isNull(this.model);\n if (name === 'watch'\n || name === 'property'\n || (name === 'model' && hasPropDefined && hasModelDefined && Utils.isArray(val) && val.some(i => !(prop in i) || i[prop] !== value))\n || (name === 'model' && hasPropDefined && hasModelDefined && !Utils.isArray(val) && (!(prop in val) || val[prop] !== value))) {\n this._synchronize();\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._synchronize();\n }\n _synchronize() {\n const model = this.model, propagate = this.property, value = this.watch;\n if (Utils.isNullOrEmpty(model) || Utils.isNullOrEmpty(propagate)) {\n return;\n }\n if (Utils.isArray(model)) {\n for (let item of model) {\n item[propagate] = value;\n }\n // trigger change\n this.model = model.slice(0);\n }\n else {\n model[propagate] = value;\n // trigger change\n this.model = Utils.extend({}, model);\n }\n }\n};\n__decorate([\n Watch({ emit: true /* mandatory twoway binding */ })\n], PacemChildFormPropagatorElement.prototype, \"model\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String, reflectBack: true })\n], PacemChildFormPropagatorElement.prototype, \"property\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemChildFormPropagatorElement.prototype, \"watch\", void 0);\nPacemChildFormPropagatorElement = __decorate([\n CustomElement({ tagName: P + '-childform-propagator' })\n], PacemChildFormPropagatorElement);\nexport { PacemChildFormPropagatorElement };\n/** Represents a sub-form for automatic generation of editing fields for sub-entities. */\nlet PacemChildFormElement = class PacemChildFormElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n /** Internal representation of the entity. */\n this._model = [];\n this._subForms = [];\n }\n get inputFields() {\n return [];\n }\n toggleReadonlyView(readonly) {\n // automatic\n }\n onChange(evt) {\n return new Promise((resolve, _) => {\n var val = this._modelToEntity();\n resolve(this.value = val);\n });\n }\n acceptValue(val) {\n this._entityToModel(val);\n }\n getViewValue(value) {\n return '';\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Json.convert(attr, this);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'mode':\n this._entityToModel();\n break;\n }\n }\n _dragStart(evt) {\n var args = evt.detail;\n const size = Utils.offset(args.element), floater = args.floater;\n floater.style.width = size.width + 'px';\n floater.style.height = size.height + 'px';\n }\n _dragEnd(evt) {\n if (this.mode === 'array' /*&& !Utils.isNull(evt.detail.target)*/) {\n this._triggerChange();\n }\n }\n reset() {\n super.reset();\n // once the value/entity with this component is reset\n // it is not necessary to process the subForms\n this._subForms.forEach(f => {\n f.setPristine();\n });\n }\n _itemCreate(evt) {\n const ndx = evt.detail.index, subForms = this._subForms;\n evt.detail.dom[0].childNodes.forEach(e => {\n if (e instanceof Element && e.localName === (P + '-form')) {\n subForms.splice(ndx, subForms.length - ndx, e);\n }\n });\n }\n _itemChange(ndx, evt) {\n if (evt.detail.propertyName === 'entity'\n && Utils.Json.stringify(this._model[ndx]) !== Utils.Json.stringify(evt.detail.currentValue)) {\n this._model.splice(ndx, 1, evt.detail.currentValue);\n this._triggerChange();\n }\n }\n _deleteAt(evt) {\n // prevent the event to bubble (nested scenarios).\n avoidHandler(evt.srcEvent);\n const model = this._model;\n if (this.mode === 'array') {\n model.splice(evt.detail, 1);\n }\n else {\n model.splice(0, model.length);\n }\n this._triggerChange();\n }\n _addItem(evt) {\n const mode = this.mode, model = this._model;\n if (mode === 'array') {\n model.push({});\n }\n else {\n model.splice(0, model.length, {});\n }\n this._triggerChange();\n }\n _triggerChange() {\n this.changeHandler(new Event('change'));\n }\n _entityToModel(entity = this.value) {\n switch (this.mode) {\n case 'array':\n let arr = entity || [];\n if (Utils.isArray(arr)) {\n this._model.cloneFrom(arr);\n }\n break;\n default:\n const model = this._model, length = model.length;\n if (length !== 1 || model[0] !== entity) {\n if (!Utils.isNull(entity)) {\n model.splice(0, length, entity);\n }\n else {\n model.splice(0, length);\n }\n }\n break;\n }\n }\n _modelToEntity(model = this._model) {\n switch (this.mode) {\n case 'array':\n return Utils.clone(model);\n default:\n return model && model.length && model[0] || null;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemChildFormElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemChildFormElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-childform')\n], PacemChildFormElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild(P + '-drag-drop')\n], PacemChildFormElement.prototype, \"_dragger\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-childform-item-floater')\n], PacemChildFormElement.prototype, \"_floater\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemChildFormElement.prototype, \"mode\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemChildFormElement.prototype, \"lockItems\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemChildFormElement.prototype, \"metadata\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemChildFormElement.prototype, \"_model\", void 0);\nPacemChildFormElement = __decorate([\n CustomElement({\n tagName: P + '-childform', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater datasource=\"{{ :host._model }}\" on-itemdelete=\":host._deleteAt($event)\" on-${Components.RepeaterItemCreateEventName}=\":host._itemCreate($event)\">\r\n <div class=\"${PCSS}-childform\">\r\n <template>\r\n <${P}-panel class=\"${PCSS}-childform-item\" behaviors=\"{{ [::_dragger] }}\">\r\n <${P}-panel class=\"childform-item-handle ${PCSS}-margin margin-right-1\" hide=\"{{ :host.lockItems || :host.readonly || :host.mode !== 'array' || !(:host._model && :host._model.length > 1) }}\"><i class=\"${PCSS}-icon drag-handle\">drag_handle</i></${P}-panel>\r\n <${P}-panel class=\"childform-item-index text-small\"><${P}-span hide=\"{{ !:host.readonly || :host.mode !== 'array' }}\" class=\"${PCSS}-margin margin-right-1\" text=\"{{ ^index+1 }}\"></${P}-span></${P}-panel>\r\n <${P}-form entity=\"{{ ^item }}\" fetch-headers=\"{{ :host.fetchHeaders }}\" fetch-credentials=\"{{ :host.fetchCredentials }}\" on-${PropertyChangeEventName}=\":host._itemChange(^index, $event)\" readonly=\"{{ :host.readonly }}\" metadata=\"{{ :host.metadata }}\" autogenerate=\"true\" logger=\"{{ :host.logger }}\"></${P}-form>\r\n <${P}-button tab-order=\"-1\" class=\"flat circular circle-small clear ${PCSS}-margin margin-left-1\" hide=\"{{ :host.lockItems || :host.readonly }}\" command-name=\"delete\" command-argument=\"{{ ^index }}\"></${P}-button>\r\n </${P}-panel>\r\n </template>\r\n </div>\r\n <${P}-button tab-order=\"-1\" class=\"flat circular circle-small add\" hide=\"{{ :host.lockItems || :host.readonly || !(:host.mode === 'array' || $pacem.isNullOrEmpty(:host._model)) }}\" on-click=\":host._addItem($event)\"></${P}-button>\r\n</${P}-repeater>\r\n<div class=\"${PCSS}-childform-item-floater ${PCSS}-panel panel-border\">\r\n <div class=\"corner top-left\"></div><div class=\"corner top-right\"></div><div class=\"corner bottom-left\"></div><div class=\"corner bottom-right\"></div>\r\n</div>\r\n<${P}-drag-drop floater=\"{{ ::_floater }}\" disabled=\"{{ :host.lockItems }}\"\r\n on-${UI.DragDropEventType.Start}=\":host._dragStart($event)\"\r\n on-${UI.DragDropEventType.End}=\":host._dragEnd($event)\" \r\n drop-behavior=\"${UI.DropBehavior.InsertChild}\" mode=\"${UI.DragDataMode.Alias}\" handle-selector=\".drag-handle\" drop-targets=\"{{ [::_container] }}\"></${P}-drag-drop>`\n })\n], PacemChildFormElement);\nexport { PacemChildFormElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Logging, PropertyConverters, Debounce, Utils, P, PCSS, CustomElement, Watch, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nconst emptyVal = '';\nconst JsonOrStringConverter = {\n convert: (attr, el) => {\n return /\\{.+\\}/.test(attr) ? PropertyConverters.Json.convert(attr) : PropertyConverters.String.convert(attr);\n },\n convertBack: (prop, el) => {\n if (typeof prop === 'string') {\n return prop;\n }\n return PropertyConverters.Json.convertBack(prop, el);\n }\n};\n//class DatetimeChangeEvent extends CustomTypedEvent<{ date: Date }> {\n// constructor(date: Date) {\n// super('datetimechange', { date: date });\n// }\n//}\n/** {@link PacemBaseElement}-based field composing a set of `pacem-select` dropdowns (year/month/day and, depending on {@link precision}, time) into a single `Date` value. */\nlet PacemDatetimePickerElement = class PacemDatetimePickerElement extends PacemBaseElement {\n constructor() {\n super();\n /** Gets or sets the granularity of the picker: date only, or including hours/minutes ('minute') or hours/minutes/seconds ('second'). */\n this.precision = 'day';\n this._months = [];\n /** Internal: datasource of selectable days for the current {@link year}/{@link month}. */\n this._dates = [];\n this._a24 = [];\n this._a60 = [];\n /** Internal: datasource of selectable years, computed from {@link min}/{@link max}. */\n this._years = [];\n /** Internal: the hours select's current value. */\n this.hours = '00';\n /** Internal: the minutes select's current value. */\n this.minutes = '00';\n /** Internal: the seconds select's current value. */\n this.seconds = '00';\n }\n get inputFields() {\n return [this._yearel, this._monthel, this._dateel, this._hourel, this._minel, this._secel];\n }\n toggleReadonlyView(readonly) {\n this._allFields.hidden = readonly;\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Datetime.convert(attr);\n }\n connectedCallback() {\n super.connectedCallback();\n const today = new Date();\n let year = this.year = today.getFullYear();\n this.min = new Date(year - 100, 0, 1);\n this.max = new Date(year + 10, 11, 31);\n this.month = today.getMonth();\n //\n let months = [], hours = [], minutes = [], leftPad = Utils.leftPad;\n // months\n for (let i = 0; i < 12; i++) {\n let date = new Date(year, i, 1), label = date.toLocaleString(Utils.lang(this), { month: \"short\" });\n ;\n months.push({ value: i, date: date, label: label });\n }\n this._months = months;\n // hours\n for (let i = 0; i < 24; i++) {\n hours.push(leftPad(i, 2, '0'));\n }\n this._a24 = hours;\n // minutes/secs\n for (let i = 0; i < 60; i++) {\n minutes.push(leftPad(i, 2, '0'));\n }\n this._a60 = minutes;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'dateValue':\n this.log(Logging.LogLevel.Log, `dateValue changed from ${old} to ${val}`);\n this._disassembleDate(val);\n // this.changeHandler(new DatetimeChangeEvent(val));\n break;\n case 'min':\n case 'max':\n if (!Utils.isNullOrEmpty(this.min)\n && !Utils.isNullOrEmpty(this.max)) {\n this._setupYears();\n }\n break;\n case 'year':\n case 'month':\n this._buildupDates();\n break;\n case 'date':\n case 'hours':\n case 'minutes':\n case 'seconds':\n this._buildup();\n break;\n }\n }\n acceptValue(val) {\n this.dateValue = Utils.parseDate(val);\n }\n _disassembleDate(v) {\n if (!v) {\n this.date = undefined;\n return;\n }\n if (typeof v === 'string')\n v = Utils.parseDate(v);\n const leftPad = (i) => Utils.leftPad(i, 2, '0');\n this.year = v.getFullYear();\n this.month = v.getMonth();\n this.date = v.getDate();\n this.hours = leftPad(v.getHours());\n this.minutes = leftPad(v.getMinutes());\n this.seconds = leftPad(v.getSeconds());\n }\n _setupYears() {\n let years = [];\n const min = Utils.parseDate(this.min), max = Utils.parseDate(this.max);\n for (let i = min.getFullYear(); i <= max.getFullYear(); i++) {\n years.push(i);\n }\n this._years = years;\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n //if (CustomEventUtils.isInstanceOf(evt, DatetimeChangeEvent)) {\n // const date = (<DatetimeChangeEvent>evt).detail.date;\n // resolve(this.value = date); // keep same type (Date or string equivalent)\n //} else {\n // resolve(this.value = Utils.parseDate(this.value));\n //}\n resolve(this.value = this._computeValue());\n });\n }\n _buildupDates(evt) {\n if (evt)\n evt.stopPropagation();\n const v = this, options = { weekday: 'short', day: 'numeric' }, isDate = (k) => {\n try {\n let monthvalue = +v.month, parsed = new Date(+v.year, +v.month, k);\n return parsed.getMonth() == monthvalue;\n }\n catch (e) {\n return false;\n }\n };\n var dates = [];\n if (!Utils.isNullOrEmpty(v.year) && !Utils.isNullOrEmpty(v.month)) {\n let day = 1;\n do {\n let date = new Date(+v.year, +v.month, day), label = date.toLocaleString(Utils.lang(this), options);\n dates.push({ value: day, date: date, label: label, disabled: date < this.min || date > this.max });\n } while (isDate(++day));\n }\n this._dates = dates;\n if (!isDate(+this.date))\n this.date = '';\n else\n this._buildup();\n }\n _computeValue() {\n const v = this;\n if (Utils.isNullOrEmpty(v.year)\n || Utils.isNullOrEmpty(v.month)\n || Utils.isNullOrEmpty(v.date)) {\n return null;\n }\n else {\n //\n try {\n let value = new Date(+v.year, +v.month, +v.date);\n value.setHours(+v.hours);\n value.setMinutes(+v.minutes);\n value.setSeconds(+v.seconds);\n value.setMilliseconds(0);\n if (!Number.isNaN(value.valueOf())) {\n return value;\n }\n else\n return null;\n }\n catch (e) {\n return null;\n }\n }\n }\n _buildup(evt) {\n if (evt)\n evt.stopPropagation();\n //\n this.dateValue = this._computeValue();\n }\n getViewValue(val) {\n const v = /*this.dateValue ||*/ val;\n if (v) {\n return Utils.core.date(v, this.format || (this.precision != 'day' ? 'full' : 'short'), Utils.lang(this));\n }\n return '';\n }\n};\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-year > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_yearel\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-month > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_monthel\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-date > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_dateel\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-hours > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_hourel\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-minutes > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_minel\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-seconds > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_secel\", void 0);\n__decorate([\n ViewChild(`div.${PCSS}-datetime-picker-fields`)\n], PacemDatetimePickerElement.prototype, \"_allFields\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemDatetimePickerElement.prototype, \"dateValue\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemDatetimePickerElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemDatetimePickerElement.prototype, \"max\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemDatetimePickerElement.prototype, \"precision\", void 0);\n__decorate([\n Watch({ emit: false, converter: JsonOrStringConverter })\n], PacemDatetimePickerElement.prototype, \"format\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"_dates\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"_years\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"year\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"month\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"date\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"hours\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"minutes\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"seconds\", void 0);\n__decorate([\n Debounce(10)\n], PacemDatetimePickerElement.prototype, \"_buildup\", null);\nPacemDatetimePickerElement = __decorate([\n CustomElement({\n tagName: P + '-datetime-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-datetime-picker\">\r\n <div class=\"${PCSS}-datetime-picker-fields ${PCSS}-viewfinder\">\r\n\r\n <div class=\"${PCSS}-datetime-picker-year\">\r\n <${P}-select value=\"{{ :host.year, twoway }}\" placeholder=\"...\" datasource=\"{{ :host._years }}\">\r\n </${P}-select></div>\r\n\r\n <div class=\"${PCSS}-datetime-picker-month\">\r\n <${P}-select value=\"{{ :host.month, twoway }}\" placeholder=\"...\" value-property=\"value\" text-property=\"label\" datasource=\"{{ :host._months }}\">\r\n </${P}-select></div>\r\n\r\n <div class=\"${PCSS}-datetime-picker-date\">\r\n <${P}-select value=\"{{ :host.date, twoway }}\" placeholder=\"...\" value-property=\"value\" text-property=\"label\" datasource=\"{{ :host._dates }}\">\r\n </${P}-select></div>\r\n\r\n <${P}-panel class=\"${PCSS}-datetime-picker-hours\" hide=\"{{ :host.precision === 'day' }}\">\r\n <${P}-select value=\"{{ :host.hours, twoway }}\" datasource=\"{{ :host._a24 }}\">\r\n </${P}-select></${P}-panel>\r\n\r\n <${P}-panel class=\"${PCSS}-datetime-picker-minutes\" hide=\"{{ :host.precision === 'day' }}\">\r\n <${P}-select value=\"{{ :host.minutes, twoway }}\" datasource=\"{{ :host._a60 }}\">\r\n </${P}-select></${P}-panel>\r\n\r\n <${P}-panel class=\"${PCSS}-datetime-picker-seconds\" hide=\"{{ :host.precision !== 'second' }}\">\r\n <${P}-select value=\"{{ :host.seconds, twoway }}\" datasource=\"{{ :host._a60 }}\">\r\n </${P}-select></${P}-panel>\r\n\r\n </div>\r\n <${P}-panel class=\"${PCSS}-datetime-picker-preview\" hide=\"{{ Pacem.Utils.isNullOrEmpty(:host.dateValue) || :host.precision === 'day' || :host.readonly }}\">\r\n <dl>\r\n <dt>local:</dt><dd><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></dd>\r\n <dt>iso:</dt><dd><${P}-text text=\"{{ (:host.dateValue && :host.dateValue.toISOString()) || '' }}\"></${P}-text></dd>\r\n </dl>\r\n </${P}-panel>\r\n <${P}-span class=\"${PCSS}-readonly\" css-class=\"{{ { 'date': :host.precision === 'day', 'datetime': :host.precision !== 'day' } }}\" content=\"{{ :host.viewValue }}\" hide=\"{{ !:host.readonly }}\"></${P}-span>\r\n</div>`\n })\n], PacemDatetimePickerElement);\nexport { PacemDatetimePickerElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Watch, P, PCSS, CustomElement, ViewChild, Utils, PropertyConverters, Defaults, DeferPromise } from '@pacem/pacem-core';\nimport { PacemFormRelevantElement } from './form';\n// TODO: add warning state\n/**\n * Base class for all `p-*-validator` elements: registers/unregisters itself against the ancestor\n * {@link PacemFormElement} field named by `watch`, and turns the abstract {@link evaluate} logic into the\n * `Validator` contract's `validate` (short-circuiting to valid when `disabled`). Concrete validators only\n * need to implement {@link evaluate}; the field's own error UI reads `invalid`/`errorMessage` off the\n * element (see {@link BASIC_VALIDATOR_TEMPLATE}).\n */\nexport class PacemBaseValidatorElement extends PacemFormRelevantElement {\n constructor() {\n super();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n Utils.addClass(this, PCSS + '-validator');\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n let form = this.form;\n switch (name) {\n case 'watch':\n old && form && form.unregisterValidator(val, this);\n form && form.registerValidator(val, this);\n break;\n case 'invalid':\n break;\n case 'form':\n let n = this.watch;\n if (!Utils.isNullOrEmpty(n)) {\n if (old != null)\n old.unregisterValidator(n, this);\n if (val != null)\n val.registerValidator(n, this);\n }\n break;\n case 'disabled':\n this.triggerFormFieldValidation();\n break;\n }\n }\n #easer;\n /** Asks the owning {@link PacemFormElement} to re-validate the watched field on the next animation frame; call after a configuration property (e.g. `min`/`max`/`pattern`) changes so the field re-evaluates against the new rule. */\n triggerFormFieldValidation() {\n const form = this.form, watch = this.watch;\n if (!Utils.isNull(form) && !Utils.isNullOrEmpty(watch)) {\n cancelAnimationFrame(this.#easer);\n this.#easer = requestAnimationFrame(() => {\n form.validate(watch);\n });\n }\n }\n /** Validates `val` against this validator's rule; always resolves `true` (skips {@link evaluate}) when the validator is `disabled`. */\n validate(val) {\n if (this.disabled) {\n return Utils.fromResult(true);\n }\n return this.evaluate(val);\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemBaseValidatorElement.prototype, \"invalid\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemBaseValidatorElement.prototype, \"errorMessage\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemBaseValidatorElement.prototype, \"watch\", void 0);\n/** Default shadow-DOM template shared by every built-in `p-*-validator`: a `<p-span>` (exposed as the `error-message` part) shown only while `invalid`, displaying `errorMessage`. */\nexport const BASIC_VALIDATOR_TEMPLATE = `<${P}-span part=\"error-message\" hide=\"{{ !:host.invalid }}\" text=\"{{ :host.errorMessage }}\"></${P}-span>`;\n// #region TEXTUAL\nfunction isValueEmpty(val) {\n return Utils.isNullOrEmpty(val);\n}\n/** Validates that a field's value is not empty (`p-required-validator`). */\nlet PacemRequiredValidatorElement = class PacemRequiredValidatorElement extends PacemBaseValidatorElement {\n evaluate(val) {\n let retval = !isValueEmpty(val);\n return Utils.fromResult(retval);\n }\n};\nPacemRequiredValidatorElement = __decorate([\n CustomElement({ tagName: P + '-required-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemRequiredValidatorElement);\nexport { PacemRequiredValidatorElement };\n/** Validates that a field's (non-empty) value matches a regular expression (`p-regex-validator`). */\nlet PacemRegexValidatorElement = class PacemRegexValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first && name === 'pattern') {\n this.triggerFormFieldValidation();\n }\n }\n evaluate(val) {\n let retval = true, pattern = this.pattern;\n if (!isValueEmpty(val)) {\n retval = new RegExp(pattern).test(val);\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemRegexValidatorElement.prototype, \"pattern\", void 0);\nPacemRegexValidatorElement = __decorate([\n CustomElement({ tagName: P + '-regex-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemRegexValidatorElement);\nexport { PacemRegexValidatorElement };\n/** Validates that a field's (non-empty) value's string length falls within `[min, max]` (`p-length-validator`). */\nlet PacemLengthValidatorElement = class PacemLengthValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first &&\n (name === 'min' || name === 'max')) {\n this.triggerFormFieldValidation();\n }\n }\n evaluate(val) {\n let retval = true;\n if (!isValueEmpty(val)) {\n if (this.min >= 0)\n retval = retval && (val || '').toString().length >= this.min;\n if (this.max >= 0)\n retval = retval && (val || '').toString().length <= this.max;\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemLengthValidatorElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemLengthValidatorElement.prototype, \"max\", void 0);\nPacemLengthValidatorElement = __decorate([\n CustomElement({ tagName: P + '-length-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemLengthValidatorElement);\nexport { PacemLengthValidatorElement };\n// #endregion\n// #region NUMERIC/ORDINAL\n/** Validates that a field's (non-empty) numeric or date value falls within `[min, max]` (`p-range-validator`); dates (parsed via `Utils.parseDate`) are compared by their timestamp. */\nlet PacemRangeValidatorElement = class PacemRangeValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first &&\n (name === 'min' || name === 'max')) {\n this.triggerFormFieldValidation();\n }\n }\n evaluate(val) {\n let retval = true;\n if (!isValueEmpty(val)) {\n let date = val;\n if (val instanceof Date || (typeof val !== 'number' && (date = Utils.parseDate(val)) instanceof Date && isFinite(date.valueOf()))) {\n if (this.min != null)\n retval = retval && date.valueOf() >= Utils.parseDate(this.min).valueOf();\n if (this.max != null)\n retval = retval && date.valueOf() <= Utils.parseDate(this.max).valueOf();\n }\n else {\n if (this.min != null)\n retval = retval && val >= this.min;\n if (this.max != null)\n retval = retval && val <= this.max;\n }\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRangeValidatorElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRangeValidatorElement.prototype, \"max\", void 0);\nPacemRangeValidatorElement = __decorate([\n CustomElement({ tagName: P + '-range-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemRangeValidatorElement);\nexport { PacemRangeValidatorElement };\n// #endregion\n// #region COMPLEX\n/** Validates a field's (non-empty) value against another (non-empty) value `to`, using the given comparison `operator` (`p-compare-validator`); dates are compared by their timestamp. */\nlet PacemCompareValidatorElement = class PacemCompareValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first &&\n (name === 'operator' || name === 'to')) {\n this.triggerFormFieldValidation();\n }\n }\n _prepareValuesForComparison(val, other) {\n // gotta manage the case when a stringified datetime is compared with an actual date object.\n if (Utils.Dates.isDate(val) || Utils.Dates.isDate(other)) {\n return [Utils.parseDate(val), Utils.parseDate(other)];\n }\n return [val, other];\n }\n evaluate(val) {\n let retval = true, other = this.to;\n if (!isValueEmpty(val) && !isValueEmpty(other)) {\n const arranged = this._prepareValuesForComparison(val, other);\n val = arranged[0], other = arranged[1];\n switch (this.operator) {\n case 'lessOrEqual':\n retval = val <= other;\n break;\n case 'less':\n retval = val < other;\n break;\n case 'greaterOrEqual':\n retval = val >= other;\n break;\n case 'greater':\n retval = val > other;\n break;\n case 'notEqual':\n retval = val !== other;\n break;\n default:\n retval = val === other;\n break;\n }\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemCompareValidatorElement.prototype, \"operator\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true })\n], PacemCompareValidatorElement.prototype, \"to\", void 0);\nPacemCompareValidatorElement = __decorate([\n CustomElement({ tagName: P + '-compare-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemCompareValidatorElement);\nexport { PacemCompareValidatorElement };\n// #endregion\n/** Validates a {@link BinaryValue}/file-name (non-empty) upload against an optional filename `pattern` and/or `maxSize` in bytes (`p-binary-validator`). */\nlet PacemBinaryValidatorElement = class PacemBinaryValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first &&\n (name === 'pattern' || name === 'maxSize')) {\n this.triggerFormFieldValidation();\n }\n }\n evaluate(val) {\n let retval = true, pattern = this.pattern, maxSize = this.maxSize;\n if (!isValueEmpty(val)) {\n // file name\n if (!Utils.isNullOrEmpty(pattern)) {\n let filename = typeof val === 'string' ? val : val.name;\n retval = new RegExp(pattern, 'i').test(filename);\n }\n // max size\n if (!Utils.isNull(maxSize) && typeof val === 'object' && val.size > 0) {\n retval = retval && val.size <= maxSize;\n }\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBinaryValidatorElement.prototype, \"pattern\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBinaryValidatorElement.prototype, \"maxSize\", void 0);\nPacemBinaryValidatorElement = __decorate([\n CustomElement({ tagName: P + '-binary-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemBinaryValidatorElement);\nexport { PacemBinaryValidatorElement };\n/**\n * Validates a field's (non-empty) value by calling a remote `url` (`p-async-validator`), sending it - along\n * with any extra `parameters` - as a request parameter named after {@link PacemBaseValidatorElement#watch}.\n * The response is considered valid when it is the literal text `'true'`, or a fetched JSON payload whose API\n * result (see `Utils.getApiResult`) is truthy; anything else (including a failed fetch) is invalid.\n * Debounces requests by 1 second and memoizes the last request/result to avoid redundant round-trips.\n */\nlet PacemAsyncValidatorElement = class PacemAsyncValidatorElement extends PacemBaseValidatorElement {\n constructor() {\n super(...arguments);\n this._deferredToken = null;\n }\n _evaluateResult() {\n const fetcher = this._fetcher;\n const result = fetcher.result;\n switch (result) {\n case 'true':\n return true;\n break;\n case 'false':\n return false;\n break;\n default: // expect json\n try {\n let json = JSON.parse(result);\n let res = Utils.getApiResult(json);\n return (res || false);\n }\n catch (_) {\n return false;\n }\n }\n }\n _fetch(val) {\n const deferred = this._deferredToken;\n const fetcher = this._fetcher;\n var params = this.parameters || {};\n params[this.watch] = val;\n const request = {\n parameters: params,\n url: this.url,\n as: 'text',\n method: this.method\n };\n const serializedRequest = Utils.jsonSortStringify(request);\n // check changed:\n // assume idempotent with last request.\n const lastRequest = this.#lastRequest;\n let returnLastResult = false;\n if (!Utils.isNullOrEmpty(lastRequest)) {\n returnLastResult = (serializedRequest === lastRequest);\n }\n if (returnLastResult) {\n const result = this._evaluateResult();\n deferred.resolve(result);\n }\n else {\n Utils.extend(fetcher, request);\n // debounce\n clearTimeout(this._debouncer);\n this._debouncer = setTimeout(() => {\n fetcher.fetch().then(_ => {\n const result = this._evaluateResult();\n deferred.resolve(result);\n // memoize last successful request\n this.#lastRequest = serializedRequest;\n }, _ => {\n deferred.resolve(false);\n });\n }, 1000);\n }\n return deferred.promise;\n }\n #lastRequest;\n evaluate(val) {\n if (Utils.isNullOrEmpty(val)) {\n return Utils.fromResult(true);\n }\n else {\n this._deferredToken = this._deferredToken = DeferPromise.defer();\n return this._fetch(val).then(r => {\n this._deferredToken = null;\n return r;\n }, _ => {\n this._deferredToken = null;\n return false;\n });\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'parameters':\n case 'url':\n case 'method':\n case 'fetchCredentials':\n case 'fetchHeaders':\n this.triggerFormFieldValidation();\n break;\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemAsyncValidatorElement.prototype, \"parameters\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemAsyncValidatorElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemAsyncValidatorElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemAsyncValidatorElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemAsyncValidatorElement.prototype, \"method\", void 0);\n__decorate([\n ViewChild(P + '-fetch')\n], PacemAsyncValidatorElement.prototype, \"_fetcher\", void 0);\nPacemAsyncValidatorElement = __decorate([\n CustomElement({\n tagName: P + '-async-validator',\n template: BASIC_VALIDATOR_TEMPLATE + `<${P}-fetch autofetch=\"false\" throttle=\"true\" credentials=\"{{ :host.fetchCredentials }}\" headers=\"{{ :host.fetchHeaders }}\"></${P}-fetch>`, shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemAsyncValidatorElement);\nexport { PacemAsyncValidatorElement };\n/** Validates a field's (non-empty) value by deferring entirely to the externally-controlled {@link isValid} flag (`p-custom-validator`), for validation logic that doesn't fit the other built-in validators. */\nlet PacemCustomValidatorElement = class PacemCustomValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first &&\n (name === 'isValid')) {\n this.triggerFormFieldValidation();\n }\n }\n evaluate(val) {\n let retval = true;\n if (!isValueEmpty(val)) {\n retval = !!this.isValid;\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemCustomValidatorElement.prototype, \"isValid\", void 0);\nPacemCustomValidatorElement = __decorate([\n CustomElement({ tagName: P + '-custom-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemCustomValidatorElement);\nexport { PacemCustomValidatorElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Logging, PropertyConverters, Net, Utils, P, PCSS, CustomElement, Watch, PropertyChangeEvent, PropertyChangeEventName, ViewChild, CustomElementUtils, JsonFunctionConversion } from '@pacem/pacem-core';\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { PacemFormRelevantElement } from './form';\nimport { ContenteditableUtils } from './contenteditable/utils';\nimport { PacemBaseValidatorElement, PacemLengthValidatorElement, PacemAsyncValidatorElement, PacemBinaryValidatorElement, PacemCompareValidatorElement, PacemCustomValidatorElement, PacemRangeValidatorElement, PacemRegexValidatorElement, PacemRequiredValidatorElement } from './validators';\n//namespace Components.Scaffolding {\nfunction getFormId(key) {\n return 'form' + key;\n}\nfunction patternToString(pattern) {\n return new RegExp(pattern /*.split('\\\\').join('\\\\\\\\')*/).source;\n}\nfunction isKnownValidator(v) {\n return 'errorMessage' in v;\n}\nfunction isValidatorFactory(v) {\n return 'attributes' in v && typeof v.attributes === 'function';\n}\n/**\n * Renders a single editing field (label, input, validators, tooltip) for {@link entity}'s property described by {@link metadata},\n * dynamically choosing and building up the concrete input element (e.g. `pacem-input-text`, `pacem-select`, `pacem-checkbox`, ...)\n * based on the metadata's `dataType`/`ui` hints. Used internally by `pacem-form` for autogenerated forms.\n */\nlet PacemFormFieldElement = class PacemFormFieldElement extends PacemFormRelevantElement {\n constructor(_md = new ComponentsUI.UI.MarkdownService()) {\n super();\n this._md = _md;\n this._entityPropertyChangeHandler = (e) => {\n // nudge entity propertychange notification\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'entity', currentValue: this.entity }));\n };\n this._labelClickHandler = (_) => {\n document.getElementById(this._label.htmlFor).focus();\n };\n this._key = '_' + Utils.uniqueCode();\n }\n /** @readonly Gets this field's unique key, used to derive DOM ids for the label/input/fetcher. */\n get key() {\n return this._key;\n }\n /** @readonly Gets the inner `pacem-fetch` element used to retrieve remotely-sourced datasources for this field. */\n get fetcher() {\n return this._fetcher;\n }\n /** @readonly Gets the concrete input element built for this field (e.g. `pacem-input-text`, `pacem-select`, ...). */\n get field() {\n return this._field;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._buildUpForm();\n this._buildUpFetcher();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'readonly':\n this._ensureBalloon();\n break;\n case 'metadata':\n this._ensureBalloon();\n this._buildUpCss();\n this._buildUpLabel();\n this._buildUpField();\n break;\n case 'entity':\n // In the case that the entity is a HTMLElement,\n // its changes might not propagate correctly.\n // This is a nudgy solution. Explore how to improve\n // `CustomElementUtils.set` as an alternative...\n if (old instanceof HTMLElement) {\n old.removeEventListener(PropertyChangeEventName, this._entityPropertyChangeHandler, false);\n }\n if (val instanceof HTMLElement) {\n val.addEventListener(PropertyChangeEventName, this._entityPropertyChangeHandler, false);\n }\n break;\n }\n }\n disconnectedCallback() {\n if (this.entity instanceof HTMLElement) {\n this.entity.removeEventListener(PropertyChangeEventName, this._entityPropertyChangeHandler, false);\n }\n if (!Utils.isNull(this._label)) {\n this._label.removeEventListener('click', this._labelClickHandler, false);\n }\n if (!Utils.isNull(this._balloon)) {\n this._balloon.remove();\n }\n super.disconnectedCallback();\n }\n _normalizeTooltip() {\n const metadata = this.metadata && this.metadata.extra && this.metadata.extra.tooltip || false;\n if (typeof metadata === 'object') {\n return metadata;\n }\n return { type: metadata };\n }\n _ensureBalloon() {\n var innerText, tooltip;\n const noBalloon = this.readonly\n || ((tooltip = this._normalizeTooltip()).type === false)\n || Utils.isNullOrEmpty(innerText = this.metadata && this.metadata.display && this.metadata.display.description);\n // balloon\n if (Utils.isNull(this._balloon) && !noBalloon) {\n let balloon = document.createElement(P + '-balloon');\n balloon.options = {\n behavior: ComponentsUI.UI.BalloonBehavior.Tooltip,\n trigger: tooltip.trigger || ComponentsUI.UI.BalloonTrigger.Hover,\n position: tooltip.position || ComponentsUI.UI.BalloonPosition.Top,\n hoverDelay: 200, hoverTimeout: 50,\n align: tooltip.align || ComponentsUI.UI.BalloonAlignment.Auto\n };\n Utils.addClass(balloon, PCSS + '-field-tooltip');\n var shell = CustomElementUtils.findAncestorShell(this);\n shell.appendChild(this._balloon = balloon);\n }\n const balloon = this._balloon;\n if (!Utils.isNull(balloon)) {\n balloon.target = this._label;\n if (!(balloon.disabled = noBalloon)) {\n const content = innerText || '';\n switch (tooltip.type) {\n case 'md':\n case 'markdown':\n balloon.innerHTML = this._md.toHtml(content);\n break;\n case 'html':\n balloon.innerHTML = content;\n break;\n default:\n balloon.innerText = content;\n break;\n }\n }\n }\n }\n _buildUpCss() {\n const display = this.metadata?.display;\n if (Utils.isNull(display)) {\n return;\n }\n if (typeof display.cssClass === 'function') {\n const { cssClassAttr } = display.cssClass(this, '$this', '$this.entity');\n this.setAttribute('css-class', cssClassAttr);\n }\n else {\n this.cssClass = display.cssClass;\n }\n if (typeof display.css === 'function') {\n const { cssAttr } = display.css(this, '$this', '$this.entity');\n this.setAttribute('css', cssAttr);\n }\n else {\n this.css = display.css;\n }\n }\n _buildUpLabel() {\n // label\n const label = this._label, span = label.firstElementChild;\n const meta = this.metadata;\n label.htmlFor = this._key;\n Utils.addClass(label, PCSS + '-label');\n const vals = this.metadata.validators;\n if (vals && vals.find(v => v.type === 'required')) {\n Utils.addClass(label, PCSS + '-required');\n }\n else {\n Utils.removeClass(label, PCSS + '-required');\n }\n //\n if (!Utils.isNull(this._balloon) && !this._balloon.disabled) {\n Utils.addClass(label, PCSS + '-tooltip');\n }\n else {\n Utils.removeClass(label, PCSS + '-tooltip');\n }\n // exploit a pacem-span so that it cleans the htm content up\n if (typeof meta.display?.name === 'function') {\n const { contentAttr } = meta.display.name(this, ':host', ':host.entity', '::_form');\n span.setAttribute('content', contentAttr);\n }\n else {\n span.removeAttribute('content');\n span.content = (meta.display && meta.display.name) || meta.prop;\n }\n label.setAttribute('id', 'label' + this._key);\n label.addEventListener('click', this._labelClickHandler, false);\n }\n // #region Template-called\n _isValueNullOrEmpty(entity = this.entity, metadata = this.metadata) {\n if (Utils.isNull(metadata)) {\n return true;\n }\n const props = metadata.prop.split('.');\n let obj = entity;\n for (let j = 0; j < props.length; j++) {\n const prop = props[j];\n if (Utils.isNullOrEmpty(obj && obj[prop])) {\n return true;\n }\n // next\n obj = obj[prop];\n }\n return false;\n }\n /**\n * Reflects the value onto the entity attribute, if the 'entity' is an instance of HTMLElement.\n */\n _handleValueChange(evt) {\n if (evt.detail.propertyName === 'value') {\n const value = evt.detail.currentValue, prop = this.metadata.prop;\n if (this.entity instanceof HTMLElement) {\n // handle the entity as an element and modify the attribute\n let attr = CustomElementUtils.camelToKebab(prop);\n if (Utils.isNullOrEmpty(value)) {\n this.entity.removeAttribute(attr);\n }\n else {\n this.entity.setAttribute(attr, value.toString());\n }\n }\n else {\n this.entity[prop] = value;\n }\n }\n }\n /**\n * 'Prettifies' the input value (for some specific cases) to be included in an URL segment or query string.\n * @param v Input value\n */\n _adjustDependencyValue(v) {\n if (Utils.Dates.isDate(v)) {\n return Utils.Dates.parse(v).toISOString();\n }\n return v;\n }\n _broadcastFetchResult(v) {\n const field = this;\n this.dispatchEvent(new CustomEvent(\"fetch\", { detail: v, bubbles: true, cancelable: false }));\n }\n // #endregion\n _buildUpFetcher() {\n // fetcher\n var fetcher = this._fetcher;\n fetcher.setAttribute('id', 'fetch' + this._key);\n fetcher.setAttribute('on-fetchresult', ':host._broadcastFetchResult($event.detail)');\n }\n _buildUpForm() {\n // form\n var form = this._form;\n form.setAttribute('id', getFormId(this._key));\n form.setAttribute('sudden-validation', '{{ ::form.suddenValidation }}');\n }\n _apiResult(v) {\n return Utils.getApiResult(v);\n }\n _buildUpField() {\n if (this._field)\n this._field.remove();\n this._fetcher.removeAttribute('parameters');\n this._fetcher.result =\n this._fetcher.url = null;\n for (var j = this._validators.children.length - 1; j >= 0; j--)\n this._validators.children[j].remove();\n var meta = this.metadata;\n // field\n let tagName = /* setting the default/fallback input element */ P + '-input-text';\n let numericTagName = P + (meta.display && meta.display.ui === 'slider' ? '-slider' : '-input-number');\n let attrs = {\n 'id': this._key, 'name': meta.prop,\n // readonly if property `readonly` set to true OR metadata property is not editable OR parent form's `readonly` property is set to true\n 'readonly': \"{{ :host.readonly || :host.metadata.isReadOnly || ::_form.readonly }}\",\n 'value': `{{ :host.entity.${meta.prop}, twoway }}`,\n 'placeholder': `${((meta.display && meta.display.watermark) || \"\")}`\n };\n // autofocus\n if (meta.extra?.autofocus == true) {\n attrs['on-load'] = 'requestAnimationFrame(() => $this.focus())';\n }\n // fetch data\n let fetchData = meta.extra || {};\n let fetchAttrs = {};\n let disabledAttr = \"false\";\n let dependingClause = '';\n let dependingDisabling = '';\n let dependingParameters = '';\n let dependsOn = [];\n // #region dependency from other props\n if (!Utils.isNullOrEmpty(fetchData.dependsOn)) {\n if (typeof fetchData.dependsOn === 'function') {\n const depAttrs = fetchData.dependsOn(this, ':host', ':host.entity', '$this.entity'), hideAttr = depAttrs.hideAttr;\n if (!Utils.isNullOrEmpty(hideAttr)) {\n this.setAttribute('hide', hideAttr);\n }\n if (!Utils.isNullOrEmpty(depAttrs.disabledAttr)) {\n disabledAttr = depAttrs.disabledAttr;\n if (CustomElementUtils.isBindingAttribute(disabledAttr)) {\n dependingDisabling = CustomElementUtils.extractBindingAttributeExpression(disabledAttr);\n }\n }\n if (!Utils.isNullOrEmpty(depAttrs.parameterAttrs)) {\n const pAttrs = depAttrs.parameterAttrs, parameterPairs = [];\n for (let alias in pAttrs) {\n const propName = pAttrs[alias];\n parameterPairs.push(`${alias}: ${propName}`);\n // exploit this sneaky way...\n dependsOn.push({ prop: propName });\n }\n dependingParameters = parameterPairs.join(', ');\n }\n }\n else {\n dependsOn = fetchData.dependsOn;\n // there should be a better way...\n let disablingClauses = { empty: [], notEqual: {} };\n let hidingClauses = { empty: [], notEqual: {} };\n // fetch\n let namesAndPaths = [];\n let paths = [];\n for (var depends of dependsOn) {\n let path = ':host.entity.' + depends.prop, path2 = '$this.entity.' + depends.prop;\n if (!Utils.isNullOrEmpty(depends.value)) {\n let clause = (p) => p + ' !== ' + JSON.stringify(depends.value);\n (disablingClauses.notEqual[path] = disablingClauses.notEqual[path] || []).push(clause(path));\n if (depends.hide) {\n (hidingClauses.notEqual[path2] = hidingClauses.notEqual[path2] || []).push(clause(path2));\n }\n }\n else if (!depends.optional) {\n let clause = (p) => '$pacem.isNullOrEmpty(' + p + ')';\n disablingClauses.empty.push(clause(path));\n if (depends.hide) {\n hidingClauses.empty.push(clause(path2));\n }\n }\n // fetch\n paths.push(path);\n namesAndPaths.push(`${(depends.alias || depends.prop)}: :host._adjustDependencyValue(${path})`);\n if (!depends.optional) {\n dependingClause += `!$pacem.isNullOrEmpty(${path}) && `;\n }\n }\n dependingParameters = namesAndPaths.join(', ');\n let joinClauses = (d) => {\n let ne = 'false', emp = 'false';\n if (!Utils.isNullOrEmpty(d.notEqual)) {\n // when a value is provided then pick the logical operator when provided.\n // consider to switch semantic (i.e. 'or' -> '&&', 'and' -> '||') due to the 'notEqual' operator.\n // 'and' is assumed to be the default\n const neByProp = [];\n for (let dp in d.notEqual) {\n // same property conditions always concatenated with '&&' (logical and)\n neByProp.push('(' + d.notEqual[dp].join(' && ') + ')');\n }\n // different property clauses should be concatenated with '||' (logical or)\n ne = '(' + neByProp.join(' || ') + ')';\n }\n if (!Utils.isNullOrEmpty(d.empty)) {\n // logical operator doe not affect 'empty' (no 'value' explicitated) deps:\n // empty always means 'BAD', then ANY empty entry would automatically trigger a negative outcome ('||').\n emp = '(' + d.empty.join(' || ') + ')';\n }\n return ne + ' || ' + emp;\n };\n dependingDisabling = joinClauses(disablingClauses);\n disabledAttr = `{{ ${dependingDisabling} }}`;\n // never disable the form-field, NEVER!\n // attrs['disabled'] = disabledAttr; // * BUG\n this.setAttribute('hide', `{{ ${joinClauses(hidingClauses)} }}`);\n }\n }\n // #endregion\n const fn = 'fn';\n const fns = this[fn] = this[fn] || {};\n const spinStaticDatasourceAttr = (source = []) => {\n let args = (dependsOn || []).map(p => ':host.entity.' + p.prop).join(', ');\n const fnKey = 'fn' + Utils.uniqueCode();\n switch (typeof source) {\n case 'function':\n fns[fnKey] = source;\n break;\n default:\n if (Utils.isArray(source)) {\n fns[fnKey] = () => source;\n }\n else {\n throw 'Unsupported source format.';\n }\n break;\n }\n return `{{ :host.${fn}.${fnKey}(${args}) }}`;\n };\n const children = new DocumentFragment();\n let uiHint;\n // metadata\n if (typeof meta.type === 'function' /* < factory */) {\n // build-up meta-structure\n var retval = meta.type(this, ':host', ':host.entity');\n // element must be a registered custom-element (hyphen!)\n if (retval.tagName.indexOf('-') === -1) {\n this.log(Logging.LogLevel.Error, `${tagName} is not an allowed form-field`);\n }\n else {\n // set tagName\n tagName = retval.tagName;\n // set/override attributes\n Utils.extend(attrs, retval.attrs || {});\n // prepare recursive seeding function\n function seedChildren(parent, children) {\n if (!Utils.isNullOrEmpty(children)) {\n for (let child of children) {\n // element must be a registered custom-element (hyphen!)\n if (child.tagName.indexOf('-') === -1) {\n this.log(Logging.LogLevel.Error, `${child.tagName} is not an allowed child element for form-field ${tagName}`);\n continue;\n }\n const el = document.createElement(child.tagName);\n if (!Utils.isNullOrEmpty(child.attrs)) {\n for (let attr in child.attrs) {\n const attrVal = child.attrs[attr];\n el.setAttribute(attr, attrVal);\n }\n }\n if (!Utils.isNullOrEmpty(child.children)) {\n // recursion here\n seedChildren(el, child.children);\n }\n parent.appendChild(el);\n }\n }\n }\n // seed\n seedChildren(children, retval.children);\n }\n }\n else\n switch (uiHint = (meta.display && meta.display.ui)) {\n // remove this (use dataType = 'HTML' instead).\n case 'contentEditable':\n console.warn('`contentEditable` ui hint is deprecated. Lean on `dataType` equal to \\'HTML\\' instead.');\n tagName = P + '-contenteditable';\n children.append(ContenteditableUtils.getDefaultDashboard());\n break;\n case 'snapshot':\n tagName = P + '-snapshot';\n if (fetchData.width > 0) {\n attrs['width'] = '' + fetchData.width;\n }\n if (fetchData.height > 0) {\n attrs['height'] = '' + fetchData.height;\n }\n if (fetchData.quality >= 0) {\n attrs['quality'] = '' + fetchData.quality;\n }\n break;\n case 'chars':\n case 'digits':\n case 'otp':\n tagName = P + '-input-chars';\n if (fetchData.charCount > 0) {\n attrs['charCount'] = '' + fetchData.charCount;\n }\n if (!Utils.isNullOrEmpty(fetchData.inputTransform)) {\n attrs['input-transform'] = fetchData.inputTransform;\n }\n break;\n case 'oneToMany':\n case 'dropdown':\n case 'radioList':\n case 'checkboxList':\n case 'manyToMany':\n if (uiHint === 'oneToMany' || uiHint === 'dropdown') {\n // select\n tagName = P + '-select';\n if (fetchData.preventWheel !== false /* must explicit a 'false': default/empty is true for <select> */) {\n attrs['on-wheel'] = '$event.preventDefault()';\n }\n }\n else {\n // checkboxlist\n delete attrs['placeholder'];\n tagName = P + (uiHint === 'radioList' ? '-radio-list' : '-checkbox-list');\n }\n if (!Utils.isNullOrEmpty(fetchData.textProperty)) {\n attrs['text-property'] = fetchData.textProperty;\n }\n if (!Utils.isNullOrEmpty(fetchData.disabledProperty)) {\n attrs['disabled-property'] = fetchData.disabledProperty;\n }\n if (!Utils.isNullOrEmpty(fetchData.valueProperty)) {\n if (!meta.isComplexType)\n attrs['value-property'] = fetchData.valueProperty;\n else\n attrs['compare-by'] = fetchData.valueProperty;\n }\n if (Utils.isNullOrEmpty(fetchData.source)) {\n // datasource has to be fetched\n this._fetcher.id = `fetch${this._key}`;\n this._fetcher.url = fetchData.sourceUrl;\n this._fetcher.method = fetchData.verb;\n //\n fetchAttrs['parameters'] = `{{ { ${dependingParameters} } }}`;\n fetchAttrs['disabled'] = disabledAttr;\n attrs['datasource'] = `{{ ${dependingClause}:host._apiResult(#fetch${this._key}.result) || null }}`;\n }\n else {\n // static datasource provided\n attrs['datasource'] = spinStaticDatasourceAttr(fetchData.source);\n }\n break;\n // experimental (do not include in metadata)\n //case 'hierarchy':\n // // select\n // delete attrs['placeholder'];\n // tagName = P + '-hierarchy';\n // if (!Utils.isNullOrEmpty(fetchData.textProperty)) {\n // attrs['text-property'] = fetchData.textProperty;\n // }\n // if (!Utils.isNullOrEmpty(fetchData.disabledProperty)) {\n // attrs['disabled-property'] = fetchData.disabledProperty;\n // }\n // if (!Utils.isNullOrEmpty(fetchData.parentsProperty)) {\n // attrs['parents-property'] = fetchData.parentsProperty;\n // }\n // if (!Utils.isNullOrEmpty(fetchData.valueProperty)) {\n // attrs['value-property'] = fetchData.valueProperty;\n // }\n // if (!Utils.isNullOrEmpty(fetchData.unlinkCaption)) {\n // attrs['unlink-caption'] = fetchData.unlinkCaption;\n // }\n // if (Utils.isNullOrEmpty(fetchData.source)) {\n // // datasource has to be fetched\n // this._fetcher.id = `fetch${this._key}`;\n // this._fetcher.url = fetchData.sourceUrl;\n // this._fetcher.method = fetchData.verb;\n // //\n // fetchAttrs['parameters'] = `{{ { ${dependingParameters} } }}`;\n // fetchAttrs['disabled'] = disabledAttr;\n // attrs['datasource'] = `{{ ${dependingClause}Pacem.Utils.getApiResult(#fetch${this._key}.result) || null }}`;\n // } else {\n // // static datasource provided\n // attrs['datasource'] = spinStaticDatasourceAttr(fetchData.source);\n // }\n // break;\n case 'suggest':\n case 'tags':\n case 'autocomplete':\n // autocomplete\n const tags = meta.display.ui === 'tags';\n tagName = P + (tags ? '-tags' : '-suggest');\n this._fetcher.id = `fetch${this._key}`;\n if (!Utils.isNullOrEmpty(fetchData.textProperty)) {\n attrs['text-property'] = fetchData.textProperty;\n }\n let itemValue = `#${this._key}.value`;\n if (!Utils.isNullOrEmpty(fetchData.valueProperty)) {\n attrs['compare-by'] = fetchData.valueProperty;\n if (tags) {\n itemValue = `(${itemValue} && ${itemValue}.${fetchData.valueProperty}) || ''`;\n }\n else {\n if (!meta.isComplexType) {\n attrs['value-property'] = fetchData.valueProperty;\n }\n else {\n itemValue += ` && ${itemValue}.${fetchData.valueProperty}`;\n }\n }\n }\n if (!Utils.isNullOrEmpty(fetchData.sourceUrl)) {\n fetchAttrs['url'] = `${fetchData.sourceUrl}`;\n this._fetcher.method = fetchData.verb;\n //\n if (!Utils.isNullOrEmpty(fetchData.dependsOn)) {\n // deps\n fetchAttrs['parameters'] = `{{ { ${dependingParameters}, q: #${this._key}.hint || '', ${(fetchData.valueProperty || 'value')}: ${itemValue} || '' } }}`;\n fetchAttrs['disabled'] = disabledAttr;\n }\n else {\n // no deps\n fetchAttrs['parameters'] = `{{ {q: #${this._key}.hint || '', ${(fetchData.valueProperty || 'value')}: ${itemValue} || '' } }}`;\n }\n attrs['datasource'] = `{{ ${dependingClause}:host._apiResult(#fetch${this._key}.result) || null }}`;\n }\n else {\n // static datasource\n attrs['datasource'] = spinStaticDatasourceAttr(fetchData.source);\n }\n if (tags) {\n // tags\n attrs['allow-new'] = (meta.extra.allowNew === true).toString();\n attrs['allow-duplicates'] = (meta.extra.allowDuplicates === true).toString();\n }\n else {\n // suggest\n if (!Utils.isNullOrEmpty(fetchData.disabledProperty)) {\n attrs['disabled-property'] = fetchData.disabledProperty;\n }\n if (!Utils.isNullOrEmpty(fetchData.itemtemplate)) {\n const itmpl = fetchData.itemtemplate;\n if (itmpl instanceof HTMLElement) {\n attrs['itemtemplate'] = '{{ #' + (itmpl.id = itmpl.id || this._key + '_itemtmpl') + ' }}';\n if (!itmpl.isConnected) {\n this.append(itmpl);\n }\n }\n else {\n attrs['itemtemplate'] = itmpl;\n }\n }\n if (!Utils.isNullOrEmpty(fetchData.filterFields)) {\n const ffields = fetchData.filterFields;\n attrs['filter-fields'] = (Utils.isArray(ffields)) ? ffields.join(' ') : ffields;\n }\n if (!Utils.isNullOrEmpty(fetchData.maxSuggestions)) {\n attrs['max-suggestions'] = fetchData.maxSuggestions.toString();\n }\n }\n break;\n case \"calendar\":\n tagName = P + '-calendar-picker';\n const calendarFormat = meta.display?.format ?? meta.extra?.format;\n if (!Utils.isNullOrEmpty(calendarFormat)) {\n attrs['format'] = '{{ ' + JSON.stringify(calendarFormat) + ' }}';\n }\n if (!Utils.isNullOrEmpty(fetchData.disabledRanges)) {\n attrs['disabled-ranges'] = '{{ ' + JSON.stringify(fetchData.disabledRanges) + ' }}';\n }\n break;\n case \"dictionary\":\n tagName = P + '-namevalue-list';\n attrs['dictionary'] = 'true';\n break;\n case 'switcher':\n if ((meta.type || '').toLowerCase() === 'boolean') {\n attrs['class'] = \"checkbox-switch\";\n }\n else {\n break;\n }\n default:\n let dataType = (meta.dataType || meta.type || '').toLowerCase();\n switch (dataType) {\n // should replace this one:\n //case 'imageurl':\n // tagName = P + '-input-image';\n // const f_id = this._fetcher.id = `fetch${this._key}`;\n // attrs['image-set'] = `{{ Pacem.Utils.getApiResult(#${f_id}.result) }}`;\n // attrs['on-imagefetchrequest'] = `#${f_id}.url = '${meta.extra.fetchUrl}'; #${f_id}.parameters = { q: $event.detail.hint, skip: $event.detail.skip, take: $event.detail.take }`;\n // attrs['max-width'] = '' + meta.extra.width;\n // attrs['max-height'] = '' + meta.extra.height;\n // attrs['max-thumbnail-height'] = '' + meta.extra.thumbHeight;\n // attrs['max-thumbnail-width'] = '' + meta.extra.thumbWidth;\n // attrs['upload-url'] = meta.extra.uploadUrl;\n // attrs['allow-snapshot'] = '' + meta.extra.snapshot;\n // break;\n case 'upload':\n // upload\n tagName = P + '-upload';\n let uploadExtra = meta.extra || {};\n attrs['url'] = uploadExtra.uploadUrl;\n attrs['parallelism'] = '' + uploadExtra.parallelism;\n attrs['chunk-size'] = '' + uploadExtra.chunkSize;\n attrs['max-image-width'] = '' + uploadExtra.maxImageWidth;\n attrs['max-image-height'] = '' + uploadExtra.maxImageHeight;\n attrs['select-mode'] = uploadExtra.mode ?? 'file';\n break;\n case 'html':\n // contenteditable\n tagName = P + '-contenteditable';\n children.append(ContenteditableUtils.getDefaultDashboard());\n break;\n case 'enumeration':\n // radiobutton list\n tagName = P + '-radio-list';\n attrs['class'] = PCSS + '-radio-list';\n attrs['value-property'] = \"value\";\n attrs['text-property'] = \"caption\";\n attrs['datasource'] = '{{ ' + JSON.stringify(meta.extra.enum) + ' }}';\n delete attrs['placeholder'];\n break;\n case 'password':\n tagName = P + '-input-password';\n break;\n case 'emailaddress':\n tagName = P + '-input-email';\n break;\n case \"color\":\n tagName = P + '-input-color';\n break;\n case \"time\":\n case \"date\":\n case \"datetime\":\n tagName = P + '-datetime-picker';\n delete attrs['placeholder'];\n if (dataType === 'datetime') {\n attrs['precision'] = \"minute\";\n }\n const dateFormat = meta.display?.format ?? meta.extra?.format;\n if (!Utils.isNullOrEmpty(dateFormat)) {\n attrs['format'] = '{{ ' + JSON.stringify(dateFormat) + ' }}';\n }\n if (!Utils.isNullOrEmpty(fetchData.disabledRanges)) {\n attrs['disabled-ranges'] = '{{ ' + JSON.stringify(fetchData.disabledRanges) + ' }}';\n }\n break;\n case \"url\":\n tagName = P + '-input-url';\n break;\n case \"phonenumber\":\n tagName = P + '-input-tel';\n break;\n case \"multilinetext\":\n tagName = P + '-textarea';\n break;\n case \"markdown\":\n tagName = P + '-textarea-markdown';\n break;\n case 'latlng':\n tagName = P + '-latlng';\n if (!Utils.isNullOrEmpty(meta.extra) && typeof meta.extra === 'object' && !Utils.isArray(meta.extra)) {\n attrs['options'] = JSON.stringify(meta.extra);\n }\n break;\n case 'percent':\n case 'percentage':\n case 'currency':\n let defaultFormatOptions = dataType === 'currency' ? { style: 'currency', currency: 'EUR' } : { style: 'percent', maximumFractionDigits: 2 };\n let intl = meta.display?.format ?? defaultFormatOptions;\n attrs['format'] = JSON.stringify(intl);\n default:\n switch ((meta.type || '').toLowerCase()) {\n case \"boolean\":\n tagName = P + '-checkbox';\n //attrs['selected'] = `{{ :host.entity.${meta.prop}, twoway }}`;\n attrs['true-value'] = \"{{ true }}\";\n attrs['false-value'] = \"{{ false }}\";\n attrs['caption'] = attrs['placeholder'];\n //delete attrs['value'];\n delete attrs['placeholder'];\n break;\n case \"byte\":\n attrs['min'] = '0';\n attrs['max'] = '255';\n case \"int16\":\n case \"int32\":\n case \"int64\":\n case \"short\":\n case \"integer\":\n case \"int\":\n case \"long\":\n attrs['step'] = '' + (meta.extra?.step ?? '1');\n tagName = numericTagName;\n const intFormat = meta.display?.format;\n if (!Utils.isNullOrEmpty(intFormat)) {\n attrs['format'] = JSON.stringify(intFormat);\n }\n if (fetchData.preventWheel !== false /* must explicit a 'false': default/empty is true for <input[type=number]> */ && tagName === (P + '-input-number')) {\n attrs['on-wheel'] = '$event.preventDefault()';\n }\n break;\n case \"double\":\n case \"decimal\":\n case \"float\":\n case \"single\":\n case \"number\":\n tagName = numericTagName;\n attrs['step'] = '' + (meta.extra?.step ?? 'any');\n const decimalFormat = meta.display?.format;\n if (!Utils.isNullOrEmpty(decimalFormat)) {\n attrs['format'] = JSON.stringify(decimalFormat);\n }\n if (fetchData.preventWheel !== false /* must explicit a 'false': default/empty is true for <input[type=number]> */ && tagName === (P + '-input-number')) {\n attrs['on-wheel'] = '$event.preventDefault()';\n }\n break;\n default:\n if ((meta.type === 'array' || meta.type === 'object') && !Utils.isNullOrEmpty(meta.props)) {\n tagName = P + '-childform';\n delete attrs['placeholder'];\n attrs['metadata'] = Utils.Json.stringify(meta.props, { functions: JsonFunctionConversion.Reference });\n attrs['mode'] = meta.type;\n attrs['lock-items'] = '' + (meta.extra && meta.extra.lockItems || false);\n attrs['logger'] = '{{ :host.logger }}';\n if (!Utils.isNullOrEmpty(dependsOn)) {\n var extraDom = '';\n for (let d of dependsOn) {\n extraDom += `<${P}-childform-propagator model=\"${attrs[\"value\"]}\" watch=\"{{ :host.entity.${d.prop} }}\" property=\"${(d.alias || d.prop)}\"></${P}-childform-propagator>\\n`;\n }\n this._container.innerHTML = extraDom;\n }\n attrs['fetch-credentials'] = '{{ :host.fetchCredentials }}';\n attrs['fetch-headers'] = '{{ :host.fetchHeaders }}';\n }\n break;\n }\n break;\n }\n break;\n }\n // #region commands\n if (!Utils.isNullOrEmpty(meta.commands)) {\n Utils.addClass(this._container, PCSS + '-fieldgroup');\n const prepend = this._container.appendChild(document.createElement('div')), append = this._container.appendChild(document.createElement('div'));\n Utils.addClass(prepend, `fieldgroup-prepend ${PCSS}-buttonset buttons`);\n Utils.addClass(append, `fieldgroup-append ${PCSS}-buttonset buttons`);\n const disable = dependingDisabling || 'false';\n meta.commands.forEach(cmd => {\n const btn = document.createElement(P + '-button');\n btn.setAttribute('icon-glyph', cmd.icon);\n btn.setAttribute('command-name', cmd.name);\n if (cmd.dependsOnValue) {\n btn.setAttribute('disabled', `{{ (${disable}) || !::_form.valid || $pacem.isNullOrEmpty(:host.entity.${meta.prop}) }}`);\n btn.setAttribute('command-argument', `{{ :host.entity.${meta.prop} }}`);\n }\n else {\n btn.setAttribute('disabled', disabledAttr);\n }\n btn.setAttribute('tooltip', cmd.tooltip);\n if (!Utils.isNullOrEmpty(cmd.cssClass)) {\n Utils.addClass(btn, cmd.cssClass.join(' '));\n }\n (cmd.prepend ? prepend : append).appendChild(btn);\n });\n }\n // #endregion\n // #region validators\n if (!Utils.isNullOrEmpty(meta.validators)) {\n meta.validators.forEach((v) => {\n var validatorElement;\n var params = {};\n var attributes = {};\n if (isKnownValidator(v)) {\n params = v['params'] || {};\n attributes['error-message'] = v.errorMessage;\n }\n if (isValidatorFactory(v)) {\n // preserve static attributes, just in case\n Utils.extend(attributes, v.attributes(this, ':host', ':host.entity'));\n }\n switch (v.type) {\n case 'required':\n attrs['required'] = 'true';\n validatorElement = new PacemRequiredValidatorElement();\n break;\n case 'length':\n let lengthValidator = new PacemLengthValidatorElement();\n validatorElement = lengthValidator;\n let max = params && params['max'];\n let min = params && params['min'];\n if (max != null) {\n attrs['maxlength'] = '' + (lengthValidator.max = max);\n if (tagName === P + '-input-chars') {\n attrs['count'] ??= '' + max;\n }\n }\n else if ('max' in attributes) {\n attrs['max'] = attributes['max'];\n }\n if (min != null) {\n attrs['minlength'] = '' + (lengthValidator.min = min);\n }\n else if ('min' in attributes) {\n attrs['minlength'] = attributes['min'];\n }\n break;\n case 'range':\n let rangeValidator = new PacemRangeValidatorElement();\n validatorElement = rangeValidator;\n let maxNum = params && params['max'];\n let minNum = params && params['min'];\n let isDateTime = tagName === P + '-datetime-picker';\n // TODO: handle calendar-picker\n if (maxNum != null) {\n rangeValidator.max = maxNum;\n attrs['max'] = \"{{ \" + (isDateTime ? \"'\" + maxNum + \"'\" : maxNum) + \" }}\";\n }\n else if ('max' in attributes) {\n attrs['max'] = attributes['max'];\n }\n if (minNum != null) {\n rangeValidator.min = minNum;\n attrs['min'] = \"{{ \" + (isDateTime ? \"'\" + minNum + \"'\" : minNum) + \" }}\";\n }\n else if ('min' in attributes) {\n attrs['min'] = attributes['min'];\n }\n break;\n case 'email':\n let emailValidator = new PacemRegexValidatorElement();\n validatorElement = emailValidator;\n attrs['pattern'] = patternToString(emailValidator.pattern = /^[\\w\\-\\.]+@[\\w\\-\\.]+\\.[a-zA-Z0-9]{2,6}$/);\n break;\n case 'regex':\n let regexValidator = new PacemRegexValidatorElement();\n validatorElement = regexValidator;\n let pattern = params['pattern'];\n pattern ||= attributes['pattern'];\n attrs['pattern'] = patternToString(pattern);\n regexValidator.pattern = pattern;\n break;\n case 'binary':\n let binaryValidator = new PacemBinaryValidatorElement();\n validatorElement = binaryValidator;\n let filePattern = params['pattern'];\n if (filePattern != null) {\n attrs['pattern'] = patternToString(filePattern);\n binaryValidator.pattern = filePattern;\n }\n else if ('pattern' in attributes) {\n attrs['pattern'] = attributes['pattern'];\n }\n let maxSize = params && params['maxSize'];\n if (maxSize != null) {\n binaryValidator.maxSize = maxSize;\n attrs['max-size'] = '' + maxSize;\n }\n else if ('max-size' in attributes) {\n attrs['max-size'] = attributes['max-size'];\n }\n break;\n case 'compare':\n let compareValidator = new PacemCompareValidatorElement();\n validatorElement = compareValidator;\n let comparedToCore = '';\n if ('value' in params) {\n comparedToCore = JSON.stringify(params.value);\n }\n else {\n const toProp = 'to' in params ? params.to : params.toProperty;\n comparedToCore = `:host.entity.${toProp}`;\n }\n const compareToAttr = `{{ ${comparedToCore} }}`;\n compareValidator.setAttribute('to', compareToAttr);\n let operator = compareValidator.operator = params['operator'] || attributes['operator'] || 'equal';\n // In case of `date(time)` try to add some interaction with `datetime-picker`'s min/max props.\n if (tagName === P + '-datetime-picker') {\n switch (operator) {\n case 'lessOrEqual':\n case 'less': // approximation: edge value won't be allowed but will result enabled on the `datetime-picker`\n attrs['max'] = compareToAttr;\n break;\n case 'greaterOrEqual':\n case 'greater': // approximation: edge value won't be allowed but will result enabled on the `datetime-picker`\n attrs['min'] = compareToAttr;\n break;\n }\n } /* // TODO: should accumulate disabled ranges (possible multiple validators)\n else if (tagName === P + '-calendar-picker') {\n //\n switch (operator) {\n case 'lessOrEqual':\n case 'less': // approximation: edge value won't be allowed but will result enabled on the `calendar-picker`\n attrs['disabled-ranges'] = `{{ [{ to: ${comparedToCore} }] }}`;\n break;\n case 'greaterOrEqual':\n case 'greater': // approximation: edge value won't be allowed but will result enabled on the `calendar-picker`\n attrs['disabled-ranges'] = `{{ [{ from: ${comparedToCore} }] }}`;\n break;\n }\n }*/\n break;\n case 'async':\n let asyncValidator = new PacemAsyncValidatorElement();\n validatorElement = asyncValidator;\n asyncValidator.url = params['url'];\n let parameters = [], depOn = params['dependsOn'] || dependsOn;\n parameters.push(`${meta.prop}: :host._adjustDependencyValue(:host.entity.${meta.prop})`);\n for (let depend of depOn || []) {\n parameters.push(`${(depend.alias || depend.prop)}: :host._adjustDependencyValue(:host.entity.${depend.prop})`);\n }\n asyncValidator.setAttribute('parameters', `{{ { ${(parameters.join(', '))} } }}`);\n asyncValidator.method = params['verb'] || Net.HttpMethod.Get;\n asyncValidator.setAttribute('fetch-credentials', '{{ :host.fetchCredentials }}');\n asyncValidator.setAttribute('fetch-headers', '{{ :host.fetchHeaders }}');\n break;\n case 'custom':\n validatorElement = new PacemCustomValidatorElement();\n break;\n default:\n // custom (extra-lib) validator\n if (!Utils.isNullOrEmpty(v.type) && /* must be a custom element */ v.type.indexOf('-') > 0) {\n const tagName = v.type;\n const extern = document.createElement(tagName);\n if (extern instanceof PacemBaseValidatorElement) {\n validatorElement = extern;\n }\n }\n break;\n }\n //\n if (Utils.isNull(validatorElement)) {\n throw `Cannot generate a formfield validator based on type: ${v.type}.`;\n }\n else {\n validatorElement.watch = meta.prop;\n validatorElement.setAttribute('hide', '{{ !this.invalid }}');\n validatorElement.setAttribute('disabled', disabledAttr);\n for (let attrName in attributes) {\n validatorElement.setAttribute(attrName, attributes[attrName]);\n }\n this._validators.appendChild(validatorElement);\n }\n });\n }\n // #endregion\n // #region build-up\n let field = document.createElement(tagName);\n for (var name in attrs) {\n let attr;\n if (!Utils.isNullOrEmpty(attr = attrs[name]))\n field.setAttribute(name, attr);\n }\n field.append(children);\n // #endregion\n this._field = field;\n this._container.insertBefore(field, this._container.firstElementChild);\n for (var name in fetchAttrs) {\n let attr;\n if (!Utils.isNullOrEmpty(attr = fetchAttrs[name]))\n this._fetcher.setAttribute(name, attr);\n }\n // fire propertychange event for bindings' sake...\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'field', currentValue: field }));\n }\n};\n__decorate([\n ViewChild('label')\n], PacemFormFieldElement.prototype, \"_label\", void 0);\n__decorate([\n ViewChild(`div.${PCSS}-input-container`)\n], PacemFormFieldElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild(P + '-fetch')\n], PacemFormFieldElement.prototype, \"_fetcher\", void 0);\n__decorate([\n ViewChild(P + '-form')\n], PacemFormFieldElement.prototype, \"_form\", void 0);\n__decorate([\n ViewChild(P + '-panel.' + PCSS + '-validators')\n], PacemFormFieldElement.prototype, \"_validators\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemFormFieldElement.prototype, \"metadata\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemFormFieldElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemFormFieldElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemFormFieldElement.prototype, \"readonly\", void 0);\n__decorate([\n Watch()\n], PacemFormFieldElement.prototype, \"entity\", void 0);\nPacemFormFieldElement = __decorate([\n CustomElement({\n tagName: P + '-form-field', template: `<${P}-form class=\"${PCSS}-field\" logger=\"{{ :host.logger }}\" \r\ncss-class=\"{{ {'${PCSS}-fetching': ::_fetcher.fetching, '${PCSS}-dirty': this.dirty, '${PCSS}-invalid': !this.valid, '${PCSS}-editable': !:host.readonly, '${PCSS}-readonly': :host.readonly, '${PCSS}-pristine': !this.dirty, '${PCSS}-valid': this.valid, '${PCSS}-has-value': !:host._isValueNullOrEmpty(:host.entity, :host.metadata) } }}\">\r\n <label class=\"${PCSS}-label\"><${P}-span></${P}-span></label>\r\n <div class=\"${PCSS}-input-container\"></div>\r\n <${P}-fetch debounce=\"300\" logger=\"{{ :host.logger }}\" credentials=\"{{ :host.fetchCredentials }}\" headers=\"{{ :host.fetchHeaders }}\" diff-by-values=\"true\"\r\n on-fetchresult=\":host._broadcastFetchResult($event.detail)\"></${P}-fetch>\r\n <${P}-panel class=\"${PCSS}-validators\" hide=\"{{ ::_form.valid || !::_form.dirty || :host.readonly }}\"></${P}-panel>\r\n</${P}-form>`\n })\n], PacemFormFieldElement);\nexport { PacemFormFieldElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, ViewChild, CustomElement, Watch, Utils, PropertyConverters } from '@pacem/pacem-core';\nimport { Components as ComponentsMaps, Maps } from '@pacem/pacem-maps';\nimport { PacemBaseElement } from './types-components';\nimport { FieldChangeEventName } from './types';\nconst MIN_LENGTH = 3;\n/** {@link PacemBaseElement}-based field pairing an address `pacem-suggest` (forward geocoding) with a draggable map marker (reverse geocoding) to pick an {@link Address}. */\nlet PacemGeolocateElement = class PacemGeolocateElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this._dragendHandler = (e) => {\n this._reverseGeocoder.position = e.detail.position;\n };\n }\n get inputFields() {\n return [];\n }\n toggleReadonlyView(readonly) {\n this._setupSuggest();\n this._setupMapMarker();\n }\n onChange(evt) {\n return new Promise((resolve, _) => {\n if (evt.type === 'success' && evt.target === this._reverseGeocoder) {\n const position = this.#marker.position;\n const sorted = evt.detail.sort((a, b) => {\n const da = Maps.MapProjection.distanceBetween(a.position, position), db = Maps.MapProjection.distanceBetween(b.position, position);\n return da < db ? 0 : -1;\n });\n const altitude = sorted[0].position.altitude;\n const value = Utils.extend({}, sorted[0], { position: Utils.extend({ altitude }, position) });\n resolve(this.value = value);\n }\n else if (evt.type === FieldChangeEventName && evt.target === this._suggest) {\n resolve(this.value = this._suggest.value);\n }\n else {\n resolve(this.value);\n }\n });\n }\n fetch(search) {\n if (Maps.LatLng.isLatLng(search)) {\n this.#marker.position =\n this._reverseGeocoder.position = search;\n }\n }\n compareValuePropertyValues(old, any) {\n const pos1 = old?.position ?? Maps.LatLng.Empty, pos2 = any?.position ?? Maps.LatLng.Empty;\n return Maps.LatLng.equals(pos1, pos2);\n }\n acceptValue(val) {\n if (!Utils.isNull(val)) {\n this._datasource.model = [val];\n this._setupMapMarker();\n }\n else {\n this._datasource.model = [];\n }\n this._setupSuggest();\n }\n getViewValue(value) {\n return value?.fullAddress || '';\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Json.convert(attr, this);\n }\n #marker;\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setup();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'adapter':\n this._setupAdapters(val);\n break;\n case 'map':\n if (old) {\n this._detachMarker(old);\n }\n if (val) {\n this._setupMapMarker(val);\n }\n break;\n case 'icon':\n this._setupMapMarker();\n break;\n case 'plaeholder':\n this._setupSuggest();\n break;\n case 'disabled':\n this._setupMapMarker();\n this._setupSuggest();\n break;\n }\n }\n }\n disconnectedCallback() {\n this._disposeMarker();\n super.disconnectedCallback();\n }\n _setupAdapters(adapter = this.adapter) {\n const gc = this._geocoder, rvgc = this._reverseGeocoder;\n // setup adapters\n if (!Utils.isNull(gc)) {\n gc.adapter = adapter;\n }\n if (!Utils.isNull(rvgc)) {\n rvgc.adapter = adapter;\n }\n }\n _setupSuggest() {\n const suggest = this._suggest;\n if (!Utils.isNull(suggest)) {\n suggest.placeholder = this.placeholder ?? 'search...';\n suggest.readonly = this.readonly;\n suggest.disabled = this.disabled;\n suggest.value = this.value;\n }\n }\n _detachMarker(map = this.map) {\n const marker = this.#marker;\n if (!Utils.isNull(marker) && marker.map === map) {\n marker.remove();\n }\n }\n _createMarker() {\n const marker = new ComponentsMaps.Maps.PacemMapMarkerElement();\n marker.addEventListener('dragend', this._dragendHandler, false);\n return marker;\n }\n _disposeMarker() {\n const marker = this.#marker;\n if (!Utils.isNull(marker)) {\n marker.removeEventListener('dragend', this._dragendHandler, false);\n }\n }\n _setupMapMarker(map = this.map) {\n const marker = this.#marker || (this.#marker = this._createMarker());\n marker.icon = this.icon;\n marker.draggable = !this.readonly && !this.disabled;\n marker.hide = this.disabled;\n const address = this.value;\n if (address && address.position) {\n marker.position = address.position;\n }\n if (marker.map !== map && !Utils.isNull(map)) {\n map.appendChild(marker);\n }\n }\n _setup() {\n this._setupAdapters();\n this._setupSuggest();\n this._setupMapMarker();\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemGeolocateElement.prototype, \"adapter\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemGeolocateElement.prototype, \"map\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemGeolocateElement.prototype, \"icon\", void 0);\n__decorate([\n ViewChild(P + '-data[ds]')\n], PacemGeolocateElement.prototype, \"_datasource\", void 0);\n__decorate([\n ViewChild(P + '-suggest')\n], PacemGeolocateElement.prototype, \"_suggest\", void 0);\n__decorate([\n ViewChild(P + '-map-geocode')\n], PacemGeolocateElement.prototype, \"_geocoder\", void 0);\n__decorate([\n ViewChild(P + '-map-geocode[reverse]')\n], PacemGeolocateElement.prototype, \"_reverseGeocoder\", void 0);\nPacemGeolocateElement = __decorate([\n CustomElement({\n tagName: P + '-geolocate', shadow: false, template: `<${P}-map-geocode search=\"{{ ::_suggest.hint }}\"\r\n disabled=\"{{ (::_suggest.hint || '').length < ${MIN_LENGTH} }}\" on-success=\"::_datasource.model = $event.detail\"></${P}-map-geocode>\r\n<${P}-map-geocode reverse on-success=\":host.changeHandler($event)\"></${P}-map-geocode>\r\n\r\n<${P}-data ds></${P}-data>\r\n\r\n<${P}-suggest on-change=\":host.changeHandler($event)\" datasource=\"{{ ::_datasource.model || [] }}\"\r\n compare-by=\"fullAddress\" text-property=\"fullAddress\"></${P}-suggest>`\n })\n], PacemGeolocateElement);\nexport { PacemGeolocateElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Components, PropertyConverters, Utils, P, PCSS, CustomElement, Watch, Defaults, ViewChild, CustomEventUtils, CustomElementUtils, avoidHandler, UI } from '@pacem/pacem-core';\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { PacemBaseElement } from './types-components';\n//namespace Components.Scaffolding {\nclass HierarchyChangeEvent extends CustomEvent {\n constructor(v) {\n super('hierarchychange', { detail: v, bubbles: false, cancelable: false });\n }\n}\nconst HIERARCHYITEM_CSSCLASS = 'hierarchy-item';\nconst HIERARCHYITEM_CSSCLASS_FULL = HIERARCHYITEM_CSSCLASS + ' ' + PCSS + '-anim anim-fade-in anim-sudden';\nconst HIERARCHYITEM_CSSCLASS_ATTR = \"{{ { 'item-disabled' : ^item.disabled } }}\";\nconst BINDER_HIERARCHYDATAKEY = 'pacemHierarchy';\nconst HIERARCHYITEM_CONTENT_CSSCLASS = 'item-content';\nconst HIERARCHYITEM_LINK_CSSCLASS = 'item-link';\nconst HIERARCHYITEM_LINK_CSSCLASS_FULL = HIERARCHYITEM_LINK_CSSCLASS + ' icon-rotate rotate-135';\nconst HIERARCHYITEM_LINK_ICON = 'link';\nconst HIERARCHYITEM_MOVE_CSSCLASS = 'item-move';\nconst HIERARCHYITEM_MOVE_ICON = 'drag_indicator';\nconst DEFAULT_PARENTSPROPERTY = 'parents';\n/**\n * {@link PacemBaseElement}-based field for editing a DAG-like parent/child hierarchy over {@link datasource}: items are\n * arranged level-by-level and linked/unlinked via drag-drop, producing an array `value` of `{ [valueProperty]: any, parents: any[] }`.\n */\nlet PacemHierarchyElement = class PacemHierarchyElement extends PacemBaseElement {\n getViewValue(value) {\n return '';\n }\n convertValueAttributeToProperty(attr) {\n return Utils.Json.parse(attr);\n }\n constructor() {\n super();\n this.#bindings = new Map();\n this.#dropTargets = new Map();\n /** Gets or sets the caption of the balloon button used to unlink a parent/child relation. */\n this.unlinkCaption = 'Delete';\n this._binderClickHandler = (evt) => {\n const origType = evt.originalEvent.type;\n if (origType === 'mousedown' && evt.originalEvent.button === 1) {\n avoidHandler(evt.originalEvent);\n const binder = evt.srcElement;\n this._unlink(binder);\n }\n else if (origType === 'click' || origType === 'contextmenu') {\n avoidHandler(evt.originalEvent);\n this.#unlinkingBinder = evt.srcElement;\n const balloon = this._balloon;\n balloon.target = { x: evt.pageX, y: evt.pageY };\n balloon.popup();\n }\n };\n // #region drag-drop\n this._dragInitHandler = (evt) => {\n let args = evt.detail;\n const dragger = this._dragger;\n dragger.floater = document.createElement('span');\n dragger.dropTargets = Array.from(this.#dropTargets.keys()).filter(i => i !== args.element);\n if (!Utils.isNull(this.#dragBinder)) {\n this.#dragBinder.remove();\n }\n const binder = this.#dragBinder = new ComponentsUI.UI.PacemBinderElement();\n binder.from = args.element;\n this.#shell.appendChild(binder);\n };\n this._dragStartHandler = (evt) => {\n Utils.addClass(evt.detail.element, 'item-drag');\n };\n this._dragHandler = (evt) => {\n this.#dragBinder.to = evt.detail.currentPosition;\n };\n this._dragEndHandler = (evt) => {\n Utils.removeClass(evt.detail.element, 'item-drag');\n this.#dragBinder.remove();\n this.#dragBinder = null;\n };\n this._dropHandler = (evt) => {\n const source = evt.detail.data, target = this.#dropTargets.get(evt.detail.target);\n // set source as a parent of target\n // just in case (double-check)\n if (!this._isInAncestors(source, target) && !this._isInDescendants(source, target)) {\n // set new relation\n this._compileHierarchy({ source, target });\n }\n };\n this._dragOverHandler = (evt) => {\n const source = evt.detail.data, target = this.#dropTargets.get(evt.detail.target);\n if (target.disabled || this._isInAncestors(source, target) || this._isInDescendants(source, target)) {\n evt.preventDefault();\n }\n };\n this._dragOutHandler = (evt) => {\n };\n // #endregion\n // #region balloon\n this._popoutHandler = (evt) => {\n this._balloon.popout();\n };\n this.#key = Utils.uniqueCode();\n }\n #key;\n #bindings;\n #dragBinder;\n #unlinkingBinder;\n #dropTargets;\n #shell;\n get inputFields() {\n return [];\n }\n toggleReadonlyView(readonly) {\n this._dragger.disabled = readonly;\n if (!Utils.isNull(this._adaptedDatasource)) {\n this._databind();\n }\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n if (CustomEventUtils.isInstanceOf(evt, HierarchyChangeEvent)) {\n resolve(this.value = evt.detail);\n }\n resolve(this.value);\n });\n }\n acceptValue(val) {\n // nothing peculiar to do...\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.#shell = CustomElementUtils.findAncestorShell(this);\n this._setupItemTemplate();\n this._setupDragger();\n this._setupBalloon();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'datasource':\n case 'textProperty':\n case 'disabledProperty':\n case 'valueProperty':\n cancelAnimationFrame(this._handle);\n this._handle = requestAnimationFrame(() => {\n this._buildAdaptedDatasource();\n });\n break;\n case 'itemtemplate':\n if (!first) {\n this._setupItemTemplate();\n }\n break;\n case '_adaptedDatasource':\n case 'value':\n cancelAnimationFrame(this._handle2);\n this._handle2 = requestAnimationFrame(() => {\n this._databind();\n });\n break;\n }\n }\n disconnectedCallback() {\n this._disposeDragger();\n this._disposeBalloon();\n super.disconnectedCallback();\n }\n _buildAdaptedDatasource(ds = this.datasource) {\n this._adaptedDatasource = ds && ds.map(i => this._mapEntityToItem(i));\n }\n _mapEntityToValue(entity) {\n let value = entity, prop;\n if (prop = this.valueProperty) {\n value = entity[prop];\n }\n return value;\n }\n _mapEntityToViewValue(entity) {\n let viewValue = entity.toString(), prop;\n if (prop = this.textProperty) {\n viewValue = entity[prop];\n }\n return viewValue;\n }\n _mapEntityToItem(entity) {\n if (entity == null) {\n throw new Error('Entity cannot be null');\n }\n // databound\n let disabled = false;\n const disabledProp = this.disabledProperty;\n if (!Utils.isNullOrEmpty(disabledProp)) {\n disabled = entity[disabledProp] || false;\n }\n return { value: this._mapEntityToValue(entity), viewValue: this._mapEntityToViewValue(entity), disabled: disabled, data: entity };\n }\n _unlink(arg) {\n var binder;\n if (arg instanceof ComponentsUI.UI.PacemBinderElement) {\n binder = arg;\n }\n else {\n arg.preventDefault();\n arg.stopPropagation();\n binder = this.#unlinkingBinder;\n }\n const { parent, child } = JSON.parse(binder.dataset[BINDER_HIERARCHYDATAKEY]);\n const ds = this._adaptedDatasource, source = ds.find(i => i.value === parent), target = ds.find(i => i.value === child);\n if (!source.disabled && !target.disabled) {\n this._compileHierarchy({ source, target }, true);\n }\n }\n _buildHierarchyItemDomId(itemId) {\n return `hierarchyitem_${this.#key}_${itemId}`;\n }\n _itemCreate(evt) {\n const item = evt.detail.dom.find(i => i instanceof HTMLElement && i.classList.contains(HIERARCHYITEM_CSSCLASS)), index = evt.detail.index, hierarchyItem = evt.detail.item;\n item.id = this._buildHierarchyItemDomId(hierarchyItem.value);\n if (hierarchyItem.disabled) {\n item.setAttribute('behaviors', '{{ [#' + this._dragger2.id + '] }}');\n }\n else {\n item.setAttribute('behaviors', '{{ [#' + this._dragger.id + ', #' + this._dragger2.id + '] }}');\n }\n for (let parent of hierarchyItem.parents || []) {\n const binder = new ComponentsUI.UI.PacemBinderElement();\n binder.to = item;\n binder.toAnchor = ComponentsUI.UI.BinderAnchor.Top;\n binder.toEnd = ComponentsUI.UI.BinderEnd.Arrow;\n binder.setAttribute('from', '{{ #' + this._buildHierarchyItemDomId(parent.value) + ' }}');\n binder.fromAnchor = ComponentsUI.UI.BinderAnchor.Bottom;\n binder.cssClass = ['hierarchy-binder'];\n binder.interactive = !this.readonly && !hierarchyItem.disabled && !parent.disabled;\n binder.addEventListener(ComponentsUI.UI.BinderInteractionEventName, this._binderClickHandler, false);\n binder.dataset[BINDER_HIERARCHYDATAKEY] = JSON.stringify({ parent: parent.value, child: hierarchyItem.value });\n this.#bindings.set(hierarchyItem.value, binder);\n this.#shell.appendChild(binder);\n }\n if (!this.#dropTargets.has(item)) {\n this.#dropTargets.set(item, hierarchyItem);\n }\n }\n _itemRemove(evt) {\n const item = evt.detail.dom.find(i => i instanceof HTMLElement && i.classList.contains(HIERARCHYITEM_CSSCLASS)), hierarchyItem = evt.detail.item, bindings = this.#bindings;\n if (bindings.has(hierarchyItem.value)) {\n const binder = bindings.get(hierarchyItem.value);\n binder.removeEventListener(ComponentsUI.UI.BinderInteractionEventName, this._binderClickHandler, false);\n binder.remove();\n bindings.delete(hierarchyItem.value);\n }\n if (this.#dropTargets.has(item)) {\n this.#dropTargets.delete(item);\n }\n }\n _setupItemTemplate() {\n if (this.itemtemplate instanceof HTMLTemplateElement) {\n const frag = this.itemtemplate.cloneNode(true).content;\n const tmpl = document.createElement('template');\n const wrapper = document.createElement(P + '-panel');\n wrapper.className = HIERARCHYITEM_CSSCLASS_FULL;\n wrapper.setAttribute('css-class', HIERARCHYITEM_CSSCLASS_ATTR);\n const move = new ComponentsUI.UI.PacemIconElement();\n move.setAttribute('icon', HIERARCHYITEM_MOVE_ICON);\n move.className = HIERARCHYITEM_MOVE_CSSCLASS;\n wrapper.appendChild(move);\n const content = document.createElement('div');\n content.className = HIERARCHYITEM_CONTENT_CSSCLASS;\n content.append(frag);\n wrapper.appendChild(content);\n const link = new ComponentsUI.UI.PacemIconElement();\n link.setAttribute('icon', HIERARCHYITEM_LINK_ICON);\n link.className = HIERARCHYITEM_LINK_CSSCLASS_FULL;\n wrapper.appendChild(link);\n tmpl.content.appendChild(wrapper);\n this._template = tmpl;\n }\n else {\n this._template = this._defaultTemplate;\n }\n }\n _compileHierarchy(relation, remove = false) {\n const value = /* clone to detach any referemce with the original value, thus allowing `reset` */ Utils.clone(this.value || []);\n const newParent = relation.source.value, newChild = relation.target.value;\n const parentsProperty = this.parentsProperty || DEFAULT_PARENTSPROPERTY;\n var found = value.find(i => i[this.valueProperty] === newChild);\n if (remove) {\n if (!Utils.isNull(found)) {\n const parents = found[parentsProperty] || [], ndx = parents.indexOf(newParent);\n if (ndx >= 0) {\n parents.splice(ndx, 1);\n }\n }\n }\n else {\n if (Utils.isNull(found)) {\n found = {};\n found[this.valueProperty] = newChild;\n found[parentsProperty] = [];\n value.push(found);\n }\n found[parentsProperty].push(newParent);\n }\n // cleanup\n this._cleanupHierarchy(value);\n //\n this.changeHandler(new HierarchyChangeEvent(value));\n }\n _cleanupHierarchy(value = []) {\n const valueProperty = this.valueProperty, parentsProperty = this.parentsProperty || DEFAULT_PARENTSPROPERTY;\n const isInAncestors = (sourceId, targetId) => {\n const target = value.find(i => i[valueProperty] == targetId);\n if (Utils.isNull(target) || Utils.isNullOrEmpty(target[parentsProperty])) {\n return false;\n }\n const parents = target[parentsProperty];\n if (parents.indexOf(sourceId) >= 0) {\n return true;\n }\n return parents.some(p => isInAncestors(sourceId, p));\n };\n // bottom-up: if a parent is also an ancestor, then remove the link\n for (let v of value) {\n const parents = v[parentsProperty] || [];\n for (let j = parents.length - 1; j >= 0; j--) {\n const parent = parents[j];\n const otherParents = parents.filter(p0 => p0 !== parent);\n for (let otherParent of otherParents) {\n if (isInAncestors(parent, otherParent)) {\n parents.splice(j, 1);\n break;\n }\n }\n }\n }\n }\n _setupDragger() {\n const dragger = this._dragger;\n dragger.id = 'hierarchy_link_' + this.#key;\n dragger.handleSelector = '.' + HIERARCHYITEM_LINK_CSSCLASS;\n dragger.dropBehavior = UI.DropBehavior.None;\n dragger.spillBehavior = UI.DropTargetMissedBehavior.None;\n dragger.mode = UI.DragDataMode.Copy;\n dragger.addEventListener(UI.DragDropEventType.Drop, this._dropHandler, false);\n dragger.addEventListener(UI.DragDropEventType.Drag, this._dragHandler, false);\n dragger.addEventListener(UI.DragDropEventType.Init, this._dragInitHandler, false);\n dragger.addEventListener(UI.DragDropEventType.Start, this._dragStartHandler, false);\n dragger.addEventListener(UI.DragDropEventType.End, this._dragEndHandler, false);\n dragger.addEventListener(UI.DragDropEventType.Over, this._dragOverHandler, false);\n dragger.addEventListener(UI.DragDropEventType.Out, this._dragOutHandler, false);\n const dragger2 = this._dragger2;\n dragger2.id = 'hierarchy_move_' + this.#key;\n dragger2.mode = UI.DragDataMode.Self;\n dragger2.dropBehavior = UI.DropBehavior.None;\n dragger2.spillBehavior = UI.DropTargetMissedBehavior.None;\n dragger2.handleSelector = '.' + HIERARCHYITEM_MOVE_CSSCLASS;\n }\n _disposeDragger() {\n const dragger = this._dragger;\n if (!Utils.isNull(dragger)) {\n dragger.removeEventListener(UI.DragDropEventType.Drop, this._dropHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Drag, this._dragHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Init, this._dragInitHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Start, this._dragStartHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.End, this._dragEndHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Over, this._dragOverHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Out, this._dragOutHandler, false);\n }\n }\n _setupBalloon() {\n this._balloon = this._shellProxy.dom.find(i => i instanceof ComponentsUI.UI.PacemBalloonElement);\n window.addEventListener('mousedown', this._popoutHandler, false);\n }\n _disposeBalloon() {\n window.removeEventListener('mousedown', this._popoutHandler, false);\n }\n // #endregion\n _isInAncestors(source, target) {\n if (Utils.isNull(target) || Utils.isNullOrEmpty(target.parents)) {\n return false;\n }\n if (target.parents.indexOf(source) >= 0) {\n return true;\n }\n return target.parents.some(p => this._isInAncestors(source, p));\n }\n _isInDescendants(source, target) {\n return this._isInAncestors(target, source);\n }\n _databind() {\n // clear binders\n this._repeater.datasource = [];\n // check value property\n const valueProperty = this.valueProperty;\n if (Utils.isNullOrEmpty(valueProperty)) {\n throw new Error('Missing valueProperty.');\n }\n // merge datasource and value\n const ds = Utils.clone(this._adaptedDatasource || []), mapping = this.value || [], parentsProperty = this.parentsProperty || DEFAULT_PARENTSPROPERTY;\n for (let item of ds) {\n const found = mapping.find(i => i[valueProperty] === item.value);\n if (!Utils.isNull(found)) {\n item.parents = (found[parentsProperty] || []).map(i => ds.find(i0 => i0.value === i)).filter(i => !Utils.isNull(i));\n }\n }\n // layerize and bind to repeater\n this._databindByParents(ds);\n }\n _databindByParents(ds) {\n // naive algo:\n // find topmost then loop-find direct-only children until no more descendant remains.\n const levelMatrix = [];\n function count() {\n return levelMatrix.reduce((previousLength, item) => previousLength + item.length, 0);\n }\n do {\n if (Utils.isNullOrEmpty(levelMatrix)) {\n // topmost\n const topmost = ds.filter((i) => Utils.isNullOrEmpty(i.parents));\n levelMatrix.push(topmost);\n }\n else {\n // other levels\n const upperLevels = Array.prototype.concat.apply([], levelMatrix), upperLevel = levelMatrix[levelMatrix.length - 1];\n const level = ds.filter((i) => {\n if (Utils.isNullOrEmpty(i.parents)) {\n return false;\n }\n return i.parents.every(p => upperLevels.indexOf(p) >= 0) && i.parents.some(p => upperLevel.indexOf(p) >= 0);\n });\n levelMatrix.push(level);\n }\n } while (count() < ds.length);\n // databind\n this._repeater.datasource = levelMatrix;\n }\n};\n__decorate([\n ViewChild('template[default]')\n], PacemHierarchyElement.prototype, \"_defaultTemplate\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemHierarchyElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(P + '-drag-drop')\n], PacemHierarchyElement.prototype, \"_dragger\", void 0);\n__decorate([\n ViewChild(P + '-drag-drop[move]')\n], PacemHierarchyElement.prototype, \"_dragger2\", void 0);\n__decorate([\n ViewChild(P + '-shell-proxy')\n], PacemHierarchyElement.prototype, \"_shellProxy\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemHierarchyElement.prototype, \"datasource\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHierarchyElement.prototype, \"valueProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHierarchyElement.prototype, \"textProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHierarchyElement.prototype, \"disabledProperty\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemHierarchyElement.prototype, \"unlinkCaption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemHierarchyElement.prototype, \"_adaptedDatasource\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemHierarchyElement.prototype, \"itemtemplate\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemHierarchyElement.prototype, \"_template\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHierarchyElement.prototype, \"parentsProperty\", void 0);\nPacemHierarchyElement = __decorate([\n CustomElement({\n tagName: P + '-hierarchy', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater>\r\n <template>\r\n <${P}-repeater on-${Components.RepeaterItemCreateEventName}=\":host._itemCreate($event)\" on-${Components.RepeaterItemRemoveEventName}=\":host._itemRemove($event)\" datasource=\"{{ ^item }}\">\r\n <div class=\"hierarchy-level\">\r\n <${P}-template-proxy target=\"{{ :host._template }}\"></${P}-template-proxy>\r\n </div>\r\n </${P}-repeater>\r\n </template>\r\n </div>\r\n</${P}-repeater><${P}-content></${P}-content>\r\n<${P}-drag-drop></${P}-drag-drop>\r\n<${P}-drag-drop move></${P}-drag-drop>\r\n<template default>\r\n <${P}-panel class=\"${HIERARCHYITEM_CSSCLASS_FULL} item-default\" css-class=\"${HIERARCHYITEM_CSSCLASS_ATTR}\">\r\n <${P}-icon class=\"${HIERARCHYITEM_MOVE_CSSCLASS}\" icon=\"${HIERARCHYITEM_MOVE_ICON}\"></${P}-icon>\r\n <pacem-span class=\"${HIERARCHYITEM_CONTENT_CSSCLASS}\" content=\"{{ ^item.viewValue }}\"></${P}-span>\r\n <${P}-icon class=\"${HIERARCHYITEM_LINK_CSSCLASS_FULL}\" icon=\"${HIERARCHYITEM_LINK_ICON}\"></${P}-icon>\r\n </${P}-panel>\r\n</template>\r\n<${P}-shell-proxy>\r\n <${P}-balloon options=\"{{ { behavior: ComponentsUI.UI.BalloonBehavior.Inert } }}\">\r\n <${P}-button icon-glyph=\"link_off\" class=\"${PCSS}-margin margin-0 button-flat display-flex flex-middle icon-rotate rotate-135\"\r\n on-click=\":host._unlink($event)\"\r\n on-mousedown=\"$event.stopPropagation()\"\r\n on-mouseup=\"::_balloon.popout()\"><${P}-text class=\"${PCSS}-margin margin-left-1\" text=\"{{ :host.unlinkCaption }}\"></${P}-text></${P}-button>\r\n </${P}-balloon>\r\n</${P}-shell-proxy>`\n })\n], PacemHierarchyElement);\nexport { PacemHierarchyElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { PropertyConverters, Utils, Watch, CustomElementUtils } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\n/** When a {@link PacemBaseInputElement} propagates its native input's value to the `value` property: on every keystroke (`Input`), or only once the field loses focus (`Blur`). */\nexport var ChangePolicy;\n(function (ChangePolicy) {\n ChangePolicy[\"Input\"] = \"input\";\n ChangePolicy[\"Blur\"] = \"blur\";\n})(ChangePolicy || (ChangePolicy = {}));\n/** Attached-property key used to mark a native `<input>`/`<textarea>` as already wired up, so re-registration doesn't double-attach listeners (see {@link PacemBaseInputElement#registerInputFields}). */\nconst INPUT_FIELD_ACTIVATED_PROP = 'pacem:scaffolding:input_field';\n/**\n * Base class for fields backed by one or more native `<input>`/`<textarea>` elements ({@link inputField}):\n * wires `input`/`focus` listeners onto them, applies `changePolicy`/`debounce` to decide when the native\n * value is read back into {@link PacemModelElement#value} (via {@link getValue}), and optionally\n * auto-selects the field's content on focus.\n *\n * Extended by {@link PacemOrdinalInputElement} (numeric/date-like inputs) and\n * {@link PacemTextualInputElement} (text-like inputs); further specialized by the concrete `input-*.ts`\n * elements in this package (e.g. text, number, date, password, ...).\n */\nexport class PacemBaseInputElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n /** Gets or sets how long to wait, after the native input changes, before propagating the value: `false` (default, propagate on the next animation frame), `true` (propagate via `requestAnimationFrame`), or a number of milliseconds to debounce by. */\n this.debounce = false;\n /** Gets or sets when the native input's value gets read back into {@link PacemModelElement#value}: on every `input` event, or only on `blur`. Defaults to {@link ChangePolicy.Input}. */\n this.changePolicy = ChangePolicy.Input;\n this._focusHandler = (evt) => {\n if (!this.autoselect) {\n return;\n }\n let field = /* first field (usually the only one) */ this.inputField;\n for (let f of this.inputFields ?? []) {\n if (f === document.activeElement) {\n field = f;\n break;\n }\n }\n field?.select();\n };\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'placeholder':\n for (let inputField of this.inputFields ?? []) {\n inputField.setAttribute(name, val);\n }\n break;\n }\n }\n acceptValue(val) {\n if (this.inputField && val !== this.inputField.value) {\n this.inputField.value = Utils.isNullOrEmpty(val) ? '' : val;\n }\n }\n /** @readonly Gets the first (usually only) native input element among {@link PacemBaseElement#inputFields}. */\n get inputField() {\n return this.inputFields[0];\n }\n onChange(evt) {\n return new Promise((resolve) => {\n if (this.readonly) {\n resolve(this.value);\n }\n else if (evt.type === 'input' && this.changePolicy === ChangePolicy.Blur) {\n resolve(this.value);\n }\n else {\n //\n const fn = () => {\n const val = this.getValue(this.inputField.value);\n if (val !== this.value) {\n this.value = val;\n // /* DO NOT MESS THE change EVENT DISPATCH */ this.dispatchEvent(new Event('change'));\n }\n resolve(val);\n };\n const d = this.debounce;\n if (typeof d === 'number' && d > 0) {\n clearTimeout(this._handle);\n this._handle = setTimeout(fn, d);\n }\n else if (d === true) {\n cancelAnimationFrame(this._handle);\n this._handle = requestAnimationFrame(fn);\n }\n else\n requestAnimationFrame(fn);\n }\n });\n }\n ;\n registerInputFields(inputFields = this.inputFields) {\n super.registerInputFields(inputFields);\n if (!Utils.isNull(inputFields) && !Utils.isArray(inputFields)) {\n inputFields = [inputFields];\n }\n for (let field of inputFields ?? []) {\n if (!(field instanceof HTMLInputElement) && !(field instanceof HTMLTextAreaElement)) {\n continue;\n }\n if (CustomElementUtils.getAttachedPropertyValue(field, INPUT_FIELD_ACTIVATED_PROP, 'off') === 'on') {\n continue;\n }\n CustomElementUtils.setAttachedPropertyValue(field, INPUT_FIELD_ACTIVATED_PROP, 'on');\n if ('size' in field) {\n // HTMLInputElement only\n field.size = 1;\n }\n field.autocomplete = 'off';\n field.addEventListener('input', this.changeHandler, false);\n field.addEventListener('focus', this._focusHandler, false);\n }\n }\n unregisterInputFields(inputFields = this.inputFields) {\n super.unregisterInputFields(inputFields);\n if (!Utils.isNull(inputFields) && !Utils.isArray(inputFields)) {\n inputFields = [inputFields];\n }\n for (let field of inputFields ?? []) {\n if (CustomElementUtils.getAttachedPropertyValue(field, INPUT_FIELD_ACTIVATED_PROP) !== 'on') {\n continue;\n }\n CustomElementUtils.deleteAttachedPropertyValue(field, INPUT_FIELD_ACTIVATED_PROP);\n field.removeEventListener('input', this.changeHandler, false);\n field.removeEventListener('focus', this._focusHandler, false);\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.registerInputFields();\n }\n disconnectedCallback() {\n this.unregisterInputFields();\n super.disconnectedCallback();\n }\n}\n__decorate([\n Watch({\n emit: false, converter: {\n convert: (attr) => {\n switch (attr) {\n case 'true':\n return true;\n case 'false':\n return false;\n default:\n return parseFloat(attr);\n }\n },\n convertBack: (prop) => prop.toString()\n }\n })\n], PacemBaseInputElement.prototype, \"debounce\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBaseInputElement.prototype, \"changePolicy\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemBaseInputElement.prototype, \"autoselect\", void 0);\n/**\n * Base class for numeric/ordinal native inputs (e.g. `number`, `range`, `date`-like fields): adds\n * `min`/`max`/`step`, mirrored onto the native input's own attributes, and parses its `value` attribute as\n * a float.\n */\nexport class PacemOrdinalInputElement extends PacemBaseInputElement {\n convertValueAttributeToProperty(attr) {\n return parseFloat(attr);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'min':\n case 'max':\n case 'step':\n val != null ? this.inputField.setAttribute(name, val) : this.inputField.removeAttribute(name);\n break;\n }\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemOrdinalInputElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemOrdinalInputElement.prototype, \"max\", void 0);\n__decorate([\n Watch({\n converter: {\n convert: (attr) => {\n const num = parseFloat(attr);\n return isNaN(num) ? 'any' : num;\n },\n convertBack: (val) => val.toString()\n }\n })\n], PacemOrdinalInputElement.prototype, \"step\", void 0);\n/**\n * Base class for text-like native inputs (e.g. `text`, `password`, `textarea` fields): adds\n * `pattern`/`minlength`/`maxlength`, mirrored onto the native input's own attributes, and treats an empty\n * string `value` as `null`.\n */\nexport class PacemTextualInputElement extends PacemBaseInputElement {\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'pattern':\n case 'maxlength':\n case 'minlength':\n val != null ? this.inputField.setAttribute(name, val) : this.inputField.removeAttribute(name);\n break;\n }\n }\n getValue(val) {\n return Utils.isNullOrEmpty(val) ? null : val;\n }\n getViewValue(val) {\n return val;\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemTextualInputElement.prototype, \"pattern\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemTextualInputElement.prototype, \"minlength\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemTextualInputElement.prototype, \"maxlength\", void 0);\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Arrays } from '@pacem/pacem-foundation';\nimport { Components, PropertyConverters, Utils, P, PCSS, CustomElement, Watch, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemBaseInputElement } from './input';\n//namespace Pacem.Components.Scaffolding {\n/** {@link PacemBaseInputElement} rendering one single-character `<input>` per position (e.g. OTP/verification codes), joining them into a single string `value`. */\nlet PacemCharsInputElement = class PacemCharsInputElement extends PacemBaseInputElement {\n constructor() {\n super();\n /** Gets or sets how many single-character inputs to render. */\n this.charCount = 6;\n /** Gets or sets how the entered characters are transformed/displayed: as-is, forced to a case, or masked like a password. */\n this.inputTransform = 'none';\n this._itemCreateHandler = (e) => {\n const { dom, index } = e.detail;\n const inputField = dom.find(i => i instanceof HTMLInputElement);\n this.#inputs[index] = inputField;\n this.registerInputFields(inputField);\n };\n this.#inputs = [];\n }\n redactViewValue(value = this.value) {\n this.viewValue = this.getViewValue(value);\n }\n getValue(_) {\n const val = this.#inputs.reduce((acc, input) => acc + (Utils.isNullOrEmpty(input.value) ? ' ' : input.value), '');\n switch (this.inputTransform) {\n case 'lowercase':\n return val.toLowerCase();\n case 'uppercase':\n return val.toUpperCase();\n default:\n return val;\n }\n }\n getViewValue(value) {\n const size = this.charCount;\n return this.inputTransform == 'password' ? Arrays.range(size).map(i => '*').join('') : value;\n }\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n toggleReadonlyView(readonly = this.readonly) {\n this._span.hidden = !readonly;\n this._chars.hidden = readonly;\n }\n /** Override base behavior. */\n focus() {\n // check if one of the fields has already focus, if so, do not steal it.\n for (let inputField of this.inputFields ?? []) {\n if (inputField === document.activeElement) {\n if (this.autofocus) {\n inputField.select();\n }\n return;\n }\n }\n super.focus();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (first) {\n return;\n }\n switch (name) {\n case 'charCount':\n this._databind();\n this.redactViewValue();\n break;\n case 'inputTransform':\n this.registerInputFields();\n this.value = this.getValue(this.value);\n break;\n }\n }\n /**\n * Override to apply input transform to all input fields.\n * @param fields\n */\n registerInputFields(fields = this.inputFields) {\n super.registerInputFields(fields);\n if (!Utils.isNull(fields) && !Utils.isArray(fields)) {\n fields = [fields];\n }\n const inputs = this.#inputs;\n for (let inputField of fields ?? []) {\n const ndx = inputs.indexOf(inputField);\n Utils.toggleClass(inputField, 'last-char', ndx === (this.charCount - 1));\n Utils.toggleClass(inputField, 'first-char', ndx === 0);\n if (Utils.isNullOrEmpty(inputField.id)) {\n inputField.setAttribute('id', 'code_' + ndx + '_' + Utils.uniqueCode());\n }\n inputField.value = this.value?.charAt(ndx) || '';\n if (this.inputTransform === 'password') {\n inputField.setAttribute('type', 'password');\n }\n else {\n inputField.setAttribute('type', 'text');\n }\n }\n }\n acceptValue(val) {\n // shadow super method\n // update ui\n const inputs = this.#inputs;\n if (typeof val === 'string') {\n let counter = 0;\n const limit = Math.min(val.length, inputs.length);\n for (let j = 0; j < limit; j++) {\n inputs[j].value = val.charAt(j);\n counter++;\n }\n for (let j = counter; j < inputs.length; j++) {\n inputs[j].value = '';\n }\n }\n }\n onChange(evt) {\n return super.onChange(evt).then(v => {\n const inputs = this.#inputs, index = inputs.indexOf(evt.target);\n if (index >= 0 && index < (inputs.length - 1)) {\n const input = inputs[index];\n if (Utils.isNullOrEmpty(input.value?.trim())) {\n input.value = '';\n }\n else {\n const next = index + 1;\n inputs[next].focus();\n }\n }\n return v;\n });\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (Utils.isNull(this.autoselect)) {\n // defaults autoselect to true\n this.autoselect = true;\n }\n this._chars.addEventListener(Components.RepeaterItemCreateEventName, this._itemCreateHandler, false);\n this._databind();\n }\n disconnectedCallback() {\n const repeater = this._chars;\n if (!Utils.isNull(repeater)) {\n repeater.removeEventListener(Components.RepeaterItemCreateEventName, this._itemCreateHandler);\n }\n super.disconnectedCallback();\n }\n _databind() {\n const size = this.charCount, inputs = this.#inputs;\n if (inputs.length > size) {\n super.unregisterInputFields(inputs.splice(size));\n }\n this._chars.datasource = Arrays.range(size);\n }\n #inputs;\n get inputFields() {\n return this.#inputs;\n }\n};\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemCharsInputElement.prototype, \"charCount\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemCharsInputElement.prototype, \"inputTransform\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemCharsInputElement.prototype, \"_chars\", void 0);\n__decorate([\n ViewChild('span.' + PCSS + '-readonly')\n], PacemCharsInputElement.prototype, \"_span\", void 0);\nPacemCharsInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-chars',\n template: `<${P}-repeater class=\"display-flex flex-nowrap\">\r\n <template><input type=\"text\" class=\"${PCSS}-input flex-auto\" maxlength=\"1\" /></template>\r\n </${P}-repeater><span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemCharsInputElement);\nexport { PacemCharsInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Colors } from '@pacem/pacem-foundation';\nimport { Utils, P, PCSS, CustomElement, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\n/** {@link PacemBaseElement}-based field pairing a native color picker with an alpha (0-100) slider, producing a hex/rgba color string `value`. */\nlet PacemColorInputElement = class PacemColorInputElement extends PacemBaseElement {\n acceptValue(val) {\n const parsed = this._parseValue(val);\n if (parsed != null) {\n this._tint.value = parsed.tint;\n this._alpha.value = parsed.alpha.toString();\n }\n }\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n onChange(evt) {\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/669685/ (bug open since Aug 2014!)\n const alpha = this._alpha.valueAsNumber || parseInt(this._alpha.value);\n const tint = this._tint.value;\n const value = this.value = this._getValue(tint, alpha);\n return Utils.fromResult(value);\n }\n constructor() {\n super();\n }\n toggleReadonlyView(readonly) {\n this._wrapper.hidden = readonly;\n this._span.hidden = !readonly;\n }\n _getValue(tint, alpha) {\n // #rrggbb\n if (isNaN(alpha) || alpha === 100)\n return tint;\n const rgb = Colors.parse(tint);\n rgb.a = alpha * .01;\n return Colors.stringify(rgb);\n }\n _parseValue(val) {\n const rgb = Colors.parse(val);\n if (Utils.isNullOrEmpty(rgb)) {\n return null;\n }\n return { tint: Colors.stringify({ r: rgb.r, g: rgb.g, b: rgb.b }), alpha: rgb.a * 100 };\n }\n getViewValue(value) {\n return value;\n }\n get inputFields() {\n return [this._tint, this._alpha].filter(e => !Utils.isNull(e));\n }\n};\n__decorate([\n ViewChild('input[type=color]')\n], PacemColorInputElement.prototype, \"_tint\", void 0);\n__decorate([\n ViewChild('input[type=number]')\n], PacemColorInputElement.prototype, \"_alpha\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-viewfinder`)\n], PacemColorInputElement.prototype, \"_wrapper\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-readonly`)\n], PacemColorInputElement.prototype, \"_span\", void 0);\nPacemColorInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-color', template: `<div class=\"${PCSS}-viewfinder\">\r\n<${P}-panel class=\"${PCSS}-input-color\" css=\"{{ { \\'background-color\\': :host.viewValue } }}\"><input type=\"color\" class=\"${PCSS}-input\" /></${P}-panel>\r\n<input class=\"${PCSS}-input\" type=\"number\" min=\"0\" max=\"100\" step=\"1\" value=\"100\" />\r\n</div>\r\n<${P}-span class=\"${PCSS}-readonly\" css=\"{{ { \\'background-color\\': :host.viewValue } }}\"></${P}-span>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemColorInputElement);\nexport { PacemColorInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Utils, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\n/** {@link PacemTextualInputElement} for an `<input type=\"email\">`, whose read-only view renders as a `mailto:` link. */\nlet PacemEmailInputElement = class PacemEmailInputElement extends PacemTextualInputElement {\n toggleReadonlyView(readonly) {\n const input = this._input, anchor = this._anchor;\n if (!Utils.isNull(input))\n input.hidden = readonly;\n if (!Utils.isNull(anchor))\n anchor.hidden = !readonly;\n }\n get inputFields() {\n return Utils.isNull(this._input)\n ? []\n : [this._input];\n }\n};\n__decorate([\n ViewChild('input[type=email]')\n], PacemEmailInputElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(P + '-a')\n], PacemEmailInputElement.prototype, \"_anchor\", void 0);\nPacemEmailInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-email',\n template: `<input type=\"email\" class=\"${PCSS}-input ${PCSS}-viewfinder\" />${CHAR_COUNTER_CHILD}<${P}-a class=\"${PCSS}-readonly\" disabled=\"{{ $pacem.isNullOrEmpty(:host.value) }}\" href=\"{{ \\'mailto:\\'+ :host.value }}\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></${P}-a>`, shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemEmailInputElement);\nexport { PacemEmailInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, CustomTypedEvent, CustomEventUtils, PropertyConverters, Animations, Utils, stopPropagationHandler, avoidHandler } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n/** Name of the {@link FileUploadEvent} dispatched by {@link PacemUploadElement} while/after a chunked upload progresses. */\nexport const FileUploadEventName = 'fileupload';\n/** Name of the {@link FileChangeEvent} dispatched by {@link PacemUploadElement} whenever the selected file(s)/directory change. */\nexport const FileChangeEventName = 'filechange';\nclass StoragePickEvent extends CustomTypedEvent {\n constructor(file) {\n super('pick', file);\n }\n}\n/** Dispatched by {@link PacemUploadElement} to report chunked-upload progress/completion. */\nexport class FileUploadEvent extends CustomTypedEvent {\n constructor(file) {\n super(FileUploadEventName, file);\n }\n}\n/** Dispatched by {@link PacemUploadElement} whenever the user picks (or clears) file(s)/a directory. */\nexport class FileChangeEvent extends CustomTypedEvent {\n constructor(file) {\n super(FileChangeEventName, file);\n }\n}\nconst ERROR_BINDING = '!$pacem.isNullOrEmpty(:host.value) && :host.invalidFile && $pacem.isNullOrEmpty(:host.url)';\nasync function computeDirStats(dir, stats = { files: 0, directories: 0, size: 0 }) {\n for await (let [_, entry] of dir.entries()) {\n if (entry.kind === 'file') {\n stats.files++;\n const file = await entry.getFile();\n stats.size += file.size;\n }\n else {\n stats.directories++;\n await computeDirStats(entry, stats);\n }\n }\n return stats;\n}\nasync function computeFileStats(files) {\n const stats = { files: 0, directories: 0, size: 0 };\n for (let f of files) {\n const file = await f.getFile();\n stats.files++;\n stats.size += file.size;\n }\n return stats;\n}\n/**\n * PacemUploader Component: {@link PacemBaseElement}-based field to pick and (optionally chunk-)upload file(s)/a directory to {@link url},\n * or defer to the File System Access API pickers depending on {@link selectMode}.\n */\nlet PacemUploadElement = class PacemUploadElement extends PacemBaseElement {\n constructor(_tweener = new Animations.TweenService()) {\n super();\n this._tweener = _tweener;\n /** Gets or sets the caption of the \"undo\" button, shown while an upload with {@link url} set is in progress. */\n this.undoCaption = 'undo';\n /** Gets or sets the caption of the \"retry\" button, shown after a {@link failed} upload. */\n this.retryCaption = 'retry';\n /** Gets or sets the caption of the \"clear\" button. */\n this.clearCaption = 'clear';\n /** @readonly Gets whether an upload is currently in progress. */\n this.uploading = false;\n /** @readonly Gets the total size (in bytes) of the file(s) currently being uploaded. */\n this.size = 0;\n /** @readonly Gets the current upload progress, from 0 to 100. */\n this.percentage = .0;\n /** @readonly Gets whether the current upload has completed. */\n this.complete = false;\n /** @readonly Gets whether the current upload chunk request failed (enabling the retry button). */\n this.failed = false;\n /** @readonly Gets whether the selected file failed {@link pattern}/{@link maxSize} validation. */\n this.invalidFile = false;\n this._fields = {\n 'parallelism': 3,\n 'uid': '',\n 'ongoing': 0,\n 'enqueuer': null,\n 'blob': null,\n 'retryFrom': 0,\n 'chunkSize': 1024 * 128,\n 'undone': false\n };\n }\n convertValueAttributeToProperty(attr) {\n return attr; // better assumptions anyone?\n }\n acceptValue(val) {\n this.percentage = 0;\n this.uploading = false;\n this._fileupload.value = '';\n }\n _getMimeIcon(file = this.value, uploading = this.uploading, mode = this.selectMode ?? 'file') {\n if (uploading) {\n return 'sync';\n }\n const hasValue = !Utils.isNullOrEmpty(file);\n switch (mode) {\n case 'directory':\n case 'directory-picker':\n return hasValue ? 'folder' : 'drive_folder_upload';\n case 'multiple':\n case 'multiple-picker':\n return hasValue ? 'files' : 'upload_file';\n }\n if (Utils.isNullOrEmpty(file)) {\n return 'upload_file';\n }\n var filename = file;\n if (typeof file === 'object') {\n filename = file.name;\n }\n const extPattern = /\\.([\\w]+)(\\s|$)/;\n const match = extPattern.exec(filename);\n if (match && match.length) {\n switch (match[1].toLowerCase()) {\n case 'pdf':\n return 'picture_as_pdf';\n //case 'txt':\n //case 'doc':\n //case 'docx':\n // return '<i class=\"pacem-icon\">collection_text</i>';\n case 'jpg':\n case 'jpeg':\n case 'gif':\n case 'png':\n return 'filter';\n }\n }\n return 'filter_none';\n }\n /** @readonly Gets the raw blob currently being (or last) uploaded. */\n get blob() {\n return this._fields.blob;\n }\n get inputFields() {\n return Utils.isNull(this._fileupload)\n ? []\n : [this._fileupload];\n }\n getViewValue(val) {\n const value = this._localValue || val;\n if (Utils.isNullOrEmpty(value)) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n let caption = 'name' in value ? value.name : '';\n if (Utils.isArray(value)) {\n caption = value.map(i => i.name).join(', ');\n }\n const stats = this._stats;\n if (Utils.isNullOrEmpty(stats)) {\n return caption;\n }\n const { size, files } = stats;\n return `${caption}\\n(${files} file${files === 1 ? '' : 's'}, ${Utils.core.size(size)})`;\n }\n toggleReadonlyView(readonly) {\n this._setupInputElement(readonly);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setupInputElement();\n this._fileupload.addEventListener('click', stopPropagationHandler, false);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'selectMode':\n this._setupInputElement();\n }\n }\n }\n disconnectedCallback() {\n if (this._fileupload) {\n this._fileupload.removeEventListener('click', stopPropagationHandler, false);\n }\n super.disconnectedCallback();\n }\n _setupInputElement(readonly = this.readonly, mode = this.selectMode ?? 'file') {\n const input = this._fileupload;\n input.removeAttribute('webkitdirectory');\n input.removeAttribute('multiple');\n input.hidden = readonly;\n switch (mode) {\n case 'directory':\n input.setAttribute('webkitdirectory', 'true');\n break;\n case 'multiple':\n input.setAttribute('multiple', 'true');\n break;\n case 'directory-picker':\n case 'file-picker':\n case 'multiple-picker':\n input.hidden = true;\n break;\n }\n }\n /**\n * Triggered from the component's template.\n */\n _dispatchDownload(evt) {\n avoidHandler(evt);\n const value = /* download the file being currently precessed, if available */ this._localValue || this.value, dispatch = (name) => {\n this.dispatchEvent(new CustomEvent('download', { detail: name, bubbles: true, cancelable: false }));\n };\n if (!Utils.isNullOrEmpty(value)) {\n if (typeof value === 'string') {\n // dispatch outside if url is provided\n dispatch(value);\n }\n else {\n if ('content' in value && !Utils.isNullOrEmpty(value.content)) {\n // download right-away the content when provided\n Utils.download(Utils.dataURLToBlob('data:application/download;base64,' + value.content), value.name, value.type);\n }\n else if ('name' in value) {\n if ('kind' in value) {\n if (value.kind === 'file') {\n value.getFile().then(file => {\n Utils.download(file, file.name, file.type);\n });\n }\n else {\n dispatch(value.name);\n }\n }\n else {\n // dispatch outside if content is empty\n dispatch(value.name);\n }\n }\n }\n }\n }\n reset() {\n super.reset();\n this._localValue = null;\n this.invalidFile = false;\n }\n _validateAll() {\n const stats = this._stats;\n const size = this.maxSize;\n if (size > 0 && size < stats.size) {\n this.invalidFile = true;\n return false;\n }\n // all-righty then\n this.invalidFile = false;\n return true;\n }\n _validateSingleFile(file = this._fileupload.files[0], filename) {\n if (file instanceof File) {\n filename = file.name;\n }\n filename = filename.substring(filename.lastIndexOf('\\\\') + 1);\n // max size exceeded\n const size = this.maxSize;\n if (size > 0 && size < file.size) {\n this.invalidFile = true;\n return false;\n }\n // pattern unmatched\n const pattern = this.pattern;\n if (pattern && !(new RegExp(pattern, 'i').test(filename))) {\n this.invalidFile = true;\n return false;\n }\n // all-righty then\n this.invalidFile = false;\n return true;\n }\n upload(file, filename, state) {\n if (this._validateSingleFile(file, filename)) {\n return this._upload(file, filename, state);\n }\n }\n async _upload(file, filename, state) {\n var uploader = this, fields = uploader._fields;\n if (!file)\n return;\n if (!filename && file instanceof File) {\n filename = file.name;\n }\n uploader.failed = false;\n fields.undone = false;\n fields.ongoing = 0;\n const blob = file, size = uploader.size = blob.size;\n filename = filename.substring(filename.lastIndexOf('\\\\') + 1);\n uploader.percentage = .0;\n uploader.complete = false;\n //\n var request = {\n filename, length: size, action: \"start\", state, type: file.type\n };\n //\n uploader.uploading = true;\n try {\n var r = await uploader._fetch(request);\n if (r.ok) {\n var json = await r.json();\n fields.retryFrom = 0;\n fields.blob = blob;\n fields.uid = json.uid;\n uploader._manage();\n }\n else {\n uploader.uploading = false;\n }\n return r;\n }\n catch (e) {\n uploader.uploading = false;\n }\n finally {\n }\n }\n async _blobToBase64(blob) {\n const result = await Utils.blobToDataURL(blob);\n return result.substring(result.indexOf('base64,') + 7);\n }\n async _doUpload(blob, skip) {\n var uploader = this, fields = uploader._fields;\n fields.ongoing++;\n //\n const chunk = await this._blobToBase64(blob);\n var request = {\n chunk: chunk,\n uid: fields.uid, position: skip,\n action: \"do\"\n };\n try {\n const r = await uploader._fetch(request);\n if (r.ok) {\n fields.ongoing--;\n if (!!fields.undone)\n return;\n const json = await r.json();\n const result = json;\n // parallelism > 1 may cause non-ordered responses\n if (result.percentage > this.percentage) {\n await uploader._tweenPercentage(Math.round(Math.max(1, result.percentage)), 200);\n }\n if (uploader.complete != result.complete) {\n uploader.complete = result.complete;\n if (uploader.complete === true) {\n uploader.uploading = false;\n uploader.changeHandler(new FileUploadEvent(result));\n }\n }\n }\n else {\n // error occurred\n fields.retryFrom = skip;\n uploader.failed = true;\n uploader.uploading = false;\n }\n }\n catch (_) {\n // crash\n fields.retryFrom = skip;\n uploader.failed = true;\n uploader.uploading = false;\n }\n }\n _manage() {\n const fields = this._fields, size = this.size, blob = fields.blob, chunkSize = this.chunkSize || fields.chunkSize;\n var start = fields.retryFrom;\n var end = start + chunkSize;\n //\n fields.enqueuer = setInterval(() => {\n if (start < size && !this.failed) {\n const parallelism = this.parallelism || fields.parallelism;\n if (fields.ongoing >= parallelism)\n return;\n this._doUpload(blob.slice(start, end), start);\n start = end;\n end = start + chunkSize;\n }\n else {\n var input = this._fileupload;\n input.value = '';\n window.clearInterval(fields.enqueuer);\n }\n }, 100);\n }\n async _buildLocalValue(file, filename = file.name, blob = file) {\n return this._localValue = {\n name: filename,\n size: blob.size,\n type: file.type,\n lastModified: Utils.parseDate(file.lastModified).toISOString(),\n content: await this._blobToBase64(blob)\n };\n }\n _canPick(w) {\n return \"showDirectoryPicker\" in w &&\n (() => {\n try {\n return w.self === w.top;\n }\n catch {\n return false;\n }\n })();\n }\n _tryPickDirectory() {\n if (!this._canPick(window)) {\n return;\n }\n window.showDirectoryPicker({ mode: 'read' }).then(directory => {\n this.changeHandler(new StoragePickEvent(directory));\n });\n }\n _tryPickFiles(multiple = this.selectMode === 'multiple-picker', pattern = this.pattern) {\n if (!this._canPick(window)) {\n return;\n }\n window.showOpenFilePicker({ multiple }).then(files => {\n this.changeHandler(new StoragePickEvent(files));\n });\n }\n /**\n * Called from the template.\n * @param evt\n */\n _clickHandler(evt) {\n avoidHandler(evt);\n if (this.readonly) {\n return;\n }\n switch (this.selectMode) {\n case 'directory-picker':\n this._tryPickDirectory();\n break;\n case 'file-picker':\n case 'multiple-picker':\n this._tryPickFiles();\n break;\n }\n }\n async _mimicCompute() {\n // mimic upload\n this.uploading = true; // <- triggers anim\n if (!Utils.isNullOrEmpty(this.value)) {\n this.percentage = 0;\n await Utils.waitForAnimationEnd(this._tuner);\n }\n else {\n await Utils.idle(250);\n }\n await this._tweener.run(0, 100, 500, 0, Animations.Easings.sineInOut, (t, v) => {\n this.percentage = v;\n });\n // reset pct\n this.percentage = .0;\n this.uploading = false;\n }\n onChange(evt) {\n return new Promise(async (resolve, reject) => {\n if (CustomEventUtils.isInstanceOf(evt, FileUploadEvent)) {\n // result of an upload?\n const file = this.value = evt.detail.filename;\n this.dispatchEvent(evt);\n resolve(file);\n }\n else if (CustomEventUtils.isInstanceOf(evt, StoragePickEvent)) {\n // FileSystem API?\n let val = evt.detail;\n let directory, file, files;\n switch (this.selectMode) {\n case 'directory-picker':\n directory = val;\n this._stats = await computeDirStats(directory);\n break;\n case 'multiple-picker':\n case 'file-picker':\n files = val;\n if (files.length === 1) {\n val = files[0];\n }\n this._stats = await computeFileStats(files);\n break;\n default:\n // shouldn't be here\n this._stats = { directories: 0, files: 0, size: 0 };\n break;\n }\n resolve(this.value = this._localValue = val);\n const valid = this._validateAll();\n this.dispatchEvent(new FileChangeEvent({ directory, file, files, valid }));\n }\n else {\n // HTMLInputElement change event\n let input = this._fileupload;\n if (input.files.length === 0) {\n // clear\n this._stats = { directories: 0, files: 0, size: 0 };\n resolve(this.value = null);\n }\n else {\n const files = input.files.length;\n this._stats = { directories: 0, files, size: Array.from(input.files).reduce((acc, file, _) => acc += file.size, 0) };\n if (files > 1) {\n // directory or multiple files\n const selectedFiles = Array.from(input.files);\n resolve(this.value = this._localValue = selectedFiles);\n const valid = this._validateAll();\n this.dispatchEvent(new FileChangeEvent({ files: selectedFiles, valid }));\n }\n else {\n const file = input.files[0], filename = file.name;\n let blob = file;\n // validate file\n if (!this._validateSingleFile(file) && !Utils.isNullOrEmpty(this.url)) {\n // do not start uploads with an invalid file\n resolve(this.value = await this._buildLocalValue(file));\n }\n else {\n if (/\\.(jpe?g|png)$/i.test(filename) && this.maxImageWidth > 0 && this.maxImageHeight > 0) {\n blob = await Utils.Images.resize(blob, this.maxImageWidth, this.maxImageHeight, { quality: .8 });\n }\n await this._buildLocalValue(file, filename, blob);\n if (Utils.isNullOrEmpty(this.url)) {\n // mimic upload\n await this._mimicCompute();\n // no direct upload? set the value to the very File\n resolve(this.value = this._localValue);\n }\n else {\n // upload, then wait for resulting filename (value will be the filename string) \n this._upload(blob, input.value);\n resolve(this.value);\n }\n }\n // dispatch filechange\n this.dispatchEvent(new FileChangeEvent({ valid: !this.invalidFile, file }));\n }\n }\n }\n });\n }\n _fetch(request) {\n return fetch(this.url, {\n method: 'POST', credentials: this.fetchCredentials, headers: Utils.extend({ 'Accept': 'application/json', 'Content-Type': 'application/json' }, this.fetchHeaders || {}), body: JSON.stringify(request)\n });\n }\n async _undo(e) {\n e.preventDefault();\n e.stopPropagation();\n var Uploader = this, fields = Uploader._fields, input = Uploader._fileupload;\n clearInterval(fields.enqueuer);\n var request = {\n action: \"undo\", uid: fields.uid\n };\n try {\n var r = await Uploader._fetch(request);\n if (r.ok) {\n fields.undone = true;\n Uploader.size = 0;\n Uploader._tweenPercentage(.0, 300);\n }\n return r;\n }\n catch (e) {\n }\n finally {\n // This input element accepts a filename, which may only be programmatically set to the empty string(!)\n input.value = '';\n Uploader.uploading = false;\n return r;\n }\n }\n _tweenPercentage(pct, duration = 500) {\n const from = this.percentage;\n return this._tweener.run(from, pct, duration, 0, Animations.Easings.sineInOut, (t, v) => {\n this.percentage = v;\n });\n }\n _retry(e) {\n e.preventDefault();\n e.stopPropagation();\n this.failed = false;\n this._manage();\n }\n _clear(e) {\n e.preventDefault();\n e.stopPropagation();\n this.invalidFile = false;\n const input = this.inputFields[0];\n // https://stackoverflow.com/a/35323290\n input.value = '';\n if (!/safari/i.test(navigator.userAgent)) {\n input.type = '';\n input.type = 'file';\n }\n this.changeHandler(null);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemUploadElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n ViewChild('input[type=file]')\n], PacemUploadElement.prototype, \"_fileupload\", void 0);\n__decorate([\n ViewChild(`${P}-tuner`)\n], PacemUploadElement.prototype, \"_tuner\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"undoCaption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"retryCaption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"clearCaption\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"pattern\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"maxImageWidth\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"parallelism\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"chunkSize\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"maxImageHeight\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"maxSize\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"selectMode\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemUploadElement.prototype, \"uploading\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"size\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"percentage\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemUploadElement.prototype, \"complete\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemUploadElement.prototype, \"failed\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemUploadElement.prototype, \"invalidFile\", void 0);\nPacemUploadElement = __decorate([\n CustomElement({\n tagName: P + '-upload', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-button on-click=\":host._dispatchDownload($event)\" class=\"${PCSS}-upload ${PCSS}-viewfinder flat\" css-class=\"{{ {'upload-chosen': !$pacem.isNullOrEmpty(:host.value) && !:host.uploading, 'upload-error': ${ERROR_BINDING}, 'upload-readonly': :host.readonly } }}\">\r\n\r\n <${P}-panel class=\"upload-button\" hide=\"{{ (:host.uploading || :host.failed) && !$pacem.isNullOrEmpty(:host.url) }}\">\r\n <${P}-button tooltip=\"{{ :host.readonly ? :host.viewValue : 'upload' }}\" class=\"button-circle pos-relative overflow-hidden\"\r\n icon-glyph=\"{{ :host._getMimeIcon(:host.value, :host.uploading, :host.selectMode) }}\"\r\n on-click=\":host._clickHandler($event)\"\r\n on-mouseover=\"$this.iconGlyph = :host._getMimeIcon(:host.readonly ? :host.value : '', :host.uploading, :host.selectMode)\"\r\n on-mouseout=\"$this.iconGlyph = :host._getMimeIcon(:host.value, :host.uploading, :host.selectMode)\"\r\n css-class=\"{{ {'${PCSS}-anim anim-rotate': :host.uploading, 'button-error': :host.invalidFile, 'button-primary': $pacem.isNullOrEmpty(:host.value) && !:host.invalidFile, 'button-success': !Pacem.Utils.isNullOrEmpty(:host.value) && !:host.invalidFile } }}\">\r\n <input type=\"file\" class=\"${PCSS}-transparent ${PCSS}-clickable pos-absolute absolute-left absolute-right absolute-top absolute-bottom\" />\r\n </${P}-button>\r\n </${P}-panel>\r\n <${P}-panel class=\"upload-button\" hide=\"{{ !:host.failed }}\">\r\n <${P}-button class=\"button-circle button-flat\" icon-glyph=\"refresh\"\r\n tooltip=\"{{ :host.retryCaption }}\" on-click=\":host._retry($event)\"><${P}-text text=\"{{ :host.retryCaption }}\"></${P}-text></${P}-button>\r\n </${P}-panel>\r\n <${P}-panel class=\"upload-button\" hide=\"{{ !:host.uploading || $pacem.isNullOrEmpty(:host.url) }}\">\r\n <${P}-button class=\"button-circle button-flat\" icon-glyph=\"clear\" tooltip=\"{{ :host.undoCaption }}\" \r\n on-click=\":host._undo($event)\"><${P}-text text=\"{{ :host.undoCaption }}\"></${P}-text></${P}-button>\r\n </${P}-panel>\r\n\r\n <${P}-span tooltip=\"{{ :host.viewValue }}\"\r\n hide=\"{{ $pacem.isNullOrEmpty(:host.value) || :host.uploading }}\" class=\"upload-data readonly text-reset display-block ${PCSS}-anim text-truncate text-left ${PCSS}-pad pad-right-3\" text=\"{{ :host.viewValue }}\"></${P}-span>\r\n\r\n <${P}-panel class=\"upload-progress hit-none\" hide=\"{{ :host.readonly || (!$pacem.isNullOrEmpty(:host.value) && !:host.uploading) }}\">\r\n <${P}-tuner value=\"{{ :host.percentage }}\" css-class=\"{{ {'tuner-success': !:host.invalidFile, 'tuner-error': :host.invalidFile} }}\" interactive=\"false\"></${P}-tuner>\r\n </${P}-panel>\r\n\r\n <${P}-button class=\"button-circle button-flat clear-button\" icon-glyph=\"clear\" hide=\"{{ $pacem.isNullOrEmpty(:host.value) || :host.uploading }}\" tooltip=\"{{ :host.clearCaption }}\" on-click=\":host._clear($event)\"></${P}-button>\r\n \r\n</${P}-button>`\n })\n], PacemUploadElement);\nexport { PacemUploadElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Defaults, ViewChild, Utils } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\n//namespace Pacem.Components.Scaffolding {\n/** {@link PacemTextualInputElement} wrapping an `<input type=\"hidden\">`, for values that must round-trip without a visible UI. */\nlet PacemHiddenInputElement = class PacemHiddenInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n }\n toggleReadonlyView(readonly) { }\n get inputFields() {\n return Utils.isNull(this._input)\n ? []\n : [this._input];\n }\n};\n__decorate([\n ViewChild('input[type=hidden]')\n], PacemHiddenInputElement.prototype, \"_input\", void 0);\nPacemHiddenInputElement = __decorate([\n CustomElement({ tagName: P + '-input-hidden', template: '<input type=\"hidden\" />', shadow: Defaults.USE_SHADOW_ROOT })\n], PacemHiddenInputElement);\nexport { PacemHiddenInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, CustomEventUtils, PropertyConverters, Utils, CustomUIEvent, avoidHandler, Logging } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nconst getUserMediaFunctions = Utils.getUserMediaFunctions();\n/** The current stage of {@link PacemSnapshotElement}'s capture workflow: idle/upload-or-camera choice, live webcam preview, or reviewing the captured image before confirming. */\nexport var SnapshotStep;\n(function (SnapshotStep) {\n SnapshotStep[\"Start\"] = \"start\";\n SnapshotStep[\"Taking\"] = \"taking\";\n SnapshotStep[\"Confirm\"] = \"confirm\";\n})(SnapshotStep || (SnapshotStep = {}));\nclass ConfirmSnapshotEvent extends CustomUIEvent {\n constructor(buffer) {\n super('confirmsnapshot', { buffer });\n }\n}\n/** A `<p-snapshot>` field: a {@link PacemBaseElement} image-capture control that lets the user upload a file or, when a webcam is available, take a live snapshot (with an optional 3s timer); its `value` is the resulting data-URL string. */\nlet PacemSnapshotElement = class PacemSnapshotElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this._resizeHandler = (evt) => {\n this._renderValue();\n };\n /** Gets or sets the current step of the capture workflow. Defaults to {@link SnapshotStep.Start}. */\n this.step = SnapshotStep.Start;\n /*const*/ this._canUseWebcam = getUserMediaFunctions.length > 0;\n /** Seconds left before the timed shutter fires; `0` outside of a timed countdown. */\n this._countdown = 0;\n this._webcamInitialized = false;\n this._grabberChangeHandler = (e) => {\n const input = this._grabber;\n if (input.files.length > 0) {\n Utils.blobToDataURL(input.files[0]).then(url => {\n Utils.loadImage(url).then(img => {\n this._shutter(img);\n });\n });\n }\n };\n this._snapshooterClickHandler = (e) => {\n avoidHandler(e);\n this.step = SnapshotStep.Taking;\n };\n this._pickerClickHandler = (e) => {\n avoidHandler(e);\n this._grabber.click();\n };\n this._takerClickHandler = (e) => {\n avoidHandler(e);\n this._countdown = 0;\n this._shutter();\n };\n this._timerClickHandler = (e) => {\n avoidHandler(e);\n this._countdown = 3;\n this._shutter();\n };\n this._confirmerClickHandler = (e) => {\n avoidHandler(e);\n this.changeHandler(new ConfirmSnapshotEvent(this._buffer));\n };\n }\n get inputFields() {\n return [];\n }\n toggleReadonlyView(readonly) {\n // TODO\n }\n onChange(evt) {\n return new Promise((resolve, _) => {\n if (CustomEventUtils.isInstanceOf(evt, ConfirmSnapshotEvent)) {\n resolve(this.value = evt.detail.buffer);\n this.step = SnapshotStep.Start;\n }\n else {\n resolve(this.value);\n }\n });\n }\n acceptValue(val) {\n this._renderValue(val);\n }\n getViewValue(value) {\n return value;\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.String.convert(attr, this);\n }\n get _getUserMedia() {\n return this._canUseWebcam && getUserMediaFunctions[0];\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'step':\n switch (val) {\n case SnapshotStep.Start:\n this._buffer = null;\n const input = this._grabber;\n // https://stackoverflow.com/a/35323290\n input.value = '';\n if (!/safari/i.test(navigator.userAgent)) {\n input.type = '';\n input.type = 'file';\n }\n break;\n case SnapshotStep.Taking:\n this._ensureWebcamRunning();\n break;\n }\n break;\n case '_buffer':\n this._renderValue(val || this.value);\n break;\n case 'width':\n case 'height':\n this._syncSize();\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._syncSize();\n this._picker.addEventListener('click', this._pickerClickHandler, false);\n this._snapshooter.addEventListener('click', this._snapshooterClickHandler, false);\n this._taker.addEventListener('click', this._takerClickHandler, false);\n this._timer.addEventListener('click', this._timerClickHandler, false);\n this._confirmer.addEventListener('click', this._confirmerClickHandler, false);\n this._grabber.addEventListener('change', this._grabberChangeHandler, false);\n }\n disconnectedCallback() {\n if (this.isReady) {\n this._picker.removeEventListener('click', this._pickerClickHandler, false);\n this._snapshooter.removeEventListener('click', this._snapshooterClickHandler, false);\n this._taker.removeEventListener('click', this._takerClickHandler, false);\n this._timer.removeEventListener('click', this._timerClickHandler, false);\n this._confirmer.removeEventListener('click', this._confirmerClickHandler, false);\n this._grabber.removeEventListener('change', this._grabberChangeHandler, false);\n }\n super.disconnectedCallback();\n }\n _syncSize() {\n const canvas = this._stage, video = this._player;\n if (!Utils.isNull(canvas) && !Utils.isNull(video)) {\n canvas.style.width = video.style.width = (this.width && this.width + 'px') || '',\n canvas.style.height = video.style.height = (this.height && this.height + 'px') || '';\n this._renderValue(this._buffer || this.value);\n }\n }\n _shutter(el) {\n const me = this, video = this._player, canvas = this._stage;\n me._confirmer.disabled = true;\n if (Utils.isNull(el)) {\n el = me._player;\n }\n var srcWidth, srcHeight;\n if (el instanceof HTMLVideoElement) {\n srcWidth = el.videoWidth;\n srcHeight = el.videoHeight;\n }\n else {\n srcWidth = el.naturalWidth;\n srcHeight = el.naturalHeight;\n }\n if (me._countdown <= 0) {\n var cnv = document.createElement('canvas');\n cnv.width = this.width || canvas.clientWidth;\n cnv.height = this.height || canvas.clientHeight;\n var ctx = cnv.getContext('2d');\n Utils.cropImageOntoCanvas(el, ctx, srcWidth, srcHeight);\n let root = me._root;\n root.insertBefore(cnv, video);\n cnv.className = 'snapshot-brightout';\n setTimeout(function () {\n root.removeChild(cnv);\n }, 1000);\n me._refreshBuffer(cnv.toDataURL()).then((b) => {\n me._setToBeConfirmed(b);\n me._confirmer.disabled = false;\n });\n }\n else\n setTimeout(() => { me._countdown--; this._shutter(); }, 1000);\n }\n _renderValue(val = this.value) {\n let cnv = this._stage;\n if (!Utils.isNull(cnv)) {\n cnv.width = cnv.clientWidth;\n cnv.height = cnv.clientHeight;\n let ctx = cnv.getContext('2d');\n if (Utils.isNullOrEmpty(val)) {\n ctx.clearRect(0, 0, cnv.width, cnv.height);\n }\n else {\n Utils.loadImage(val).then(img => {\n Utils.cropImageOntoCanvas(img, ctx, img.width, img.height);\n });\n }\n }\n }\n _setToBeConfirmed(buffer) {\n this.step = SnapshotStep.Confirm;\n this._buffer = buffer;\n }\n _refreshBuffer(buffer) {\n var cnv = this._stage;\n cnv.width = /*this.width ||*/ cnv.clientWidth;\n cnv.height = /*this.height ||*/ cnv.clientHeight;\n let quality;\n if (this.quality > 0) {\n quality = Math.min(1, Math.max(0, this.quality));\n }\n return Utils.cropImage(buffer, cnv.width, cnv.height, quality);\n }\n _ensureWebcamRunning() {\n if (this._canUseWebcam && !this._webcamInitialized) {\n var me = this;\n me._webcamInitialized = true;\n me._getUserMedia.apply(navigator, [{ video: true /*, audio: false*/ },\n /* success */ function (localMediaStream) {\n var video = me._player;\n // deprecated:\n //video.src = window.URL.createObjectURL(localMediaStream);\n // replaced with:\n video.srcObject = localMediaStream;\n }, /* fail */ function (e) {\n me.log(Logging.LogLevel.Error, (e || e.message).toString());\n }]);\n }\n }\n};\n__decorate([\n ViewChild('.' + PCSS + '-snapshot')\n], PacemSnapshotElement.prototype, \"_root\", void 0);\n__decorate([\n ViewChild('canvas')\n], PacemSnapshotElement.prototype, \"_stage\", void 0);\n__decorate([\n ViewChild('input[type=file]')\n], PacemSnapshotElement.prototype, \"_grabber\", void 0);\n__decorate([\n ViewChild('video')\n], PacemSnapshotElement.prototype, \"_player\", void 0);\n__decorate([\n ViewChild(P + '-button.button.snapshot-upload')\n], PacemSnapshotElement.prototype, \"_picker\", void 0);\n__decorate([\n ViewChild(P + '-button.button.snapshot-camera')\n], PacemSnapshotElement.prototype, \"_snapshooter\", void 0);\n__decorate([\n ViewChild(P + '-button.button.snapshot-take')\n], PacemSnapshotElement.prototype, \"_taker\", void 0);\n__decorate([\n ViewChild(P + '-button.button.snapshot-timer3s')\n], PacemSnapshotElement.prototype, \"_timer\", void 0);\n__decorate([\n ViewChild(P + '-button.button.snapshot-confirm')\n], PacemSnapshotElement.prototype, \"_confirmer\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemSnapshotElement.prototype, \"step\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSnapshotElement.prototype, \"width\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSnapshotElement.prototype, \"height\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSnapshotElement.prototype, \"quality\", void 0);\n__decorate([\n Watch()\n], PacemSnapshotElement.prototype, \"_countdown\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemSnapshotElement.prototype, \"_buffer\", void 0);\nPacemSnapshotElement = __decorate([\n CustomElement({\n tagName: P + '-snapshot',\n shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-panel class=\"${PCSS}-snapshot\" \r\ncss-class=\"{{ { \r\n'snapshot-start': :host.step === '${SnapshotStep.Start}',\r\n'snapshot-taking': :host.step === '${SnapshotStep.Taking}', \r\n'snapshot-confirm': :host.step === '${SnapshotStep.Confirm}' } }}\">\r\n\r\n <${P}-resize target=\"{{ ::_stage }}\" on-resize=\":host._resizeHandler($event)\"></${P}-resize>\r\n\r\n <canvas class=\"${PCSS}-viewfinder\"></canvas>\r\n\r\n <video autoplay=\"autoplay\"></video>\r\n\r\n <input type=\"file\" accept=\"image/*\" />\r\n\r\n <div class=\"${PCSS}-buttonset snapshot-step step-start\">\r\n <div class=\"buttonset-center\">\r\n <${P}-button class=\"button snapshot-upload\" icon-glyph=\"upload\"></${P}-button>\r\n <${P}-button class=\"button snapshot-camera\" icon-glyph=\"photo_camera\"></${P}-button> \r\n </div>\r\n </div>\r\n\r\n <div class=\"${PCSS}-buttonset snapshot-step step-taking\">\r\n <div class=\"buttonset-center\">\r\n <${P}-button class=\"button snapshot-undo\" icon-glyph=\"undo\" on-click=\":host.step = '${SnapshotStep.Start}'\"></${P}-button>\r\n <${P}-button class=\"button snapshot-take\" icon-glyph=\"camera\"></${P}-button>\r\n <${P}-button class=\"button snapshot-timer3s\" icon-glyph=\"timer_3\"></${P}-button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"${PCSS}-buttonset snapshot-step step-confirm\">\r\n <div class=\"buttonset-center\">\r\n <${P}-button class=\"button snapshot-undo\" icon-glyph=\"undo\" on-click=\":host.step = '${SnapshotStep.Start}'\"></${P}-button>\r\n <${P}-button class=\"button snapshot-confirm\" icon-glyph=\"done\"></${P}-button>\r\n </div>\r\n </div>\r\n\r\n <${P}-span class=\"snapshot-countdown\" text=\"{{ :host._countdown }}\" hide=\"{{ :host.step !== '${SnapshotStep.Taking}' || !(:host._countdown > 0) }}\"></${P}-span>\r\n <${P}-span hide=\"{{ :host._canUseWebcam }}\"><${P}-content></${P}-content></${P}-span>\r\n\r\n</${P}-panel>`\n })\n], PacemSnapshotElement);\nexport { PacemSnapshotElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, CustomTypedEvent, Components, CustomEventUtils, PropertyConverters, PropertyChangeEventName, Utils, Debounce, avoidHandler } from '@pacem/pacem-core';\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { PacemBaseElement } from './types-components';\nimport { FileUploadEventName } from './input-file';\nimport { SnapshotStep } from './snapshot';\n//namespace Pacem.Components.Scaffolding {\n/** A single image entry (full-size and thumbnail sources) offered as a pick candidate by {@link PacemEditImageElement}. */\nexport class Picture {\n}\n/** Name of the {@link ImageFetchRequestEvent} dispatched by {@link PacemEditImageElement}/{@link PacemImageInputElement} to request a page of pictures. */\nexport const ImageFetchRequestEventName = 'imagefetchrequest';\n/** Dispatched to request a page of {@link Picture}s (e.g. on scroll, or when the search hint changes); handlers are expected to respond by setting `imageSet`. */\nexport class ImageFetchRequestEvent extends CustomTypedEvent {\n constructor(args) {\n super(ImageFetchRequestEventName, args, { bubbles: true /*, scoped: false */ });\n }\n}\n/**\n * Picture-picker panel: lets the user search/browse a fetched {@link imageSet}, upload a new full-size/thumbnail pair, or take a\n * snapshot, resolving `value` to the chosen picture's source. Hosted inside a dialog by {@link PacemImageInputElement}.\n */\nlet PacemEditImageElement = class PacemEditImageElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._index = 0;\n /** Gets or sets the search hint typed by the user, triggering a fresh {@link ImageFetchRequestEvent} when it changes. */\n this.hint = '';\n }\n _uploaderPropertyChangedCallback(evt) {\n const val = evt.detail.currentValue;\n switch (evt.detail.propertyName) {\n case 'percentage':\n this._progressbar.percentage = val * 100.0;\n break;\n case 'uploading':\n if (val)\n this._done(true);\n break;\n }\n }\n _thumbnailUploaderPropertyChangedCallback(evt) {\n const val = evt.detail.currentValue;\n switch (evt.detail.propertyName) {\n case 'percentage':\n this._progressbar.percentage = val * 100.0;\n break;\n case 'uploading':\n this._done(val);\n break;\n }\n }\n _uploaderFileUploadCallback(evt) {\n const uploader = this._uploader;\n const thumbUploader = this._thumbUploader, w = thumbUploader.maxImageWidth, h = thumbUploader.maxImageHeight;\n if (w > 0 && h > 0) {\n var blob = uploader.blob;\n const uid = evt.detail.uid;\n Utils.resizeImage(blob, w, h).then(blob2 => {\n if (blob2 != blob) {\n thumbUploader.upload(blob2, 'thumbnail.jpg', uid);\n return;\n }\n else\n // fallback\n this._done(false);\n });\n }\n else\n // fallback\n this._done(false);\n }\n _done(uploading) {\n if (!uploading) {\n this._imagefetch(0);\n }\n this._repeater.hidden = uploading;\n this._progressbar.hidden = !uploading;\n }\n _snapshotPropertyChangedCallback(evt) {\n switch (evt.detail.propertyName) {\n case 'value':\n const blob = Utils.dataURLToBlob(evt.detail.currentValue);\n this._uploader.upload(blob, 'snapshot.jpg');\n break;\n }\n }\n reset() {\n this._snapshot.step = SnapshotStep.Start;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'imageSet':\n let set = val || { skip: 0, set: [] };\n if (Utils.isNullOrEmpty(this._images) || set.skip === 0)\n this._images = set.set;\n else if (!Utils.isNull(this._images))\n Array.prototype.splice.apply(this._images, [set.skip, this._images.length - set.skip].concat(set.set));\n this._fetching = false;\n break;\n case 'hint':\n if (!first)\n this._imagefetch(0);\n break;\n }\n }\n _imagefetchSuddenly(ndx) {\n this._fetching = true;\n this._imagefetch(ndx);\n }\n _imagefetch(ndx) {\n if (!(ndx >= 0))\n ndx = (this._images && this._images.length) || 0;\n this.dispatchEvent(new ImageFetchRequestEvent({ hint: this.hint, skip: ndx, take: 18 }));\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemEditImageElement.prototype, \"uploadUrl\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemEditImageElement.prototype, \"hint\", void 0);\n__decorate([\n Watch()\n], PacemEditImageElement.prototype, \"imageSet\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemEditImageElement.prototype, \"value\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemEditImageElement.prototype, \"maxWidth\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemEditImageElement.prototype, \"maxHeight\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemEditImageElement.prototype, \"maxThumbnailWidth\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemEditImageElement.prototype, \"maxThumbnailHeight\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemEditImageElement.prototype, \"allowSnapshot\", void 0);\n__decorate([\n Watch()\n], PacemEditImageElement.prototype, \"_fetching\", void 0);\n__decorate([\n Watch()\n], PacemEditImageElement.prototype, \"_images\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemEditImageElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(P + '-upload[main]')\n], PacemEditImageElement.prototype, \"_uploader\", void 0);\n__decorate([\n ViewChild(P + '-upload[thumb]')\n], PacemEditImageElement.prototype, \"_thumbUploader\", void 0);\n__decorate([\n ViewChild(P + '-snapshot')\n], PacemEditImageElement.prototype, \"_snapshot\", void 0);\n__decorate([\n ViewChild(P + '-progressbar')\n], PacemEditImageElement.prototype, \"_progressbar\", void 0);\n__decorate([\n Debounce(500)\n], PacemEditImageElement.prototype, \"_imagefetch\", null);\nPacemEditImageElement = __decorate([\n CustomElement({\n tagName: P + '-edit-image', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-panel class=\"${PCSS}-edit-image\"\r\n css-class=\"{{ {'${PCSS}-snapshot': ::_snapshot.step != '${SnapshotStep.Start}', '${PCSS}-uploading': ::_uploader.uploading, '${PCSS}-upload-enabled': !Pacem.Utils.isNullOrEmpty(:host.uploadUrl), '${PCSS}-snapshot-enabled': !Pacem.Utils.isNullOrEmpty(:host.uploadUrl) && :host.allowSnapshot} }}\">\r\n <div>\r\n <${P}-input-search value=\"{{ :host.hint, twoway }}\"></${P}-input-search>\r\n <${P}-upload main pattern=\".+\\.(jpe?g|png|svg|ico)$\" url=\"{{ :host.uploadUrl }}\"\r\n max-image-width=\"{{ :host.maxWidth }}\" max-image-height=\"{{ :host.maxHeight }}\"\r\n on-${FileUploadEventName}=\":host._uploaderFileUploadCallback($event)\"\r\n on-${PropertyChangeEventName}=\":host._uploaderPropertyChangedCallback($event)\" hide=\"{{ Pacem.Utils.isNullOrEmpty(:host.uploadUrl) || ::_thumbUploader.uploading }}\"></${P}-upload>\r\n <${P}-upload thumb pattern=\".+\\.(jpe?g|png|svg|ico)$\" url=\"{{ :host.uploadUrl }}\" hide=\"{{ !::_thumbUploader.uploading }}\"\r\n max-image-width=\"{{ :host.maxThumbnailWidth }}\" max-image-height=\"{{ :host.maxThumbnailHeight }}\"\r\n on-${PropertyChangeEventName}=\":host._thumbnailUploaderPropertyChangedCallback($event)\"></${P}-upload>\r\n <${P}-button class=\"${PCSS}-snapshot\" on-click=\"Pacem.avoidHandler($event); ::_snapshot.step = '${SnapshotStep.Taking}'\" hide=\"{{ Pacem.Utils.isNullOrEmpty(:host.uploadUrl) || !:host.allowSnapshot }}\"></${P}-button>\r\n <${P}-infinite-scroller container=\"{{ ::_repeater }}\" on-fetchmore=\":host._imagefetchSuddenly()\" disabled=\"{{ :host._fetching || :host.disabled || :host._images.length >= :host.imageSet.total }}\"></${P}-infinite-scroller>\r\n <${P}-repeater datasource=\"{{ :host._images }}\">\r\n <template>\r\n <${P}-img css-class=\"{{ {'${PCSS}-selected': ^item.src === :host.value } }}\" on-click=\":host.value = ^item.src\" src=\"{{ ^item.thumb }}\" adapt=\"contain\"></${P}-img>\r\n </template>\r\n </${P}-repeater>\r\n <${P}-progressbar class=\"progressbar-smaller progressbar-accent\" caption=\"{{ ::_thumbUploader.uploading ? 'thumbnail...' : 'uploading...' }}\"></${P}-progressbar>\r\n </div>\r\n <div>\r\n <${P}-snapshot hide=\"{{ !:host.allowSnapshot }}\" on-${PropertyChangeEventName}=\":host._snapshotPropertyChangedCallback($event)\"></${P}-snapshot>\r\n </div>\r\n </${P}-panel>`\n })\n], PacemEditImageElement);\nexport { PacemEditImageElement };\n/**\n * {@link PacemBaseElement}-based field showing an image preview with edit/clear buttons; editing opens a dialog hosting a\n * {@link PacemEditImageElement} to pick/upload/snapshot a new picture, while `value` also accepts a directly-typed URL.\n */\nlet PacemImageInputElement = class PacemImageInputElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this._broadcastFetchRequestEventName = (evt) => {\n this.dispatchEvent(new ImageFetchRequestEvent(evt.detail));\n };\n this._innerValueChangedHandler = (evt) => {\n if (evt.detail.propertyName === 'value' && !Utils.isNull(this._dialog))\n this._dialog.state = evt.detail.currentValue;\n };\n // #endregion\n }\n convertValueAttributeToProperty(attr) {\n return attr; // better assumptions anyone?\n }\n getViewValue(value) {\n return value;\n }\n get inputFields() {\n return [];\n }\n _clear(evt) {\n this.changeHandler(evt);\n }\n onChange(evt) {\n let value = this.value;\n if (CustomEventUtils.isInstanceOf(evt, ComponentsUI.UI.DialogResultEvent)\n && evt.detail.button === ComponentsUI.UI.DialogButton.Ok)\n value = this.value = evt.detail.state;\n else if (evt.target === this._input)\n value = this.value = this._input.value;\n else if (evt.target === this._clearBtn)\n value = this.value = undefined;\n return Utils.fromResult(value);\n }\n toggleReadonlyView(readonly) {\n this._input.hidden = this._editBtn.hide = this._clearBtn.hide = readonly;\n }\n _addDialog() {\n var dialog = document.createElement(P + '-dialog');\n dialog.buttons = ComponentsUI.UI.DialogButtons.OkCancel;\n dialog.addEventListener(ComponentsUI.UI.DialogResultEventName, this.changeHandler, false);\n dialog.appendChild(this._addEditImage());\n document.body.appendChild(dialog);\n //\n return this._dialog = dialog;\n }\n _removeDialog() {\n this._removeEditImage();\n if (!Utils.isNull(this._dialog)) {\n this._dialog.removeEventListener(ComponentsUI.UI.DialogResultEventName, this.changeHandler, false);\n this._dialog.remove();\n }\n }\n _addEditImage() {\n var editImage = document.createElement(P + '-edit-image');\n editImage.disabled = true;\n editImage.addEventListener(PropertyChangeEventName, this._innerValueChangedHandler, false);\n editImage.addEventListener(ImageFetchRequestEventName, this._broadcastFetchRequestEventName, false);\n editImage.uploadUrl = this.uploadUrl;\n editImage.allowSnapshot = this.allowSnapshot;\n editImage.maxWidth = this.maxWidth;\n editImage.maxHeight = this.maxHeight;\n editImage.maxThumbnailHeight = this.maxThumbnailHeight;\n editImage.maxThumbnailWidth = this.maxThumbnailWidth;\n return this._editImage = editImage;\n }\n _removeEditImage() {\n if (!Utils.isNull(this._editImage)) {\n this._editImage.removeEventListener(PropertyChangeEventName, this._innerValueChangedHandler, false);\n this._editImage.removeEventListener(ImageFetchRequestEventName, this._broadcastFetchRequestEventName, false);\n }\n }\n connectedCallback() {\n super.connectedCallback();\n this._addDialog();\n }\n disconnectedCallback() {\n this._removeDialog();\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'uploadUrl':\n if (!Utils.isNull(this._editImage))\n this._editImage.uploadUrl = val;\n break;\n case 'allowSnapshot':\n if (!Utils.isNull(this._editImage))\n this._editImage.allowSnapshot = val;\n break;\n case 'imageSet':\n if (!Utils.isNull(this._editImage))\n this._editImage.imageSet = val;\n break;\n case 'maxThumbnailHeight':\n if (!Utils.isNull(this._editImage))\n this._editImage.maxThumbnailHeight = val;\n break;\n case 'maxThumbnailWidth':\n if (!Utils.isNull(this._editImage))\n this._editImage.maxThumbnailWidth = val;\n break;\n case 'maxHeight':\n if (!Utils.isNull(this._editImage))\n this._editImage.maxHeight = val;\n break;\n case 'maxWidth':\n if (!Utils.isNull(this._editImage))\n this._editImage.maxWidth = val;\n break;\n }\n }\n acceptValue(val) {\n if (!Utils.isNull(this._editImage))\n this._editImage.value = val;\n }\n _update(val) {\n this._image.src = val;\n }\n _retrieve() {\n return this.value;\n }\n _edit(evt) {\n avoidHandler(evt);\n var editImage = this._editImage, state = this.value;\n editImage.disabled = false;\n editImage.reset();\n editImage.value = state;\n this._dialog.open(state).then(args => {\n switch (args.button) {\n case ComponentsUI.UI.DialogButton.Cancel:\n // reset value\n this._update(this.value);\n break;\n case ComponentsUI.UI.DialogButton.Ok:\n // save\n this._update(args.state);\n break;\n }\n this._editImage.disabled = true;\n });\n }\n};\n__decorate([\n ViewChild(P + '-img')\n], PacemImageInputElement.prototype, \"_image\", void 0);\n__decorate([\n ViewChild(P + '-button.' + PCSS + '-edit')\n], PacemImageInputElement.prototype, \"_editBtn\", void 0);\n__decorate([\n ViewChild(P + '-button.' + PCSS + '-clear')\n], PacemImageInputElement.prototype, \"_clearBtn\", void 0);\n__decorate([\n ViewChild(P + '-input-url')\n], PacemImageInputElement.prototype, \"_input\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemImageInputElement.prototype, \"uploadUrl\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemImageInputElement.prototype, \"imageSet\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageInputElement.prototype, \"maxWidth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageInputElement.prototype, \"maxHeight\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageInputElement.prototype, \"maxThumbnailWidth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageInputElement.prototype, \"maxThumbnailHeight\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemImageInputElement.prototype, \"allowSnapshot\", void 0);\nPacemImageInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-image', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-input-image\"><${P}-img src=\"{{ :host.value }}\" adapt=\"contain\"></${P}-img><div class=\"${PCSS}-input-image-dashboard\">\r\n <${P}-button on-click=\":host._edit($event)\" hide=\"{{ :host.disabled }}\" class=\"${PCSS}-edit\">Edit</${P}-button>\r\n <${P}-button on-click=\":host._clear($event)\" hide=\"{{ :host.disabled }}\" class=\"${PCSS}-clear\">Clear</${P}-button>\r\n</div><${P}-input-url placeholder=\"{{ :host.placeholder }}\" on-change=\":host.changeHandler($event)\" value=\"{{ :host.value }}\"></${P}-input-url>\r\n\r\n <${P}-panel hide=\"{{ Pacem.Utils.isNullOrEmpty(:host.value) }}\">\r\n <dl class=\"${PCSS}-input-image-preview\">\r\n <dt>dimensions:</dt><dd><${P}-text text=\"{{ ::_image.size.width +'x'+ ::_image.size.height }}\"></${P}-text></dd>\r\n <dt>size:</dt><dd><${P}-text text=\"{{ $pacem.size(::_image.size.weight) }}\"></${P}-text></dd>\r\n </dl></${P}-panel>\r\n\r\n</div>`\n })\n], PacemImageInputElement);\nexport { PacemImageInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, PropertyConverters, Utils } from '@pacem/pacem-core';\nimport { PacemOrdinalInputElement } from './input';\n//namespace Pacem.Components.Scaffolding {\n/** {@link PacemOrdinalInputElement} for an `<input type=\"number\">`, formatting its read-only view value via {@link format}. */\nlet PacemNumberInputElement = class PacemNumberInputElement extends PacemOrdinalInputElement {\n toggleReadonlyView(readonly) {\n this._span.hidden = !readonly;\n this._input.hidden = readonly;\n }\n get inputFields() {\n return Utils.isNull(this._input)\n ? []\n : [this._input];\n }\n getViewValue(val) {\n return this.value != null ? this._format(this.value) : undefined;\n }\n _format(v = this.value) {\n const intl = this.format;\n if (!Utils.isNullOrEmpty(intl)) {\n return new Intl.NumberFormat(Utils.lang(this), intl).format(v);\n }\n return v.toString();\n }\n getValue(val) {\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/669685/ (bug open since Aug 2014!)\n const v = this.inputField.valueAsNumber || parseFloat(this.inputField.value);\n return isNaN(v) ? undefined : v;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n var options = { capture: false, passive: false };\n this._input.addEventListener(\"wheel\", this.emitHandler, options);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._input)) {\n var options = { capture: false, passive: false };\n this._input.removeEventListener(\"wheel\", this.emitHandler, options);\n }\n super.disconnectedCallback();\n }\n};\n__decorate([\n ViewChild('input[type=number]')\n], PacemNumberInputElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemNumberInputElement.prototype, \"_span\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemNumberInputElement.prototype, \"format\", void 0);\nPacemNumberInputElement = __decorate([\n CustomElement({ tagName: P + '-input-number', template: `<input type=\"number\" class=\"${PCSS}-input ${PCSS}-viewfinder\" /><span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>`, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemNumberInputElement);\nexport { PacemNumberInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, avoidHandler, Defaults, ViewChild, Utils } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\n/** {@link PacemTextualInputElement} for an `<input type=\"password\">`, with a toggle to reveal/hide the entered text and a masked read-only view. */\nlet PacemPasswordInputElement = class PacemPasswordInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n this._togglerMousedownHandler = (evt) => {\n if (evt.button == 0) {\n avoidHandler(evt);\n this.toggleVisibility();\n }\n };\n }\n get inputFields() {\n return Utils.isNull(this._input)\n ? []\n : [this._input];\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const baseId = this.id ?? '_' + Utils.uniqueCode();\n const inputId = this._input.id = baseId + '_ctrl';\n this._toggler.setAttribute('aria-controls', inputId);\n this._toggler.setAttribute('role', 'button');\n this._syncToggler();\n this._toggler.addEventListener('mousedown', this._togglerMousedownHandler, false);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._toggler)) {\n this._toggler.removeEventListener('mousedown', this._togglerMousedownHandler, false);\n }\n }\n /** Toggles the native input between `password` (masked) and `text` (revealed) type. */\n toggleVisibility() {\n const current = this._input.type;\n this._input.type = current === 'password' ? 'text' : 'password';\n this._syncToggler();\n }\n _syncToggler() {\n const collapsed = this._input.type === 'password';\n this._toggler.innerText = collapsed ? 'visibility_off' : 'visibility';\n this._toggler.setAttribute('aria-expanded', (!collapsed).toString());\n }\n toggleReadonlyView(readonly) {\n this._input.hidden = this._toggler.hidden = readonly;\n this._span.hidden = !readonly;\n }\n getViewValue(val) {\n return Utils.leftPad('', Math.floor(8 + 3 * Math.random()), '•');\n }\n};\n__decorate([\n ViewChild('input[type=password]')\n], PacemPasswordInputElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemPasswordInputElement.prototype, \"_span\", void 0);\n__decorate([\n ViewChild(`i.${PCSS}-icon.${PCSS}-clickable`)\n], PacemPasswordInputElement.prototype, \"_toggler\", void 0);\nPacemPasswordInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-password', template: `<input type=\"password\" class=\"${PCSS}-input ${PCSS}-viewfinder\" /><i class=\"${PCSS}-icon ${PCSS}-clickable\"></i>\r\n${CHAR_COUNTER_CHILD}<span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>`, shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemPasswordInputElement);\nexport { PacemPasswordInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Utils, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\n//namespace Pacem.Components.Scaffolding {\n/** A `<p-input-search>` field: a {@link PacemTextualInputElement} backed by a native `<input type=\"search\">`. */\nlet PacemSearchInputElement = class PacemSearchInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n }\n get inputFields() {\n return Utils.isNull(this._input)\n ? []\n : [this._input];\n }\n toggleReadonlyView(readonly) {\n // no readonly view provided.\n }\n};\n__decorate([\n ViewChild('input[type=search]')\n], PacemSearchInputElement.prototype, \"_input\", void 0);\nPacemSearchInputElement = __decorate([\n CustomElement({ tagName: P + '-input-search', template: '<input type=\"search\" class=\"' + PCSS + '-input\" />', shadow: Defaults.USE_SHADOW_ROOT })\n], PacemSearchInputElement);\nexport { PacemSearchInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Utils, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\n//namespace Pacem.Components.Scaffolding {\n/** A `<p-input-tel>` field: a {@link PacemTextualInputElement} backed by a native `<input type=\"tel\">`, whose readonly view renders as a clickable `tel:` link. */\nlet PacemTelInputElement = class PacemTelInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n }\n toggleReadonlyView(readonly) {\n const input = this._input, anchor = this._anchor;\n if (!Utils.isNull(input))\n input.hidden = readonly;\n if (!Utils.isNull(anchor))\n anchor.hidden = !readonly;\n }\n get inputFields() {\n return Utils.isNull(this._input)\n ? []\n : [this._input];\n }\n};\n__decorate([\n ViewChild('input[type=tel]')\n], PacemTelInputElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(P + '-a')\n], PacemTelInputElement.prototype, \"_anchor\", void 0);\nPacemTelInputElement = __decorate([\n CustomElement({ tagName: P + '-input-tel', template: `<input type=\"tel\" class=\"${PCSS}-input\" /><${P}-a class=\"${PCSS}-readonly\" disabled=\"{{ $pacem.isNullOrEmpty(:host.value) }}\" href=\"{{ 'tel:'+ :host.value }}\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></${P}-a>`, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemTelInputElement);\nexport { PacemTelInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Utils, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\n/** A `<p-input-text>` field: a {@link PacemTextualInputElement} backed by a native `<input type=\"text\">`, with an optional character counter. */\nlet PacemTextInputElement = class PacemTextInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n }\n toggleReadonlyView(readonly) {\n this._span.hidden = !readonly;\n this._input.hidden = readonly;\n }\n get inputFields() {\n return Utils.isNull(this._input)\n ? []\n : [this._input];\n }\n};\n__decorate([\n ViewChild('input[type=text]')\n], PacemTextInputElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild('span.' + PCSS + '-readonly')\n], PacemTextInputElement.prototype, \"_span\", void 0);\nPacemTextInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-text',\n template: `<input type=\"text\" class=\"${PCSS}-input\" />${CHAR_COUNTER_CHILD}<span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemTextInputElement);\nexport { PacemTextInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Utils, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\n/** A `<p-input-url>` field: a {@link PacemTextualInputElement} backed by a native `<input type=\"url\">`, whose readonly view renders as a clickable link opening in a new tab. */\nlet PacemUrlInputElement = class PacemUrlInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n }\n toggleReadonlyView(readonly) {\n const input = this._input, anchor = this._anchor;\n if (!Utils.isNull(input))\n input.hidden = readonly;\n if (!Utils.isNull(anchor))\n anchor.hidden = !readonly;\n }\n get inputFields() {\n return Utils.isNull(this._input)\n ? []\n : [this._input];\n }\n};\n__decorate([\n ViewChild('input[type=url]')\n], PacemUrlInputElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(P + '-a')\n], PacemUrlInputElement.prototype, \"_anchor\", void 0);\nPacemUrlInputElement = __decorate([\n CustomElement({ tagName: P + '-input-url', template: `<input type=\"url\" class=\"${PCSS}-input\" />${CHAR_COUNTER_CHILD}<${P}-a class=\"${PCSS}-readonly\" disabled=\"{{ $pacem.isNullOrEmpty(:host.value) }}\" href=\"{{ :host.value }}\" target=\"_blank\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></${P}-a>`, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemUrlInputElement);\nexport { PacemUrlInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, ViewChild, CustomElement, Watch, Utils, PropertyConverters, Defaults } from '@pacem/pacem-core';\nimport { Components as ComponentsMaps } from '@pacem/pacem-maps';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\n/** Default tile-layer URL template used by {@link PacemLatLngElement} when {@link LatLngOptions.tiles} isn't set (currently empty, i.e. the map adapter's own default applies). */\nexport const DEFAULT_TILES = \"\";\n/** Default map attribution string used by {@link PacemLatLngElement} when {@link LatLngOptions.attribution} isn't set (currently empty, i.e. the map adapter's own default applies). */\nexport const DEFAULT_ATTRIBUTION = \"\";\n//const TILES = `//api.mapbox.com/styles/v1/cmerighi/ciwz1gib7002l2prvgpi724nk/tiles/256/{z}/{x}/{y}?access_token=pk.eyJ1IjoiY21lcmlnaGkiLCJhIjoiY2lsZHIxdGJmMDAxOHc4bHowamxpZ2Z2OCJ9.7I7ndF-rAkx_1Sqi0bw3Ew`;\n//const ATTRIBUTION = `Map data © <a href=\"http://openstreetmap.org\">OpenStreetMap</a> contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>, Imagery © <a href=\"http://mapbox.com\">Mapbox</a>`\nconst REVERSE_GEOCODE_URL = 'https://nominatim.openstreetmap.org/reverse';\n/** A `<p-latlng>` field: a {@link PacemBaseElement} coordinate picker combining paired lat/lng number inputs with an interactive, draggable-marker map (Leaflet/OSM, Azure Maps or Google Maps) and reverse-geocoded address preview. */\nlet PacemLatLngElement = class PacemLatLngElement extends PacemBaseElement {\n convertValueAttributeToProperty(attr) {\n const regexArray = /^\\s*([+-]?\\d+\\.?\\d+)[,\\s]\\s*([+-]?\\d+\\.?\\d+)\\s*$/.exec(attr);\n if (regexArray && regexArray.length === 3) {\n return { lat: parseFloat(regexArray[1]), lng: parseFloat(regexArray[2]) };\n }\n throw `Invalid coordinates format for \"${attr}\"`;\n }\n compareValuePropertyValues(old, val) {\n if (old && typeof old.lat === 'number' && typeof old.lng === 'number'\n && val && typeof val.lat === 'number' && typeof val.lng === 'number') {\n return old.lat === val.lat && old.lng === val.lng;\n }\n return false;\n }\n getViewValue(value) {\n return this._getViewValue(value);\n }\n _getViewValue(value, precision = 8) {\n return value && typeof value.lat === 'number' && typeof value.lng === 'number' && value.lat.toFixed(precision) + ',' + value.lng.toFixed(precision) || '';\n }\n get inputFields() {\n return [this._latInput, this._lngInput];\n }\n toggleReadonlyView(readonly) {\n this._inputContainer.hidden = /*\n this._lngInput.hide = this._latInput.hide =*/\n readonly;\n }\n // regex: \n acceptValue(val) {\n let e_val = this._ensureValue(val);\n this._lat = e_val.lat;\n this._lng = e_val.lng;\n }\n _ensureValue(val) {\n return (val && typeof val.lat === 'number' && typeof val.lng === 'number') ? val : ComponentsMaps.Maps.MapConsts.DEFAULT_COORDS;\n }\n onChange(evt) {\n if (evt && evt.type === 'dragend') {\n var mevt = evt;\n // geocoordinate change due to map drag\n this._lat = mevt.detail.position.lat;\n this._lng = mevt.detail.position.lng;\n } // else: geocoordinate change due to text-input\n const lat = this._lat;\n const lng = this._lng;\n if (Utils.isNull(lat) || Utils.isNull(lng))\n return Utils.fromResult(this.value);\n return Utils.fromResult(this.value = { lat: lat, lng: lng });\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'options' && !first) {\n const opts = Utils.clone((val || { provider: 'osm' }));\n this._synchronizeOptions(opts);\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._synchronizeOptions();\n }\n _synchronizeOptions(opts = this.options || { provider: 'osm' }) {\n const marker = this._marker, map = this._map;\n marker.icon = opts.icon;\n switch (opts && opts.provider) {\n case 'azure':\n this._azureAdapter.subscriptionKey = opts.apiKey;\n map.adapter = this._azureAdapter;\n break;\n case 'google':\n case 'gmaps':\n this._googleAdapter.apiKey = opts.apiKey;\n map.adapter = this._googleAdapter;\n break;\n default:\n if (!Utils.isNullOrEmpty(opts.attribution)) {\n this._leafletAdapter.attribution = opts.attribution;\n }\n if (!Utils.isNullOrEmpty(opts.tiles)) {\n this._leafletAdapter.tiles = opts.tiles;\n }\n map.adapter = this._leafletAdapter;\n break;\n }\n delete opts['provider'];\n delete opts['icon'];\n delete opts['apiKey'];\n delete opts['attribution'];\n delete opts['tiles'];\n for (let prop in opts) {\n if (prop in map) {\n map[prop] = opts[prop];\n }\n }\n }\n};\n__decorate([\n ViewChild(P + '-map-adapter-leaflet')\n], PacemLatLngElement.prototype, \"_leafletAdapter\", void 0);\n__decorate([\n ViewChild(P + '-map-adapter-azure')\n], PacemLatLngElement.prototype, \"_azureAdapter\", void 0);\n__decorate([\n ViewChild(P + '-map-adapter-google')\n], PacemLatLngElement.prototype, \"_googleAdapter\", void 0);\n__decorate([\n ViewChild(P + '-map')\n], PacemLatLngElement.prototype, \"_map\", void 0);\n__decorate([\n ViewChild(P + '-map-marker')\n], PacemLatLngElement.prototype, \"_marker\", void 0);\n__decorate([\n ViewChild(P + '-input-number:nth-child(1)')\n], PacemLatLngElement.prototype, \"_latInput\", void 0);\n__decorate([\n ViewChild(P + '-input-number:nth-child(2)')\n], PacemLatLngElement.prototype, \"_lngInput\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-latlng-fields`)\n], PacemLatLngElement.prototype, \"_inputContainer\", void 0);\n__decorate([\n ViewChild(P + '-fetch')\n], PacemLatLngElement.prototype, \"_fetcher\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json, emit: false })\n], PacemLatLngElement.prototype, \"options\", void 0);\n__decorate([\n Watch()\n], PacemLatLngElement.prototype, \"_lat\", void 0);\n__decorate([\n Watch()\n], PacemLatLngElement.prototype, \"_lng\", void 0);\nPacemLatLngElement = __decorate([\n CustomElement({\n tagName: P + '-latlng', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-latlng\">\r\n <div class=\"${PCSS}-latlng-fields ${PCSS}-viewfinder\">\r\n <${P}-input-number class=\"${PCSS}-lat\" value=\"{{ :host._lat, twoway }}\" min=\"-90\" max=\"90\" step=\"{{ 'any' }}\"></${P}-input-number>\r\n <${P}-input-number class=\"${PCSS}-lng\" value=\"{{ :host._lng, twoway }}\" min=\"-180\" max=\"180\" step=\"{{ 'any' }}\"></${P}-input-number>\r\n </div>\r\n <${P}-panel hide=\"{{ Pacem.Utils.isNull(:host.value) || :host.readonly }}\">\r\n <dl class=\"${PCSS}-latlng-preview\">\r\n <dt>decimals:</dt><dd><${P}-text text=\"{{ :host._getViewValue(:host.value, 12) }}\"></${P}-text></dd>\r\n <dt>address:</dt><dd><${P}-text text=\"{{ ::_fetcher.result.display_name || '?' }}\"></${P}-text></dd>\r\n <dt>degrees:</dt><dd><${P}-span css-class=\"{{ {'${PCSS}-lat-north': :host._lat > 0, '${PCSS}-lat-south': :host._lat < 0} }}\" content=\"{{ $pacem.decToDeg(Math.abs(:host._lat)) }}\"></${P}-span>,\r\n <${P}-span css-class=\"{{ {'${PCSS}-lng-east': :host._lng > 0, '${PCSS}-lng-west': :host._lng < 0} }}\" content=\"{{ $pacem.decToDeg(Math.abs(:host._lng)) }}\"></${P}-span></dd>\r\n </dl>\r\n </${P}-panel>\r\n <${P}-span class=\"${PCSS}-readonly\" hide=\"{{ !:host.readonly }}\" content=\"{{ :host.viewValue + ($pacem.isNullOrEmpty(::_fetcher.result.display_name) ? '' : (' <small>'+ ::_fetcher.result.display_name +'</small>')) }}\"></${P}-span>\r\n\r\n <${P}-map-adapter-leaflet></${P}-map-adapter-leaflet>\r\n <${P}-map-adapter-azure></${P}-map-adapter-azure>\r\n <${P}-map-adapter-google></${P}-map-adapter-google>\r\n\r\n <${P}-map adapter=\"{{ ::_adapter }}\">\r\n <${P}-map-marker position=\"{{ :host._ensureValue(:host.value) }}\" on-dragend=\":host.changeHandler($event)\" draggable=\"{{ !:host.readonly }}\"></${P}-map-marker>\r\n </${P}-map>\r\n <${P}-fetch disabled=\"{{ $pacem.isNull(:host.value) }}\" parameters=\"{{ { format: 'json', lat: :host._lat, lon: :host._lng } }}\" url=\"${REVERSE_GEOCODE_URL}\"></${P}-fetch>\r\n</div>`\n })\n], PacemLatLngElement);\nexport { PacemLatLngElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, Defaults } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\nimport { ChangePolicy } from './input';\n//namespace Pacem.Components.Scaffolding {\nconst ITEM_TXT_CORE = `change-policy=\"${ChangePolicy.Blur}\" readonly=\"{{ :host.readonly }}\"`;\nfunction isEmpty(nvp) {\n return Utils.isNullOrEmpty(nvp && nvp.name);\n}\nfunction pullEmpty() {\n return { name: '', value: '' };\n}\n/** A `<p-namevalue-list>` field: a {@link PacemBaseElement} editor for a repeatable list of name/value string pairs, whose `value` is either an array of {@link NameValuePair}s or, when {@link PacemNameValueListElement#dictionary} is set, a plain `{ [name]: value }` object. */\nlet PacemNameValueListElement = class PacemNameValueListElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this.inputFields = [];\n /** Internal editable rows, mirrored to/from `value` depending on {@link dictionary}. */\n this._bag = [];\n }\n toggleReadonlyView(readonly) {\n // let the bindings do their job...\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n let val = this._bagToValue(this._bag);\n if (!this.compareValuePropertyValues(val, this.value)) {\n resolve(this.value = val);\n }\n else {\n reject();\n }\n });\n }\n acceptValue(val) {\n this._bag = this._valueToBag(val);\n }\n getViewValue(value) {\n return ''; // unneeded\n }\n compareValuePropertyValues(old, val) {\n return Utils.Json.stringify(old) === Utils.Json.stringify(val);\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Json.convert(attr);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'dictionary' && !first) {\n this.value = this._bagToValue();\n }\n }\n _bagToValue(bag = this._bag) {\n if (!this.dictionary) {\n // not a dictionary\n // return an array\n let b = [];\n for (let item of bag || []) {\n if (isEmpty(item)) {\n continue;\n }\n if (b.find(i => i.name === item.name && i.value === item.value)) {\n continue;\n }\n b.push(item);\n }\n return b;\n }\n // dictionary\n // return an object\n let v = {};\n for (let kvp of bag || []) {\n if (kvp.name in v) {\n // skip existing names...\n continue;\n }\n v[kvp.name] = kvp.value;\n }\n return v;\n }\n _valueToBag(val = this.value) {\n const bag = [];\n if (!Utils.isNullOrEmpty(val) && typeof val === 'object') {\n if (this.dictionary && !Utils.isArray(val)) {\n for (let prop in val) {\n bag.push({ name: prop, value: val[prop] });\n }\n }\n else if (!this.dictionary && Utils.isArray(val)) {\n Array.prototype.splice.apply(bag, [0, 0].concat(val.map(i => Utils.clone(i))));\n }\n }\n return !Utils.isNullOrEmpty(bag) ? bag : [pullEmpty()];\n }\n _deleteAt(evt) {\n this._bag.splice(evt.detail, 1);\n this.changeHandler(evt);\n }\n _addItem(evt) {\n const bag = this._bag, lastItem = this._bag[this._bag.length - 1];\n if (Utils.isEmpty(bag) || !isEmpty(lastItem)) {\n bag.push(pullEmpty());\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemNameValueListElement.prototype, \"dictionary\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemNameValueListElement.prototype, \"_bag\", void 0);\nPacemNameValueListElement = __decorate([\n CustomElement({\n tagName: P + '-namevalue-list', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater datasource=\"{{ :host._bag }}\" on-itemdelete=\":host._deleteAt($event)\">\r\n <template>\r\n <div class=\"${PCSS}-fieldset ${PCSS}-margin margin-bottom-1\">\r\n <div class=\"fieldset-auto\">\r\n <div class=\"${PCSS}-fieldgroup\">\r\n <${P}-input-text ${ITEM_TXT_CORE} value=\"{{ ^item.name, twoway }}\" on-change=\":host.changeHandler($event)\"></${P}-input-text>\r\n <div class=\"fieldgroup-prepend\"></div>\r\n </div>\r\n <div class=\"${PCSS}-fieldgroup\">\r\n <${P}-input-text ${ITEM_TXT_CORE} value=\"{{ ^item.value, twoway }}\" on-change=\":host.changeHandler($event)\"></${P}-input-text>\r\n <div class=\"fieldgroup-append\">\r\n <${P}-button class=\"${PCSS}-cell cols-2 flat delete\" hide=\"{{ :host.readonly }}\" command-name=\"delete\" command-argument=\"{{ ^index }}\"></${P}-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </template>\r\n <${P}-button class=\"flat add\" hide=\"{{ :host.readonly }}\" on-click=\":host._addItem($event)\"></${P}-button>\r\n</${P}-repeater>`\n })\n], PacemNameValueListElement);\nexport { PacemNameValueListElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, ViewChild, CustomElement, Watch, Utils, PropertyConverters, Defaults, CustomElementUtils } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\n/** A `<p-property-picker>` field: a {@link PacemBaseElement} wrapping a {@link PacemSelectElement} whose datasource is auto-populated with the (recursively flattened) watched property names of a `target` element. */\nlet PacemPropertyPickerElement = class PacemPropertyPickerElement extends PacemBaseElement {\n get inputFields() {\n return [this._select];\n }\n toggleReadonlyView(readonly) {\n this._select.readonly = readonly;\n }\n onChange(evt) {\n return Utils.fromResult(this.value = this._select.value);\n }\n acceptValue(val) {\n this._select.value = val;\n }\n getViewValue(value) {\n return this._select.viewValue;\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Element.convert(attr);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._databind();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'target':\n this._databind();\n break;\n }\n }\n }\n _databind() {\n const props = [], \n // recursive fn\n fnRec = (container, prop, name) => {\n const val = container[prop];\n if (typeof val === 'object' && val != null && !Utils.isArray(val)) {\n for (let key of Object.keys(val)) {\n const fullName = name + '.' + key;\n // add nested\n props.push(fullName);\n // try again (recursively)\n fnRec(val, key, fullName);\n }\n }\n };\n let src = this.target;\n if (!Utils.isNull(src)) {\n let observed = CustomElementUtils.getWatchedProperties(src);\n for (let obs of observed) {\n let name = obs.name;\n // add straight\n props.push(name);\n // dig nested stuff\n fnRec(src, name, name);\n }\n }\n this._select.datasource = props.sort();\n }\n};\n__decorate([\n ViewChild(P + '-select')\n], PacemPropertyPickerElement.prototype, \"_select\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemPropertyPickerElement.prototype, \"target\", void 0);\nPacemPropertyPickerElement = __decorate([\n CustomElement({\n tagName: P + '-property-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-select></${P}-select>`\n })\n], PacemPropertyPickerElement);\nexport { PacemPropertyPickerElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, ViewChild, CustomElement, Watch, Utils, PropertyConverters, Defaults } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\n/** A `<p-radio>` field: a {@link PacemBaseElement} wrapping a single native `<input type=\"radio\">` with a caption label; its `value` is the radio's native value when {@link selected}, otherwise `undefined`. Used standalone or as the item template driven by {@link PacemRadioListElement}. */\nlet PacemRadioElement = class PacemRadioElement extends PacemBaseElement {\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n constructor() {\n super();\n this._key = '_' + Utils.uniqueCode();\n }\n toggleReadonlyView(readonly) {\n this.span.hidden = !readonly;\n this._radio.hidden = /*this.label.hidden =*/ readonly;\n }\n get inputFields() {\n return [this._radio];\n }\n onChange(evt) {\n this.selected = this._radio.checked;\n const value = this.selected ? this._radio.value : undefined;\n return Utils.fromResult(value);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._radio.id = this._label.htmlFor = this._key;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'name':\n this._radio.name = val;\n break;\n case 'selected':\n (this._radio.checked = val) ?\n Utils.addClass(this, PCSS + '-selected')\n :\n Utils.removeClass(this, PCSS + '-selected');\n break;\n }\n }\n acceptValue(val) {\n this._radio.value = Utils.isNullOrEmpty(val) ? '' : val;\n }\n getViewValue(val) {\n if (!Utils.isNull(val))\n return this.caption;\n return '';\n }\n};\n__decorate([\n ViewChild(\"input[type=radio]\")\n], PacemRadioElement.prototype, \"_radio\", void 0);\n__decorate([\n ViewChild(\"label\")\n], PacemRadioElement.prototype, \"_label\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-readonly`)\n], PacemRadioElement.prototype, \"span\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemRadioElement.prototype, \"caption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemRadioElement.prototype, \"selected\", void 0);\nPacemRadioElement = __decorate([\n CustomElement({\n tagName: P + '-radio',\n template: `<${P}-span class=\"${PCSS}-readonly ${PCSS}-radio\" text=\"{{ :host.caption }}\"></${P}-span><input type=\"radio\" class=\"${PCSS}-input\" /><label class=\"${PCSS}-label ${PCSS}-radio ${PCSS}-viewfinder\"><${P}-text text=\"{{ :host.caption }}\"></${P}-text></label>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemRadioElement);\nexport { PacemRadioElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PCSS, PropertyChangeEventName, Utils, ViewChild } from '@pacem/pacem-core';\nimport { PacemDataSourceElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\n/** A `<p-radio-list>` field: a {@link PacemDataSourceElement} rendering the datasource as a group of mutually-exclusive `<p-radio>` buttons. */\nlet PacemRadioListElement = class PacemRadioListElement extends PacemDataSourceElement {\n acceptValue(val) {\n // no need to implement\n }\n constructor() {\n super();\n this['key'] = '_' + Utils.uniqueCode();\n }\n get inputFields() {\n return [];\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'disabled') {\n this._disable.model = val;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._disable.model = this.disabled;\n }\n toggleReadonlyView(readonly) {\n this._repeater.hidden = readonly;\n this._span.hidden = !readonly;\n }\n _selectionChanged(evt, index, item) {\n if (evt.detail.propertyName === 'selected' && evt.detail.currentValue === true) {\n this._selectedValue = this.mapEntityToValue(this.datasource[index]);\n this.changeHandler(evt);\n }\n }\n onChange(evt) {\n this.value = this._selectedValue;\n this.databind();\n return Utils.fromResult(this._selectedValue);\n }\n};\n__decorate([\n ViewChild(P + '-repeater')\n], PacemRadioListElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(P + '-data')\n], PacemRadioListElement.prototype, \"_disable\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemRadioListElement.prototype, \"_span\", void 0);\nPacemRadioListElement = __decorate([\n CustomElement({\n tagName: P + '-radio-list', template: `<${P}-repeater datasource=\"{{ :host.adaptedDatasource }}\">\r\n <ol class=\"${PCSS}-radio-list ${PCSS}-viewfinder\" pacem>\r\n <template>\r\n <li><${P}-radio disabled=\"{{ ::_disable.model || ^item.disabled }}\" name=\"{{ :host.key, once }}\" autobind=\"off\" caption=\"{{ ^item.viewValue }}\" value=\"{{ ^item.value }}\" selected=\"{{ :host.isDataSourceItemSelected(^item, :host.value) }}\"\r\non-focus=\":host.focusHandler($event)\" on-blur=\":host.focusHandler($event)\"\r\non-${PropertyChangeEventName}=\":host._selectionChanged($event, ^index, ^item)\"></${P}-radio></li>\r\n </template>\r\n </ol>\r\n</${P}-repeater><span class=\"${PCSS}-readonly ${PCSS}-radio\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span><${P}-data></${P}-data><${P}-content></${P}-content>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemRadioListElement);\nexport { PacemRadioListElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Components, PropertyConverters, Utils, P, PCSS, CustomElement, Watch, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemDataSourceElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\n/** A `<p-select>` field: a {@link PacemDataSourceElement} rendering the datasource as a native `<select>` dropdown. */\nlet PacemSelectElement = class PacemSelectElement extends PacemDataSourceElement {\n constructor() {\n super(...arguments);\n /** Gets or sets whether an extra, empty/placeholder `<option>` is prepended to the rendered choices. Defaults to `true`. */\n this.emptyOption = true;\n }\n toggleReadonlyView(readonly) {\n this._repeater.hidden = readonly;\n this._span.hidden = !readonly;\n }\n // no actual need to be idem-potent...\n // (take care in future)\n get inputFields() {\n return Utils.isNull(this._select)\n ? []\n : [this._select];\n }\n _manageDom(evt) {\n const args = evt.detail, item = args.item;\n let option = args.dom.find(o => o instanceof HTMLOptionElement);\n option.value = item.value;\n option.textContent = item.viewValue;\n option.disabled = item.disabled;\n option.selected = this.isDataSourceItemSelected(item);\n (Utils.isNullOrEmpty(option.value) ? Utils.addClass : Utils.removeClass).apply(this, [option, PCSS + '-watermark']);\n }\n onChange(evt) {\n let select = this._select, selectedIndex = select.selectedIndex, datasource = this.adaptedDatasource, item = selectedIndex >= 0 && datasource[selectedIndex], value;\n if (item != null) {\n value = item.value;\n }\n else\n value = undefined;\n return Utils.fromResult(this.value = value);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n // case 'required':\n case 'placeholder':\n case 'emptyOption':\n this.databind();\n break;\n }\n }\n buildAdaptedDatasource(ds = this.datasource) {\n let adapted = super.buildAdaptedDatasource(ds);\n if (adapted && this.emptyOption) {\n adapted.splice(0, 0, { viewValue: this.placeholder || '', value: undefined, data: undefined });\n }\n return adapted;\n }\n handleDatasourceMismatch(ds) {\n if (this.emptyOption) {\n super.handleDatasourceMismatch(ds);\n }\n else {\n // change value, since it does not exist in database and there's not null/empty fallback...\n if (Utils.isNullOrEmpty(ds)) {\n this.value = void 0;\n }\n else {\n this.value = ds[0].value;\n // ...you'll re-enter the acceptValue procedure with hopefully more luck.\n }\n }\n }\n ;\n acceptValue(val) {\n const ds = this.adaptedDatasource, item = ds && ds.filter(i => this.isDataSourceItemSelected(i, val));\n //let item = this.datasource && this.datasource.filter(i => this.isItemSelected(i));\n if (item && item.length == 1)\n this._select.selectedIndex = ds.indexOf(item[0]);\n else {\n this._select.value = undefined;\n let opts = this._select.options;\n if (opts.length > 0 && Utils.isNullOrEmpty(opts[0].value)) {\n this._select.selectedIndex = 0;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n //select.addEventListener(\"change\", this.changeHandler, false);\n var options = { capture: false, passive: false };\n this._select.addEventListener(\"wheel\", this.emitHandler, options);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._select)) {\n //select.removeEventListener(\"change\", this.changeHandler, false);\n var options = { capture: false, passive: false };\n this._select.removeEventListener(\"wheel\", this.emitHandler, options);\n }\n super.disconnectedCallback();\n }\n};\n__decorate([\n ViewChild('select')\n], PacemSelectElement.prototype, \"_select\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemSelectElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemSelectElement.prototype, \"_span\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemSelectElement.prototype, \"emptyOption\", void 0);\nPacemSelectElement = __decorate([\n CustomElement({\n tagName: P + '-select', template: `<${P}-repeater datasource=\"{{ :host.adaptedDatasource }}\" on-${Components.RepeaterItemCreateEventName}=\":host._manageDom($event)\">\r\n <select class=\"${PCSS}-select ${PCSS}-viewfinder\">\r\n <template>\r\n <option></option>\r\n </template>\r\n </select>\r\n</${P}-repeater><span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span><${P}-content></${P}-content>`, shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemSelectElement);\nexport { PacemSelectElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { P, PCSS, ViewChild, CustomElement, Watch, Utils, PropertyConverters, Defaults, avoidHandler, Components, UI } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\n// TODO: exploit 202x features like https://developer.mozilla.org/en-US/docs/Web/CSS/offset-path or https://developer.chrome.com/blog/anchor-positioning-api\n/** A `<p-slider>` field: a {@link PacemBaseElement} numeric range control with a draggable thumb, keyboard support, and an optional tooltip-style thumb label; its `value` is a number between `min` and `max`. */\nlet PacemSliderElement = class PacemSliderElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this.inputFields = [];\n this._dragHandler = (evt) => {\n evt.preventDefault();\n this._computeAndAssignValue(evt.detail.currentPosition.x, this.changePolicy !== 'end');\n };\n this._endHandler = (evt) => {\n evt.preventDefault();\n this._computeAndAssignValue(evt.detail.currentPosition.x, this.changePolicy === 'end');\n };\n this._startHandler = (evt) => {\n this._thumb.focus();\n };\n this._downHandler = (evt) => {\n const x = evt instanceof MouseEvent ? evt.clientX : evt.touches && evt.touches.length && evt.touches[0].clientX, trackSize = this._trackSize;\n if (!Utils.isNullOrEmpty(trackSize)) {\n this._computeAndAssignValue(x, true);\n }\n };\n this._keydownHandler = (evt) => {\n switch (evt.keyCode) {\n case 39: // right\n case 37: // left\n avoidHandler(evt);\n let forward = evt.keyCode === 39; // TODO: include rtl!\n let step = (typeof this.step !== 'number' ? 1.0 : this.step) * (forward ? 1 : -1);\n let cease = false;\n let ceaseFn = (evt) => {\n cease = true;\n window.removeEventListener('keyup', ceaseFn, false);\n Utils.removeClass(this, 'slider-keydown');\n };\n window.addEventListener('keyup', ceaseFn, false);\n Utils.addClass(this, 'slider-keydown');\n Utils.accelerateCallback(token => {\n if (!(token.cancel = cease)) {\n this._setValue(this.value + step);\n }\n });\n break;\n }\n };\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n if (evt.type === 'slide') {\n resolve(this.value = evt.detail);\n }\n resolve(this.value);\n });\n }\n _draw(val = this.value) {\n const trackSize = this._trackSize;\n if (Utils.isNull(trackSize)) {\n return;\n }\n const v = Utils.isNullOrEmpty(val) ? this.min : parseFloat(val);\n const percentage = Math.min(1, Math.max(0, (v - this.min) / (this.max - this.min)));\n this._progress.style.transform = `scale(${(percentage)}, 1)`;\n this._thumb.style.transform = `translateX(${Math.round(percentage * trackSize.width)}px)`;\n }\n _format(v) {\n const intl = this.format;\n if (!Utils.isNullOrEmpty(intl)) {\n return new Intl.NumberFormat(Utils.lang(this), intl).format(v);\n }\n // fallback\n let sv = '-';\n if (!Utils.isNull(v)) {\n sv = v.toLocaleString();\n }\n let evt = new CustomEvent(\"formatvalue\", { detail: { value: v } });\n this.dispatchEvent(evt);\n return Utils.isNull(evt.detail.output) ? sv : evt.detail.output;\n }\n acceptValue(val) {\n this._draw(val);\n }\n getViewValue(value) {\n return this._format(value);\n }\n convertValueAttributeToProperty(attr) {\n return parseFloat(attr);\n }\n toggleReadonlyView(readonly) {\n this._thumb.hidden = readonly;\n const css = 'cursor-pointer';\n if (readonly) {\n Utils.removeClass(this._max, css);\n Utils.removeClass(this._min, css);\n }\n else {\n Utils.addClass(this._max, css);\n Utils.addClass(this._min, css);\n }\n }\n _setTrackSize(evt) {\n const size = evt.detail;\n this._trackSize = { x: size.left, y: size.top, width: size.width, height: size.height };\n this._draw(this.value);\n }\n _computeAndAssignValue(x, triggerChange) {\n if (this.readonly || this.disabled) {\n return;\n }\n // constraint to track size to compute the slider value\n const constraint = this._trackSize, step = this.step;\n let perc = (x - constraint.x) / constraint.width;\n let v = (this.max - this.min) * perc + this.min;\n if (typeof step === 'number') {\n v = Math.round(v / step) * step;\n }\n if (triggerChange) {\n this._setValue(v);\n }\n else {\n this._draw(v);\n }\n }\n _setValue(v) {\n if (isNaN(v) || Utils.isNull(v)) {\n // keep in sync with pacem-input-number logic (TODO: centralize code, this is a fix)\n // cast NaN to undefined\n v = undefined;\n }\n else {\n if (!isNaN(this.min) && v < this.min) {\n v = this.min;\n }\n if (!isNaN(this.max) && v > this.max) {\n v = this.max;\n }\n }\n this.changeHandler(new CustomEvent('slide', { detail: v }));\n }\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('mousedown', this._downHandler, false);\n this.addEventListener('touchstart', this._downHandler, { passive: false, capture: false });\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._dragger.addEventListener(UI.DragDropEventType.Init, this._startHandler, false);\n this._dragger.addEventListener(UI.DragDropEventType.Drag, this._dragHandler, false);\n this._dragger.addEventListener(UI.DragDropEventType.End, this._endHandler, false);\n this._thumb.addEventListener('keydown', this._keydownHandler, false);\n this._min.text = this._format(this.min);\n this._max.text = this._format(this.max);\n // balloon\n const balloon = this._shellProxy.dom[0];\n if (!Utils.isNull(balloon)) {\n balloon.target = this._thumb;\n balloon.options = {\n trigger: ComponentsUI.UI.BalloonTrigger.Focus,\n trackPosition: true,\n position: ComponentsUI.UI.BalloonPosition.Top,\n align: ComponentsUI.UI.BalloonAlignment.Center,\n behavior: ComponentsUI.UI.BalloonBehavior.Tooltip,\n hoverDelay: 0, hoverTimeout: 0\n };\n this._syncThumbLabel();\n }\n //\n this._thumb.tabIndex = 0;\n }\n _syncThumbLabel(thumbLabel = this.thumbLabel) {\n const balloon = this._shellProxy.dom[0];\n (thumbLabel ? Utils.addClass : Utils.removeClass).apply(this, [this, 'slider-thumblabel']);\n balloon.disabled = !thumbLabel;\n }\n disconnectedCallback() {\n this.removeEventListener('mousedown', this._downHandler, false);\n this.removeEventListener('touchstart', this._downHandler, { capture: false });\n if (!Utils.isNull(this._dragger)) {\n this._dragger.removeEventListener(UI.DragDropEventType.End, this._endHandler, false);\n this._dragger.removeEventListener(UI.DragDropEventType.Drag, this._dragHandler, false);\n this._dragger.removeEventListener(UI.DragDropEventType.Init, this._startHandler, false);\n }\n if (!Utils.isNull(this._thumb)) {\n this._thumb.removeEventListener('keydown', this._keydownHandler, false);\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (first) {\n return;\n }\n switch (name) {\n case 'thumbLabel':\n this._syncThumbLabel(val);\n break;\n case 'min':\n case 'max':\n if (!Utils.isNull(this._max) && !Utils.isNull(this._min)) {\n this._min.text = this._format(this.min);\n this._max.text = this._format(this.max);\n }\n this._setValue(this.value);\n this._draw();\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSliderElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSliderElement.prototype, \"max\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemSliderElement.prototype, \"thumbLabel\", void 0);\n__decorate([\n Watch({\n emit: false, converter: {\n convert: (attr) => {\n let v = parseFloat(attr);\n if (isNaN(v)) {\n return 'any';\n }\n return v;\n }, convertBack: (v) => (v || '').toString()\n }\n })\n], PacemSliderElement.prototype, \"step\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemSliderElement.prototype, \"changePolicy\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemSliderElement.prototype, \"format\", void 0);\n__decorate([\n ViewChild(`.slider-track`)\n], PacemSliderElement.prototype, \"_track\", void 0);\n__decorate([\n ViewChild(`.slider-progress`)\n], PacemSliderElement.prototype, \"_progress\", void 0);\n__decorate([\n ViewChild(`.slider-thumb`)\n], PacemSliderElement.prototype, \"_thumb\", void 0);\n__decorate([\n ViewChild(`${P}-text[min]`)\n], PacemSliderElement.prototype, \"_min\", void 0);\n__decorate([\n ViewChild(`${P}-text[max]`)\n], PacemSliderElement.prototype, \"_max\", void 0);\n__decorate([\n ViewChild(`${P}-drag-drop`)\n], PacemSliderElement.prototype, \"_dragger\", void 0);\n__decorate([\n ViewChild(`${P}-shell-proxy`)\n], PacemSliderElement.prototype, \"_shellProxy\", void 0);\nPacemSliderElement = __decorate([\n CustomElement({\n tagName: P + '-slider',\n template: `<div class=\"${PCSS}-viewfinder ${PCSS}-slider\"><${P}-text text=\"{{ :host._format(:host.min) }}\" min></${P}-text>\r\n <div class=\"slider-track\"><div class=\"slider-progress\"></div></div>\r\n <${P}-panel class=\"${PCSS}-clickable slider-thumb\" behaviors=\"{{ [::_dragger] }}\">\r\n <div class=\"thumb-label\"></div>\r\n </${P}-panel>\r\n <${P}-text text=\"{{ :host._format(:host.max) }}\" max></${P}-text>\r\n <div class=\"slider-footer\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></div>\r\n </div>\r\n<${P}-drag-drop lock-timeout=\"0\"></${P}-drag-drop><${P}-resize watch-position=\"true\" on-${Components.ResizeEventName}=\":host._setTrackSize($event)\" target=\"{{ ::_track }}\"></${P}-resize>\r\n<${P}-shell-proxy><${P}-balloon class=\"text-center\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></${P}-balloon></${P}-shell-proxy>\r\n`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemSliderElement);\nexport { PacemSliderElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomTypedEvent, CustomElement, Watch, ViewChild, Defaults, PCSS, P, Components, PropertyConverters, Utils, avoidHandler, Logging, CustomElementUtils } from '@pacem/pacem-core';\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { PacemDataSourceElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nclass SuggestionSelectEvent extends CustomTypedEvent {\n constructor(value) {\n super('suggestionselect', { selectedValue: value });\n }\n}\nconst BALLOON_POPUP_DELAY = 100;\nconst BALLOON_POPOUT_DELAY = 0;\n/** A `<p-suggest>` field: a {@link PacemDataSourceElement} autocomplete/typeahead text input, backed by a native `<input type=\"text\">` and a dropdown balloon of filtered, highlighted suggestions; optionally accepts free-typed values not present in the datasource. */\nlet PacemSuggestElement = class PacemSuggestElement extends PacemDataSourceElement {\n constructor() {\n super(...arguments);\n this._toggleBtnHandler = (evt) => {\n evt.preventDefault();\n if (!this.disabled) {\n this._balloon.toggle();\n }\n };\n this._clearBtnHandler = (evt) => {\n evt.preventDefault();\n this.hint = this._input.value = '';\n this.value = void 0;\n this._focus(null);\n this.changeHandler(new SuggestionSelectEvent(null));\n };\n this._balloonPopupHandler = (evt) => {\n Utils.addClass(this._btnArrow, 'rotate-180');\n };\n this._balloonPopoutHandler = (evt) => {\n Utils.removeClass(this._btnArrow, 'rotate-180');\n };\n this._inputHandler = (evt) => {\n switch (evt.keyCode) {\n case 9 /*tab*/:\n case 13 /*enter*/:\n break;\n default:\n this._focus(null);\n this.hint = this._input.value;\n this.changeHandler(new SuggestionSelectEvent(null));\n break;\n }\n };\n this._keyupHandler = (evt) => {\n if (this.#keyupManaged) {\n avoidHandler(evt);\n this.#keyupManaged = false;\n }\n };\n this._focusHandler = (evt) => {\n if (this.preventFocus) {\n // manage the balloon toggle manually (since focus won't be dispatched)\n evt.preventDefault();\n const balloon = this._balloon;\n if (!balloon.visible) {\n this.popup();\n }\n else {\n this.popout();\n }\n }\n const actualHint = this._input.value;\n if (this.viewValue != actualHint) {\n this._databind();\n }\n // now just lean on the balloon's trigger, it will popup eventually...\n };\n this._blurHandler = (evt) => {\n this._undo();\n };\n this.#keyupManaged = false;\n this._keydownHandler = (evt) => {\n var managed = false;\n if (Utils.isNull(this.#selectedItem)) {\n const el = this._findFirstAvailableListItem();\n if (!Utils.isNull(el)) {\n switch (evt.keyCode) {\n case 40: /*arrow down*/\n //case 9: /*tab*/\n //case 13: /* enter */ \n avoidHandler(evt);\n this._focus(el);\n break;\n case 13: /* enter */\n avoidHandler(evt);\n managed = true;\n if (this.#datasource.length === 1) {\n this._select(el);\n }\n else {\n this._focus(el);\n }\n break;\n }\n }\n }\n else {\n var li = this.#selectedItem, cursor = li, target;\n const skipPredicate = (e) => !Utils.isNull(e) && e.localName === 'li' && e.dataset['pacemDisabled'] === 'true', matchPredicate = (e) => !Utils.isNull(e) && e.localName === 'li' && e.dataset['pacemDisabled'] !== 'true';\n switch (evt.keyCode) {\n case 38 /*arrow up*/:\n avoidHandler(evt);\n do {\n cursor = cursor.previousElementSibling;\n if (matchPredicate(cursor)) {\n target = cursor;\n break;\n }\n } while (skipPredicate(cursor));\n target ??= li;\n break;\n case 40 /*arrow down*/:\n avoidHandler(evt);\n do {\n cursor = (cursor.nextElementSibling);\n if (matchPredicate(cursor)) {\n target = cursor;\n break;\n }\n } while (skipPredicate(cursor));\n target ??= li;\n break;\n case 27 /*esc*/:\n avoidHandler(evt);\n this._undo();\n this.popout();\n break;\n case 9 /*tab*/:\n case 13 /*enter*/:\n // case 32 /*space-bar*/:\n avoidHandler(evt);\n managed = true;\n this._select();\n break;\n }\n this._focus(target);\n this.#keyupManaged = managed;\n }\n };\n this._selectHandler = (evt) => {\n avoidHandler(evt);\n this._select(evt.currentTarget);\n };\n }\n get inputFields() {\n return [this._input];\n }\n acceptValue(val) {\n if ( /*!this._isTyping && */(this.allowNew || !Utils.isNullOrEmpty(this.datasource))) {\n this._input.value = this.getViewValue(val) || (this._isTyping ? this._input.value : '');\n }\n }\n getViewValue(val) {\n var superValue = super.getViewValue(val);\n if (Utils.isNullOrEmpty(superValue) && this.allowNew && !Utils.isNullOrEmpty(val)) {\n superValue = this.mapEntityToViewValue(val);\n }\n return superValue;\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n // change triggered elsewhere... (see _afterSelectHandler)\n if (evt.type === 'suggestionselect') {\n const val = evt.detail.selectedValue;\n this.value = val;\n if (val) {\n this.popout();\n }\n resolve(val);\n }\n else {\n // keep the current value\n resolve(this.value);\n }\n });\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setDropdownMode();\n this._setupItemTemplate();\n var balloon = this._createBalloon();\n balloon.appendChild(this._repeater);\n this._checkBalloon(balloon);\n const shell = CustomElementUtils.findAncestorShell(this);\n shell.appendChild(balloon);\n this._balloon = balloon;\n this._input.addEventListener('mousedown', this._focusHandler, false);\n this._input.addEventListener('keydown', this._keydownHandler, false);\n this._input.addEventListener('keyup', this._keyupHandler, false);\n this._input.addEventListener('focus', this._focusHandler, false);\n this._input.addEventListener('blur', this._blurHandler, false);\n this._input.addEventListener('input', this._inputHandler, false);\n this._btnClear.addEventListener('mousedown', this._clearBtnHandler, false);\n this._btnArrow.addEventListener('mousedown', this._toggleBtnHandler, false);\n this._databind();\n this._syncButtons();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (Utils.isNull(this._balloon)) {\n return;\n }\n const typing = this._isTyping;\n switch (name) {\n case 'adaptedDatasource':\n if (!Utils.isNullOrEmpty(val)) {\n if (!typing) {\n this._input.value = this.getViewValue(this.value);\n }\n else {\n this.popup();\n }\n }\n else {\n this.popout();\n }\n break;\n case 'hint':\n if (!typing && val !== this._input.value) {\n this._input.value = val;\n this.#selectedItem = null;\n }\n break;\n case 'readonly':\n // overrides default behavior: attribute synchronization (see `PacemBaseElement` in types.ts)\n this._setDropdownMode();\n // then fall below\n case 'disabled':\n case 'value':\n this._checkBalloon();\n break;\n case 'itemtemplate':\n if (!first) {\n this._setupItemTemplate();\n }\n break;\n case 'allowTyping':\n if (!first) {\n this._setDropdownMode();\n }\n break;\n }\n if (['adaptedDatasource', 'hint', 'value'].indexOf(name) >= 0) {\n this._databind();\n }\n if (['allowTyping', 'value', 'hint'].indexOf(name) >= 0) {\n this._syncButtons();\n }\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._balloon)) {\n this._balloon.removeEventListener('popup', this._balloonPopupHandler, false);\n this._balloon.removeEventListener('popout', this._balloonPopoutHandler, false);\n this._balloon.remove();\n }\n if (!Utils.isNull(this._input)) {\n this._input.removeEventListener('mousedown', this._focusHandler, false);\n this._input.removeEventListener('focus', this._focusHandler, false);\n this._input.removeEventListener('blur', this._blurHandler, false);\n this._input.removeEventListener('keydown', this._keydownHandler, false);\n this._input.removeEventListener('keyup', this._keyupHandler, false);\n this._input.removeEventListener('input', this._inputHandler, false);\n }\n if (!Utils.isNull(this._btnClear)) {\n this._btnClear.removeEventListener('mousedown', this._clearBtnHandler, false);\n }\n if (!Utils.isNull(this._btnArrow)) {\n this._btnArrow.addEventListener('mousedown', this._toggleBtnHandler, false);\n }\n super.disconnectedCallback();\n }\n #datasource;\n _databind() {\n if (!Utils.isNull(this._repeater)) {\n const ds = this.#datasource = this._filter(this.adaptedDatasource, this._input.value);\n this._repeater.datasource = ds;\n }\n }\n _syncButtons() {\n if (!Utils.isNull(this._btnArrow)) {\n // hide=\"{{ !$pacem.isNullOrEmpty(:host.hint || :host.value) || :host.allowTyping !== false }}\"\n this._btnArrow.hide = this.allowTyping !== false || !Utils.isNullOrEmpty(this._input.value || this.value);\n }\n if (!Utils.isNull(this._btnClear)) {\n // hide=\"{{ $pacem.isNullOrEmpty(:host.hint || :host.value) }}\"\n this._btnClear.hide = this.readonly || Utils.isNullOrEmpty(this._input.value || this.value);\n }\n }\n get _isTyping() {\n return Utils.is(this._input, ':focus'); // && this.viewValue !== this._input.value;\n }\n _undo() {\n this._focus(null);\n this.hint = this._input.value = this.getViewValue(this.value) || '';\n }\n _findFirstAvailableListItem() {\n var el;\n if (this._balloon.visible === true && !Utils.isNull(el = this._repeater.querySelector('ol > li'))) {\n while (!Utils.isNull(el) && el.dataset['pacemDisabled'] === 'true' && el.localName === 'li') {\n el = el.nextElementSibling;\n }\n }\n return el;\n }\n #keyupManaged;\n _setDropdownMode(allowTyping = this.allowTyping) {\n this._input.readOnly = !(allowTyping ?? true);\n }\n _setupItemTemplate() {\n if (this.itemtemplate instanceof HTMLTemplateElement) {\n const frag = this.itemtemplate.cloneNode(true).content;\n const tmpl = document.createElement('template');\n const li = document.createElement('li');\n li.append(frag);\n tmpl.content.appendChild(li);\n this._tmplProxy.target = tmpl;\n }\n else {\n this._tmplProxy.target = this._defaultTemplate;\n }\n }\n #selectedItem;\n _focus(el) {\n if (this.preventFocus) {\n return;\n }\n if (Utils.isNull(el)) {\n this.#selectedItem = null;\n return;\n }\n const siblings = el.parentElement.children;\n for (let j = 0; j < siblings.length; j++) {\n const item = siblings.item(j);\n if (item === el) {\n item.dataset['pacemFocused'] = 'true';\n this.#selectedItem = item;\n const input = this._input, viewValue = input.value = JSON.parse(item.dataset['pacemViewValue']);\n input.setSelectionRange(viewValue.length, viewValue.length);\n }\n else {\n delete item.dataset['pacemFocused'];\n }\n }\n }\n _select(el = this.#selectedItem) {\n const value = JSON.parse(el.dataset['pacemValue']), disabled = el.dataset['pacemDisabled'] === 'true';\n if (!disabled) {\n this.changeHandler(new SuggestionSelectEvent(value));\n }\n }\n _filter(ds, hint, value = this.value) {\n let datasource = ds || [];\n //if (!Utils.isNull(value)) {\n // datasource = datasource.filter(i => i.value == value);\n //} else \n if (!Utils.isNullOrEmpty(hint && hint.trim())) {\n const lowerHints = hint.toLowerCase().split(' ');\n let filtered = datasource.filter(i => {\n for (let lowerHint of lowerHints) {\n if (i.viewValue?.toLowerCase().indexOf(lowerHint) >= 0) {\n return true;\n }\n // check the whole 'data' object, just in case\n const filters = this.filterFields;\n if (!Utils.isNullOrEmpty(filters)) {\n const iData = i.data;\n if (typeof iData === 'object' && !Utils.isNullOrEmpty(iData)) {\n for (let filter of filters) {\n const filterStruct = filter.split('.');\n let j = 0;\n let value = iData;\n while (!Utils.isNull(value) && j < filterStruct.length) {\n value = value[filterStruct[j]];\n j++;\n }\n if (Utils.isNullOrEmpty(value)) {\n continue;\n }\n if (value.toString().toLowerCase().indexOf(lowerHint) >= 0) {\n return true;\n }\n }\n }\n }\n }\n return false;\n });\n const concatenate = this.allowNew\n // only concatenate on plain strings...\n && Utils.isNullOrEmpty(this.valueProperty)\n && Utils.isNullOrEmpty(this.textProperty)\n // ...and no matches are available\n && (Utils.isNullOrEmpty(filtered) || Utils.isNull(filtered.find(i => i.viewValue === hint)));\n datasource = concatenate ? [{ value: hint, viewValue: hint, data: hint }].concat(filtered) : filtered;\n }\n let retval = datasource;\n if (this.allowTyping !== false) {\n // max-suggestions enabled only when typing is allowed (default)\n retval = datasource.slice(0, this.maxSuggestions || 10);\n }\n //\n if (this._isTyping) {\n this.popup();\n }\n this._balloon.style.opacity = Utils.isNullOrEmpty(retval) ? '0' : '';\n this.log(Logging.LogLevel.Log, `${retval.length} dropdown suggestion(s), given hint '${hint}' and ${(ds || []).length} datasource items`);\n return retval;\n }\n _itemCreate(evt) {\n const li = evt.detail.dom.find(i => i instanceof HTMLLIElement);\n const item = evt.detail.item;\n const index = evt.detail.index;\n const disabled = item.disabled === true;\n li.tabIndex = disabled ? -1 : 0;\n li.dataset['pacemValue'] = JSON.stringify(item.value);\n li.dataset['pacemViewValue'] = JSON.stringify(item.viewValue);\n li.dataset['pacemDisabled'] = disabled.toString();\n li.addEventListener('mousedown', this._selectHandler, false);\n }\n _itemRemove(evt) {\n const li = evt.detail.dom.find(i => i instanceof HTMLLIElement);\n li.removeEventListener('mousedown', this._selectHandler, false);\n }\n toggleReadonlyView(readonly) {\n this.span.hidden = !readonly;\n this._input.hidden = readonly;\n if (readonly) {\n this._btnClear.hide = this._btnArrow.hide = true;\n }\n else {\n this._syncButtons();\n }\n }\n /*\n Balloon and repeater\n */\n popup(delay = BALLOON_POPUP_DELAY) {\n if (!Utils.isNullOrEmpty(this.adaptedDatasource) && Utils.isVisible(this)) {\n //console.log('Popping up from here...');\n this._balloon?.popup(delay);\n }\n }\n popout(delay = BALLOON_POPOUT_DELAY) {\n this.#selectedItem = null;\n this._balloon?.popout(delay);\n }\n _checkBalloon(balloon = this._balloon) {\n if (!Utils.isNull(balloon)) {\n const hasValue = !Utils.isNullOrEmpty(this.value) && !Utils.isNullOrEmpty(this._input.value) /* && Utils.isNullOrEmpty(this.hint)*/;\n balloon.disabled = hasValue || this.readonly || this.disabled || /* normalize to an actual boolean */ false; // || Pacem.Utils.isNullOrEmpty(this.adaptedDatasource);\n }\n }\n _createBalloon() {\n /*<${ P }-balloon target=\"{{ ::_input }}\" options=\"{ position: 'bottom', align: 'left', behavior: 'inert', hoverDelay: 0 }\"\ndisabled=\"{{ :host.readonly || Pacem.Utils.isNullOrEmpty(:host.adaptedDatasource) }}\">*/\n const balloon = document.createElement(P + '-balloon');\n Utils.addClass(balloon, 'suggest dropdown');\n balloon.options = {\n trackPosition: true,\n trigger: ComponentsUI.UI.BalloonTrigger.Focus,\n position: ComponentsUI.UI.BalloonPosition.VerticalAuto,\n size: ComponentsUI.UI.BalloonSizing.Match,\n align: ComponentsUI.UI.BalloonAlignment.Start,\n behavior: ComponentsUI.UI.BalloonBehavior.Menu, // UI.BalloonBehavior.Inert,\n hoverDelay: BALLOON_POPUP_DELAY, hoverTimeout: BALLOON_POPOUT_DELAY\n };\n balloon.addEventListener('popup', this._balloonPopupHandler, false);\n balloon.addEventListener('popout', this._balloonPopoutHandler, false);\n balloon.target = this._input;\n return balloon;\n }\n};\n__decorate([\n ViewChild('input[type=text]')\n], PacemSuggestElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemSuggestElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemSuggestElement.prototype, \"span\", void 0);\n__decorate([\n ViewChild(`template`)\n], PacemSuggestElement.prototype, \"_defaultTemplate\", void 0);\n__decorate([\n ViewChild(P + '-template-proxy')\n], PacemSuggestElement.prototype, \"_tmplProxy\", void 0);\n__decorate([\n ViewChild(`${P}-button[toggle]`)\n], PacemSuggestElement.prototype, \"_btnArrow\", void 0);\n__decorate([\n ViewChild(`${P}-button[clear]`)\n], PacemSuggestElement.prototype, \"_btnClear\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemSuggestElement.prototype, \"hint\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSuggestElement.prototype, \"maxSuggestions\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemSuggestElement.prototype, \"allowTyping\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemSuggestElement.prototype, \"preventFocus\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemSuggestElement.prototype, \"itemtemplate\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.StringArray })\n], PacemSuggestElement.prototype, \"filterFields\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemSuggestElement.prototype, \"allowNew\", void 0);\nPacemSuggestElement = __decorate([\n CustomElement({\n tagName: P + '-suggest', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-relative\"><input type=\"text\" class=\"${PCSS}-input\" />\r\n<${P}-button clear tab-order=\"-1\"\r\nclass=\"button-flat ${PCSS}-anim anim-pop anim-sudden anim-quick pos-absolute absolute-right absolute-top display-block ${PCSS}-margin margin-0\" \r\n icon-glyph=\"highlight_off\"></${P}-button>\r\n<${P}-button \r\nclass=\"button-flat icon-rotate ${PCSS}-anim anim-pop anim-sudden anim-quick pos-absolute absolute-right absolute-top display-block ${PCSS}-margin margin-0\" \r\n icon-glyph=\"arrow_drop_down\" tab-order=\"-1\" toggle></${P}-button>\r\n</div>\r\n<span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>\r\n<${P}-repeater on-${Components.RepeaterItemCreateEventName}=\":host._itemCreate($event)\" on-${Components.RepeaterItemRemoveEventName}=\":host._itemRemove($event)\">\r\n <ol>\r\n <${P}-template-proxy></${P}-template-proxy>\r\n </ol>\r\n</${P}-repeater><${P}-content></${P}-content>\r\n<template>\r\n <li><${P}-span content=\"{{ $pacem.highlight(^item.viewValue, :host.hint) }}\"></${P}-span></li>\r\n</template>`\n })\n], PacemSuggestElement);\nexport { PacemSuggestElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PCSS, Components, CustomTypedEvent, PropertyConverters, Watch, Utils, ViewChild } from '@pacem/pacem-core';\nimport { PacemDataSourceElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nclass TagRemoveEvent extends CustomTypedEvent {\n constructor(value) {\n super('tagremove', { index: value });\n }\n}\nclass TagAddEvent extends CustomTypedEvent {\n constructor(value) {\n super('tagadd', { value: value });\n }\n}\n/** A single `<p-tag>` chip: displays a label and a remove button, dispatching a `remove` event (after an out-transition) when dismissed. Rendered by {@link PacemTagsElement} for each item in its `value`. */\nlet PacemTagElement = class PacemTagElement extends Components.PacemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'readonly':\n let readonly = !!val;\n (readonly ? Utils.addClass : Utils.removeClass)(this, 'tag-readonly');\n this._btn.disabled = this._btn.hide = readonly;\n break;\n case 'tag':\n Utils.removeClass(this, 'tag-out');\n break;\n }\n }\n _remove() {\n const tag = this;\n Utils.addClass(tag, 'tag-out');\n Utils.addAnimationEndCallback(tag, () => {\n this.dispatchEvent(new Event(\"remove\"));\n });\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemTagElement.prototype, \"tag\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemTagElement.prototype, \"readonly\", void 0);\n__decorate([\n ViewChild(P + '-button')\n], PacemTagElement.prototype, \"_btn\", void 0);\nPacemTagElement = __decorate([\n CustomElement({\n tagName: P + '-tag', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-text text=\"{{ :host.tag }}\"></${P}-text>\r\n <${P}-button on-click=\":host._remove()\"></${P}-button>`\n })\n], PacemTagElement);\nexport { PacemTagElement };\n/** A `<p-tags>` field: a {@link PacemDataSourceElement} editor rendering `value` as a list of removable {@link PacemTagElement} chips, plus a {@link PacemSuggestElement} for picking (or, when {@link allowNew} is set, typing) new tags to add. */\nlet PacemTagsElement = class PacemTagsElement extends PacemDataSourceElement {\n constructor() {\n super(true);\n this.inputFields = [];\n }\n toggleReadonlyView(readonly) {\n this._suggest.readonly = readonly;\n this.querySelector('.tag-new').hidden = readonly;\n }\n _tagRemove(ndx) {\n this.changeHandler(new TagRemoveEvent(ndx));\n }\n _tagAdd(v) {\n this.changeHandler(new TagAddEvent(v));\n // after the - just in case - assignment => reset the suggest component\n }\n handleDatasourceMismatch() {\n // do nothing!\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'datasource':\n case 'textProperty':\n this._suggest[name] = val;\n break;\n case 'valueProperty':\n // DON't pass the value-property to the suggest\n if (!Utils.isNullOrEmpty(val)) {\n throw `Cannot set 'valueProperty' on ${this.constructor.name}s.`;\n }\n break;\n case 'value':\n this._tags.datasource = val;\n break;\n }\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n switch (evt.type) {\n case 'tagremove':\n this._justAddedIndex = -1;\n const trev = evt, ndxrev = trev.detail.index, \n // manipulate a copy of the array (to preserve the originalValue)\n valrev = Utils.clone(this.value);\n const trunk2 = valrev.splice(ndxrev + 1), trunk1 = valrev.splice(0, ndxrev);\n resolve(this.value = trunk1.concat(trunk2));\n break;\n case 'tagadd':\n const value = evt.detail.value, \n // manipulate a copy of the array (to preserve the originalValue)\n valadd = Utils.clone(this.value);\n if ( // no empty items\n !Utils.isNullOrEmpty(value)\n // no duplicated items\n && (this.allowDuplicates || Utils.isNullOrEmpty(valadd && valadd.find(i => this.mapEntityToViewValue(i) == this.mapEntityToViewValue(value))))) {\n let newvalue = (valadd || []).concat([value]);\n resolve(this.value = newvalue);\n this._justAddedIndex = this.value.length - 1;\n setTimeout(() => {\n this._suggest.focus();\n }, 250);\n // this will allow to accept the hint change...\n this._suggest.blur();\n this._suggest.hint = '';\n this._suggest.reset();\n }\n break;\n default:\n resolve(this.value);\n break;\n }\n });\n }\n acceptValue(val) {\n // no need to implement\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemTagsElement.prototype, \"hint\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemTagsElement.prototype, \"allowDuplicates\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemTagsElement.prototype, \"allowNew\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemTagsElement.prototype, \"_justAddedIndex\", void 0);\n__decorate([\n ViewChild(P + '-suggest')\n], PacemTagsElement.prototype, \"_suggest\", void 0);\n__decorate([\n ViewChild(P + '-repeater.' + PCSS + '-tags')\n], PacemTagsElement.prototype, \"_tags\", void 0);\nPacemTagsElement = __decorate([\n CustomElement({\n tagName: P + '-tags', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater class=\"${PCSS}-tags\">\r\n <ul class=\"${PCSS}-tags ${PCSS}-viewfinder ${PCSS}-list list-unstyled list-inline\">\r\n <template>\r\n <li class=\"${PCSS}-tag\">\r\n <${P}-tag on-remove=\":host._tagRemove(^index)\" css-class=\"{{ { 'tag-in': :host._justAddedIndex === ^index } }}\" tag=\"{{ :host.mapEntityToViewValue(^item) }}\" readonly=\"{{ :host.readonly }}\"></${P}-tag>\r\n </li>\r\n </template>\r\n <li class=\"tag-new\">\r\n <${P}-suggest logger=\"{{ :host.logger }}\" placeholder=\"{{ :host.placeholder }}\" allow-new=\"{{ :host.allowNew }}\" class=\"${PCSS}-tags\" on-change=\":host._tagAdd($this.value)\" hint=\"{{ :host.hint, twoway }}\">\r\n <${P}-content></${P}-content>\r\n </${P}-suggest>\r\n </li>\r\n </ul>\r\n</${P}-repeater>`\n })\n], PacemTagsElement);\nexport { PacemTagsElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, PropertyConverters, Utils } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\n/** A `<p-textarea>` field: a {@link PacemTextualInputElement} backed by a native `<textarea>`, with an optional character counter. */\nlet PacemTextAreaElement = class PacemTextAreaElement extends PacemTextualInputElement {\n constructor() {\n super(...arguments);\n /** Gets or sets the native `<textarea>`'s `rows` attribute. Defaults to `5`. */\n this.rows = 5;\n /** Gets or sets the native `<textarea>`'s `cols` attribute. Defaults to `50`. */\n this.cols = 50;\n }\n /** @override */\n get preventKeyboardSubmit() {\n return true;\n }\n toggleReadonlyView(readonly) {\n const input = this._input, span = this._span;\n if (!Utils.isNull(input))\n input.hidden = readonly;\n if (!Utils.isNull(span))\n span.hidden = !readonly;\n }\n get inputFields() {\n return Utils.isNull(this._input)\n ? []\n : [this._input];\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'rows'\n || name === 'cols') {\n this.inputField.setAttribute(name, val);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTextAreaElement.prototype, \"rows\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTextAreaElement.prototype, \"cols\", void 0);\n__decorate([\n ViewChild('textarea')\n], PacemTextAreaElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemTextAreaElement.prototype, \"_span\", void 0);\nPacemTextAreaElement = __decorate([\n CustomElement({ tagName: P + '-textarea', template: `<textarea class=\"${PCSS}-input\" pacem></textarea>${CHAR_COUNTER_CHILD}<span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>`, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemTextAreaElement);\nexport { PacemTextAreaElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, PropertyConverters, preventDefaultHandler, Utils } from '@pacem/pacem-core';\nimport { Components } from '@pacem/pacem-ui';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\n/** A `<p-textarea-markdown>` field: a {@link PacemTextualInputElement} backed by a native `<textarea>` for editing Markdown text, whose readonly view renders the value as HTML via {@link Components.UI.MarkdownService}. */\nlet PacemMarkdownTextAreaElement = class PacemMarkdownTextAreaElement extends PacemTextualInputElement {\n constructor(_md = new Components.UI.MarkdownService()) {\n super();\n this._md = _md;\n /** Gets or sets the native `<textarea>`'s `rows` attribute. Defaults to `5`. */\n this.rows = 5;\n /** Gets or sets the native `<textarea>`'s `cols` attribute. Defaults to `50`. */\n this.cols = 50;\n this._keydownHandler = (evt) => {\n if (evt.keyCode === 9 /* tab */) {\n const input = this._input, value = input.value;\n var ndx = input.selectionStart;\n input.value = value.substr(0, ndx) + ' ' + value.substr(ndx);\n preventDefaultHandler(evt);\n }\n };\n }\n toggleReadonlyView(readonly) {\n if (!Utils.isNull(this._input))\n this._input.hidden = readonly;\n }\n /** @override */\n get preventKeyboardSubmit() {\n return true;\n }\n get inputFields() {\n return Utils.isNull(this._input)\n ? []\n : [this._input];\n }\n getViewValue(val) {\n return this._md.toHtml(val);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'rows'\n || name === 'cols') {\n this.inputField.setAttribute(name, val);\n }\n else if (name == 'viewValue') {\n this._markdown.innerHTML = val;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._input.addEventListener(\"keydown\", this._keydownHandler, false);\n }\n disconnectedCallback() {\n this._input &&\n this._input.removeEventListener(\"keydown\", this._keydownHandler, false);\n super.disconnectedCallback();\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMarkdownTextAreaElement.prototype, \"rows\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMarkdownTextAreaElement.prototype, \"cols\", void 0);\n__decorate([\n ViewChild('textarea')\n], PacemMarkdownTextAreaElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(`div.${PCSS}-readonly`)\n], PacemMarkdownTextAreaElement.prototype, \"_markdown\", void 0);\nPacemMarkdownTextAreaElement = __decorate([\n CustomElement({ tagName: P + '-textarea-markdown', template: `<textarea class=\"${PCSS}-input\" pacem></textarea>${CHAR_COUNTER_CHILD}<div class=\"${PCSS}-readonly ${PCSS}-markdown\"></div>`, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemMarkdownTextAreaElement);\nexport { PacemMarkdownTextAreaElement };\n","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["CustomTypedEvent","Net","Utils","__decorate","this","Transformer","CommandEventName","Components","CustomElementUtils","Watch","PropertyConverters","P","avoidHandler","PCSS","PropertyChangeEvent","DeferPromise","PropertyChangeEventName","Logging","Debounce","CustomElement","stopPropagationHandler","DefaultComparer","Defaults","CustomEventUtils","HistoryService","ViewChild","JsonOrStringConverter","ComponentsUI","PacemEventTarget","UI","JsonFunctionConversion","Maps","ComponentsMaps","Arrays","Colors","Animations","CustomUIEvent","preventDefaultHandler","DeepMerger"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pacem-scaffolding.js","sources":["../esm/types.js","../esm/openapi/types.js","../esm/openapi/swagger.js","../esm/openapi/openapi3.js","../esm/openapi/openapi.js","../esm/l10n.js","../esm/form.js","../esm/types-components.js","../esm/char-counter.js","../esm/contenteditable.js","../esm/contenteditable/types.js","../esm/contenteditable/historycommand.js","../esm/contenteditable/linkcommand.js","../esm/contenteditable/imagecommand.js","../esm/contenteditable/execcommand.js","../esm/contenteditable/utils.js","../esm/contenteditable/aligncommand.js","../esm/contenteditable/placeholdercommand.js","../esm/contenteditable/wrapcommand.js","../esm/calendar-picker.js","../esm/checkbox.js","../esm/checkbox-list.js","../esm/childform.js","../esm/datetime-picker.js","../esm/validators.js","../esm/formfield.js","../esm/geolocate.js","../esm/hierarchy.js","../esm/input.js","../esm/input-chars.js","../esm/input-color.js","../esm/input-email.js","../esm/input-file.js","../esm/input-hidden.js","../esm/snapshot.js","../esm/input-image.js","../esm/input-number.js","../esm/input-password.js","../esm/input-search.js","../esm/input-tel.js","../esm/input-text.js","../esm/input-url.js","../esm/latlng.js","../esm/namevalue-list.js","../esm/property-picker.js","../esm/radio.js","../esm/radio-list.js","../esm/select.js","../esm/slider.js","../esm/suggest.js","../esm/tags.js","../esm/textarea.js","../esm/textarea-markdown.js","../esm/index-iife.js"],"sourcesContent":["import { CustomTypedEvent } from '@pacem/pacem-core';\n/** Event type name (`'change'`) dispatched as a {@link FieldChangeEvent}. */\nexport const FieldChangeEventName = 'change';\n/** Dispatched by a scaffolding field (see `PacemBaseElement.changeHandler` in `types-components.ts`) whenever its `value` actually changes as a result of user interaction; bubbles so an ancestor {@link PacemFormElement}/`PacemFormFieldElement` can react to it. */\nexport class FieldChangeEvent extends CustomTypedEvent {\n constructor(args) {\n super(FieldChangeEventName, args, { bubbles: true, cancelable: false });\n }\n}\n//}\n",";\n/** The primitive kinds an {@link ApiParameter} (or {@link DataField}) can be translated to, used to choose the appropriate auto-generated form field editor. */\nexport var ApiParameterType;\n(function (ApiParameterType) {\n ApiParameterType[\"String\"] = \"string\";\n ApiParameterType[\"Number\"] = \"number\";\n ApiParameterType[\"Datetime\"] = \"datetime\";\n ApiParameterType[\"Boolean\"] = \"boolean\";\n ApiParameterType[\"Binary\"] = \"binary\";\n ApiParameterType[\"Object\"] = \"object\";\n})(ApiParameterType || (ApiParameterType = {}));\n/** Shared base for the OpenAPI/Swagger parsers: implements the common fetch-then-parse {@link ApiParser.load} flow, leaving the actual schema-to-{@link ApiManifest} translation to derived classes' `parse` implementation. */\nexport class ApiParserBase {\n /**\n * Fetches the API description document from `url` and parses it into an {@link ApiManifest}.\n * @param url Url the API description (OpenAPI/Swagger document) is fetched from.\n * @param headers Optional request headers (e.g. for authentication) sent along with the fetch.\n * @returns The parsed manifest, or `null` if the response could not be retrieved/parsed as JSON.\n */\n async load(url, headers) {\n let resp = await fetch(url, {\n mode: 'cors', credentials: 'omit', headers: headers\n });\n try {\n let json = await resp.json();\n return this.parse(json, url);\n }\n catch (e) {\n return null;\n }\n }\n}\nconst $refPattern = /^#\\/(definitions|components\\/schemas)\\/(.+)$/;\n/**\n * Resolves a `$ref` pointer (e.g. `#/definitions/Foo` or `#/components/schemas/Foo`) against an {@link ApiManifest}'s `definitions` map.\n * @param manifest Manifest whose `definitions` are searched.\n * @param $ref The `$ref` pointer to resolve.\n * @returns The referenced definition's name and schema, or `null` if `$ref` doesn't match the expected pattern.\n */\nexport function getOpenApiDefinition(manifest, $ref) {\n var rec = $refPattern.exec($ref);\n if (rec && rec.length > 2) {\n return { name: rec[2], schema: manifest.definitions[rec[2]] };\n }\n return null;\n}\n//}\n","import { Net } from '@pacem/pacem-core';\nimport { ApiParserBase, ApiParameterType } from './types';\n//namespace Pacem.Scaffolding.OpenApi {\nconst ApiMethod = Net.HttpMethod;\n/** Parses a Swagger (OpenAPI 2.0) document into a format-agnostic {@link ApiManifest}, translating its `paths`/`definitions` into endpoints, resolved schema definitions and parameter types used to auto-generate form fields. */\nexport class SwaggerParser extends ApiParserBase {\n _findDefinitionName(definitionHashTag) {\n var pattern = /#\\/definitions\\/(.+)/;\n var arr = pattern.exec(definitionHashTag);\n if (arr == null || arr.length < 2)\n return definitionHashTag;\n return arr[1];\n }\n /**\n * Parses a Swagger (OpenAPI 2.0) document into an {@link ApiManifest}.\n * @param content The Swagger document, either as a parsed object or as a JSON string.\n * @param url Base url of the API, used to derive `baseUrl` when the document doesn't specify `host`/`schemes`.\n * @returns The parsed manifest, with endpoints and resolved schema definitions.\n */\n parse(content, url) {\n let j = content;\n if (typeof j === 'string') {\n j = JSON.parse(j);\n }\n const json = j;\n let definitions = {};\n for (let def in json.definitions) {\n let name = this._findDefinitionName(def);\n definitions[name] = json.definitions[def];\n }\n let baseUrl = '';\n if (json.host && json.schemes.length > 0) {\n baseUrl = json.schemes[0] + '://' + json.host + json.basePath;\n }\n else if (url) {\n // add scheme, host and basePath just-in-case\n let parsed = /^(https?):\\/\\/([^\\/]+)/.exec(url);\n if (parsed && parsed.length) {\n if (!(json.schemes) && parsed.length > 1) {\n json.schemes = [parsed[1]];\n }\n if (!json.host && parsed.length > 2) {\n json.host = parsed[2];\n json.basePath = '';\n }\n baseUrl = parsed[0];\n }\n }\n else {\n console.warn('Not able to find a base url from the OpenApi specs.');\n }\n let retval = { endpoints: [], definitions: definitions, baseUrl: baseUrl };\n for (let path in json.paths) {\n let src = json.paths[path];\n for (let method of [ApiMethod.Get, ApiMethod.Delete, ApiMethod.Post, ApiMethod.Put]) {\n let op = src[method.toLowerCase()];\n if (op) {\n let endpoint = this._tryGetEndpoint(json, op, path, method);\n retval.endpoints.push(endpoint);\n }\n }\n }\n return retval;\n }\n _tryGetEndpoint(json, op, path, method) {\n return {\n response: this._tryGetResponse(json, op),\n path: path,\n method: method,\n parameters: this._tryGetParameters(json, op)\n };\n }\n _translateType(type, format) {\n switch (type) {\n case 'number':\n case 'integer':\n return ApiParameterType.Number;\n case 'boolean':\n return ApiParameterType.Boolean;\n case 'string':\n switch (format) {\n case 'date':\n case 'date-time':\n return ApiParameterType.Datetime;\n case 'byte':\n return ApiParameterType.Binary;\n case 'binary':\n throw `Binary octets not supported.`;\n }\n return ApiParameterType.String;\n }\n return ApiParameterType.String;\n }\n _tryGetParameters(json, operation) {\n return (operation.parameters || []).map(p => {\n const pb = p;\n let retval = {\n name: pb.name,\n required: pb.required || false\n };\n let type = p.type;\n if (p.schema) {\n let pbody = p;\n retval.type = ApiParameterType.Object;\n let name = retval.fullType = this._findDefinitionName(pbody.schema.$ref);\n retval.meta = json.definitions[name];\n }\n else if (type) {\n retval.type = this._translateType(type, p.format);\n }\n return retval;\n });\n }\n _tryGetResponse(json, operation) {\n let ok = operation.responses['200'];\n if (!ok || !ok.schema)\n return null;\n let type = ok.schema.type || 'object', meta, name;\n if (ok.schema.$ref) {\n name = this._findDefinitionName(ok.schema.$ref);\n meta = json.definitions[name];\n }\n else {\n meta = ok.schema;\n if (ok.schema.items) {\n if (ok.schema.items.hasOwnProperty('$ref')) {\n name = this._findDefinitionName(ok.schema.items.$ref);\n meta = json.definitions[name];\n }\n else {\n meta = ok.schema.items;\n }\n }\n }\n return { type: type, fullType: name, meta: meta };\n }\n}\n","import { Utils } from '@pacem/pacem-core';\nimport { ApiParserBase, ApiParameterType } from './types';\n/** Parses an OpenAPI 3.x document into a format-agnostic {@link ApiManifest}, translating its `paths`/`components.schemas` into endpoints, resolved schema definitions and parameter types used to auto-generate form fields. */\nexport class OpenApi3Parser extends ApiParserBase {\n /**\n * Parses an OpenAPI 3.x document into an {@link ApiManifest}.\n * @param content The OpenAPI 3.x document, either as a parsed object or as a JSON string.\n * @param url Base url of the API, used as the manifest's `baseUrl`.\n * @returns The parsed manifest, with endpoints and resolved schema definitions.\n */\n parse(content, url) {\n let j = content;\n if (typeof j === 'string') {\n j = JSON.parse(j);\n }\n const json = j;\n const endpoints = [];\n const definitions = this._gatherDefinitions(new Map(), json.components.schemas);\n for (let path in json.paths) {\n for (let method in json.paths[path]) {\n const endpoint = json.paths[path][method];\n endpoints.push({\n path,\n method: method.toUpperCase(),\n parameters: this._convertToApiParameters(endpoint.parameters),\n response: this._tryGetResponse(definitions, endpoint.responses)\n });\n }\n }\n return { endpoints, definitions, baseUrl: url };\n }\n _convertToApiParameters(parameters = []) {\n const output = [];\n for (let p of parameters) {\n const schema = p.schema;\n if ('type' in schema) {\n output.push({ name: p.name, required: p.required, type: this._translateType(schema.type, schema['format']) });\n }\n }\n return output;\n }\n _translateType(type, format) {\n switch (type) {\n case 'number':\n case 'integer':\n return ApiParameterType.Number;\n case 'boolean':\n return ApiParameterType.Boolean;\n case 'string':\n switch (format) {\n case 'date':\n case 'date-time':\n return ApiParameterType.Datetime;\n case 'byte':\n return ApiParameterType.Binary;\n case 'binary':\n throw `Binary octets not supported.`;\n }\n return ApiParameterType.String;\n }\n return ApiParameterType.String;\n }\n _gatherDefinitions(memoizer, schemas) {\n const retval = {};\n for (let schema in schemas) {\n retval[schema] = this._findDefinition(memoizer, schemas, schema);\n }\n return retval;\n }\n _findDefinition(memoizer, schemas, type) {\n if (memoizer.has(type)) {\n return memoizer.get(type);\n }\n if (type in schemas) {\n // is that enough?\n const retval = schemas[type];\n memoizer.set(type, retval);\n return retval;\n }\n return null;\n }\n _findDefinitionName(definitionHashTag) {\n var pattern = /#\\/components\\/schemas\\/(.+)/;\n var arr = pattern.exec(definitionHashTag);\n if (arr == null || arr.length < 2)\n return definitionHashTag;\n return arr[1];\n }\n _tryGetResponse(definitions, responses) {\n const operation = { responses };\n let ok = operation.responses['200'];\n if (Utils.isNullOrEmpty(ok && ok.content)) {\n return null;\n }\n let schema;\n for (let mime in ok.content) {\n schema = ok.content[mime].schema;\n break;\n }\n let type = 'object', meta, name;\n if (\"$ref\" in schema) {\n name = this._findDefinitionName(schema.$ref),\n meta = definitions[name];\n }\n else {\n type = schema.type;\n meta = schema;\n if (schema.type === 'array') {\n if ('$ref' in schema.items) {\n name = this._findDefinitionName(schema.items.$ref);\n meta = definitions[name];\n }\n else {\n meta = schema.items;\n }\n }\n }\n return { type, fullType: name, meta };\n }\n}\n","import { SwaggerParser } from './swagger';\nimport { ApiParserBase } from './types';\nimport { OpenApi3Parser } from './openapi3';\n//namespace Pacem.Scaffolding.OpenApi {\n/** Format-detecting facade parser: inspects an API description document and delegates to {@link OpenApi3Parser} or {@link SwaggerParser} accordingly, producing a unified {@link ApiManifest} used to auto-generate form fields regardless of the source spec version. */\nexport class OpenApiParser extends ApiParserBase {\n constructor(_openApi3 = new OpenApi3Parser(), _swagger = new SwaggerParser()) {\n super();\n this._openApi3 = _openApi3;\n this._swagger = _swagger;\n }\n /**\n * Parses `content` as either an OpenAPI 3.x or a Swagger (OpenAPI 2.0) document, dispatching on the presence of an `openapi` property.\n * @param content The API description, either as a parsed object or as a JSON string.\n * @param url Base url of the API, forwarded to the delegate parser to resolve/derive the manifest's `baseUrl`.\n * @returns The parsed manifest.\n */\n parse(content, url) {\n let j = content;\n if (typeof j === 'string') {\n j = JSON.parse(j);\n }\n const json = j;\n if ('openapi' in json) {\n return this._openApi3.parse(json, url);\n }\n return this._swagger.parse(json, url);\n }\n}\n//}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Utils, Transformer } from '@pacem/pacem-core';\nconst DefaultFormLocalizationOptions = {\n display: (displayProp, prop, dictionary) => dictionary[`${displayProp}_${prop}`],\n validator: (validatorType, validatorTypeIndex, prop, dictionary) => dictionary['validator_' + validatorType + '_' + prop] ?? dictionary['validator_' + validatorType + validatorTypeIndex + '_' + prop],\n commandTooltip: (commandName, dictionary) => dictionary['command_tooltip_' + commandName]\n};\n/** Namespace-like static helper for localizing form {@link TypeMetadata} (labels, watermarks, descriptions, validator error messages, command tooltips) against a translation dictionary. */\nexport class Forms {\n /**\n * Localizes the metadata of a form **in place** using a translation dictionary.\n *\n * @param metadata The default metadata.\n * @param dictionary The translation dictionary.\n * @param options Custom replacement strategy, just in case.\n * @returns The localized metadata.\n */\n static localizeMetadata(metadata, dictionary, options) {\n return Forms._localizeMetadata(metadata, dictionary, options);\n }\n static _localizeMetadata(metadata, dictionary, options, prefix = '') {\n options = Utils.extend({}, DefaultFormLocalizationOptions, options);\n for (let prop of metadata.props) {\n // child form\n if ('props' in prop && typeof prop.props === 'object' && !Utils.isArray(prop.props)) {\n const pre = prefix + prop.prop + '.';\n prop.props = Forms._localizeMetadata(prop.props, dictionary, options, pre);\n }\n const display = prop.display = prop.display ?? {};\n const property = prefix + prop.prop;\n display.name = options.display('name', property, dictionary) ?? display.name;\n display.watermark = options.display('watermark', property, dictionary) ?? display.watermark;\n display.description = options.display('description', property, dictionary) ?? display.description;\n if (!Utils.isNullOrEmpty(prop.commands)) {\n for (let command of prop.commands) {\n const tooltip = options.commandTooltip(command.name, dictionary);\n if (!Utils.isNullOrEmpty(tooltip)) {\n command.tooltip = tooltip;\n }\n }\n }\n if (!Utils.isNullOrEmpty(prop.validators)) {\n const memoizer = {};\n for (let validator of prop.validators) {\n const type = validator.type;\n if (typeof type === 'string') {\n const index = memoizer[type] = (memoizer[type] ?? -1) + 1;\n const errorMessage = options.validator(type, index, property, dictionary);\n if (!Utils.isNullOrEmpty(errorMessage)) {\n validator['errorMessage'] = errorMessage;\n }\n }\n }\n }\n }\n return metadata;\n }\n}\n__decorate([\n Transformer('forms.localizeMetadata')\n], Forms, \"localizeMetadata\", null);\n//}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, CustomTypedEvent, CommandEventName, Components, Net, Debounce, avoidHandler, PropertyChangeEvent, PropertyChangeEventName, DeferPromise, Logging, CustomElementUtils } from '@pacem/pacem-core';\nimport { PacemModelElement } from './types-components';\nimport { FieldChangeEventName } from './types';\n/** Event type name (`'submit'`) dispatched as a {@link FormSubmitEvent}. */\nexport const FormSubmitEventName = 'submit';\n/** Event type name (`'reset'`) dispatched as a {@link FormResetEvent}. */\nexport const FormResetEventName = 'reset';\n/**\n * Dispatched by {@link PacemFormElement} right before a submission is actually sent to the server, once all\n * fields have validated successfully. Cancelable: calling `preventDefault()` (or handling the event and\n * returning `false`) aborts the submission before any request is made - useful to inject/transform\n * {@link FormSubmitEventArgs#parameters} or veto the submit outright.\n */\nexport class FormSubmitEvent extends CustomTypedEvent {\n constructor(args) {\n super(FormSubmitEventName, args, { bubbles: true, cancelable: true });\n }\n}\n/** Dispatched by {@link PacemFormElement} when the form is about to be reset (programmatically or via its generated reset button). Cancelable: calling `preventDefault()` aborts the reset, leaving fields as they were. */\nexport class FormResetEvent extends Event {\n constructor() {\n super(FormResetEventName, { bubbles: true, cancelable: true });\n }\n}\n/** Event types re-dispatched/handled on behalf of a {@link PacemFormElement} by its {@link FormEventEmitter}: upload `download` events, field {@link FieldChangeEventName} changes, and item `command` events (see {@link Components.CommandEvent}). */\nconst EMITTABLE_EVENT_TYPES = ['download' /* < dedicated, for the upload custom element */, FieldChangeEventName /* expose */, CommandEventName];\n/** Sentinel value used to reject a submission's promise when it was canceled via {@link FormSubmitEvent#preventDefault}, as opposed to a genuine fetch failure. */\nconst SUBMIT_CANCELLATION_TOKEN = false;\n/**\n * Listens on a {@link PacemEventTarget} (typically a {@link PacemFormElement}) for the events listed in\n * {@link EMITTABLE_EVENT_TYPES} and pipes each through the target's `handle` method, additionally\n * re-dispatching `command` events as a synthesized `'item' + commandName`-named `CustomEvent` (e.g.\n * `itemdelete`, `itemselect`) so listeners can subscribe to the specific command they care about.\n */\nexport class FormEventEmitter {\n constructor(_element) {\n this._element = _element;\n this._itemEmitHandler = (e) => {\n // handle the actual event first\n this._element.handle(e);\n if (e.type === CommandEventName) {\n // then command-specific event, name being 'item' + command name in lowercase (e.g. 'itemdelete', 'itemselect', ...)\n const evt = e;\n this._element.handle(new CustomEvent('item' + evt.detail.commandName.toLowerCase(), { detail: evt.detail.commandArgument }));\n }\n };\n }\n /** Starts listening for {@link EMITTABLE_EVENT_TYPES} on the target element. */\n start() {\n EMITTABLE_EVENT_TYPES.forEach(t => this._element.addEventListener(t, this._itemEmitHandler, false));\n }\n /** Stops listening for {@link EMITTABLE_EVENT_TYPES} on the target element. */\n stop() {\n EMITTABLE_EVENT_TYPES.forEach(t => this._element.removeEventListener(t, this._itemEmitHandler, false));\n }\n}\n/** Base class for elements that need a reference to their closest ancestor {@link PacemFormElement} (form fields, validators): resolves and exposes it as {@link form} on activation. */\nexport class PacemFormRelevantElement extends Components.PacemElement {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.form = CustomElementUtils.findAncestorOfType(this, PacemFormElement);\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemFormRelevantElement.prototype, \"form\", void 0);\n/**\n * `<p-form>`: the scaffolding package's central form element. Aggregates the validity/dirty state of its\n * registered fields ({@link registerField}) and validators ({@link registerValidator}), of any nested\n * sub-forms ({@link registerSubForm} - e.g. from a {@link Pacem.Components.Scaffolding.PacemChildFormElement}\n * in `childform.ts`), drives submission ({@link submit}) and reset ({@link reset}), and - when `autogenerate`\n * is `true` and `metadata` is provided - builds its own field markup from a {@link TypeMetadata}/\n * {@link PropertyMetadata} description instead of requiring hand-authored markup.\n */\nlet PacemFormElement = class PacemFormElement extends PacemFormRelevantElement {\n constructor() {\n super('form');\n /** Gets or sets the HTTP method used by the auto-generated fetcher. Defaults to `POST`. */\n this.method = Net.HttpMethod.Post;\n this._emitter = null;\n this._buttons = { submit: undefined, reset: undefined };\n this.#fetching = false;\n this._keyupHandler = (evt) => {\n if (evt.keyCode === /* Enter */ 13\n // no modifiers\n && !evt.shiftKey && !evt.ctrlKey && !evt.altKey && !evt.metaKey) {\n let btn = evt.currentTarget.querySelector(P + '-button[type=submit]');\n if (!Utils.isNull(btn) && Utils.isVisible(btn) && !btn.disabled) {\n btn.click();\n }\n }\n };\n this._submit = (fetcher, evt) => {\n if (!Utils.isNull(evt)) {\n avoidHandler(evt);\n }\n Promise.all(this._validateAllFields()).then(p => {\n if (p.findIndex(f => f === false) === -1) {\n this.submit(fetcher).then(_ => {\n // successful submission here\n this.setPristine();\n }, _ => {\n // catch rejected/canceled\n });\n }\n });\n };\n this._reset = (evt) => {\n if (!Utils.isNull(evt))\n avoidHandler(evt);\n var resetEvt = new FormResetEvent();\n this.dispatchEvent(resetEvt);\n if (resetEvt.defaultPrevented) {\n return;\n }\n // reset\n // fields first\n for (var field in this._fields) {\n var fld = this._fields[field];\n if (fld instanceof PacemModelElement)\n fld.reset();\n }\n // then sub-forms\n for (var form of this._subForms) {\n form._reset();\n }\n };\n this._fields = {};\n this._validators = {};\n this._subForms = [];\n this._fieldPropertyChanged = (evt) => {\n switch (evt.detail.propertyName) {\n case 'value':\n // validate:\n let model = evt.target;\n this._checkFieldValidity(model.name);\n break;\n case 'dirty':\n this._checkDirtyness();\n break;\n case 'valid':\n this._checkValidity();\n break;\n }\n };\n this._validatorPropertyChanged = (evt) => {\n const validator = evt.target, name = validator.watch;\n if (evt.detail.propertyName === 'invalid') {\n let model = this._fields[validator.watch];\n if (validator.invalid)\n model.valid = false;\n else\n this._checkFieldValidity(name);\n }\n else {\n this._checkFieldValidity(name);\n }\n };\n /** Gets or sets whether to hint invalid fields even if still pristine (default 'true').\n * When 'true' - and form is autogenerated - the submit button status is tightly bound to the form valid state. */\n this.suddenValidation = true;\n /** Gets or sets whether the form should show - when autogenerated - the reset button. */\n this.resettable = true;\n this._emitter = new FormEventEmitter(this);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if ((name === 'method' && this.autogenerate === true && !Utils.isNullOrEmpty(this.metadata)) ||\n (name === 'metadata' && this.autogenerate === true) ||\n (name === 'autogenerate' && val === true && this.metadata && (this.metadata['props'] || this.metadata).length > 0)) {\n this._buildUpForm();\n }\n else {\n switch (name) {\n case 'readonly':\n //this._lockSubForms(val);\n break;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.form && this.form.registerSubForm(this);\n this._checkValidity();\n this.addEventListener('keyup', this._keyupHandler, false);\n this._emitter.start();\n }\n disconnectedCallback() {\n this._emitter.stop();\n this.removeEventListener('keyup', this._keyupHandler, false);\n this.form && this.form.unregisterSubForm(this);\n super.disconnectedCallback();\n }\n _buildUpForm() {\n const key = '_' + Utils.uniqueCode();\n const uid = this.id = (this.id || key);\n const f_uid = 'fetch' + key;\n //\n const form = document.createElement('form');\n form.id = \"form\" + key;\n form.className = PCSS + '-form';\n form.setAttribute('pacem', '');\n form.setAttribute('novalidate', '');\n const html = `<${P}-repeater datasource=\"{{ #${uid}.metadata && (#${uid}.metadata.props || #${uid}.metadata) }}\">\r\n <${P}-panel css=\"{{ #${uid}.metadata.display && #${uid}.metadata.display.css }}\" css-class=\"{{ (#${uid}.metadata.display && #${uid}.metadata.display.cssClass || []).concat(#${uid}.suddenValidation ? [] : ['lazy-validation']) }}\" class=\"${PCSS}-animatable-list ${PCSS}-list-appear\">\r\n <template>\r\n <${P}-form-field fetch-credentials=\"{{ #${uid}.fetchCredentials }}\" fetch-headers=\"{{ #${uid}.fetchHeaders }}\"\r\n logger=\"{{ #${uid}.logger }}\" entity=\"{{ #${uid}.entity, twoway }}\" \r\n metadata=\"{{ ^item }}\" readonly=\"{{ #${uid}.readonly || ^item.isReadOnly }}\"></${P}-form-field>\r\n </template>\r\n </${P}-panel>\r\n</${P}-repeater>\r\n<${P}-fetch logger=\"{{ #${uid}.logger }}\" id=\"${f_uid}\" method=\"${this.method}\" credentials=\"{{ #${uid}.fetchCredentials }}\" headers=\"{{ #${uid}.fetchHeaders }}\"></${P}-fetch> \r\n<div class=\"${PCSS}-buttonset buttons\">\r\n <div class=\"buttonset-left\">\r\n <${P}-button logger=\"{{ #${uid}.logger }}\" on-click=\"#${uid}._submit(#${uid}.fetcher || #${f_uid}, $event)\" type=\"submit\" hide=\"{{ #${uid}.readonly || $pacem.isNullOrEmpty(#${uid}.action) || !$pacem.isNull(#${uid}.form) }}\"\r\nclass=\"button primary button-size size-small\"\r\ncss-class=\"{{ {'buttonset-last': !#${uid}.resettable || !#${uid}.dirty || !$pacem.isNull(#${uid}.form) } }}\" \r\ndisabled=\"{{ (#${uid}.suddenValidation && (!(#${uid}.valid && #${uid}.dirty))) || #${uid}.fetching }}\">\r\n <${P}-panel class=\"submit-spinner ${PCSS}-anim anim-pop\" hide=\"{{ !#${uid}.fetching }}\"><i class=\"${PCSS}-icon ${PCSS}-anim anim-rotate rotate-uniform display-block\">refresh</i></${P}-panel>\r\n <${P}-text text=\"{{ #${uid}.submitCaption || 'OK' }}\"></${P}-text>\r\n </${P}-button>\r\n <${P}-button logger=\"{{ #${uid}.logger }}\" on-click=\"#${uid}._reset($event)\" type=\"reset\" class=\"button button-size size-small\" css-class=\"{{ {'buttonset-first': #${uid}.readonly || $pacem.isNullOrEmpty(#${uid}.action) || !$pacem.isNull(#${uid}.form)} }}\" hide=\"{{ !#${uid}.resettable || #${uid}.readonly || !#${uid}.dirty || !$pacem.isNull(#${uid}.form) }}\" disabled=\"{{ #${uid}.fetching }}\">\r\n <${P}-text text=\"{{ #${uid}.resetCaption || 'Reset' }}\"></${P}-text>\r\n </${P}-button>\r\n</div></div>`;\n // buttons are kept hidden if...\n form.innerHTML = html;\n this.innerHTML = '';\n this.appendChild(form);\n form.addEventListener('submit', avoidHandler, false);\n const old = this._buttons;\n const val = this._buttons = {\n submit: form.lastElementChild.firstElementChild.firstElementChild,\n reset: form.lastElementChild.firstElementChild.lastElementChild\n };\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'formButtons', currentValue: val, oldValue: old }));\n }\n /** Gets the 'submit' and 'reset' form buttons. */\n get formButtons() {\n return this._buttons;\n }\n #fetching;\n /** @readonly Gets whether a submission is currently in flight; also reflected as the `pacem-fetching` CSS class. */\n get fetching() {\n return this.#fetching;\n }\n /**\n * Submits the form data via a provided fetcher.\n * @param fetcher The fetching delegate.\n */\n submit(fetcher) {\n return new Promise((resolve, reject) => {\n if (Utils.isNull(fetcher)) {\n reject(`Fetcher cannot be null while submitting a form.`);\n }\n this._submitInternally(fetcher).then(result => {\n this.dispatchEvent(new CustomEvent(\"success\", { detail: result }));\n resolve(result);\n }, err => {\n if (err !== SUBMIT_CANCELLATION_TOKEN) {\n this.dispatchEvent(new CustomEvent(\"fail\", { detail: err }));\n }\n reject(err);\n });\n });\n }\n /** Resets the form to its pristine values. */\n reset() {\n this._reset();\n }\n _submitInternally(fetcher, args) {\n if (Utils.isNull(fetcher))\n throw `Fetcher cannot be null while submitting a form.`;\n var deferred = DeferPromise.defer();\n const entity = this.entity, entityName = this.entityName;\n var model = {};\n if (!Utils.isNullOrEmpty(entityName)) {\n model[entityName] = entity;\n }\n else {\n model = entity;\n }\n var args = { parameters: model, fields: this._getAllFields() };\n // allow to inject some logic while submitting...\n var submitEvt = new FormSubmitEvent(args);\n this.dispatchEvent(submitEvt);\n if (submitEvt.defaultPrevented) {\n // rejection using `false` identifies a canceled submission.\n deferred.reject(SUBMIT_CANCELLATION_TOKEN);\n }\n else {\n // ...use the output parameters\n fetcher.parameters = Utils.extend({}, submitEvt.detail.parameters);\n // a) fetcher 'success' event listener\n const fnSuccess = (evt) => {\n fetcher.removeEventListener(Net.FetchSuccessEventName, fnSuccess, false);\n fetcher.removeEventListener(Net.FetchErrorEventName, fnError, false);\n const r = evt.detail, empty = Net.Fetcher.isEmpty(r);\n if (empty) {\n // if no content gets fetched (e.g. '204') then resolve right here (because it won't enter 'fnResult')\n fetcher.removeEventListener(Net.FetchResultEventName, fnResult, false);\n this.success = true;\n deferred.resolve({});\n }\n switch (r.status) {\n case 205 /*'Reset Content'*/:\n this._reset();\n break;\n }\n };\n // b) fetcher 'fetchresult' event listener\n const fnResult = (evt) => {\n // remove listeners (others have already been removed in 'fnSuccess')\n fetcher.removeEventListener(Net.FetchResultEventName, fnResult, false);\n //\n var result = evt.detail;\n if (typeof (result) === 'object' && result.hasOwnProperty('success')) {\n // DEPRECATED code branch\n if (result.success === true) {\n this.success = true;\n deferred.resolve(result.result || {});\n }\n else {\n this.fail = true;\n deferred.reject(result.error);\n }\n }\n else {\n this.success = true;\n deferred.resolve(result);\n }\n };\n // c) fetcher 'error' event listener\n const fnError = (evt) => {\n // remove listeners\n fetcher.removeEventListener(Net.FetchSuccessEventName, fnSuccess, false);\n fetcher.removeEventListener(Net.FetchResultEventName, fnResult, false);\n fetcher.removeEventListener(Net.FetchErrorEventName, fnError, false);\n this.fail = true;\n const response = evt.detail;\n deferred.reject(response);\n };\n // fetcher propertychange event listener\n const fnPropChange = (evt) => {\n switch (evt.detail.propertyName) {\n case 'fetching':\n if (evt.detail.currentValue === true) {\n Utils.addClass(this, PCSS + '-fetching');\n this.#fetching = true;\n this.dispatchEvent(new PropertyChangeEvent({ currentValue: true, oldValue: false, propertyName: 'fetching' }));\n }\n else {\n this.#fetching = false;\n this.dispatchEvent(new PropertyChangeEvent({ currentValue: false, oldValue: true, propertyName: 'fetching' }));\n Utils.removeClass(this, PCSS + '-fetching');\n fetcher.removeEventListener(PropertyChangeEventName, fnPropChange, false);\n }\n break;\n }\n };\n fetcher.addEventListener(PropertyChangeEventName, fnPropChange, false);\n fetcher.addEventListener(Net.FetchSuccessEventName, fnSuccess, false);\n fetcher.addEventListener(Net.FetchResultEventName, fnResult, false);\n fetcher.addEventListener(Net.FetchErrorEventName, fnError, false);\n if (!Utils.isNullOrEmpty(this.action)) {\n fetcher.url = this.action;\n }\n // is it an 'inert' PacemFetchElement?\n if (fetcher instanceof Components.PacemFetchElement && !fetcher.autofetch) {\n fetcher.fetch();\n }\n this.success = this.fail = false;\n }\n //\n return deferred.promise;\n }\n _getAllFields(accumulator = {}) {\n Utils.extend(accumulator, this._fields);\n for (var form of this._subForms) {\n form._getAllFields(accumulator);\n }\n return accumulator;\n }\n /** Modifies the state of the current entity programmatically. */\n apply(state) {\n if (Utils.isNullOrEmpty(state)) {\n return;\n }\n this.entity = Utils.extend({}, this.entity, state);\n for (let name in state) {\n this.setDirty(name);\n }\n }\n /** Sets the current form (or the fields of it having the specified names) in a pristine state. */\n setPristine(...names) {\n this._setAs(false, ...names);\n }\n /** Sets the current form (or the fields of it having the specified names) in a dirty state. */\n setDirty(...names) {\n this._setAs(true, ...names);\n }\n _setAs(dirty, ...names) {\n const hasNames = !Utils.isEmpty(names);\n for (let field in this._fields) {\n if (!hasNames || names.indexOf(field) >= 0) {\n const fld = this._fields[field];\n if (fld instanceof PacemModelElement) {\n dirty ? fld.setDirty() : fld.setPristine();\n }\n }\n }\n for (let form of this._subForms) {\n dirty ? form.setDirty(...names) : form.setPristine(...names);\n }\n }\n _checkFieldValidity(name) {\n if (!this.suddenValidation) {\n return Promise.resolve(null);\n }\n if (name in this._fields) {\n return this._validateField(name, false);\n }\n return Promise.resolve(false);\n }\n /**\n * Validates a single named field, or - when `name` is omitted - every field of this form and its\n * sub-forms, running each field's registered validators and updating their `valid`/`invalid` state.\n * @param name Optional name of a single field to validate; validates the whole form (recursively) when omitted.\n */\n // @Concurrent()\n validate(name) {\n if (!Utils.isNullOrEmpty(name)) {\n return this._validateField(name, false);\n }\n else {\n return Promise.all(this._validateAllFields()).then(b => !b.some(b0 => b0 === false));\n }\n }\n _validateAllFields(setAsDirty = true) {\n const tasks = [];\n for (let field in this._fields) {\n tasks.push(this._validateField(field, setAsDirty));\n }\n for (let sub of this._subForms) {\n Array.prototype.push.apply(tasks, sub._validateAllFields(setAsDirty));\n }\n return tasks;\n }\n // Remove Concurrent from here, better check the closure for params in @Concurrent\n //@Concurrent()\n _validateField(name, setAsDirty) {\n return new Promise((resolve, _) => {\n var model = this._fields[name];\n if (model) {\n var validators = this._validators[model.name];\n if (validators && validators.length > 0) {\n this.log(Logging.LogLevel.Log, `Computing \"${model.name}\" validity.`);\n Promise.all(validators.map(v => v.validate(model.value)\n .then(_ => !(v.invalid = !_))))\n .then(results => {\n let valid = true;\n for (var result of results) {\n if (result === false) {\n valid = false;\n // set dirty only when not valid\n if (setAsDirty) {\n model.setDirty();\n }\n break;\n }\n }\n this.log(Logging.LogLevel.Log, `Property \"${model.name}\" turns out to be ${(valid ? '' : 'not ')}valid.`);\n resolve(model.valid = valid);\n });\n }\n else {\n this.log(Logging.LogLevel.Log, `Property \"${model.name}\" has no validators.`);\n resolve(model.valid = true);\n }\n }\n else {\n this.log(Logging.LogLevel.Log, `Property \"${name}\" has no fields in this form.`);\n resolve(true);\n }\n });\n }\n // #region FORM HIERARCHY validity/dirtyness\n _checkDirtyness() {\n let dirty = false;\n for (var model in this._fields) {\n if (this._fields[model].dirty === true) {\n dirty = true;\n break;\n }\n }\n if ( /* still */dirty === false) {\n for (var form of this._subForms) {\n if (form.dirty) {\n dirty = true;\n break;\n }\n }\n }\n this.dirty = dirty;\n }\n ;\n _checkValidity() {\n let valid = true;\n for (var model in this._fields) {\n this.log(Logging.LogLevel.Log, `Checking \"${model}\" validity.`);\n if (this._fields[model].valid === false) {\n this.log(Logging.LogLevel.Log, `\"${model}\" is not valid.`);\n valid = false;\n break;\n }\n }\n if ( /* still */valid === true) {\n for (var form of this._subForms) {\n if (!form.valid) {\n valid = false;\n break;\n }\n }\n }\n this.valid = valid;\n }\n ;\n /**\n * Registers a nested {@link PacemFormElement} (e.g. rendered by a `PacemChildFormElement`, see\n * `childform.ts`) so its fields' validity/dirtyness roll up into this form's own {@link valid}/{@link dirty}.\n * @param form Sub-form to enroll\n */\n registerSubForm(form) {\n let arr = this._subForms;\n if (arr.indexOf(form) == -1) {\n form.addEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false);\n arr.push(form);\n this._checkValidity();\n this._checkDirtyness();\n }\n }\n /**\n * Removes a previously-registered nested form; its fields no longer influence this form's {@link valid}/{@link dirty}.\n * @param form Sub-form to remove\n */\n unregisterSubForm(form) {\n let arr = this._subForms, ndx = arr.indexOf(form);\n if (ndx >= 0) {\n form.removeEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false);\n arr.splice(ndx, 1);\n this._checkValidity();\n this._checkDirtyness();\n }\n }\n /**\n * Registers a field's {@link PacemModel} under `name`, so it is included in submission ({@link FormSubmitEventArgs#fields}), validation, dirty/valid roll-up and reset. Typically called by the field itself (see `PacemModelElement._registerFieldConditionally` in `types-components.ts`) rather than directly.\n * @param name Field name to register under\n * @param model Field implementing {@link PacemModel}\n */\n registerField(name, model) {\n var container = this._fields;\n if (container[name] != model) {\n this.unregisterField(name, false);\n container[name] = model;\n this.log(Logging.LogLevel.Log, `Registering \"${name}\" field.`);\n if (model instanceof HTMLElement) {\n model.addEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false);\n }\n this._checkFieldValidity(name);\n this._checkDirtyness();\n }\n }\n /**\n * Removes a previously-registered field.\n * @param name Field name to remove\n * @param check Whether to re-check the form's overall validity/dirtyness afterwards (default `true`)\n */\n unregisterField(name, check = true) {\n var container = this._fields, current = container[name];\n if (current instanceof HTMLElement) {\n current.removeEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false);\n }\n delete container[name];\n if (current && check === true) {\n this._checkValidity();\n this._checkDirtyness();\n }\n }\n /**\n * Registers a {@link Validator} (typically a {@link PacemBaseValidatorElement}) against the named field, so it participates in that field's validation. Typically called by the validator itself rather than directly.\n * @param name Name of the field being validated\n * @param validator Validator to enroll\n */\n registerValidator(name, validator) {\n var container = this._validators[name] = this._validators[name] || [], index = container.indexOf(validator);\n if (index == -1) {\n container.push(validator);\n if (validator instanceof HTMLElement) {\n validator.addEventListener(PropertyChangeEventName, this._validatorPropertyChanged, false);\n }\n this.log(Logging.LogLevel.Log, `Calling \"${name}\" validity check after validator registration.`);\n // most likely, at this point, the corresponding field isn't available yet.\n this._checkFieldValidity(name);\n }\n }\n /**\n * Removes a previously-registered validator from the named field.\n * @param name Name of the field the validator was registered against\n * @param validator Validator to remove\n */\n unregisterValidator(name, validator) {\n this._unregisterValidator(name, validator, true);\n }\n _unregisterValidator(name, validator, check) {\n var container = this._validators[name] = this._validators[name] || [], index = container.indexOf(validator);\n if (index >= 0) {\n if (validator instanceof HTMLElement) {\n validator.removeEventListener(PropertyChangeEventName, this._validatorPropertyChanged, false);\n }\n container.splice(index, 1);\n if (check) {\n this._checkFieldValidity(name);\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemFormElement.prototype, \"fetcher\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemFormElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"method\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"submitCaption\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"resetCaption\", void 0);\n__decorate([\n Debounce(100)\n], PacemFormElement.prototype, \"_buildUpForm\", null);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"valid\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"dirty\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"readonly\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"success\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"fail\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemFormElement.prototype, \"entity\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"entityName\", void 0);\n__decorate([\n Watch()\n], PacemFormElement.prototype, \"metadata\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"autogenerate\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"suddenValidation\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemFormElement.prototype, \"resettable\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemFormElement.prototype, \"action\", void 0);\nPacemFormElement = __decorate([\n CustomElement({ tagName: P + '-form' })\n], PacemFormElement);\nexport { PacemFormElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElementUtils, Utils, Components, PropertyConverters, CustomElement, Watch, stopPropagationHandler, DefaultComparer, PropertyChangeEventName, Debounce } from '@pacem/pacem-core';\nimport { FieldChangeEvent } from './types';\nimport { PacemFormRelevantElement } from './form';\n/** Attached-property key used to stash a field's pristine value on the element itself (see {@link PacemModelElement.originalValue}). */\nconst ORIGINAL_VALUE_FIELD = 'pacem:model:original-value';\n/**\n * Base class for any element that behaves as a bindable, form-aware model value: it registers itself by\n * `name` with the ancestor {@link PacemFormElement} (found via {@link PacemFormRelevantElement}), tracks\n * `dirty`/`valid` state (reflected as `pacem-dirty`/`pacem-invalid` CSS classes), and remembers the value it\n * had when activated/set-pristine so {@link reset} can restore it.\n *\n * Concrete input/selection fields don't extend this directly - see {@link PacemBaseElement}, the abstract\n * subclass that adds readonly/required/focus/keyboard handling on top of it.\n */\nexport class PacemModelElement extends PacemFormRelevantElement {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._registerFieldConditionally();\n this._setAsOriginalValue(this.value);\n }\n _registerFieldConditionally() {\n const name = this.name, form = this.form;\n if (!Utils.isNullOrEmpty(name) && !Utils.isNull(form)\n && (!this.hasAttribute('autobind')\n || (this.getAttribute('autobind') !== 'off' && this.getAttribute('autobind') !== 'false'))) {\n form.registerField(name, this);\n // automatic bind value given the field name\n if (!this.hasAttribute('value')) {\n const formId = form.id = form.id || 'frm_' + Utils.uniqueCode();\n this.setAttribute('value', `{{ #${formId}.entity.${name}, twoway }}`);\n }\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'value':\n this.viewValue = this.getViewValue(val);\n break;\n case 'valid':\n if (!val) {\n Utils.addClass(this, PCSS + '-invalid');\n }\n else {\n Utils.removeClass(this, PCSS + '-invalid');\n }\n break;\n case 'dirty':\n if (val) {\n Utils.addClass(this, PCSS + '-dirty');\n }\n else {\n Utils.removeClass(this, PCSS + '-dirty');\n }\n break;\n case 'name':\n let form = this.form;\n if (form != null) {\n if (old)\n form.unregisterField(old);\n }\n this._registerFieldConditionally();\n break;\n case 'form':\n let n = this.name;\n if (!Utils.isNullOrEmpty(n)) {\n if (old != null)\n old.unregisterField(n);\n }\n this._registerFieldConditionally();\n break;\n }\n }\n disconnectedCallback() {\n let name = this.name, form = this.form;\n if (!Utils.isNullOrEmpty(name) && !Utils.isNull(form))\n form.unregisterField(name);\n super.disconnectedCallback();\n }\n /** @readonly The `value` this element had the last time it was activated or explicitly marked pristine (via {@link setPristine}); what {@link reset} restores. */\n get originalValue() {\n return CustomElementUtils.getAttachedPropertyValue(this, ORIGINAL_VALUE_FIELD);\n }\n _setAsOriginalValue(v) {\n CustomElementUtils.setAttachedPropertyValue(this, ORIGINAL_VALUE_FIELD, v);\n }\n /** Restores {@link value} to {@link originalValue} and clears {@link dirty}. */\n reset() {\n this.value = this.originalValue;\n // then\n this.dirty = false;\n }\n /** Marks the current `value` as the new baseline for {@link reset}/{@link originalValue} and clears {@link dirty}. */\n setPristine() {\n this._setAsOriginalValue(this.value);\n //\n this.dirty = false;\n }\n /** Marks this field as `dirty`. */\n setDirty() {\n this.dirty = true;\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemModelElement.prototype, \"viewValue\", void 0);\n__decorate([\n Watch({\n converter: {\n convert: (attr, element) => {\n if (!(element instanceof PacemModelElement)) {\n return attr;\n }\n return element.convertValueAttributeToProperty(attr);\n },\n convertBack: (prop) => prop.toString()\n }\n })\n], PacemModelElement.prototype, \"value\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemModelElement.prototype, \"dirty\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemModelElement.prototype, \"valid\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemModelElement.prototype, \"name\", void 0);\n/**\n * Base class for editable form fields: it adds `required`/`autofocus`/`readonly`/`placeholder` state, focus\n * and keyboard handling (Esc to revert, Enter submit prevention), and the plumbing that wires the\n * `focus`/`blur`/`change`/`keydown`/`keyup` handlers onto whichever native {@link inputFields} a derived\n * class exposes.\n *\n * Not extended directly by concrete fields either - see {@link PacemBaseInputElement} (in `input.ts`) for\n * `<input>`/`<textarea>`-backed fields, and {@link PacemDataSourceElement} for datasource-driven ones\n * (lists, selects, radio groups, ...).\n */\nexport class PacemBaseElement extends PacemModelElement {\n constructor() {\n super(...arguments);\n this.focusHandler = (evt) => {\n const focusFieldgroup = (add = true) => {\n // TODO: re-think, since this is an ugly workaround just to properly set the outline and borders of the fieldgroup \n if (Utils.hasClass(this.parentElement, '.' + PCSS + '-fieldgroup')) {\n (add ? Utils.addClass : Utils.removeClass).apply(this, [this.parentElement, PCSS + '-focus']);\n }\n };\n const blurFieldgroup = () => focusFieldgroup(false);\n switch (evt.type) {\n case 'focus':\n Utils.addClass(this, PCSS + '-focus');\n focusFieldgroup();\n this._preFocusValue = this.value;\n break;\n case 'blur':\n Utils.removeClass(this, PCSS + '-focus');\n blurFieldgroup();\n break;\n }\n if (evt.bubbles)\n this.emit(evt);\n else\n this.dispatchEvent(new FocusEvent(evt.type));\n };\n this.changeHandler = (evt) => {\n const val = this.value;\n this.onChange(evt).then(v => {\n if (!this.compareValuePropertyValues(val, v)) {\n this.dispatchEvent(new FieldChangeEvent({\n fieldName: this.name,\n oldValue: val,\n currentValue: v,\n firstChange: !this.dirty\n }));\n this.dirty = true;\n }\n }, _ => {\n // do nothing\n });\n };\n this.keydownHandler = (evt) => {\n stopPropagationHandler(evt);\n };\n this.keyupHandler = (evt) => {\n switch (evt.keyCode) {\n case /* Esc */ 27:\n stopPropagationHandler(evt);\n // choose between reset and set\n if (this.compareValuePropertyValues(this.originalValue, this._preFocusValue)) {\n this.reset();\n }\n else {\n this.value = this._preFocusValue;\n }\n this.blur();\n break;\n case /* Enter */ 13:\n if (this.preventKeyboardSubmit) {\n stopPropagationHandler(evt);\n }\n break;\n }\n };\n }\n compareValuePropertyValues(old, val) {\n return DefaultComparer(old, val);\n }\n /** @overridable Whether pressing Enter within this field should be prevented from submitting an ancestor form. Defaults to `false`. */\n get preventKeyboardSubmit() {\n return false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'required':\n case 'disabled':\n case 'autofocus':\n case 'placeholder':\n case 'readonly':\n for (let inputField of this.inputFields) {\n val ? inputField.setAttribute(name, val) : inputField.removeAttribute(name);\n }\n break;\n //case 'name':\n case 'tabOrder':\n for (let inputField of this.inputFields) {\n inputField.setAttribute('tabindex', val);\n }\n break;\n case 'value':\n this.acceptValue(val);\n break;\n }\n if (name === 'required'\n || name === 'disabled'\n || name === 'readonly') {\n let className = `${PCSS}-${name}`;\n val ? Utils.addClass(this, className) : Utils.removeClass(this, className);\n }\n if (name === 'readonly') {\n this.toggleReadonlyView(val);\n }\n // aria-... attributes\n else if (name === 'required') {\n this.aria.attributes.set('required', !!val + '');\n }\n else if (name === 'valid') {\n // Specs say that 'aria-invalid' on required attributes SHOULD NOT be set before submission, \n // think about a 'submitted state'(?) to check against...\n this.aria.attributes.set('invalid', (!val && !!this.dirty) + '');\n }\n }\n registerInputFields(inputFields = this.inputFields) {\n if (!Utils.isNull(inputFields) && !Utils.isArray(inputFields)) {\n inputFields = [inputFields];\n }\n for (let inputField of inputFields) {\n inputField.addEventListener('focus', this.focusHandler, false);\n inputField.addEventListener('blur', this.focusHandler, false);\n inputField.addEventListener('change', this.changeHandler, false);\n // avoid interference with other handlers (e.g. cref UI.PacemAdapterElement)\n inputField.addEventListener('keydown', this.keydownHandler, false);\n inputField.addEventListener('keyup', this.keyupHandler, false);\n inputField.addEventListener('mousedown', stopPropagationHandler, false);\n inputField.addEventListener('touchstart', stopPropagationHandler, { passive: false, capture: false });\n }\n }\n unregisterInputFields(inputFields = this.inputFields) {\n if (!Utils.isNull(inputFields) && !Utils.isArray(inputFields)) {\n inputFields = [inputFields];\n }\n for (let inputField of inputFields) {\n if (Utils.isNull(inputField))\n continue;\n inputField.removeEventListener('touchstart', stopPropagationHandler, { capture: false });\n inputField.removeEventListener('keydown', this.keydownHandler, false);\n inputField.removeEventListener('keyup', this.keyupHandler, false);\n inputField.removeEventListener('mousedown', stopPropagationHandler, false);\n //\n inputField.removeEventListener('change', this.changeHandler, false);\n inputField.removeEventListener('focus', this.focusHandler, false);\n inputField.removeEventListener('blur', this.focusHandler, false);\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.toggleReadonlyView(this.readonly || false);\n // aria-attribute\n if (!Utils.isNullOrEmpty(this.id)) {\n const label = document.querySelector(`label[for=${this.id}]`);\n if (label) {\n if (label.id) {\n this.aria.attributes.set('labelledby', label.id);\n }\n else {\n this.aria.attributes.set('label', label.textContent);\n }\n }\n else {\n this.aria.attributes.remove('labelledby');\n this.aria.attributes.remove('label');\n }\n ;\n }\n // add handlers\n this.registerInputFields();\n }\n disconnectedCallback() {\n // remove handlers\n this.unregisterInputFields();\n super.disconnectedCallback();\n }\n focus() {\n const fields = this.inputFields;\n if (fields && fields.length) {\n fields[0].focus();\n }\n }\n blur() {\n const fields = this.inputFields;\n if (!Utils.isNullOrEmpty(fields)) {\n for (let field of fields) {\n field.blur();\n }\n }\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemBaseElement.prototype, \"required\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemBaseElement.prototype, \"autofocus\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemBaseElement.prototype, \"readonly\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemBaseElement.prototype, \"name\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemBaseElement.prototype, \"placeholder\", void 0);\n/**\n * Scaffolding-specific counterpart of `@pacem/pacem-ui`'s `PacemItemElement`: a base class for elements that\n * register themselves against an ancestor {@link PacemItemsContainerBaseElement} (found via\n * {@link findContainer}) on activation, and unregister on disconnect. Extended by {@link PacemDataItemElement}.\n */\nexport class PacemItemElement extends Components.PacemElement {\n #container;\n /** @overridable Locates the ancestor items-container this item registers against. Defaults to the nearest {@link PacemItemsContainerBaseElement}. */\n findContainer() {\n return CustomElementUtils.findAncestor(this, n => n instanceof PacemItemsContainerBaseElement);\n }\n /** @readonly Gets the items-container this item is currently registered with, if any. */\n get container() {\n return this.#container;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const container = this.#container = this.findContainer();\n if (!Utils.isNull(container)) {\n container.register(this);\n }\n }\n disconnectedCallback() {\n if (!Utils.isNull(this.#container)) {\n this.#container.unregister(this);\n }\n super.disconnectedCallback();\n }\n}\n/**\n * Base class for form fields that also act as a registry of {@link PacemItemElement} children (e.g. a\n * datasource-backed selection field whose options are declared, not just databound). Combines\n * {@link PacemBaseElement}'s field behavior with `ItemsContainer<TItem>`'s registration API.\n * See {@link PacemDataSourceElement} for the concrete specialization holding {@link PacemDataItemElement}s.\n */\nexport class PacemItemsContainerBaseElement extends PacemBaseElement {\n /**\n * Registers a new item among the items.\n * @param item {PacemDataItemElement} Item to be enrolled\n */\n register(item) {\n let flag = true;\n if (Utils.isNull(this.items)) {\n this.items = [item];\n }\n else if (this.items.indexOf(item) === -1) {\n this.items.push(item);\n }\n else {\n flag = false;\n }\n return flag;\n }\n /**\n * Removes an existing element from the items.\n * @param item {PacemDataItemElement} Item to be removed\n */\n unregister(item) {\n const ndx = !Utils.isNull(this.items) && this.items.indexOf(item);\n if (ndx >= 0) {\n this.items.splice(ndx, 1)[0];\n return true;\n }\n return false;\n }\n}\n__decorate([\n Watch( /* can only be databound or assigned at runtime */)\n], PacemItemsContainerBaseElement.prototype, \"items\", void 0);\n/** A single, declaratively-authored option (`<p-data-item>`) of a {@link PacemDataSourceElement}, as an alternative to a databound `datasource` array. */\nlet PacemDataItemElement = class PacemDataItemElement extends PacemItemElement {\n};\n__decorate([\n Watch({\n converter: {\n convert: (attr, element) => {\n // boolean?\n if (attr === 'true')\n return true;\n if (attr === 'false')\n return false;\n // number?\n let num = parseFloat(attr);\n if (!isNaN(num))\n return num;\n // date?\n let date = Utils.Dates.parse(attr);\n if (Utils.Dates.isDate(date))\n return date;\n return attr;\n },\n convertBack: (prop) => prop.toString()\n }\n })\n], PacemDataItemElement.prototype, \"value\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemDataItemElement.prototype, \"label\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemDataItemElement.prototype, \"disabled\", void 0);\nPacemDataItemElement = __decorate([\n CustomElement({ tagName: P + '-data-item' })\n], PacemDataItemElement);\nexport { PacemDataItemElement };\n/**\n * Base class for datasource-driven selection fields (lists, dropdowns, radio/checkbox groups, autocomplete,\n * ...): adapts a raw `datasource` (an array of arbitrary entities, or declared {@link PacemDataItemElement}\n * children registered via {@link PacemItemsContainerBaseElement}) into a normalized {@link DataSource}, and\n * provides the value/view-value mapping and selection-matching logic (single or, when `multipleChoice` is\n * `true`, multi-select) that concrete subclasses build their UI on top of.\n */\nexport class PacemDataSourceElement extends PacemItemsContainerBaseElement {\n constructor(multipleChoice = false) {\n super();\n this.multipleChoice = multipleChoice;\n this._itemPropertyChangedHandler = (evt) => {\n this.databind();\n };\n }\n /**\n * Registers a new item among the items.\n * @param item {PacemDataItemElement} Item to be enrolled\n */\n register(item) {\n const flag = super.register(item);\n if (flag) {\n item.addEventListener(PropertyChangeEventName, this._itemPropertyChangedHandler, false);\n }\n return flag;\n }\n /**\n * Removes an existing element from the items.\n * @param item {PacemDataItemElement} Item to be removed\n */\n unregister(item) {\n const flag = super.register(item);\n if (flag) {\n item.removeEventListener(PropertyChangeEventName, this._itemPropertyChangedHandler, false);\n }\n return flag;\n }\n /** @overridable Maps a raw `datasource` array into its {@link DataSource} representation via {@link mapEntityToItem}. */\n buildAdaptedDatasource(ds = this.datasource) {\n return ds && ds.map(i => this.mapEntityToItem(i));\n }\n /** Recomputes {@link adaptedDatasource} and, if the current `value` no longer matches any item, calls {@link handleDatasourceMismatch}. Debounced. */\n databind(datasource = this.buildAdaptedDatasource(this.datasource)) {\n if (Utils.isNull(datasource) && Utils.isNull(this.adaptedDatasource))\n return;\n const ds = this.adaptedDatasource = datasource || []; /*\n .map(i => this.mapEntityToItem(i))*/\n ;\n if (Utils.isNullOrEmpty(ds.filter(i => this.isDataSourceItemSelected(i))))\n this.handleDatasourceMismatch(ds);\n }\n /** @overridable Called by {@link databind} when the current `value` matches none of the adapted `datasource` items. Defaults to clearing `value`. */\n handleDatasourceMismatch(datasource) {\n this.value = undefined;\n }\n /**\n * Checks wether the provided `item` matches the control's criteria for a selected option against a provided value (which defaults to control's value).\n * @param item {any} item to check against\n * @param value {any} value to match\n */\n isItemSelected(item, value = this.value) {\n if (Utils.isNullOrEmpty(value)) {\n return false;\n }\n const v = this.mapEntityToValue(item), c = this.compareBy;\n if (this.multipleChoice && Utils.isArray(value))\n return !Utils.isNull(value.find(j => \n // caution: numbers and strings might be compared, ease the comparison by loosing equality constraints: `===` to `==`.\n j /* value item */ == /*=*/ v /* datasource item */ || (typeof j === 'object' && !Utils.isNullOrEmpty(c) && c in v && c in j && v[c] == /*=*/ j[c])));\n else if (!this.multipleChoice) {\n return value == /*=*/ v || (typeof value === 'object' && !Utils.isNullOrEmpty(c) && c in v && c in value && v[c] == /*=*/ value[c]);\n }\n else {\n return false;\n }\n }\n /**\n * Checks wether the provided `item` matches the control's criteria for a selected option against a provided value (which defaults to control's value).\n * @param item {DataSourceItem} item to check against\n * @param value {any} value to match\n */\n isDataSourceItemSelected(item, value = this.value) {\n if (Utils.isNullOrEmpty(value)) {\n return false;\n }\n if (item.disabled) {\n return false;\n }\n const c = this.compareBy;\n if (this.multipleChoice && Utils.isArray(value)) {\n // caution: numbers and strings might be compared, ease the comparison by loosing equality constraints: `===` to `==`.\n let found = value.find(j => j == /*=*/ item.value || (typeof j === 'object' && !Utils.isNullOrEmpty(c) && c in j && !Utils.isNullOrEmpty(item.value) && c in item.value && j[c] == /*=*/ item.value[c]));\n return !Utils.isNull(found);\n }\n else if (!this.multipleChoice && !Utils.isNullOrEmpty(item.value)) {\n return value == /*=*/ item.value || (typeof value === 'object' && !Utils.isNullOrEmpty(c) && c in value && !Utils.isNullOrEmpty(item.value) && c in item.value && value[c] == /*=*/ item.value[c]);\n }\n else {\n return false;\n }\n }\n /** @overridable Extracts the selectable `value` out of a raw datasource entity (via {@link valueProperty}, or `entity.value` for a {@link PacemDataItemElement}). */\n mapEntityToValue(entity) {\n if (entity == null) {\n throw 'entity cannot be null';\n }\n // declared\n if (entity instanceof PacemDataItemElement) {\n return entity.value;\n }\n // databound\n let value = entity, prop;\n if (prop = this.valueProperty) {\n value = entity[prop];\n }\n return value;\n }\n /** @overridable Extracts the display text out of a raw datasource entity (via {@link textProperty}, or `entity.label`/`entity.value` for a {@link PacemDataItemElement}). */\n mapEntityToViewValue(entity) {\n if (entity == null)\n throw 'entity cannot be null';\n // declared\n if (entity instanceof PacemDataItemElement) {\n return entity.label || entity.value;\n }\n // databound\n let viewValue = entity.toString(), prop;\n if (prop = this.textProperty) {\n viewValue = entity[prop];\n }\n return viewValue;\n }\n /** @overridable Adapts a raw datasource entity into its normalized {@link DataSourceItem} shape, using {@link mapEntityToValue}, {@link mapEntityToViewValue} and {@link disabledProperty}. */\n mapEntityToItem(entity) {\n if (entity == null) {\n throw 'entity cannot be null';\n }\n // declared\n if (entity instanceof PacemDataItemElement) {\n return { value: entity.value, viewValue: entity.label || entity.value, disabled: entity.disabled, data: entity };\n }\n // databound\n let disabled = false;\n const disabledProp = this.disabledProperty;\n if (!Utils.isNullOrEmpty(disabledProp)) {\n disabled = entity[disabledProp] || false;\n }\n return { value: this.mapEntityToValue(entity), viewValue: this.mapEntityToViewValue(entity), disabled: disabled, data: entity };\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'datasource':\n case 'textProperty':\n case 'disabledProperty':\n case 'valueProperty':\n cancelAnimationFrame(this._handle);\n this._handle = requestAnimationFrame(() => {\n this.databind();\n // refresh view value, since it depends on selected items.\n this.viewValue = this.getViewValue(this.value);\n });\n break;\n case 'items':\n cancelAnimationFrame(this._handleItems);\n this._handleItems = requestAnimationFrame(() => {\n this.datasource = this.items;\n });\n break;\n }\n }\n getViewValue(val) {\n if (Utils.isNullOrEmpty(this.datasource)) {\n return undefined;\n }\n return this.datasource.filter(i => this.isItemSelected(i)).map(i => this.mapEntityToViewValue(i)).join(', ');\n }\n convertValueAttributeToProperty(attr) {\n if (this.multipleChoice) {\n return attr.split(',').map(i => i.trim());\n }\n return attr;\n }\n compareValuePropertyValues(old, val) {\n return DefaultComparer(old, val);\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemDataSourceElement.prototype, \"datasource\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataSourceElement.prototype, \"valueProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataSourceElement.prototype, \"textProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataSourceElement.prototype, \"disabledProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataSourceElement.prototype, \"compareBy\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemDataSourceElement.prototype, \"adaptedDatasource\", void 0);\n__decorate([\n Debounce(true)\n], PacemDataSourceElement.prototype, \"databind\", null);\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Components, CustomElement, Defaults, P, PCSS, PropertyConverters, Watch } from '@pacem/pacem-core';\n//namespace Pacem.Components.Scaffolding {\n/** Markup fragment for a `pacem-char-count` companion element, meant to be spliced into a `@CustomElement` template so a text field can display its own character counter. */\nexport const CHAR_COUNTER_CHILD = `<${P}-char-count hide=\"{{ :host.readonly || !(:host.minlength > 0 || :host.maxlength > 0) }}\" minlength=\"{{ :host.minlength }}\" maxlength=\"{{ :host.maxlength }}\" string=\"{{ :host.value }}\"></${P}-char-count>`;\n/** Displays how many characters {@link string} contains, relative to {@link minlength}/{@link maxlength}, flagging validity via CSS class. */\nlet PacemCharCountElement = class PacemCharCountElement extends Components.PacemElement {\n _isValid(v) {\n const l = this._length(v);\n if (this.minlength > 0 && l < this.minlength)\n return false;\n if (this.maxlength > 0 && l > this.maxlength)\n return false;\n return true;\n }\n _length(s) {\n return (s && s.length) || 0;\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemCharCountElement.prototype, \"minlength\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemCharCountElement.prototype, \"maxlength\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCharCountElement.prototype, \"string\", void 0);\nPacemCharCountElement = __decorate([\n CustomElement({\n tagName: P + '-char-count',\n shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-panel class=\"${PCSS}-char-count\" css-class=\"{{ {'valid': :host._isValid(:host.string), 'invalid': !:host._isValid(:host.string) } }}\">\r\n <${P}-span hide=\"{{ !(:host.minlength > 0) }}\" class=\"${PCSS}-char-min\" content=\"{{ :host.minlength }}\"></${P}-span>\r\n <${P}-span class=\"${PCSS}-char-curr\" content=\"{{ :host._length(:host.string) || '0' }}\"></${P}-span>\r\n <${P}-span hide=\"{{ !(:host.maxlength > 0) }}\" class=\"${PCSS}-char-max\" content=\"{{ :host.maxlength }}\"></${P}-span>\r\n</${P}-panel>`\n })\n], PacemCharCountElement);\nexport { PacemCharCountElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomTypedEvent, CustomEventUtils, Debounce, Utils, P, PCSS, CustomElement, Watch, Defaults, ViewChild, PropertyChangeEvent, PropertyChangeEventName } from '@pacem/pacem-core';\nimport { HistoryService } from '@pacem/pacem-foundation';\nimport { PacemItemElement, PacemItemsContainerBaseElement } from './types-components';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\nconst EXECUTECOMMAND_NAME = 'execute';\nconst EMPTY_CONTENT = '<p><br></p>';\nclass ContenteditableChangeEvent extends CustomTypedEvent {\n constructor(html) {\n super('contenteditablechange', { html: html });\n }\n}\n/** Base class for {@link PacemContenteditableElement} toolbar/command items, registered as {@link PacemItemElement} children of the editor. */\nexport class PacemContenteditableCommandElement extends PacemItemElement {\n constructor() {\n super(...arguments);\n this._containerPropChangeHandler = (evt) => {\n const p = evt.detail;\n this.containerPropertyChangedCallback(p.propertyName, p.oldValue, p.currentValue, p.firstChange);\n };\n }\n execCommand(...args) {\n const me = this;\n if (me.disabled) {\n return;\n }\n me.exec.apply(me, args).then(_ => {\n me.dispatchEvent(new Event(EXECUTECOMMAND_NAME));\n }, e => {\n console.error(e);\n });\n }\n connectedCallback() {\n super.connectedCallback();\n Utils.addClass(this, PCSS + '-contenteditable-command');\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const cnt = this.container;\n if (!Utils.isNull(cnt)) {\n this.contentElement = cnt.contentElement;\n cnt.addEventListener(PropertyChangeEventName, this._containerPropChangeHandler, false);\n }\n }\n disconnectedCallback() {\n const cnt = this.container;\n if (!Utils.isNull(cnt)) {\n cnt.removeEventListener(PropertyChangeEventName, this._containerPropChangeHandler, false);\n }\n super.disconnectedCallback();\n }\n containerPropertyChangedCallback(name, old, val, first) {\n if (name === 'range') {\n this.range = val;\n }\n }\n}\n__decorate([\n Watch()\n], PacemContenteditableCommandElement.prototype, \"range\", void 0);\n__decorate([\n Watch()\n], PacemContenteditableCommandElement.prototype, \"contentElement\", void 0);\nfunction isFileCommand(obj) {\n return obj instanceof PacemContenteditableCommandElement && 'pasteCallback' in obj && typeof obj['pasteCallback'] === 'function';\n}\nfunction isElement(node) {\n return node?.nodeType == Node.ELEMENT_NODE;\n}\n/** Rich-text (`contenteditable`) field, hosting {@link PacemContenteditableCommandElement} toolbar commands and tracking an undo/redo {@link history}. */\nlet PacemContenteditableElement = class PacemContenteditableElement extends PacemItemsContainerBaseElement {\n constructor() {\n super('rich text editor');\n this._focusHandler = (evt) => {\n this._ensureInteractiveMarkup();\n };\n this._blurHandler = (evt) => {\n // clean up the output\n const container = this._container;\n for (let command of this.items) {\n command.cleanUp(container);\n }\n this._checkChangedHandler(evt);\n };\n this._pasteHandler = (evt) => {\n // I'll manage it myself!\n evt.preventDefault();\n const range = this.range, files = evt.clipboardData.files;\n if (!Utils.isNull(range) && files.length === 0) {\n const text = evt.clipboardData.getData('text/plain');\n const plainText = text.replace(/</gi, '<').replace(/\\n/gi, '<br />');\n const frag = range.createContextualFragment(plainText);\n range.deleteContents();\n range.insertNode(frag);\n this._checkChangedHandler(evt);\n }\n else {\n for (let j = 0; j < files.length; j++) {\n const f = files.item(j);\n for (let cmd of this.items) {\n if (isFileCommand(cmd)) {\n cmd.pasteCallback(f).then(_ => this._checkChangedHandler(evt), _ => { });\n }\n }\n }\n // this._checkAndSynchronizeHandler(evt);\n }\n };\n this._shortcutHandler = (evt) => {\n // prevent any default shortcut combo apart from 'copy', 'cut' and 'paste' (mainly due to the clipboard access limitations)\n if (evt.ctrlKey && ['C', 'V', 'X'].indexOf(evt.key?.toUpperCase()) === -1) {\n // Let it manage it only if the relevant command is available\n evt.preventDefault();\n }\n };\n this._inputHandler = (evt) => {\n this._fixRangeMarkup();\n this._checkChangedHandler(evt);\n };\n this._checkChangedHandler = (evt) => {\n const container = this._container, inputHtml = container.innerHTML;\n var html = inputHtml;\n if (Utils.isNullOrEmpty(inputHtml)\n || inputHtml === '<br>'\n || inputHtml === EMPTY_CONTENT) {\n container.innerHTML = EMPTY_CONTENT;\n html = '';\n }\n if (html != this.value) {\n this.changeHandler(new ContenteditableChangeEvent(html));\n if (this.value != this.#history.current) {\n this._updateHistory();\n }\n }\n // fire history change in any case\n this._fireHistoryChange();\n };\n this._selectionChangeHandler = (evt) => {\n const selection = document.getSelection();\n if (selection && selection.anchorNode && this._container.contains(selection.anchorNode)) {\n const range = selection.getRangeAt(0);\n this.range = range.cloneRange();\n }\n else {\n this.range = null;\n }\n };\n //this._workspace = document.createElement('div');\n }\n #history;\n /** @readonly Gets the undo/redo history service tracking this editor's HTML content. */\n get history() {\n return this.#history;\n }\n reset() {\n super.reset();\n this.#history.reset();\n this._fireHistoryChange();\n }\n _fireHistoryChange() {\n const h = this.#history;\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'history', oldValue: h, currentValue: h }));\n }\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n toggleReadonlyView(readonly) {\n this._dashboard.hidden = readonly;\n if (readonly) {\n this._container.removeAttribute('contenteditable');\n }\n else {\n this._container.setAttribute('contenteditable', 'true');\n document.execCommand(\"defaultParagraphSeparator\", false, \"p\");\n }\n }\n register(item) {\n if (super.register(item)) {\n item.addEventListener(EXECUTECOMMAND_NAME, this._checkChangedHandler, false);\n return true;\n }\n return false;\n }\n unregister(item) {\n if (super.unregister(item)) {\n item.removeEventListener(EXECUTECOMMAND_NAME, this._checkChangedHandler, false);\n return true;\n }\n return false;\n }\n /** @override */\n get preventKeyboardSubmit() {\n return true;\n }\n get inputFields() {\n return [this._container];\n }\n get contentElement() {\n return this._container;\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n if (CustomEventUtils.isInstanceOf(evt, ContenteditableChangeEvent)) {\n const html = this.value = evt.detail.html;\n resolve(html);\n // find a less-instrusive way to call this...\n this._selectionChangeHandler(evt);\n }\n else\n resolve(this.value);\n });\n }\n _fixRangeMarkup() {\n const range = this.range, fnDownwards = (node) => {\n node.childNodes.forEach(i => fnDownwards(i));\n if (isElement(node) && node.tagName === 'SPAN') {\n Element.prototype.replaceWith.apply(node, Array.from(node.childNodes));\n }\n else if (node instanceof HTMLElement) {\n node.removeAttribute('style');\n }\n }, fn = (node) => {\n let element = node;\n if (!isElement(element)) {\n element = node.parentElement;\n }\n fnDownwards(element);\n };\n if (!Utils.isNull(range)) {\n fn(range.commonAncestorContainer);\n }\n }\n _ensureInteractiveMarkup() {\n const workspace = this._container, nodes = workspace.childNodes, childCount = nodes.length;\n if (childCount == 0 || workspace.innerHTML === EMPTY_CONTENT) {\n workspace.innerHTML = EMPTY_CONTENT;\n }\n else {\n let node, range;\n const closeRange = (n) => {\n range.setEndAfter(n);\n const p = document.createElement('p');\n range.surroundContents(p);\n };\n for (let j = 0; j < childCount; j++) {\n node = nodes.item(j);\n if (!(node instanceof Element)) {\n if (Utils.isNull(range)) {\n range = document.createRange();\n range.setStartBefore(node);\n }\n }\n else if (range) {\n closeRange(node.previousSibling);\n range = null;\n }\n }\n // open range?\n if (!Utils.isNull(range)) {\n closeRange(node);\n }\n }\n }\n _updateHistory() {\n this.#history.push(this.value);\n this._fireHistoryChange();\n }\n acceptValue(val) {\n if (!Utils.isNull(this._container) && /*the following `if` statement prevents from flashing the content and writing backwards!*/ val != this._container.innerHTML) {\n this._container.innerHTML = val;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const container = this._container;\n this.#history = new HistoryService(this.value);\n container.addEventListener('blur', this._blurHandler, false);\n container.addEventListener('keydown', this._shortcutHandler, false);\n container.addEventListener('focus', this._focusHandler, false);\n container.addEventListener('input', this._inputHandler, false);\n container.addEventListener('paste', this._pasteHandler, false);\n document.addEventListener('selectionchange', this._selectionChangeHandler, false);\n }\n disconnectedCallback() {\n document.removeEventListener('selectionchange', this._selectionChangeHandler, false);\n const container = this._container;\n if (!Utils.isNull(container)) {\n container.removeEventListener('keydown', this._shortcutHandler, false);\n container.removeEventListener('blur', this._blurHandler, false);\n container.removeEventListener('focus', this._focusHandler, false);\n container.removeEventListener('input', this._inputHandler, false);\n container.removeEventListener('paste', this._pasteHandler, false);\n }\n super.disconnectedCallback();\n }\n getViewValue(val) {\n return val;\n }\n};\n__decorate([\n ViewChild(\"div[pacem]\")\n], PacemContenteditableElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild(\"div[dashboard]\")\n], PacemContenteditableElement.prototype, \"_dashboard\", void 0);\n__decorate([\n Watch()\n], PacemContenteditableElement.prototype, \"range\", void 0);\n__decorate([\n Debounce(500)\n], PacemContenteditableElement.prototype, \"_updateHistory\", null);\nPacemContenteditableElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-contenteditable ${PCSS}-viewfinder\">\r\n <div contenteditable=\"true\" role=\"presenter\" pacem></div>\r\n</div>${CHAR_COUNTER_CHILD}\r\n<div dashboard>\r\n <${P}-content></${P}-content>\r\n</div>`\n })\n], PacemContenteditableElement);\nexport { PacemContenteditableElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PropertyConverters, Utils, Watch } from '@pacem/pacem-core';\nimport { PacemContenteditableCommandElement } from '../contenteditable';\n//namespace Pacem.Components.Scaffolding {\n/** Base class for the toolbar button-shaped contenteditable commands (bold, align, link, wrap, ...), sharing icon/shortcut/tooltip/active-state behavior. */\nexport class PacemContenteditableButtonCommandElement extends PacemContenteditableCommandElement {\n cleanUp(_) {\n // do nothing\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'range') {\n this.active = !Utils.isNull(val);\n }\n }\n getTooltip(altText = this.altText, shortcut = this.keyboardShortcut) {\n const hint = altText;\n if (Utils.isNullOrEmpty(shortcut)) {\n return hint;\n }\n return `${hint} (${shortcut})`;\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableButtonCommandElement.prototype, \"icon\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableButtonCommandElement.prototype, \"keyboardShortcut\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableButtonCommandElement.prototype, \"altText\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemContenteditableButtonCommandElement.prototype, \"active\", void 0);\nexport const CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE = `<${P}-button disabled=\"{{ !:host.active }}\" css-class=\"{{ {'text-primary': :host.isRelevant(:host.range)} }}\" tooltip=\"{{ :host.getTooltip(:host.altText, :host.keyboardShortcut) }}\" class=\"button\" on-click=\":host.execCommand()\"><${P}-icon class=\"text-rootsize\" icon=\"{{ :host.icon }}\"></${P}-icon></${P}-button>\r\n <${P}-shortcut disabled=\"{{ !:host.active }}\" target=\"{{ :host.contentElement }}\" combination=\"{{ :host.keyboardShortcut }}\" on-execute=\":host.execCommand()\"></${P}-shortcut>`;\n//}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Defaults, Utils, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\n//namespace Pacem.Components.Scaffolding {\n/** Toolbar button undoing or redoing the last change tracked by the contenteditable host's history. */\nlet PacemContenteditableHistoryCommandElement = class PacemContenteditableHistoryCommandElement extends PacemContenteditableButtonCommandElement {\n exec() {\n return new Promise((resolve, _) => {\n const history = this.container?.history;\n if (!Utils.isNull(history)) {\n switch (this.command) {\n case 'redo':\n if (history.canRedo) {\n history.redo();\n resolve();\n }\n break;\n default:\n if (history.canUndo) {\n history.undo();\n resolve();\n }\n break;\n }\n this.contentElement.innerHTML = history.current;\n }\n });\n }\n isRelevant(_) {\n return false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'command':\n this.icon = this.icon || val;\n this.altText = val;\n this.keyboardShortcut = this.keyboardShortcut || ('Ctrl+' + (val === 'redo' ? 'Y' : 'Z'));\n break;\n }\n }\n containerPropertyChangedCallback(name, old, val, first) {\n super.containerPropertyChangedCallback(name, old, val, first);\n const c = this.container, h = c.history;\n if (name === 'range' || name === 'history') {\n // override 'active' state setting\n this.active = !Utils.isNull(c.range) &&\n ((this.command === 'redo' && h?.canRedo) || (this.command !== 'redo' && h?.canUndo));\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String, reflectBack: true })\n], PacemContenteditableHistoryCommandElement.prototype, \"command\", void 0);\nPacemContenteditableHistoryCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-historycommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE\n })\n], PacemContenteditableHistoryCommandElement);\nexport { PacemContenteditableHistoryCommandElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Defaults, Utils, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\nimport { ContenteditableUtils } from './utils';\n//namespace Pacem.Components.Scaffolding {\n/** Toolbar button creating or removing a hyperlink (`<a>`) around the current selection. */\nlet PacemContenteditableLinkCommandElement = class PacemContenteditableLinkCommandElement extends PacemContenteditableButtonCommandElement {\n isRelevant(range) {\n return !Utils.isNull(ContenteditableUtils.findSurroundingNode(range, HTMLAnchorElement));\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (Utils.isNullOrEmpty(this.altText)) {\n this.altText = 'insert link';\n }\n if (Utils.isNullOrEmpty(this.icon)) {\n this.icon = 'insert_link';\n }\n if (Utils.isNullOrEmpty(this.keyboardShortcut)) {\n this.keyboardShortcut = 'Ctrl+H';\n }\n }\n exec(arg, target = this.target) {\n return new Promise((resolve, reject) => {\n var selection = this.range;\n var anchorNode = ContenteditableUtils.findSurroundingNode(selection, HTMLAnchorElement);\n //console.log('selection: ' + selection);\n var current = \"http://\";\n var regex = /<a.*href=\\\"([^\\\"]*)/;\n if (anchorNode && regex.test(anchorNode.outerHTML)) {\n current = regex.exec(anchorNode.outerHTML)[1];\n }\n //console.log('link: ' + current);\n if (arg === 'current') {\n return current == 'http://' ? '' : current;\n }\n var link = arg || (arg === void 0 && window.prompt('link (empty to unlink):', current));\n if (!link) {\n document.execCommand('unlink');\n }\n else {\n document.execCommand('createLink', false, link);\n anchorNode = ContenteditableUtils.findSurroundingNode(selection, HTMLAnchorElement);\n if (anchorNode) {\n anchorNode.setAttribute('target', target || '_blank');\n }\n }\n resolve();\n });\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemContenteditableLinkCommandElement.prototype, \"target\", void 0);\nPacemContenteditableLinkCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-linkcommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE\n })\n], PacemContenteditableLinkCommandElement);\nexport { PacemContenteditableLinkCommandElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PCSS, Utils, ViewChild } from '@pacem/pacem-core';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\nimport { ContenteditableUtils, ContenteditableDOMObserver } from './utils';\n//namespace Pacem.Components.Scaffolding {\n//@CustomElement({ tagName: P + '-contenteditable-selectable' })\n//export class PacemContenteditableSelectableBehaviorElement extends Pacem.Behaviors.PacemBehavior {\n// protected decorate(element: Element) {\n// if (element instanceof HTMLElement || element instanceof SVGElement) {\n// Utils.addClass(element, PCSS + '-contenteditable-selectable');\n// }\n// }\n// protected undecorate(element: Element) {\n// if (element instanceof HTMLElement || element instanceof SVGElement) {\n// Utils.removeClass(element, PCSS + '-contenteditable-selectable');\n// }\n// }\n//}\nfunction insertPicture(range, blob) {\n return new Promise((resolve, reject) => {\n Utils.blobToDataURL(blob)\n .then(Utils.loadImage)\n .then(img => {\n const pic = document.createElement('picture');\n pic.setAttribute('contenteditable', 'false');\n img.tabIndex = 0;\n pic.appendChild(img);\n range.deleteContents();\n range.insertNode(pic);\n resolve(pic);\n });\n });\n}\n/** Toolbar button inserting a (rescalable) picture into the contenteditable host, either by file picker or by pasted/dropped image file. */\nlet PacemContenteditableImageCommandElement = class PacemContenteditableImageCommandElement extends PacemContenteditableButtonCommandElement {\n constructor() {\n super(...arguments);\n this._setBehaviorHandler = (evt) => {\n const img = evt.target, pic = img.parentElement;\n // this._rescale.register(pic);\n this.range = ContenteditableUtils.select(pic);\n };\n this._disposeBehaviorHandler = (_) => {\n };\n // #endregion\n }\n pasteCallback(f) {\n if (f.type.startsWith('image')) {\n return insertPicture(this.range, f);\n }\n else {\n return Promise.reject();\n }\n }\n cleanUp(content) {\n content.querySelectorAll('picture[contenteditable=false]').forEach(pic => {\n const childCount = pic.childNodes.length;\n for (let j = childCount - 1; j > 0; j--) {\n // remove leftover rescale divs\n pic.childNodes.item(j).remove();\n }\n });\n // legacy leftovers\n content.querySelectorAll('div.' + PCSS + '-rescale').forEach(i => i.remove());\n }\n isRelevant(range) {\n return false;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (Utils.isNullOrEmpty(this.altText)) {\n this.altText = 'insert image';\n }\n if (Utils.isNullOrEmpty(this.icon)) {\n this.icon = 'insert_photo';\n }\n if (Utils.isNullOrEmpty(this.keyboardShortcut)) {\n this.keyboardShortcut = 'Ctrl+Shift+I';\n }\n this._rescale.addEventListener('rescale', this._rescaleImg, false);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._rescale)) {\n this._rescale.removeEventListener('rescale', this._rescaleImg, false);\n this._disposeContainer();\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'disabled':\n if (!Utils.isNull(this._rescale)) {\n this._rescale.disabled = val;\n }\n break;\n case 'contentElement':\n if (old) {\n this._disposeContainer(old);\n }\n if (val) {\n this._initContainer(val);\n }\n break;\n case 'range':\n this._rangeChangeCallback(old, val);\n break;\n }\n }\n exec() {\n return new Promise((resolve, reject) => {\n const file = this._file, range = this.range;\n file.onchange = (evt) => {\n const f = file.files[0];\n if (Utils.isNull(f)) {\n resolve();\n }\n else {\n insertPicture(range, f)\n .then(pic => {\n file.value = '';\n resolve();\n });\n }\n };\n file.click();\n });\n }\n // #region private\n _rescaleImg(evt) {\n evt.preventDefault();\n const pic = evt.detail.element, rect = evt.detail.targetRect, img = pic.firstElementChild;\n img.style.width = rect.width + 'px';\n img.style.height = rect.height + 'px';\n }\n #observer;\n _rangeChangeCallback(old, val) {\n if (!Utils.isNull(old)\n && !old.collapsed\n && old.commonAncestorContainer instanceof Element\n && old.commonAncestorContainer === old.startContainer\n && old.commonAncestorContainer === old.endContainer\n && old.startOffset === (old.endOffset - 1)) {\n const el = old.commonAncestorContainer.childNodes.item(old.startOffset);\n if (el instanceof HTMLPictureElement) {\n this._rescale.unregister(el);\n }\n }\n if (!Utils.isNull(val)\n && !val.collapsed\n && val.commonAncestorContainer instanceof Element\n && val.commonAncestorContainer === val.startContainer\n && val.commonAncestorContainer === val.endContainer\n && val.startOffset === (val.endOffset - 1)) {\n const el = val.commonAncestorContainer.childNodes.item(val.startOffset);\n if (el instanceof HTMLPictureElement) {\n this._rescale.register(el);\n }\n }\n }\n _enhancePictureElement(pic) {\n if (pic.firstElementChild) {\n pic.firstElementChild.addEventListener('focus', this._setBehaviorHandler, false);\n pic.firstElementChild.addEventListener('blur', this._disposeBehaviorHandler, false);\n }\n }\n _downgradePictureElement(pic) {\n if (pic.firstElementChild) {\n // this._rescale.unregister(pic);\n pic.firstElementChild.removeEventListener('focus', this._setBehaviorHandler, false);\n pic.firstElementChild.removeEventListener('blur', this._disposeBehaviorHandler, false);\n }\n }\n _initContainer(contentElement = this.contentElement) {\n this.#observer = new ContenteditableDOMObserver(contentElement, (pic, removed) => {\n if (pic instanceof HTMLPictureElement) {\n if (removed) {\n this._downgradePictureElement(pic);\n }\n else {\n this._enhancePictureElement(pic);\n }\n }\n }, 'picture');\n }\n _disposeContainer(_ = this.contentElement) {\n const observer = this.#observer;\n if (!Utils.isNull(observer)) {\n observer.dispose();\n }\n }\n};\n__decorate([\n ViewChild('input[type=file]')\n], PacemContenteditableImageCommandElement.prototype, \"_file\", void 0);\n__decorate([\n ViewChild(P + \"-rescale\")\n], PacemContenteditableImageCommandElement.prototype, \"_rescale\", void 0);\nPacemContenteditableImageCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-imagecommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<input type=\"file\" accept=\"image/png, image/gif, image/jpeg, image/bmp, image/x-icon\" class=\"${PCSS}-trasparent ${PCSS}-inert\" pacem hidden>` +\n CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE + `<${P}-rescale keep-proportions=\"true\"></${P}-rescale>`\n })\n], PacemContenteditableImageCommandElement);\nexport { PacemContenteditableImageCommandElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PropertyConverters, Utils, Watch } from '@pacem/pacem-core';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\nimport { ContenteditableUtils } from './utils';\n//namespace Pacem.Components.Scaffolding {\n/** Well-known `document.execCommand` commands supported out-of-the-box by {@link PacemContenteditableExecCommandElement}. */\nexport var KnownExecCommand;\n(function (KnownExecCommand) {\n KnownExecCommand[\"Bold\"] = \"bold\";\n KnownExecCommand[\"Italic\"] = \"italic\";\n KnownExecCommand[\"Underline\"] = \"underline\";\n KnownExecCommand[\"StrikeThrough\"] = \"strikeThrough\";\n KnownExecCommand[\"OrderedList\"] = \"insertOrderedList\";\n KnownExecCommand[\"UnorderedList\"] = \"insertUnorderedList\";\n KnownExecCommand[\"JustifyLeft\"] = \"justifyLeft\";\n KnownExecCommand[\"JustifyCenter\"] = \"justifyCenter\";\n KnownExecCommand[\"JustifyRight\"] = \"justifyRight\";\n KnownExecCommand[\"JustifyFull\"] = \"justifyFull\";\n //Copy = 'copy',\n //Cut = 'cut',\n //Paste = 'paste'\n //Undo = 'undo',\n //Redo = 'redo',\n})(KnownExecCommand || (KnownExecCommand = {}));\n;\n/**\n * Returns relevant material icon ligatures\n * @param cmd A known command\n */\nfunction getKnownCommandIcon(cmd) {\n const lower_cmd = cmd?.toLowerCase();\n switch (lower_cmd) {\n case \"bold\":\n case \"italic\":\n return 'format_' + lower_cmd;\n case 'underline':\n return 'format_underlined';\n case 'strikethrough':\n return 'strikethrough_s';\n case 'insertorderedlist':\n return 'format_list_numbered';\n case 'insertunorderedlist':\n return 'format_list_bulleted';\n case 'justifyleft':\n case 'justifyright':\n case 'justifycenter':\n return 'format_align_' + lower_cmd.substr(7 /* 'justify' */);\n case 'justifyfull':\n return 'format_align_justify';\n default:\n return 'help_outline';\n }\n}\nfunction getKnownCommandFilters(cmd, argument) {\n const lower_cmd = cmd?.toLowerCase();\n switch (lower_cmd) {\n case \"bold\":\n return ['b', 'strong'];\n case \"italic\":\n return ['i', 'em'];\n case 'underline':\n return ['u'];\n case 'strikethrough':\n return ['strike', 's', 'del'];\n case 'insertorderedlist':\n return ['ol'];\n case 'insertunorderedlist':\n return ['ul'];\n case 'justifyleft':\n return [{ style: { name: 'text-align', value: 'left' } }];\n case 'justifyright':\n return [{ style: { name: 'text-align', value: 'right' } }];\n case 'justifycenter':\n return [{ style: { name: 'text-align', value: 'center' } }];\n case 'justifyfull':\n return [{ style: { name: 'text-align', value: 'justify' } }];\n case 'formatblock':\n return [argument];\n default:\n return ['none'];\n }\n}\n/** Toolbar button applying a native `document.execCommand`-backed formatting command (bold, italic, lists, ...) to the contenteditable host. */\nlet PacemContenteditableExecCommandElement = class PacemContenteditableExecCommandElement extends PacemContenteditableButtonCommandElement {\n _matchRelevance(range, arg) {\n const found = (typeof arg === 'object') ?\n ContenteditableUtils.findSurroundingNode(range, node => node instanceof HTMLElement\n && (Utils.isNullOrEmpty(arg.tagName) || node.tagName === arg.tagName.toUpperCase())\n && node.style[arg.style.name] === arg.style.value)\n : ContenteditableUtils.findSurroundingNode(range, arg);\n return !Utils.isNull(found);\n }\n isRelevant(range) {\n const filters = getKnownCommandFilters(this.command, this.argument);\n for (let f of filters) {\n if (this._matchRelevance(range, f)) {\n return true;\n }\n }\n return false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'command') {\n if (Utils.isNullOrEmpty(this.icon) || this.icon === getKnownCommandIcon(old)) {\n this.icon = getKnownCommandIcon(val);\n }\n if (Utils.isNullOrEmpty(this.altText) || this.altText === old) {\n this.altText = val;\n }\n }\n }\n exec() {\n return new Promise((resolve, _) => {\n // check if selection is around an 'inert' ([contenteditable=false]) element\n const r = this.range, cmdfilter = getKnownCommandFilters(this.command, this.argument)[0];\n if (!Utils.isNull(r)) {\n // #region wrap/unwrap (manages contenteditable=false 'islands')\n const island = ContenteditableUtils.testInertElementWrapping(r);\n if (island.result\n && typeof cmdfilter === 'string' && ['b', 'i', 'strike', 'u'].indexOf(cmdfilter) >= 0) {\n // wrap or remove?\n const wrapper = ContenteditableUtils.findSurroundingNode(r, cmdfilter);\n if (!Utils.isNull(wrapper) && wrapper.childNodes.length === 1) {\n // remove\n const newChild = wrapper.childNodes.item(0), select = island.element;\n wrapper.parentElement.replaceChild(newChild, wrapper);\n ContenteditableUtils.select(select);\n }\n else {\n // wrap\n const n = document.createElement(cmdfilter), select = island.element;\n const frag = r.extractContents();\n r.insertNode(n);\n n.append(frag);\n ContenteditableUtils.select(select);\n }\n }\n // #endregion\n else {\n document.execCommand(this.command, false, this.argument);\n }\n }\n resolve();\n });\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableExecCommandElement.prototype, \"command\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemContenteditableExecCommandElement.prototype, \"argument\", void 0);\nPacemContenteditableExecCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-execcommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE\n })\n], PacemContenteditableExecCommandElement);\nexport { PacemContenteditableExecCommandElement };\n","import { Utils, PCSS } from '@pacem/pacem-core';\nimport { PacemContenteditableHistoryCommandElement } from './historycommand';\nimport { PacemContenteditableAlignCommandElement } from './aligncommand';\nimport { PacemContenteditableLinkCommandElement } from './linkcommand';\nimport { PacemContenteditableImageCommandElement } from './imagecommand';\nimport { PacemContenteditableExecCommandElement, KnownExecCommand } from './execcommand';\n//namespace Pacem.Components.Scaffolding {\nfunction isRoot(element) {\n return element instanceof HTMLDivElement\n && element.contentEditable === 'true'\n && element.hasAttribute('pacem')\n && element.hasAttribute('role')\n && element.attributes['role'].value === 'presenter';\n}\n/** Watches a contenteditable host for insertion/removal of elements matching a given selector (e.g. inert `[contenteditable=false]` islands), notifying a callback for each match, recursively. */\nexport class ContenteditableDOMObserver {\n /**\n * Initializes the observer, immediately scanning the given container and then watching it for further mutations.\n * @param contentElement The contenteditable container to observe.\n * @param mutationCallback Invoked for each matching node found, added or removed.\n * @param selector CSS selector used to filter relevant nodes.\n */\n constructor(contentElement, mutationCallback, selector = '*[contenteditable=false]') {\n this.#callback = mutationCallback;\n this.#selector = selector;\n this.#mutationObserver = new MutationObserver(list => {\n const fn = (item, removed) => {\n item.childNodes.forEach(i => /* recursion here */ fn(i, removed));\n mutationCallback(item, removed);\n };\n for (let entry of list) {\n const added = entry.addedNodes;\n const removed = entry.removedNodes;\n for (let j = 0; j < added.length; j++) {\n const item = added.item(j);\n fn(item, false);\n }\n for (let j = 0; j < removed.length; j++) {\n const item = removed.item(j);\n fn(item, true);\n }\n }\n });\n this._initContainer(contentElement);\n }\n _initContainer(contentElement) {\n contentElement.querySelectorAll(this.#selector).forEach(el => this.#callback(el));\n this.#mutationObserver.observe(contentElement, { subtree: true, childList: true });\n this.#contentElement = contentElement;\n }\n _disposeContainer(contentElement) {\n const observer = this.#mutationObserver;\n if (!Utils.isNull(observer)) {\n observer.disconnect();\n }\n contentElement.querySelectorAll(this.#selector).forEach(el => this.#callback(el, true));\n }\n /** Stops observing and notifies the callback, as a removal, for every currently matching node. */\n dispose() {\n this._disposeContainer(this.#contentElement);\n }\n #selector;\n #callback;\n #contentElement;\n #mutationObserver;\n}\n/** Collection of static DOM/Range helper methods shared by the contenteditable command elements. */\nexport class ContenteditableUtils {\n /** Builds the default toolbar dashboard (undo/redo, formatting, alignment, link and image commands) as a detached fragment. */\n static getDefaultDashboard() {\n const frag = new DocumentFragment();\n const toolbar0 = document.createElement('div');\n Utils.addClass(toolbar0, PCSS + '-contenteditable-toolbar');\n const undo = new PacemContenteditableHistoryCommandElement();\n undo.command = 'undo';\n undo.keyboardShortcut = \"Ctrl+Z\";\n const redo = new PacemContenteditableHistoryCommandElement();\n redo.command = 'redo';\n redo.keyboardShortcut = \"Ctrl+Y\";\n toolbar0.append(undo, redo);\n const separator0 = document.createElement('div');\n Utils.addClass(separator0, PCSS + '-contenteditable-separator');\n const toolbar1 = document.createElement('div');\n Utils.addClass(toolbar1, PCSS + '-contenteditable-toolbar');\n const bold = new PacemContenteditableExecCommandElement();\n bold.command = KnownExecCommand.Bold;\n bold.keyboardShortcut = \"Ctrl+B\";\n const italic = new PacemContenteditableExecCommandElement();\n italic.command = KnownExecCommand.Italic;\n italic.keyboardShortcut = \"Ctrl+I\";\n const underline = new PacemContenteditableExecCommandElement();\n underline.command = KnownExecCommand.Underline;\n underline.keyboardShortcut = \"Ctrl+U\";\n const strike = new PacemContenteditableExecCommandElement();\n strike.command = KnownExecCommand.StrikeThrough;\n underline.keyboardShortcut = \"Ctrl+K\";\n const ul = new PacemContenteditableExecCommandElement();\n ul.command = KnownExecCommand.UnorderedList;\n const ol = new PacemContenteditableExecCommandElement();\n ol.command = KnownExecCommand.OrderedList;\n const alignLeft = new PacemContenteditableAlignCommandElement();\n alignLeft.align = 'left';\n const alignCenter = new PacemContenteditableAlignCommandElement();\n alignCenter.align = 'center';\n const alignRight = new PacemContenteditableAlignCommandElement();\n alignRight.align = 'right';\n const justify = new PacemContenteditableAlignCommandElement();\n justify.align = 'justify';\n toolbar1.append(bold, italic, underline, strike, ul, ol, alignLeft, alignCenter, alignRight, justify);\n const separator1 = document.createElement('div');\n Utils.addClass(separator1, PCSS + '-contenteditable-separator');\n const toolbar2 = document.createElement('div');\n Utils.addClass(toolbar2, PCSS + '-contenteditable-toolbar');\n const link = new PacemContenteditableLinkCommandElement();\n const img = new PacemContenteditableImageCommandElement();\n toolbar2.append(link, img);\n frag.append(toolbar0, separator0, toolbar1, separator1, toolbar2);\n return frag;\n }\n static findSurroundingNode(range, arg1) {\n var node = range instanceof Node ? range : range.commonAncestorContainer;\n while (node && !(typeof arg1 === 'string' && node instanceof Element && node.tagName === arg1.toUpperCase()\n || typeof arg1 === 'function' && Utils.isNull(arg1.prototype) && arg1(node)\n || typeof arg1 === 'function' && !Utils.isNull(arg1.prototype) && node instanceof arg1)) {\n const parent = node.parentNode;\n if (isRoot(parent)) {\n node = null;\n break;\n }\n node = parent;\n }\n return node;\n }\n /**\n * Seeks for the nearest surrounding block-level element of a given Selection's range.\n * @param range\n */\n static findSurroundingBlockElement(range) {\n return this.findSurroundingNode(range, ContenteditableUtils.isBlockElement);\n }\n /**\n * Retrieves the sibling block-level elements (e.g. paragraphs) touched by a given Selection's range.\n * @param range\n */\n static findSurroundingSiblingBlockElements(range) {\n let output = [];\n if (isRoot(range.startContainer)) {\n if (!range.collapsed) {\n const root = range.startContainer;\n for (let k = range.startOffset; k <= range.endOffset; k++) {\n const child = root.children.item(k);\n if (this.isBlockElement(child)) {\n output.push(root.children.item(k));\n }\n }\n }\n return output;\n }\n // simil-collapsed\n if (range.startContainer === range.endContainer) {\n let retval = range.startContainer;\n while (!ContenteditableUtils.isBlockElement(retval) && retval.parentElement.contentEditable != 'true') {\n retval = retval.parentElement;\n }\n return retval instanceof Element ? [retval] :\n (retval.parentElement.contentEditable === 'true' ? [] : [retval.parentElement]);\n }\n // generic\n let root = range.commonAncestorContainer, started = false;\n for (let j = 0; j < root.childNodes.length; j++) {\n const iNode = root.childNodes.item(j);\n const pick = (!started && iNode.contains(range.startContainer))\n || started;\n if (pick && ContenteditableUtils.isBlockElement(iNode)) {\n output.push(iNode);\n started = true;\n if (iNode.contains(range.endContainer)) {\n break;\n }\n }\n }\n return started ? output : (root instanceof Element && !isRoot(root) ? [root] : []);\n }\n /**\n * Retrieves the top-level (direct children of the contenteditable root) elements spanned by a given Selection's range.\n * @param range\n */\n static findContainingRootElements(range) {\n const range1 = range.cloneRange(), range2 = range.cloneRange();\n range1.collapse(true);\n range2.collapse();\n let root = this.findSurroundingNode(range1, n => n.parentElement.contentEditable === 'true');\n const retval = [root];\n while (!root.contains(range2.startContainer)) {\n retval.push(root = root.nextElementSibling);\n }\n return retval;\n }\n /**\n * Checks whether the given node is an `Element` with a block-level (non-`inline*`) computed display.\n * @param node\n */\n static isBlockElement(node) {\n return node instanceof Element && !getComputedStyle(node).display.startsWith('inline');\n }\n /**\n * Selects a node (or its contents, when `inside` is `true`) and applies the resulting range to the current document Selection.\n * @param node\n * @param inside\n */\n static select(node, inside = false) {\n const range = document.createRange();\n if (!inside) {\n range.setStartBefore(node);\n range.setEndAfter(node);\n }\n else {\n range.setStart(node, 0);\n range.setEnd(node, node.childNodes.length);\n }\n const selection = document.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n return range;\n }\n /**\n * Copies all attributes from one element onto another.\n * @param to\n * @param from\n */\n static copyAttributes(to, from) {\n const attrs = from.attributes;\n for (let j = 0; j < attrs.length; j++) {\n const attr = attrs.item(j);\n to.setAttribute(attr.name, attr.value);\n }\n }\n /**\n * Checks whether the provided range wraps an 'inert' (contentEditable=false) element, and returns result accordingly.\n * @param range\n */\n static testInertElementWrapping(range) {\n if (!Utils.isNull(range)) {\n const parent = range.startContainer, index = range.startOffset;\n var node;\n if (parent === range.endContainer && index == (range.endOffset - 1) && (node = parent.childNodes.item(index)) instanceof HTMLElement && node.contentEditable === 'false') {\n return { result: true, element: node };\n }\n }\n return { result: false };\n }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PropertyConverters, Utils, Watch } from '@pacem/pacem-core';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\nimport { ContenteditableUtils } from './utils';\n//namespace Pacem.Components.Scaffolding {\nfunction getAlignIcon(align) {\n return 'format_align_' + align;\n}\n/** Toolbar button applying a text-alignment (left/center/right/justify) style to the block(s) touched by the current selection. */\nlet PacemContenteditableAlignCommandElement = class PacemContenteditableAlignCommandElement extends PacemContenteditableButtonCommandElement {\n isRelevant(range) {\n const els = ContenteditableUtils.findSurroundingSiblingBlockElements(range);\n if (Utils.isNullOrEmpty(els)) {\n return false;\n }\n const el = els[0], textAlign = getComputedStyle(el).textAlign;\n return textAlign == this.align;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'align') {\n if (Utils.isNullOrEmpty(this.icon) || this.icon === getAlignIcon(old)) {\n this.icon = getAlignIcon(val);\n }\n if (Utils.isNullOrEmpty(this.altText) || this.altText === old) {\n this.altText = val;\n }\n }\n }\n exec() {\n const elements = ContenteditableUtils.findSurroundingSiblingBlockElements(this.range);\n let targetAlign;\n for (let el of elements) {\n if (ContenteditableUtils.isBlockElement(el) && el instanceof HTMLElement) {\n // normalize alignment: pick one element (the 1st one) to rule them all\n if (Utils.isNull(targetAlign)) {\n targetAlign = Utils.hasClass(el, 'text-' + this.align) ? '' : this.align;\n }\n el.style.textAlign = '';\n Utils.removeClass(el, 'text-left text-right text-center text-justify');\n if (!Utils.isEmpty(targetAlign)) {\n Utils.addClass(el, 'text-' + targetAlign);\n }\n }\n }\n return Promise.resolve();\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableAlignCommandElement.prototype, \"align\", void 0);\nPacemContenteditableAlignCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-aligncommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE\n })\n], PacemContenteditableAlignCommandElement);\nexport { PacemContenteditableAlignCommandElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Defaults, Utils, Watch, PropertyConverters, ViewChild, PCSS } from '@pacem/pacem-core';\nimport { ContenteditableUtils, ContenteditableDOMObserver } from './utils';\nimport { PacemContenteditableCommandElement } from '../contenteditable';\n//namespace Pacem.Components.Scaffolding {\nfunction insertPlaceholder(range, placeholder) {\n const ins = document.createElement('ins');\n ins.textContent = placeholder;\n ins.setAttribute('contenteditable', 'false');\n // not necessary:\n // ins.style.display = 'inline-block';\n ins.tabIndex = 0;\n range.deleteContents();\n range.insertNode(ins);\n return ins;\n}\nfunction isPlaceholder(node) {\n return node instanceof HTMLModElement && node.tagName === 'INS';\n}\nfunction isRelevant(range) {\n const wraps = ContenteditableUtils.testInertElementWrapping(range);\n if (wraps.result && isPlaceholder(wraps.element)) {\n const element = wraps.element, placeholder = element.textContent;\n return { result: true, element, placeholder };\n }\n return { result: false };\n}\n/** Dropdown command inserting an inert (`contenteditable=false`) placeholder token, picked from a suggestable datasource, into the contenteditable host. */\nlet PacemContenteditablePlaceholderElement = class PacemContenteditablePlaceholderElement extends PacemContenteditableCommandElement {\n constructor() {\n super(...arguments);\n this._focusHandler = (evt) => {\n const ins = evt.target;\n this.range = ContenteditableUtils.select(ins);\n };\n // #endregion\n }\n #relevancy;\n #normalizedDatasource;\n cleanUp(content) {\n content.querySelectorAll('ins[contenteditable=false]').forEach(ins => {\n Utils.removeClass(ins, 'placeholder-selected');\n });\n }\n exec(ph) {\n const el = insertPlaceholder(this.range, ph);\n const range = ContenteditableUtils.select(el);\n range.collapse(false);\n return Promise.resolve(el);\n }\n isRelevant(_) {\n return this.#relevancy?.result ?? false;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._fillDropdown();\n this._initContainer();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'datasource':\n this._fillDropdown();\n break;\n case 'contentElement':\n if (old) {\n this._disposeContainer(old);\n }\n if (val) {\n this._initContainer(val);\n }\n break;\n case 'range':\n this._changeRelevancy();\n break;\n }\n }\n }\n disconnectedCallback() {\n this._disposeContainer();\n super.disconnectedCallback();\n }\n _changeRelevancy(range = this.range) {\n const old = this.#relevancy;\n if (!Utils.isNull(old?.element)) {\n Utils.removeClass(old.element, 'placeholder-selected');\n }\n const val = this.#relevancy = isRelevant(range);\n if (!Utils.isNull(val?.element)) {\n Utils.addClass(val.element, 'placeholder-selected');\n }\n if (val.result) {\n this._dropdown.value = val.placeholder;\n }\n else {\n this._dropdown.popout();\n this._dropdown.value = void 0;\n }\n }\n _fillDropdown(datasource = this.datasource || []) {\n const ds = this.#normalizedDatasource = datasource.map(i => { return typeof i === 'string' ? { placeholder: i, definition: i } : i; });\n const dd = this._dropdown;\n dd.textProperty =\n dd.valueProperty = 'placeholder';\n dd.datasource = ds;\n }\n // #region mutation observer\n #observer;\n _initContainer(contentElement = this.contentElement) {\n this.#observer = new ContenteditableDOMObserver(contentElement, (item, removed) => {\n if (isPlaceholder(item)) {\n if (removed) {\n this._downgradePlaceholderElement(item);\n }\n else {\n this._enhancePlaceholderElement(item);\n }\n }\n }, 'ins[contenteditable=false]');\n }\n _disposeContainer(_ = this.contentElement) {\n const observer = this.#observer;\n if (!Utils.isNull(observer)) {\n observer.dispose();\n }\n }\n _enhancePlaceholderElement(ins) {\n ins.addEventListener('focus', this._focusHandler, false);\n }\n _downgradePlaceholderElement(ins) {\n ins.removeEventListener('focus', this._focusHandler, false);\n }\n};\n__decorate([\n ViewChild('template')\n], PacemContenteditablePlaceholderElement.prototype, \"_itemtemplate\", void 0);\n__decorate([\n ViewChild(P + '-suggest')\n], PacemContenteditablePlaceholderElement.prototype, \"_dropdown\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemContenteditablePlaceholderElement.prototype, \"datasource\", void 0);\nPacemContenteditablePlaceholderElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-placeholder', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<template>\r\n<${P}-span text=\"{{ ^item.viewValue }}\" class=\"text-tech\"></${P}-span>\r\n<${P}-markdown hide=\"{{ $pacem.isNullOrEmpty(^item.data.definition) || ^item.viewValue === ^item.data.definition }}\" class=\"${PCSS}-margin margin-0 text-small\" value=\"{{ ^item.data.definition }}\"></${P}-markdown>\r\n</template>\r\n<${P}-suggest placeholder=\"Placeholder\" class=\"pacem-button button\" disabled=\"{{ $pacem.isNull(:host.range) }}\"\r\n on-change=\":host.execCommand($this.value)\"\r\n css-class=\"{{ {'text-primary': :host.isRelevant(:host.range)} }}\" \r\n compare-by=\"placeholder\" text-property=\"placeholder\" itemtemplate=\"{{ ::_itemtemplate }}\" prevent-focus=\"true\" allow-typing=\"false\"></${P}-suggest>`\n })\n], PacemContenteditablePlaceholderElement);\nexport { PacemContenteditablePlaceholderElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Defaults, Utils, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { ContenteditableUtils } from './utils';\nimport { PacemContenteditableButtonCommandElement, CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE } from './types';\n//namespace Pacem.Components.Scaffolding {\n/** Toolbar button wrapping (or, if already applied, unwrapping) the block(s) touched by the current selection with a given tag (e.g. `blockquote`, `h1`). */\nlet PacemContenteditableWrapCommandElement = class PacemContenteditableWrapCommandElement extends PacemContenteditableButtonCommandElement {\n isRelevant(range) {\n return !Utils.isNull(ContenteditableUtils.findSurroundingNode(range, this.tagname));\n }\n exec() {\n return new Promise((resolve, _) => {\n const tagName = this.tagname;\n if (!Utils.isNullOrEmpty(tagName)) {\n const range = this.range;\n const alreadyEl = ContenteditableUtils.findSurroundingNode(range, tagName)\n || ContenteditableUtils.findSurroundingNode(range.startContainer, tagName)\n || ContenteditableUtils.findSurroundingNode(range.endContainer, tagName);\n if (Utils.isNull(alreadyEl)) {\n // WRAP\n const elementsToWrap = ContenteditableUtils.findSurroundingSiblingBlockElements(range);\n if (!Utils.isNullOrEmpty(elementsToWrap)) {\n const newChild = document.createElement(tagName);\n if (elementsToWrap.length === 1) {\n // replace\n const repl = elementsToWrap[0];\n range.setStart(repl, 0);\n range.setEnd(repl, repl.childNodes.length);\n const frag = range.extractContents();\n newChild.append(frag);\n ContenteditableUtils.copyAttributes(newChild, repl);\n repl.parentElement.insertBefore(newChild, repl);\n repl.remove();\n }\n else {\n // wrap\n range.setStartBefore(elementsToWrap[0]);\n range.setEndAfter(elementsToWrap[elementsToWrap.length - 1]);\n const frag = range.extractContents();\n newChild.append(frag);\n range.insertNode(newChild);\n }\n const r = ContenteditableUtils.select(newChild, true);\n r.collapse();\n }\n }\n else {\n // UNWRAP\n range.setStart(alreadyEl, 0);\n range.setEnd(alreadyEl, alreadyEl.childNodes.length);\n // replace or unwrap\n let replace = false;\n const childNodes = alreadyEl.childNodes;\n for (let j = 0; j < childNodes.length; j++) {\n const child = childNodes.item(j);\n if (!ContenteditableUtils.isBlockElement(child)) {\n replace = true;\n break;\n }\n }\n if (replace) {\n const p = document.createElement('p');\n ContenteditableUtils.copyAttributes(p, alreadyEl);\n p.append(range.extractContents());\n alreadyEl.parentNode.replaceChild(p, alreadyEl);\n const r = ContenteditableUtils.select(p, true);\n r.collapse();\n }\n else {\n // unwrap\n alreadyEl.parentNode.replaceChild(range.extractContents(), alreadyEl);\n const r = ContenteditableUtils.select(range.endContainer, true);\n r.collapse();\n }\n }\n }\n resolve();\n });\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContenteditableWrapCommandElement.prototype, \"tagname\", void 0);\nPacemContenteditableWrapCommandElement = __decorate([\n CustomElement({\n tagName: P + '-contenteditable-wrapcommand', shadow: Defaults.USE_SHADOW_ROOT,\n template: CONTENTELEMENT_BUTTONCOMMAND_TEMPLATE\n })\n], PacemContenteditableWrapCommandElement);\nexport { PacemContenteditableWrapCommandElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Components, CustomElement, CustomElementUtils, CustomEventUtils, Defaults, P, PCSS, PropertyConverters, stopPropagationHandler, Utils, ViewChild, Watch } from '@pacem/pacem-core';\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nconst JsonOrStringConverter = {\n convert: (attr, el) => {\n return /\\{.+\\}/.test(attr) ? PropertyConverters.Json.convert(attr) : PropertyConverters.String.convert(attr);\n },\n convertBack: (prop, el) => {\n if (typeof prop === 'string') {\n return prop;\n }\n return PropertyConverters.Json.convertBack(prop, el);\n }\n};\n// #region MONTH-PICKER (util component)\nfunction buildMonthGrid() {\n let header = '';\n for (let month = 0; month < 12; month++) {\n header += `<div class=\"calendar-month month-${month + 1}\"><${P}-span class=\"month-button text-ellipsed\" on-click=\":host._setMonth(${month})\" css-class=\"{{ { 'selected-month': :host._isSelectedMonth(${month}, :host.month, :host.viewYear), 'this-month': :host._isThisMonth(${month}, :host.viewYear) } }}\" text=\"{{ :host._getMonthLabel(${month}) }}\"></${P}-span></div>`;\n }\n return header;\n}\n/** Utility 12-month grid picker, used internally by {@link PacemCalendarPickerElement} to pick a month within {@link viewYear}. */\nlet PacemCalendarMonthPickerElement = class PacemCalendarMonthPickerElement extends Components.PacemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'viewYear':\n this.dispatchEvent(new CustomEvent('viewyearchange', { detail: new Date(val, 0, 1), bubbles: false, cancelable: false }));\n Utils.removeClass(this, \"viewyear-next viewyear-previous\");\n requestAnimationFrame(() => {\n Utils.addClass(this, old > val ? \"viewyear-previous\" : \"viewyear-next\");\n });\n break;\n }\n }\n _getMonthLabel(m) {\n const year = new Date().getFullYear();\n const date = new Date(year, m, 1);\n return date.toLocaleString(Utils.lang(this), { month: 'short' });\n }\n _isThisMonth(m, v = this.viewYear) {\n return this._isSelectedMonth(m, new Date(), v);\n }\n _isSelectedMonth(m, d = this.month, v = this.viewYear) {\n const actual = Utils.parseDate(d);\n if (!Utils.Dates.isDate(actual)) {\n return false;\n }\n const viewYear = v ?? new Date().getFullYear();\n return actual.getMonth() === m && actual.getFullYear() === viewYear;\n }\n _setMonth(m) {\n const year = this.viewYear;\n const date = new Date(year, m, 1);\n this.month = date;\n this.dispatchEvent(new CustomEvent('monthselect', { detail: date, bubbles: false, cancelable: false }));\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Date })\n], PacemCalendarMonthPickerElement.prototype, \"month\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Date })\n], PacemCalendarMonthPickerElement.prototype, \"viewYear\", void 0);\nPacemCalendarMonthPickerElement = __decorate([\n CustomElement({\n tagName: P + '-calendar-month-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-month-picker\">${buildMonthGrid()}</div>`\n })\n], PacemCalendarMonthPickerElement);\nexport { PacemCalendarMonthPickerElement };\n/** Dispatched by {@link PacemCalendarPickerElement} when its clear button is used to unselect the current date. */\nexport class CalendarDateUnselectEvent extends ComponentsUI.UI.DateSelectEvent {\n constructor() {\n super(void 0);\n }\n}\n// #endregion\n// #region YEAR-PICKER (util component)\nconst YEARS_IN_RANGE = 12;\nfunction buildYearGrid() {\n let header = '';\n for (let year = 0; year < YEARS_IN_RANGE; year++) {\n header += `<div class=\"calendar-year year-${year + 1}\"><${P}-span class=\"year-button text-ellipsed\" on-click=\":host._setYear(${year})\" css-class=\"{{ { 'selected-year': :host._isSelectedYear(${year}, :host.year, :host.viewYear), 'this-year': :host._isThisYear(${year}, :host.viewYear) } }}\" text=\"{{ :host._getYearLabel(${year}, :host.viewYear) }}\"></${P}-span></div>`;\n }\n return header;\n}\nfunction rangeFirstYear(y) {\n const mod = y % 10;\n return y - mod;\n}\n/** Utility grid picker of {@link YEARS_IN_RANGE} years, used internally by {@link PacemCalendarPickerElement} to pick a year within the range containing {@link viewYear}. */\nlet PacemCalendarYearPickerElement = class PacemCalendarYearPickerElement extends Components.PacemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'viewYear':\n this.dispatchEvent(new CustomEvent('viewyearchange', { detail: new Date(val, 0, 1), bubbles: false, cancelable: false }));\n Utils.removeClass(this, \"viewyear-next viewyear-previous\");\n requestAnimationFrame(() => {\n Utils.addClass(this, old > val ? \"viewyear-previous\" : \"viewyear-next\");\n });\n break;\n }\n }\n _getYearLabel(y, year = this.viewYear) {\n const first = rangeFirstYear(year);\n return '' + (first + y);\n }\n _isThisYear(y, v = this.viewYear) {\n return this._isSelectedYear(y, new Date(), v);\n }\n _isSelectedYear(y, d = this.year, v = this.viewYear) {\n const actual = Utils.parseDate(d);\n if (!Utils.Dates.isDate(actual)) {\n return false;\n }\n const start = rangeFirstYear(v), computed = start + y;\n ;\n return actual.getFullYear() === computed;\n }\n _setYear(y) {\n const v = this.viewYear, first = rangeFirstYear(v);\n const date = new Date(first + y, 0, 1);\n this.year = date;\n this.dispatchEvent(new CustomEvent('yearselect', { detail: date, bubbles: false, cancelable: false }));\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Date })\n], PacemCalendarYearPickerElement.prototype, \"year\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Date })\n], PacemCalendarYearPickerElement.prototype, \"viewYear\", void 0);\nPacemCalendarYearPickerElement = __decorate([\n CustomElement({\n tagName: P + '-calendar-year-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-year-picker\">${buildYearGrid()}</div>`\n })\n], PacemCalendarYearPickerElement);\nexport { PacemCalendarYearPickerElement };\n// #endregion\nfunction buildCalendarHeader() {\n let header = '';\n for (let day = 0; day < 7; day++) {\n header += `<${P}-span class=\"calendar-heading day-${day + 1} text-ellipsed\" text=\"{{ :host._getHeaderLabel(:host._week[${day}]) }}\"></${P}-span>`;\n }\n return `<${P}-panel hide=\"{{ :host.viewmode !== 'calendar' }}\" class=\"calendar-header\">${header}</${P}-panel>`;\n}\n/** {@link PacemBaseInputElement}-alike field that pops up a `pacem-calendar` (with month/year zoom levels) to pick a `Date` value. */\nlet PacemCalendarPickerElement = class PacemCalendarPickerElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n /** Gets or sets which picker is currently shown in the dropdown: the day calendar, the month grid, or the year grid. */\n this.viewmode = 'calendar';\n this.#locked = false;\n this._swipeHandler = (e) => {\n const dir = e.detail.direction;\n switch (dir) {\n case 'left':\n this._next(e);\n break;\n case 'right':\n this._prev(e);\n break;\n }\n };\n this._clearBtnHandler = (evt) => {\n evt.preventDefault();\n this._viewDate = new Date();\n this.changeHandler(new CalendarDateUnselectEvent());\n };\n this._viewDateChangeHandler = (e) => {\n this._onViewDateChange(e);\n };\n this._popCalendarHandler = (e) => {\n if (this.#locked) {\n return;\n }\n this.viewmode = 'calendar';\n const dateValue = Utils.parseDate(this.value);\n this._calendar.viewDate =\n this._monthPicker.month =\n this._yearPicker.year =\n Utils.Dates.isDate(dateValue) ? dateValue : this._calendar.viewDate;\n const offset = Utils.offset(this._input);\n const dropdown = this._dropdown;\n dropdown.style.top = (offset.top + offset.height) + 'px';\n dropdown.style.left = offset.left + 'px';\n dropdown.hidden = false;\n requestAnimationFrame(() => {\n Utils.addClass(dropdown, 'dropdown-in');\n });\n };\n this._hideCalendarHandler = (e) => {\n const path = e.composedPath() || [];\n if (path.indexOf(this._input) >= 0 || path.indexOf(this._dropdown) >= 0) {\n return;\n }\n this._hideCalendar();\n };\n }\n #locked;\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'viewmode':\n case '_viewDate':\n this._onViewDateChange(this._viewDate);\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const dropdown = this._dropdown = this._proxy.dom[0];\n const calendar = this._calendar = dropdown.querySelector(P + '-calendar');\n const monthPicker = this._monthPicker = dropdown.querySelector(P + '-calendar-month-picker');\n const yearPicker = this._yearPicker = dropdown.querySelector(P + '-calendar-year-picker');\n this._monthLabel = dropdown.querySelector('.calendar-month');\n this._yearLabel = dropdown.querySelector('.calendar-year');\n this._rangeLabel = dropdown.querySelector('.calendar-year-range');\n const now = this._calendar.now = new Date();\n const dateValue = Utils.Dates.parse(this.value);\n const hasValue = Utils.Dates.isDate(dateValue);\n const date = hasValue ? dateValue : now;\n calendar.dayLabelFormatter = (d) => {\n return Utils.parseDate(d).toLocaleString(Utils.lang(this), { day: 'numeric' });\n };\n monthPicker.addEventListener('viewyearchange', this._viewDateChangeHandler, false);\n yearPicker.addEventListener('viewyearchange', this._viewDateChangeHandler, false);\n calendar.addEventListener('viewdatechange', this._viewDateChangeHandler, false);\n calendar.viewDate = date;\n calendar.date = dateValue;\n const input = this._input;\n input.addEventListener('focus', this._popCalendarHandler, false);\n input.addEventListener('mousedown', this._popCalendarHandler, false);\n dropdown.addEventListener('mousedown', stopPropagationHandler, false);\n window.document.body.addEventListener('mousedown', this._hideCalendarHandler, true);\n this._clearButton.addEventListener('mousedown', this._clearBtnHandler, false);\n // swiper\n const swiper = new Components.PacemSwipeElement();\n calendar.behaviors.push(swiper);\n monthPicker.behaviors.push(swiper);\n yearPicker.behaviors.push(swiper);\n swiper.addEventListener('swipe', this._swipeHandler, false);\n const body = CustomElementUtils.findAncestorShell(this);\n this._swiper = body.appendChild(swiper);\n }\n disconnectedCallback() {\n const input = this._input;\n if (!Utils.isNull(input)) {\n this._clearButton.removeEventListener('mousedown', this._clearBtnHandler, false);\n input.removeEventListener('focus', this._popCalendarHandler, false);\n input.removeEventListener('mousedown', this._popCalendarHandler, false);\n this._dropdown.removeEventListener('mousedown', stopPropagationHandler, false);\n window.document.body.removeEventListener('mousedown', this._hideCalendarHandler, true);\n this._calendar.removeEventListener('viewdatechange', this._viewDateChangeHandler, false);\n this._monthPicker.removeEventListener('viewyearchange', this._viewDateChangeHandler, false);\n this._yearPicker.removeEventListener('viewyearchange', this._viewDateChangeHandler, false);\n }\n const swiper = this._swiper;\n if (!Utils.isNull(swiper)) {\n const calendar = this._calendar, monthPicker = this._monthPicker, yearPicker = this._yearPicker;\n for (let el of [calendar, monthPicker, yearPicker]) {\n const behaviors = el.behaviors, swipeIndex = behaviors.indexOf(swiper);\n if (swipeIndex >= 0) {\n el.behaviors.splice(swipeIndex, 1);\n }\n }\n swiper.removeEventListener('swipe', this._swipeHandler, false);\n swiper.remove();\n this._swiper = null;\n }\n super.disconnectedCallback();\n }\n _getHeaderLabel(d, mode = this.viewmode) {\n const dte = Utils.parseDate(d);\n if (Utils.Dates.isDate(dte)) {\n return dte.toLocaleString(Utils.lang(this), { weekday: 'narrow' });\n }\n return '...';\n }\n _prev(e) {\n let months = -1;\n switch (this.viewmode) {\n case 'month':\n months = -12;\n break;\n case 'year':\n months = -120;\n break;\n }\n this._jumpMonths(months);\n }\n _next(e) {\n let months = 1;\n switch (this.viewmode) {\n case 'month':\n months = 12;\n break;\n case 'year':\n months = 120;\n break;\n }\n this._jumpMonths(months);\n }\n _jumpMonths(m) {\n const vd = Utils.parseDate(this._viewDate);\n this._viewDate = Utils.Dates.addMonths(vd, m);\n }\n _setMonth(e) {\n this._viewDate = e.detail;\n this.viewmode = 'calendar';\n }\n _setYear(e) {\n this._viewDate = e.detail;\n this.viewmode = 'month';\n }\n _onViewDateChange(e) {\n if (Utils.isNullOrEmpty(e)) {\n return;\n }\n const date = Utils.parseDate(this._viewDate);\n if (Utils.Dates.isDate(date) && !Utils.isNull(this._monthLabel)) {\n switch (this.viewmode) {\n case 'month':\n this._yearLabel.text = date.toLocaleString(Utils.lang(this), { year: 'numeric' });\n break;\n case 'year':\n const fy = rangeFirstYear(date.getFullYear());\n this._rangeLabel.text = `${fy} - ${fy + YEARS_IN_RANGE - 1}`;\n break;\n default:\n this._monthLabel.text = date.toLocaleString(Utils.lang(this), { month: 'long', year: 'numeric' });\n break;\n }\n }\n }\n _hideCalendar() {\n // animation just in case\n Utils.removeClass(this._dropdown, 'dropdown-in');\n Utils.addAnimationEndCallback(this._dropdown, e => {\n this._dropdown.hidden = true;\n Utils.removeClass(this._dropdown, 'dropdown-select');\n }, 250);\n }\n get inputFields() {\n return [this._input];\n }\n toggleReadonlyView(readonly) {\n if (this.isReady) {\n this._input.readOnly = true;\n this._input.hidden = readonly;\n this._span.hide = !readonly;\n }\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n if (CustomEventUtils.isInstanceOf(evt, ComponentsUI.UI.DateSelectEvent)) {\n Utils.addClass(this._dropdown, 'dropdown-select');\n const unselecting = CustomEventUtils.isInstanceOf(evt, CalendarDateUnselectEvent);\n if (unselecting) {\n this.#locked = true;\n }\n this.focus();\n this.#locked = false;\n this._hideCalendar();\n resolve(this.value = evt.detail);\n }\n else {\n resolve(this.value);\n }\n });\n }\n acceptValue(val) {\n this._input.value = this.viewValue;\n const calendar = this._calendar;\n if (!Utils.isNull(calendar)) {\n const dateVal = Utils.parseDate(val);\n if (Utils.Dates.isDate(dateVal)) {\n calendar.viewDate = calendar.date = dateVal;\n }\n else {\n calendar.date = void 0;\n }\n }\n }\n getViewValue(value) {\n const v = Utils.Dates.parse(value);\n if (Utils.Dates.isDate(v)) {\n return Utils.core.date(v, this.format || 'short', Utils.lang(this));\n }\n return '';\n }\n compareValuePropertyValues(old, val) {\n const dold = Utils.parseDate(old), dval = Utils.parseDate(val);\n if (Utils.isNullOrEmpty(dold) && Utils.isNullOrEmpty(dval)) {\n return true;\n }\n if (Utils.isNullOrEmpty(dold) || Utils.isNullOrEmpty(dval)) {\n return false;\n }\n return dold.valueOf() == dval.valueOf();\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Datetime.convert(attr);\n }\n};\n__decorate([\n ViewChild(\"input[type=text]\")\n], PacemCalendarPickerElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-readonly`)\n], PacemCalendarPickerElement.prototype, \"_span\", void 0);\n__decorate([\n ViewChild(`${P}-button[clear]`)\n], PacemCalendarPickerElement.prototype, \"_clearButton\", void 0);\n__decorate([\n ViewChild(P + \"-shell-proxy\")\n], PacemCalendarPickerElement.prototype, \"_proxy\", void 0);\n__decorate([\n Watch({ emit: false, converter: JsonOrStringConverter })\n], PacemCalendarPickerElement.prototype, \"format\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Eval })\n], PacemCalendarPickerElement.prototype, \"disabledRanges\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCalendarPickerElement.prototype, \"weekStart\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCalendarPickerElement.prototype, \"viewmode\", void 0);\n__decorate([\n Watch()\n], PacemCalendarPickerElement.prototype, \"_week\", void 0);\n__decorate([\n Watch()\n], PacemCalendarPickerElement.prototype, \"_viewDate\", void 0);\nPacemCalendarPickerElement = __decorate([\n CustomElement({\n tagName: P + '-calendar-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-calendar-picker\">\r\n <input type=\"text\" class=\"${PCSS}-input\" /><${P}-span text=\"{{ :host.viewValue }}\" class=\"${PCSS}-readonly\"></${P}-span>\r\n <${P}-button class=\"button-flat ${PCSS}-anim anim-pop anim-sudden anim-quick pos-absolute absolute-right absolute-top display-block ${PCSS}-margin margin-0\"\r\n tab-order=\"-1\"\r\n hide=\"{{ :host.readonly || :host.required || !Pacem.Utils.Dates.isDate(Pacem.Utils.Dates.parse(:host.value)) }}\"\r\n icon-glyph=\"close\"\r\n clear></${P}-button>\r\n</div>\r\n<${P}-shell-proxy>\r\n <div class=\"${PCSS}-calendar-picker-dropdown\" pacem hidden>\r\n <${P}-collapse collapse=\"false\">\r\n <div class=\"dropdown-grid\">\r\n <div class=\"calendar-title\">\r\n <${P}-span class=\"calendar-month calendar-zoom\" on-click=\":host.viewmode = 'month'\" hide=\"{{ :host.viewmode !== 'calendar' }}\"></${P}-span>\r\n <${P}-span class=\"calendar-year calendar-zoom\" on-click=\":host.viewmode = 'year'\" hide=\"{{ :host.viewmode !== 'month' }}\"></${P}-span>\r\n <${P}-span class=\"calendar-year-range\" hide=\"{{ :host.viewmode !== 'year' }}\"></${P}-span>\r\n </div>\r\n <div class=\"calendar-month-nav ${PCSS}-buttonset buttons\">\r\n <div class=\"buttonset-left\">\r\n <${P}-button class=\"button button-size size-auto\" on-click=\":host._prev($event)\" icon-glyph=\"chevron_left\"></${P}-button>\r\n <${P}-button class=\"button button-size size-auto\" on-click=\":host._next($event)\" icon-glyph=\"chevron_right\"></${P}-button>\r\n </div>\r\n </div>\r\n ${buildCalendarHeader()}\r\n <${P}-calendar hide=\"{{ :host.viewmode !== 'calendar' }}\" week=\"{{ :host._week, twoway }}\" view-date=\"{{ :host._viewDate, twoway }}\" week-start=\"{{ :host.weekStart }}\" disabled-ranges=\"{{ :host.disabledRanges }}\" on-dateselect=\"{{ :host.changeHandler($event) }}\"></${P}-calendar>\r\n <${P}-calendar-month-picker hide=\"{{ :host.viewmode !== 'month' }}\" on-monthselect=\":host._setMonth($event)\" month=\"{{ :host.value || Date.now() }}\" view-year=\"{{ :host._viewDate && :host._viewDate.getFullYear() }}\"></${P}-calendar-month-picker>\r\n <${P}-calendar-year-picker hide=\"{{ :host.viewmode !== 'year' }}\" on-yearselect=\":host._setYear($event)\" year=\"{{ :host.value || Date.now() }}\" view-year=\"{{ :host._viewDate && :host._viewDate.getFullYear() }}\"></${P}-calendar-year-picker>\r\n </div>\r\n <${P}-collapse>\r\n </div>\r\n</${P}-shell-proxy>`\n })\n], PacemCalendarPickerElement);\nexport { PacemCalendarPickerElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PCSS, PropertyConverters, Utils, ViewChild, Watch } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nconst StringOrBooleanPropertyConverter = {\n convert: (attr) => attr === 'true' ? true : (attr === 'false' ? false : attr),\n convertBack: (prop) => prop.toString()\n};\n/** {@link PacemBaseElement}-based single checkbox field, mapping its checked state to {@link trueValue}/{@link falseValue}. */\nlet PacemCheckboxElement = class PacemCheckboxElement extends PacemBaseElement {\n constructor() {\n super('checkbox');\n /** Gets or sets the label displayed next to the checkbox (and used as the read-only view value when checked). */\n this.caption = '';\n this._key = '_' + Utils.uniqueCode();\n }\n convertValueAttributeToProperty(attr) {\n StringOrBooleanPropertyConverter.convert(attr) === this.trueValue ? this.trueValue : this.falseValue;\n }\n toggleReadonlyView(readonly) {\n this.span.hidden = !readonly;\n this._checkbox.hidden = this._label.hidden = readonly;\n }\n get inputFields() {\n return [this._checkbox];\n }\n onChange(evt) {\n this.selected = this._checkbox.checked;\n const value = this.value = this.selected ? this.trueValue : this.falseValue;\n return Utils.fromResult(value);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._checkbox.id = this._label.htmlFor = this._key;\n this._synchronizeUi();\n if (this.value /* weak equality to deal with declarative values and conversions */ == this.trueValue)\n this.selected = true;\n else if (this.value /* weak equality to deal with declarative values and conversions */ == this.falseValue)\n this.selected = false;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!this.isReady) {\n // the following are only UI-relevant modifications\n return;\n }\n switch (name) {\n case 'caption':\n this._label.hidden = Utils.isNullOrEmpty(val);\n break;\n case 'name':\n this._checkbox.name = val;\n break;\n case 'selected':\n this._synchronizeUi();\n break;\n }\n }\n _synchronizeUi(val = this.selected) {\n if (this._checkbox.checked = val) {\n this.value = this.trueValue;\n Utils.addClass(this, PCSS + '-selected');\n this.aria.attributes.set('checked', 'true');\n }\n else {\n this.value = this.falseValue;\n Utils.removeClass(this, PCSS + '-selected');\n this.aria.attributes.set('checked', 'false');\n }\n }\n acceptValue(val) {\n this.selected = val /* weak equality to deal with declarative values and conversions */ == this.trueValue;\n }\n getViewValue(val) {\n if (!Utils.isNull(val))\n return this.caption;\n return '';\n }\n};\n__decorate([\n ViewChild(\"input[type=checkbox]\")\n], PacemCheckboxElement.prototype, \"_checkbox\", void 0);\n__decorate([\n ViewChild(\"label\")\n], PacemCheckboxElement.prototype, \"_label\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-readonly`)\n], PacemCheckboxElement.prototype, \"span\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemCheckboxElement.prototype, \"caption\", void 0);\n__decorate([\n Watch({ emit: false, converter: StringOrBooleanPropertyConverter })\n], PacemCheckboxElement.prototype, \"trueValue\", void 0);\n__decorate([\n Watch({ emit: false, converter: StringOrBooleanPropertyConverter })\n], PacemCheckboxElement.prototype, \"falseValue\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemCheckboxElement.prototype, \"selected\", void 0);\nPacemCheckboxElement = __decorate([\n CustomElement({\n tagName: P + '-checkbox',\n template: `<${P}-span class=\"${PCSS}-readonly ${PCSS}-checkbox\" text=\"{{ :host.caption }}\"></${P}-span>\r\n<input type=\"checkbox\" class=\"${PCSS}-input\" /><label class=\"${PCSS}-label ${PCSS}-checkbox ${PCSS}-viewfinder\" pacem><${P}-span content=\"{{ :host.caption }}\"></${P}-span></label>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemCheckboxElement);\nexport { PacemCheckboxElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PCSS, PropertyChangeEventName, Utils, ViewChild } from '@pacem/pacem-core';\nimport { PacemDataSourceElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\n/** Renders {@link PacemDataSourceElement#datasource} as a list of `pacem-checkbox` items, producing an array `value` of the checked items' mapped values. */\nlet PacemCheckboxListElement = class PacemCheckboxListElement extends PacemDataSourceElement {\n acceptValue(val) {\n // no need to implement\n }\n constructor() {\n super(true);\n this._selectedUiItems = [];\n this['key'] = '_' + Utils.uniqueCode();\n }\n get inputFields() {\n return [];\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'disabled') {\n this._disable.model = val;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._disable.model = this.disabled;\n }\n toggleReadonlyView(readonly) {\n this._span.hidden = !readonly;\n this._repeater.hidden = readonly;\n }\n _selectionChanged(evt, index, item) {\n if (evt.detail.propertyName === 'selected') {\n let ndx, uiItems = this._selectedUiItems;\n if (evt.detail.currentValue === true) {\n uiItems.push(this.datasource[index]);\n }\n else if ((ndx = uiItems.indexOf(this.datasource[index])) !== -1) {\n uiItems.splice(ndx, 1);\n }\n }\n }\n onChange(evt) {\n const val = this.value = this._selectedUiItems.map(i => this.mapEntityToValue(i));\n return Utils.fromResult(val);\n }\n};\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemCheckboxListElement.prototype, \"_span\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemCheckboxListElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(P + '-data')\n], PacemCheckboxListElement.prototype, \"_disable\", void 0);\nPacemCheckboxListElement = __decorate([\n CustomElement({\n tagName: P + '-checkbox-list', template: `<${P}-repeater datasource=\"{{ :host.adaptedDatasource }}\">\r\n <ol class=\"${PCSS}-checkbox-list ${PCSS}-viewfinder\" pacem>\r\n <template>\r\n <li><${P}-checkbox disabled=\"{{ ::_disable.model || ^item.disabled }}\" name=\"{{ :host.key, once }}\" autobind=\"off\" caption=\"{{ ^item.viewValue }}\" true-value=\"{{ ^item.value }}\" selected=\"{{ :host.isDataSourceItemSelected(^item, :host.value) }}\"\r\non-focus=\":host.focusHandler($event)\" on-blur=\":host.focusHandler($event)\"\r\non-${PropertyChangeEventName}=\":host._selectionChanged($event, ^index, ^item)\" on-change=\":host.changeHandler($event)\"></${P}-checkbox></li>\r\n </template>\r\n </ol>\r\n</${P}-repeater><span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span><${P}-data></${P}-data><${P}-content></${P}-content>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemCheckboxListElement);\nexport { PacemCheckboxListElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PCSS, PacemEventTarget, PropertyChangeEventName, Components, PropertyConverters, Utils, ViewChild, Watch, UI, avoidHandler } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n/** For internal use ONLY! */\nlet PacemChildFormPropagatorElement = class PacemChildFormPropagatorElement extends PacemEventTarget {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n const prop = this.property, value = this.watch, hasPropDefined = !Utils.isNullOrEmpty(prop), hasModelDefined = !Utils.isNull(this.model);\n if (name === 'watch'\n || name === 'property'\n || (name === 'model' && hasPropDefined && hasModelDefined && Utils.isArray(val) && val.some(i => !(prop in i) || i[prop] !== value))\n || (name === 'model' && hasPropDefined && hasModelDefined && !Utils.isArray(val) && (!(prop in val) || val[prop] !== value))) {\n this._synchronize();\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._synchronize();\n }\n _synchronize() {\n const model = this.model, propagate = this.property, value = this.watch;\n if (Utils.isNullOrEmpty(model) || Utils.isNullOrEmpty(propagate)) {\n return;\n }\n if (Utils.isArray(model)) {\n for (let item of model) {\n item[propagate] = value;\n }\n // trigger change\n this.model = model.slice(0);\n }\n else {\n model[propagate] = value;\n // trigger change\n this.model = Utils.extend({}, model);\n }\n }\n};\n__decorate([\n Watch({ emit: true /* mandatory twoway binding */ })\n], PacemChildFormPropagatorElement.prototype, \"model\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String, reflectBack: true })\n], PacemChildFormPropagatorElement.prototype, \"property\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemChildFormPropagatorElement.prototype, \"watch\", void 0);\nPacemChildFormPropagatorElement = __decorate([\n CustomElement({ tagName: P + '-childform-propagator' })\n], PacemChildFormPropagatorElement);\nexport { PacemChildFormPropagatorElement };\n/** Represents a sub-form for automatic generation of editing fields for sub-entities. */\nlet PacemChildFormElement = class PacemChildFormElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n /** Internal representation of the entity. */\n this._model = [];\n this._subForms = [];\n }\n get inputFields() {\n return [];\n }\n toggleReadonlyView(readonly) {\n // automatic\n }\n onChange(evt) {\n return new Promise((resolve, _) => {\n var val = this._modelToEntity();\n resolve(this.value = val);\n });\n }\n acceptValue(val) {\n this._entityToModel(val);\n }\n getViewValue(value) {\n return '';\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Json.convert(attr, this);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'mode':\n this._entityToModel();\n break;\n }\n }\n _dragStart(evt) {\n var args = evt.detail;\n const size = Utils.offset(args.element), floater = args.floater;\n floater.style.width = size.width + 'px';\n floater.style.height = size.height + 'px';\n }\n _dragEnd(evt) {\n if (this.mode === 'array' /*&& !Utils.isNull(evt.detail.target)*/) {\n this._triggerChange();\n }\n }\n reset() {\n super.reset();\n // once the value/entity with this component is reset\n // it is not necessary to process the subForms\n this._subForms.forEach(f => {\n f.setPristine();\n });\n }\n _itemCreate(evt) {\n const ndx = evt.detail.index, subForms = this._subForms;\n evt.detail.dom[0].childNodes.forEach(e => {\n if (e instanceof Element && e.localName === (P + '-form')) {\n subForms.splice(ndx, subForms.length - ndx, e);\n }\n });\n }\n _itemChange(ndx, evt) {\n if (evt.detail.propertyName === 'entity'\n && Utils.Json.stringify(this._model[ndx]) !== Utils.Json.stringify(evt.detail.currentValue)) {\n this._model.splice(ndx, 1, evt.detail.currentValue);\n this._triggerChange();\n }\n }\n _deleteAt(evt) {\n // prevent the event to bubble (nested scenarios).\n avoidHandler(evt.srcEvent);\n const model = this._model;\n if (this.mode === 'array') {\n model.splice(evt.detail, 1);\n }\n else {\n model.splice(0, model.length);\n }\n this._triggerChange();\n }\n _addItem(evt) {\n const mode = this.mode, model = this._model;\n if (mode === 'array') {\n model.push({});\n }\n else {\n model.splice(0, model.length, {});\n }\n this._triggerChange();\n }\n _triggerChange() {\n this.changeHandler(new Event('change'));\n }\n _entityToModel(entity = this.value) {\n switch (this.mode) {\n case 'array':\n let arr = entity || [];\n if (Utils.isArray(arr)) {\n this._model.cloneFrom(arr);\n }\n break;\n default:\n const model = this._model, length = model.length;\n if (length !== 1 || model[0] !== entity) {\n if (!Utils.isNull(entity)) {\n model.splice(0, length, entity);\n }\n else {\n model.splice(0, length);\n }\n }\n break;\n }\n }\n _modelToEntity(model = this._model) {\n switch (this.mode) {\n case 'array':\n return Utils.clone(model);\n default:\n return model && model.length && model[0] || null;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemChildFormElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemChildFormElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-childform')\n], PacemChildFormElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild(P + '-drag-drop')\n], PacemChildFormElement.prototype, \"_dragger\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-childform-item-floater')\n], PacemChildFormElement.prototype, \"_floater\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemChildFormElement.prototype, \"mode\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemChildFormElement.prototype, \"lockItems\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemChildFormElement.prototype, \"metadata\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemChildFormElement.prototype, \"_model\", void 0);\nPacemChildFormElement = __decorate([\n CustomElement({\n tagName: P + '-childform', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater datasource=\"{{ :host._model }}\" on-itemdelete=\":host._deleteAt($event)\" on-${Components.RepeaterItemCreateEventName}=\":host._itemCreate($event)\">\r\n <div class=\"${PCSS}-childform\">\r\n <template>\r\n <${P}-panel class=\"${PCSS}-childform-item\" behaviors=\"{{ [::_dragger] }}\">\r\n <${P}-panel class=\"childform-item-handle ${PCSS}-margin margin-right-1\" hide=\"{{ :host.lockItems || :host.readonly || :host.mode !== 'array' || !(:host._model && :host._model.length > 1) }}\"><i class=\"${PCSS}-icon drag-handle\">drag_handle</i></${P}-panel>\r\n <${P}-panel class=\"childform-item-index text-small\"><${P}-span hide=\"{{ !:host.readonly || :host.mode !== 'array' }}\" class=\"${PCSS}-margin margin-right-1\" text=\"{{ ^index+1 }}\"></${P}-span></${P}-panel>\r\n <${P}-form entity=\"{{ ^item }}\" fetch-headers=\"{{ :host.fetchHeaders }}\" fetch-credentials=\"{{ :host.fetchCredentials }}\" on-${PropertyChangeEventName}=\":host._itemChange(^index, $event)\" readonly=\"{{ :host.readonly }}\" metadata=\"{{ :host.metadata }}\" autogenerate=\"true\" logger=\"{{ :host.logger }}\"></${P}-form>\r\n <${P}-button tab-order=\"-1\" class=\"flat circular circle-small clear ${PCSS}-margin margin-left-1\" hide=\"{{ :host.lockItems || :host.readonly }}\" command-name=\"delete\" command-argument=\"{{ ^index }}\"></${P}-button>\r\n </${P}-panel>\r\n </template>\r\n </div>\r\n <${P}-button tab-order=\"-1\" class=\"flat circular circle-small add\" hide=\"{{ :host.lockItems || :host.readonly || !(:host.mode === 'array' || $pacem.isNullOrEmpty(:host._model)) }}\" on-click=\":host._addItem($event)\"></${P}-button>\r\n</${P}-repeater>\r\n<div class=\"${PCSS}-childform-item-floater ${PCSS}-panel panel-border\">\r\n <div class=\"corner top-left\"></div><div class=\"corner top-right\"></div><div class=\"corner bottom-left\"></div><div class=\"corner bottom-right\"></div>\r\n</div>\r\n<${P}-drag-drop floater=\"{{ ::_floater }}\" disabled=\"{{ :host.lockItems }}\"\r\n on-${UI.DragDropEventType.Start}=\":host._dragStart($event)\"\r\n on-${UI.DragDropEventType.End}=\":host._dragEnd($event)\" \r\n drop-behavior=\"${UI.DropBehavior.InsertChild}\" mode=\"${UI.DragDataMode.Alias}\" handle-selector=\".drag-handle\" drop-targets=\"{{ [::_container] }}\"></${P}-drag-drop>`\n })\n], PacemChildFormElement);\nexport { PacemChildFormElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Logging, PropertyConverters, Debounce, Utils, P, PCSS, CustomElement, Watch, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nconst emptyVal = '';\nconst JsonOrStringConverter = {\n convert: (attr, el) => {\n return /\\{.+\\}/.test(attr) ? PropertyConverters.Json.convert(attr) : PropertyConverters.String.convert(attr);\n },\n convertBack: (prop, el) => {\n if (typeof prop === 'string') {\n return prop;\n }\n return PropertyConverters.Json.convertBack(prop, el);\n }\n};\n//class DatetimeChangeEvent extends CustomTypedEvent<{ date: Date }> {\n// constructor(date: Date) {\n// super('datetimechange', { date: date });\n// }\n//}\n/** {@link PacemBaseElement}-based field composing a set of `pacem-select` dropdowns (year/month/day and, depending on {@link precision}, time) into a single `Date` value. */\nlet PacemDatetimePickerElement = class PacemDatetimePickerElement extends PacemBaseElement {\n constructor() {\n super();\n /** Gets or sets the granularity of the picker: date only, or including hours/minutes ('minute') or hours/minutes/seconds ('second'). */\n this.precision = 'day';\n this._months = [];\n /** Internal: datasource of selectable days for the current {@link year}/{@link month}. */\n this._dates = [];\n this._a24 = [];\n this._a60 = [];\n /** Internal: datasource of selectable years, computed from {@link min}/{@link max}. */\n this._years = [];\n /** Internal: the hours select's current value. */\n this.hours = '00';\n /** Internal: the minutes select's current value. */\n this.minutes = '00';\n /** Internal: the seconds select's current value. */\n this.seconds = '00';\n }\n get inputFields() {\n return [this._yearel, this._monthel, this._dateel, this._hourel, this._minel, this._secel];\n }\n toggleReadonlyView(readonly) {\n this._allFields.hidden = readonly;\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Datetime.convert(attr);\n }\n connectedCallback() {\n super.connectedCallback();\n const today = new Date();\n let year = this.year = today.getFullYear();\n this.min = new Date(year - 100, 0, 1);\n this.max = new Date(year + 10, 11, 31);\n this.month = today.getMonth();\n //\n let months = [], hours = [], minutes = [], leftPad = Utils.leftPad;\n // months\n for (let i = 0; i < 12; i++) {\n let date = new Date(year, i, 1), label = date.toLocaleString(Utils.lang(this), { month: \"short\" });\n ;\n months.push({ value: i, date: date, label: label });\n }\n this._months = months;\n // hours\n for (let i = 0; i < 24; i++) {\n hours.push(leftPad(i, 2, '0'));\n }\n this._a24 = hours;\n // minutes/secs\n for (let i = 0; i < 60; i++) {\n minutes.push(leftPad(i, 2, '0'));\n }\n this._a60 = minutes;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'dateValue':\n this.log(Logging.LogLevel.Log, `dateValue changed from ${old} to ${val}`);\n this._disassembleDate(val);\n // this.changeHandler(new DatetimeChangeEvent(val));\n break;\n case 'min':\n case 'max':\n if (!Utils.isNullOrEmpty(this.min)\n && !Utils.isNullOrEmpty(this.max)) {\n this._setupYears();\n }\n break;\n case 'year':\n case 'month':\n this._buildupDates();\n break;\n case 'date':\n case 'hours':\n case 'minutes':\n case 'seconds':\n this._buildup();\n break;\n }\n }\n acceptValue(val) {\n this.dateValue = Utils.parseDate(val);\n }\n _disassembleDate(v) {\n if (!v) {\n this.date = undefined;\n return;\n }\n if (typeof v === 'string')\n v = Utils.parseDate(v);\n const leftPad = (i) => Utils.leftPad(i, 2, '0');\n this.year = v.getFullYear();\n this.month = v.getMonth();\n this.date = v.getDate();\n this.hours = leftPad(v.getHours());\n this.minutes = leftPad(v.getMinutes());\n this.seconds = leftPad(v.getSeconds());\n }\n _setupYears() {\n let years = [];\n const min = Utils.parseDate(this.min), max = Utils.parseDate(this.max);\n for (let i = min.getFullYear(); i <= max.getFullYear(); i++) {\n years.push(i);\n }\n this._years = years;\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n //if (CustomEventUtils.isInstanceOf(evt, DatetimeChangeEvent)) {\n // const date = (<DatetimeChangeEvent>evt).detail.date;\n // resolve(this.value = date); // keep same type (Date or string equivalent)\n //} else {\n // resolve(this.value = Utils.parseDate(this.value));\n //}\n resolve(this.value = this._computeValue());\n });\n }\n _buildupDates(evt) {\n if (evt)\n evt.stopPropagation();\n const v = this, options = { weekday: 'short', day: 'numeric' }, isDate = (k) => {\n try {\n let monthvalue = +v.month, parsed = new Date(+v.year, +v.month, k);\n return parsed.getMonth() == monthvalue;\n }\n catch (e) {\n return false;\n }\n };\n var dates = [];\n if (!Utils.isNullOrEmpty(v.year) && !Utils.isNullOrEmpty(v.month)) {\n let day = 1;\n do {\n let date = new Date(+v.year, +v.month, day), label = date.toLocaleString(Utils.lang(this), options);\n dates.push({ value: day, date: date, label: label, disabled: date < this.min || date > this.max });\n } while (isDate(++day));\n }\n this._dates = dates;\n if (!isDate(+this.date))\n this.date = '';\n else\n this._buildup();\n }\n _computeValue() {\n const v = this;\n if (Utils.isNullOrEmpty(v.year)\n || Utils.isNullOrEmpty(v.month)\n || Utils.isNullOrEmpty(v.date)) {\n return null;\n }\n else {\n //\n try {\n let value = new Date(+v.year, +v.month, +v.date);\n value.setHours(+v.hours);\n value.setMinutes(+v.minutes);\n value.setSeconds(+v.seconds);\n value.setMilliseconds(0);\n if (!Number.isNaN(value.valueOf())) {\n return value;\n }\n else\n return null;\n }\n catch (e) {\n return null;\n }\n }\n }\n _buildup(evt) {\n if (evt)\n evt.stopPropagation();\n //\n this.dateValue = this._computeValue();\n }\n getViewValue(val) {\n const v = /*this.dateValue ||*/ val;\n if (v) {\n return Utils.core.date(v, this.format || (this.precision != 'day' ? 'full' : 'short'), Utils.lang(this));\n }\n return '';\n }\n};\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-year > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_yearel\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-month > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_monthel\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-date > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_dateel\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-hours > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_hourel\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-minutes > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_minel\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datetime-picker-seconds > ' + P + '-select')\n], PacemDatetimePickerElement.prototype, \"_secel\", void 0);\n__decorate([\n ViewChild(`div.${PCSS}-datetime-picker-fields`)\n], PacemDatetimePickerElement.prototype, \"_allFields\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemDatetimePickerElement.prototype, \"dateValue\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemDatetimePickerElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Datetime })\n], PacemDatetimePickerElement.prototype, \"max\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemDatetimePickerElement.prototype, \"precision\", void 0);\n__decorate([\n Watch({ emit: false, converter: JsonOrStringConverter })\n], PacemDatetimePickerElement.prototype, \"format\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"_dates\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"_years\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"year\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"month\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"date\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"hours\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"minutes\", void 0);\n__decorate([\n Watch()\n], PacemDatetimePickerElement.prototype, \"seconds\", void 0);\n__decorate([\n Debounce(10)\n], PacemDatetimePickerElement.prototype, \"_buildup\", null);\nPacemDatetimePickerElement = __decorate([\n CustomElement({\n tagName: P + '-datetime-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-datetime-picker\">\r\n <div class=\"${PCSS}-datetime-picker-fields ${PCSS}-viewfinder\">\r\n\r\n <div class=\"${PCSS}-datetime-picker-year\">\r\n <${P}-select value=\"{{ :host.year, twoway }}\" placeholder=\"...\" datasource=\"{{ :host._years }}\">\r\n </${P}-select></div>\r\n\r\n <div class=\"${PCSS}-datetime-picker-month\">\r\n <${P}-select value=\"{{ :host.month, twoway }}\" placeholder=\"...\" value-property=\"value\" text-property=\"label\" datasource=\"{{ :host._months }}\">\r\n </${P}-select></div>\r\n\r\n <div class=\"${PCSS}-datetime-picker-date\">\r\n <${P}-select value=\"{{ :host.date, twoway }}\" placeholder=\"...\" value-property=\"value\" text-property=\"label\" datasource=\"{{ :host._dates }}\">\r\n </${P}-select></div>\r\n\r\n <${P}-panel class=\"${PCSS}-datetime-picker-hours\" hide=\"{{ :host.precision === 'day' }}\">\r\n <${P}-select value=\"{{ :host.hours, twoway }}\" datasource=\"{{ :host._a24 }}\">\r\n </${P}-select></${P}-panel>\r\n\r\n <${P}-panel class=\"${PCSS}-datetime-picker-minutes\" hide=\"{{ :host.precision === 'day' }}\">\r\n <${P}-select value=\"{{ :host.minutes, twoway }}\" datasource=\"{{ :host._a60 }}\">\r\n </${P}-select></${P}-panel>\r\n\r\n <${P}-panel class=\"${PCSS}-datetime-picker-seconds\" hide=\"{{ :host.precision !== 'second' }}\">\r\n <${P}-select value=\"{{ :host.seconds, twoway }}\" datasource=\"{{ :host._a60 }}\">\r\n </${P}-select></${P}-panel>\r\n\r\n </div>\r\n <${P}-panel class=\"${PCSS}-datetime-picker-preview\" hide=\"{{ Pacem.Utils.isNullOrEmpty(:host.dateValue) || :host.precision === 'day' || :host.readonly }}\">\r\n <dl>\r\n <dt>local:</dt><dd><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></dd>\r\n <dt>iso:</dt><dd><${P}-text text=\"{{ (:host.dateValue && :host.dateValue.toISOString()) || '' }}\"></${P}-text></dd>\r\n </dl>\r\n </${P}-panel>\r\n <${P}-span class=\"${PCSS}-readonly\" css-class=\"{{ { 'date': :host.precision === 'day', 'datetime': :host.precision !== 'day' } }}\" content=\"{{ :host.viewValue }}\" hide=\"{{ !:host.readonly }}\"></${P}-span>\r\n</div>`\n })\n], PacemDatetimePickerElement);\nexport { PacemDatetimePickerElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Watch, P, PCSS, CustomElement, ViewChild, Utils, PropertyConverters, Defaults, DeferPromise } from '@pacem/pacem-core';\nimport { PacemFormRelevantElement } from './form';\n// TODO: add warning state\n/**\n * Base class for all `p-*-validator` elements: registers/unregisters itself against the ancestor\n * {@link PacemFormElement} field named by `watch`, and turns the abstract {@link evaluate} logic into the\n * `Validator` contract's `validate` (short-circuiting to valid when `disabled`). Concrete validators only\n * need to implement {@link evaluate}; the field's own error UI reads `invalid`/`errorMessage` off the\n * element (see {@link BASIC_VALIDATOR_TEMPLATE}).\n */\nexport class PacemBaseValidatorElement extends PacemFormRelevantElement {\n constructor() {\n super();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n Utils.addClass(this, PCSS + '-validator');\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n let form = this.form;\n switch (name) {\n case 'watch':\n old && form && form.unregisterValidator(val, this);\n form && form.registerValidator(val, this);\n break;\n case 'invalid':\n break;\n case 'form':\n let n = this.watch;\n if (!Utils.isNullOrEmpty(n)) {\n if (old != null)\n old.unregisterValidator(n, this);\n if (val != null)\n val.registerValidator(n, this);\n }\n break;\n case 'disabled':\n this.triggerFormFieldValidation();\n break;\n }\n }\n #easer;\n /** Asks the owning {@link PacemFormElement} to re-validate the watched field on the next animation frame; call after a configuration property (e.g. `min`/`max`/`pattern`) changes so the field re-evaluates against the new rule. */\n triggerFormFieldValidation() {\n const form = this.form, watch = this.watch;\n if (!Utils.isNull(form) && !Utils.isNullOrEmpty(watch)) {\n cancelAnimationFrame(this.#easer);\n this.#easer = requestAnimationFrame(() => {\n form.validate(watch);\n });\n }\n }\n /** Validates `val` against this validator's rule; always resolves `true` (skips {@link evaluate}) when the validator is `disabled`. */\n validate(val) {\n if (this.disabled) {\n return Utils.fromResult(true);\n }\n return this.evaluate(val);\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemBaseValidatorElement.prototype, \"invalid\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemBaseValidatorElement.prototype, \"errorMessage\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemBaseValidatorElement.prototype, \"watch\", void 0);\n/** Default shadow-DOM template shared by every built-in `p-*-validator`: a `<p-span>` (exposed as the `error-message` part) shown only while `invalid`, displaying `errorMessage`. */\nexport const BASIC_VALIDATOR_TEMPLATE = `<${P}-span part=\"error-message\" hide=\"{{ !:host.invalid }}\" text=\"{{ :host.errorMessage }}\"></${P}-span>`;\n// #region TEXTUAL\nfunction isValueEmpty(val) {\n return Utils.isNullOrEmpty(val);\n}\n/** Validates that a field's value is not empty (`p-required-validator`). */\nlet PacemRequiredValidatorElement = class PacemRequiredValidatorElement extends PacemBaseValidatorElement {\n evaluate(val) {\n let retval = !isValueEmpty(val);\n return Utils.fromResult(retval);\n }\n};\nPacemRequiredValidatorElement = __decorate([\n CustomElement({ tagName: P + '-required-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemRequiredValidatorElement);\nexport { PacemRequiredValidatorElement };\n/** Validates that a field's (non-empty) value matches a regular expression (`p-regex-validator`). */\nlet PacemRegexValidatorElement = class PacemRegexValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first && name === 'pattern') {\n this.triggerFormFieldValidation();\n }\n }\n evaluate(val) {\n let retval = true, pattern = this.pattern;\n if (!isValueEmpty(val)) {\n retval = new RegExp(pattern).test(val);\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemRegexValidatorElement.prototype, \"pattern\", void 0);\nPacemRegexValidatorElement = __decorate([\n CustomElement({ tagName: P + '-regex-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemRegexValidatorElement);\nexport { PacemRegexValidatorElement };\n/** Validates that a field's (non-empty) value's string length falls within `[min, max]` (`p-length-validator`). */\nlet PacemLengthValidatorElement = class PacemLengthValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first &&\n (name === 'min' || name === 'max')) {\n this.triggerFormFieldValidation();\n }\n }\n evaluate(val) {\n let retval = true;\n if (!isValueEmpty(val)) {\n if (this.min >= 0)\n retval = retval && (val || '').toString().length >= this.min;\n if (this.max >= 0)\n retval = retval && (val || '').toString().length <= this.max;\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemLengthValidatorElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemLengthValidatorElement.prototype, \"max\", void 0);\nPacemLengthValidatorElement = __decorate([\n CustomElement({ tagName: P + '-length-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemLengthValidatorElement);\nexport { PacemLengthValidatorElement };\n// #endregion\n// #region NUMERIC/ORDINAL\n/** Validates that a field's (non-empty) numeric or date value falls within `[min, max]` (`p-range-validator`); dates (parsed via `Utils.parseDate`) are compared by their timestamp. */\nlet PacemRangeValidatorElement = class PacemRangeValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first &&\n (name === 'min' || name === 'max')) {\n this.triggerFormFieldValidation();\n }\n }\n evaluate(val) {\n let retval = true;\n if (!isValueEmpty(val)) {\n let date = val;\n if (val instanceof Date || (typeof val !== 'number' && (date = Utils.parseDate(val)) instanceof Date && isFinite(date.valueOf()))) {\n if (this.min != null)\n retval = retval && date.valueOf() >= Utils.parseDate(this.min).valueOf();\n if (this.max != null)\n retval = retval && date.valueOf() <= Utils.parseDate(this.max).valueOf();\n }\n else {\n if (this.min != null)\n retval = retval && val >= this.min;\n if (this.max != null)\n retval = retval && val <= this.max;\n }\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRangeValidatorElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemRangeValidatorElement.prototype, \"max\", void 0);\nPacemRangeValidatorElement = __decorate([\n CustomElement({ tagName: P + '-range-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemRangeValidatorElement);\nexport { PacemRangeValidatorElement };\n// #endregion\n// #region COMPLEX\n/** Validates a field's (non-empty) value against another (non-empty) value `to`, using the given comparison `operator` (`p-compare-validator`); dates are compared by their timestamp. */\nlet PacemCompareValidatorElement = class PacemCompareValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first &&\n (name === 'operator' || name === 'to')) {\n this.triggerFormFieldValidation();\n }\n }\n _prepareValuesForComparison(val, other) {\n // gotta manage the case when a stringified datetime is compared with an actual date object.\n if (Utils.Dates.isDate(val) || Utils.Dates.isDate(other)) {\n return [Utils.parseDate(val), Utils.parseDate(other)];\n }\n return [val, other];\n }\n evaluate(val) {\n let retval = true, other = this.to;\n if (!isValueEmpty(val) && !isValueEmpty(other)) {\n const arranged = this._prepareValuesForComparison(val, other);\n val = arranged[0], other = arranged[1];\n switch (this.operator) {\n case 'lessOrEqual':\n retval = val <= other;\n break;\n case 'less':\n retval = val < other;\n break;\n case 'greaterOrEqual':\n retval = val >= other;\n break;\n case 'greater':\n retval = val > other;\n break;\n case 'notEqual':\n retval = val !== other;\n break;\n default:\n retval = val === other;\n break;\n }\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemCompareValidatorElement.prototype, \"operator\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true })\n], PacemCompareValidatorElement.prototype, \"to\", void 0);\nPacemCompareValidatorElement = __decorate([\n CustomElement({ tagName: P + '-compare-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemCompareValidatorElement);\nexport { PacemCompareValidatorElement };\n// #endregion\n/** Validates a {@link BinaryValue}/file-name (non-empty) upload against an optional filename `pattern` and/or `maxSize` in bytes (`p-binary-validator`). */\nlet PacemBinaryValidatorElement = class PacemBinaryValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first &&\n (name === 'pattern' || name === 'maxSize')) {\n this.triggerFormFieldValidation();\n }\n }\n evaluate(val) {\n let retval = true, pattern = this.pattern, maxSize = this.maxSize;\n if (!isValueEmpty(val)) {\n // file name\n if (!Utils.isNullOrEmpty(pattern)) {\n let filename = typeof val === 'string' ? val : val.name;\n retval = new RegExp(pattern, 'i').test(filename);\n }\n // max size\n if (!Utils.isNull(maxSize) && typeof val === 'object' && val.size > 0) {\n retval = retval && val.size <= maxSize;\n }\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBinaryValidatorElement.prototype, \"pattern\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBinaryValidatorElement.prototype, \"maxSize\", void 0);\nPacemBinaryValidatorElement = __decorate([\n CustomElement({ tagName: P + '-binary-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemBinaryValidatorElement);\nexport { PacemBinaryValidatorElement };\n/**\n * Validates a field's (non-empty) value by calling a remote `url` (`p-async-validator`), sending it - along\n * with any extra `parameters` - as a request parameter named after {@link PacemBaseValidatorElement#watch}.\n * The response is considered valid when it is the literal text `'true'`, or a fetched JSON payload whose API\n * result (see `Utils.getApiResult`) is truthy; anything else (including a failed fetch) is invalid.\n * Debounces requests by 1 second and memoizes the last request/result to avoid redundant round-trips.\n */\nlet PacemAsyncValidatorElement = class PacemAsyncValidatorElement extends PacemBaseValidatorElement {\n constructor() {\n super(...arguments);\n this._deferredToken = null;\n }\n _evaluateResult() {\n const fetcher = this._fetcher;\n const result = fetcher.result;\n switch (result) {\n case 'true':\n return true;\n break;\n case 'false':\n return false;\n break;\n default: // expect json\n try {\n let json = JSON.parse(result);\n let res = Utils.getApiResult(json);\n return (res || false);\n }\n catch (_) {\n return false;\n }\n }\n }\n _fetch(val) {\n const deferred = this._deferredToken;\n const fetcher = this._fetcher;\n var params = this.parameters || {};\n params[this.watch] = val;\n const request = {\n parameters: params,\n url: this.url,\n as: 'text',\n method: this.method\n };\n const serializedRequest = Utils.jsonSortStringify(request);\n // check changed:\n // assume idempotent with last request.\n const lastRequest = this.#lastRequest;\n let returnLastResult = false;\n if (!Utils.isNullOrEmpty(lastRequest)) {\n returnLastResult = (serializedRequest === lastRequest);\n }\n if (returnLastResult) {\n const result = this._evaluateResult();\n deferred.resolve(result);\n }\n else {\n Utils.extend(fetcher, request);\n // debounce\n clearTimeout(this._debouncer);\n this._debouncer = setTimeout(() => {\n fetcher.fetch().then(_ => {\n const result = this._evaluateResult();\n deferred.resolve(result);\n // memoize last successful request\n this.#lastRequest = serializedRequest;\n }, _ => {\n deferred.resolve(false);\n });\n }, 1000);\n }\n return deferred.promise;\n }\n #lastRequest;\n evaluate(val) {\n if (Utils.isNullOrEmpty(val)) {\n return Utils.fromResult(true);\n }\n else {\n this._deferredToken = this._deferredToken = DeferPromise.defer();\n return this._fetch(val).then(r => {\n this._deferredToken = null;\n return r;\n }, _ => {\n this._deferredToken = null;\n return false;\n });\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'parameters':\n case 'url':\n case 'method':\n case 'fetchCredentials':\n case 'fetchHeaders':\n this.triggerFormFieldValidation();\n break;\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemAsyncValidatorElement.prototype, \"parameters\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemAsyncValidatorElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemAsyncValidatorElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemAsyncValidatorElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemAsyncValidatorElement.prototype, \"method\", void 0);\n__decorate([\n ViewChild(P + '-fetch')\n], PacemAsyncValidatorElement.prototype, \"_fetcher\", void 0);\nPacemAsyncValidatorElement = __decorate([\n CustomElement({\n tagName: P + '-async-validator',\n template: BASIC_VALIDATOR_TEMPLATE + `<${P}-fetch autofetch=\"false\" throttle=\"true\" credentials=\"{{ :host.fetchCredentials }}\" headers=\"{{ :host.fetchHeaders }}\"></${P}-fetch>`, shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemAsyncValidatorElement);\nexport { PacemAsyncValidatorElement };\n/** Validates a field's (non-empty) value by deferring entirely to the externally-controlled {@link isValid} flag (`p-custom-validator`), for validation logic that doesn't fit the other built-in validators. */\nlet PacemCustomValidatorElement = class PacemCustomValidatorElement extends PacemBaseValidatorElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first &&\n (name === 'isValid')) {\n this.triggerFormFieldValidation();\n }\n }\n evaluate(val) {\n let retval = true;\n if (!isValueEmpty(val)) {\n retval = !!this.isValid;\n }\n return Utils.fromResult(retval);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemCustomValidatorElement.prototype, \"isValid\", void 0);\nPacemCustomValidatorElement = __decorate([\n CustomElement({ tagName: P + '-custom-validator', template: BASIC_VALIDATOR_TEMPLATE, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemCustomValidatorElement);\nexport { PacemCustomValidatorElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Logging, PropertyConverters, Net, Utils, P, PCSS, CustomElement, Watch, PropertyChangeEvent, PropertyChangeEventName, ViewChild, CustomElementUtils, JsonFunctionConversion } from '@pacem/pacem-core';\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { PacemFormRelevantElement } from './form';\nimport { ContenteditableUtils } from './contenteditable/utils';\nimport { PacemBaseValidatorElement, PacemLengthValidatorElement, PacemAsyncValidatorElement, PacemBinaryValidatorElement, PacemCompareValidatorElement, PacemCustomValidatorElement, PacemRangeValidatorElement, PacemRegexValidatorElement, PacemRequiredValidatorElement } from './validators';\n//namespace Components.Scaffolding {\nfunction getFormId(key) {\n return 'form' + key;\n}\nfunction patternToString(pattern) {\n return new RegExp(pattern /*.split('\\\\').join('\\\\\\\\')*/).source;\n}\nfunction isKnownValidator(v) {\n return 'errorMessage' in v;\n}\nfunction isValidatorFactory(v) {\n return 'attributes' in v && typeof v.attributes === 'function';\n}\n/**\n * Renders a single editing field (label, input, validators, tooltip) for {@link entity}'s property described by {@link metadata},\n * dynamically choosing and building up the concrete input element (e.g. `pacem-input-text`, `pacem-select`, `pacem-checkbox`, ...)\n * based on the metadata's `dataType`/`ui` hints. Used internally by `pacem-form` for autogenerated forms.\n */\nlet PacemFormFieldElement = class PacemFormFieldElement extends PacemFormRelevantElement {\n constructor(_md = new ComponentsUI.UI.MarkdownService()) {\n super();\n this._md = _md;\n this._entityPropertyChangeHandler = (e) => {\n // nudge entity propertychange notification\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'entity', currentValue: this.entity }));\n };\n this._labelClickHandler = (_) => {\n document.getElementById(this._label.htmlFor).focus();\n };\n this._key = '_' + Utils.uniqueCode();\n }\n /** @readonly Gets this field's unique key, used to derive DOM ids for the label/input/fetcher. */\n get key() {\n return this._key;\n }\n /** @readonly Gets the inner `pacem-fetch` element used to retrieve remotely-sourced datasources for this field. */\n get fetcher() {\n return this._fetcher;\n }\n /** @readonly Gets the concrete input element built for this field (e.g. `pacem-input-text`, `pacem-select`, ...). */\n get field() {\n return this._field;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._buildUpForm();\n this._buildUpFetcher();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'readonly':\n this._ensureBalloon();\n break;\n case 'metadata':\n this._ensureBalloon();\n this._buildUpCss();\n this._buildUpLabel();\n this._buildUpField();\n break;\n case 'entity':\n // In the case that the entity is a HTMLElement,\n // its changes might not propagate correctly.\n // This is a nudgy solution. Explore how to improve\n // `CustomElementUtils.set` as an alternative...\n if (old instanceof HTMLElement) {\n old.removeEventListener(PropertyChangeEventName, this._entityPropertyChangeHandler, false);\n }\n if (val instanceof HTMLElement) {\n val.addEventListener(PropertyChangeEventName, this._entityPropertyChangeHandler, false);\n }\n break;\n }\n }\n disconnectedCallback() {\n if (this.entity instanceof HTMLElement) {\n this.entity.removeEventListener(PropertyChangeEventName, this._entityPropertyChangeHandler, false);\n }\n if (!Utils.isNull(this._label)) {\n this._label.removeEventListener('click', this._labelClickHandler, false);\n }\n if (!Utils.isNull(this._balloon)) {\n this._balloon.remove();\n }\n super.disconnectedCallback();\n }\n _normalizeTooltip() {\n const metadata = this.metadata && this.metadata.extra && this.metadata.extra.tooltip || false;\n if (typeof metadata === 'object') {\n return metadata;\n }\n return { type: metadata };\n }\n _ensureBalloon() {\n var innerText, tooltip;\n const noBalloon = this.readonly\n || ((tooltip = this._normalizeTooltip()).type === false)\n || Utils.isNullOrEmpty(innerText = this.metadata && this.metadata.display && this.metadata.display.description);\n // balloon\n if (Utils.isNull(this._balloon) && !noBalloon) {\n let balloon = document.createElement(P + '-balloon');\n balloon.options = {\n behavior: ComponentsUI.UI.BalloonBehavior.Tooltip,\n trigger: tooltip.trigger || ComponentsUI.UI.BalloonTrigger.Hover,\n position: tooltip.position || ComponentsUI.UI.BalloonPosition.Top,\n hoverDelay: 200, hoverTimeout: 50,\n align: tooltip.align || ComponentsUI.UI.BalloonAlignment.Auto\n };\n Utils.addClass(balloon, PCSS + '-field-tooltip');\n var shell = CustomElementUtils.findAncestorShell(this);\n shell.appendChild(this._balloon = balloon);\n }\n const balloon = this._balloon;\n if (!Utils.isNull(balloon)) {\n balloon.target = this._label;\n if (!(balloon.disabled = noBalloon)) {\n const content = innerText || '';\n switch (tooltip.type) {\n case 'md':\n case 'markdown':\n balloon.innerHTML = this._md.toHtml(content);\n break;\n case 'html':\n balloon.innerHTML = content;\n break;\n default:\n balloon.innerText = content;\n break;\n }\n }\n }\n }\n _buildUpCss() {\n const display = this.metadata?.display;\n if (Utils.isNull(display)) {\n return;\n }\n if (typeof display.cssClass === 'function') {\n const { cssClassAttr } = display.cssClass(this, '$this', '$this.entity');\n this.setAttribute('css-class', cssClassAttr);\n }\n else {\n this.cssClass = display.cssClass;\n }\n if (typeof display.css === 'function') {\n const { cssAttr } = display.css(this, '$this', '$this.entity');\n this.setAttribute('css', cssAttr);\n }\n else {\n this.css = display.css;\n }\n }\n _buildUpLabel() {\n // label\n const label = this._label, span = label.firstElementChild;\n const meta = this.metadata;\n label.htmlFor = this._key;\n Utils.addClass(label, PCSS + '-label');\n const vals = this.metadata.validators;\n if (vals && vals.find(v => v.type === 'required')) {\n Utils.addClass(label, PCSS + '-required');\n }\n else {\n Utils.removeClass(label, PCSS + '-required');\n }\n //\n if (!Utils.isNull(this._balloon) && !this._balloon.disabled) {\n Utils.addClass(label, PCSS + '-tooltip');\n }\n else {\n Utils.removeClass(label, PCSS + '-tooltip');\n }\n // exploit a pacem-span so that it cleans the htm content up\n if (typeof meta.display?.name === 'function') {\n const { contentAttr } = meta.display.name(this, ':host', ':host.entity', '::_form');\n span.setAttribute('content', contentAttr);\n }\n else {\n span.removeAttribute('content');\n span.content = (meta.display && meta.display.name) || meta.prop;\n }\n label.setAttribute('id', 'label' + this._key);\n label.addEventListener('click', this._labelClickHandler, false);\n }\n // #region Template-called\n _isValueNullOrEmpty(entity = this.entity, metadata = this.metadata) {\n if (Utils.isNull(metadata)) {\n return true;\n }\n const props = metadata.prop.split('.');\n let obj = entity;\n for (let j = 0; j < props.length; j++) {\n const prop = props[j];\n if (Utils.isNullOrEmpty(obj && obj[prop])) {\n return true;\n }\n // next\n obj = obj[prop];\n }\n return false;\n }\n /**\n * Reflects the value onto the entity attribute, if the 'entity' is an instance of HTMLElement.\n */\n _handleValueChange(evt) {\n if (evt.detail.propertyName === 'value') {\n const value = evt.detail.currentValue, prop = this.metadata.prop;\n if (this.entity instanceof HTMLElement) {\n // handle the entity as an element and modify the attribute\n let attr = CustomElementUtils.camelToKebab(prop);\n if (Utils.isNullOrEmpty(value)) {\n this.entity.removeAttribute(attr);\n }\n else {\n this.entity.setAttribute(attr, value.toString());\n }\n }\n else {\n this.entity[prop] = value;\n }\n }\n }\n /**\n * 'Prettifies' the input value (for some specific cases) to be included in an URL segment or query string.\n * @param v Input value\n */\n _adjustDependencyValue(v) {\n if (Utils.Dates.isDate(v)) {\n return Utils.Dates.parse(v).toISOString();\n }\n return v;\n }\n _broadcastFetchResult(v) {\n const field = this;\n this.dispatchEvent(new CustomEvent(\"fetch\", { detail: v, bubbles: true, cancelable: false }));\n }\n // #endregion\n _buildUpFetcher() {\n // fetcher\n var fetcher = this._fetcher;\n fetcher.setAttribute('id', 'fetch' + this._key);\n fetcher.setAttribute('on-fetchresult', ':host._broadcastFetchResult($event.detail)');\n }\n _buildUpForm() {\n // form\n var form = this._form;\n form.setAttribute('id', getFormId(this._key));\n form.setAttribute('sudden-validation', '{{ ::form.suddenValidation }}');\n }\n _apiResult(v) {\n return Utils.getApiResult(v);\n }\n _buildUpField() {\n if (this._field)\n this._field.remove();\n this._fetcher.removeAttribute('parameters');\n this._fetcher.result =\n this._fetcher.url = null;\n for (var j = this._validators.children.length - 1; j >= 0; j--)\n this._validators.children[j].remove();\n var meta = this.metadata;\n // field\n let tagName = /* setting the default/fallback input element */ P + '-input-text';\n let numericTagName = P + (meta.display && meta.display.ui === 'slider' ? '-slider' : '-input-number');\n let attrs = {\n 'id': this._key, 'name': meta.prop,\n // readonly if property `readonly` set to true OR metadata property is not editable OR parent form's `readonly` property is set to true\n 'readonly': \"{{ :host.readonly || :host.metadata.isReadOnly || ::_form.readonly }}\",\n 'value': `{{ :host.entity.${meta.prop}, twoway }}`,\n 'placeholder': `${((meta.display && meta.display.watermark) || \"\")}`\n };\n // autofocus\n if (meta.extra?.autofocus == true) {\n attrs['on-load'] = 'requestAnimationFrame(() => $this.focus())';\n }\n // fetch data\n let fetchData = meta.extra || {};\n let fetchAttrs = {};\n let disabledAttr = \"false\";\n let dependingClause = '';\n let dependingDisabling = '';\n let dependingParameters = '';\n let dependsOn = [];\n // #region dependency from other props\n if (!Utils.isNullOrEmpty(fetchData.dependsOn)) {\n if (typeof fetchData.dependsOn === 'function') {\n const depAttrs = fetchData.dependsOn(this, ':host', ':host.entity', '$this.entity'), hideAttr = depAttrs.hideAttr;\n if (!Utils.isNullOrEmpty(hideAttr)) {\n this.setAttribute('hide', hideAttr);\n }\n if (!Utils.isNullOrEmpty(depAttrs.disabledAttr)) {\n disabledAttr = depAttrs.disabledAttr;\n if (CustomElementUtils.isBindingAttribute(disabledAttr)) {\n dependingDisabling = CustomElementUtils.extractBindingAttributeExpression(disabledAttr);\n }\n }\n if (!Utils.isNullOrEmpty(depAttrs.parameterAttrs)) {\n const pAttrs = depAttrs.parameterAttrs, parameterPairs = [];\n for (let alias in pAttrs) {\n const propName = pAttrs[alias];\n parameterPairs.push(`${alias}: ${propName}`);\n // exploit this sneaky way...\n dependsOn.push({ prop: propName });\n }\n dependingParameters = parameterPairs.join(', ');\n }\n }\n else {\n dependsOn = fetchData.dependsOn;\n // there should be a better way...\n let disablingClauses = { empty: [], notEqual: {} };\n let hidingClauses = { empty: [], notEqual: {} };\n // fetch\n let namesAndPaths = [];\n let paths = [];\n for (var depends of dependsOn) {\n let path = ':host.entity.' + depends.prop, path2 = '$this.entity.' + depends.prop;\n if (!Utils.isNullOrEmpty(depends.value)) {\n let clause = (p) => p + ' !== ' + JSON.stringify(depends.value);\n (disablingClauses.notEqual[path] = disablingClauses.notEqual[path] || []).push(clause(path));\n if (depends.hide) {\n (hidingClauses.notEqual[path2] = hidingClauses.notEqual[path2] || []).push(clause(path2));\n }\n }\n else if (!depends.optional) {\n let clause = (p) => '$pacem.isNullOrEmpty(' + p + ')';\n disablingClauses.empty.push(clause(path));\n if (depends.hide) {\n hidingClauses.empty.push(clause(path2));\n }\n }\n // fetch\n paths.push(path);\n namesAndPaths.push(`${(depends.alias || depends.prop)}: :host._adjustDependencyValue(${path})`);\n if (!depends.optional) {\n dependingClause += `!$pacem.isNullOrEmpty(${path}) && `;\n }\n }\n dependingParameters = namesAndPaths.join(', ');\n let joinClauses = (d) => {\n let ne = 'false', emp = 'false';\n if (!Utils.isNullOrEmpty(d.notEqual)) {\n // when a value is provided then pick the logical operator when provided.\n // consider to switch semantic (i.e. 'or' -> '&&', 'and' -> '||') due to the 'notEqual' operator.\n // 'and' is assumed to be the default\n const neByProp = [];\n for (let dp in d.notEqual) {\n // same property conditions always concatenated with '&&' (logical and)\n neByProp.push('(' + d.notEqual[dp].join(' && ') + ')');\n }\n // different property clauses should be concatenated with '||' (logical or)\n ne = '(' + neByProp.join(' || ') + ')';\n }\n if (!Utils.isNullOrEmpty(d.empty)) {\n // logical operator doe not affect 'empty' (no 'value' explicitated) deps:\n // empty always means 'BAD', then ANY empty entry would automatically trigger a negative outcome ('||').\n emp = '(' + d.empty.join(' || ') + ')';\n }\n return ne + ' || ' + emp;\n };\n dependingDisabling = joinClauses(disablingClauses);\n disabledAttr = `{{ ${dependingDisabling} }}`;\n // never disable the form-field, NEVER!\n // attrs['disabled'] = disabledAttr; // * BUG\n this.setAttribute('hide', `{{ ${joinClauses(hidingClauses)} }}`);\n }\n }\n // #endregion\n const fn = 'fn';\n const fns = this[fn] = this[fn] || {};\n const spinStaticDatasourceAttr = (source = []) => {\n let args = (dependsOn || []).map(p => ':host.entity.' + p.prop).join(', ');\n const fnKey = 'fn' + Utils.uniqueCode();\n switch (typeof source) {\n case 'function':\n fns[fnKey] = source;\n break;\n default:\n if (Utils.isArray(source)) {\n fns[fnKey] = () => source;\n }\n else {\n throw 'Unsupported source format.';\n }\n break;\n }\n return `{{ :host.${fn}.${fnKey}(${args}) }}`;\n };\n const children = new DocumentFragment();\n let uiHint;\n // metadata\n if (typeof meta.type === 'function' /* < factory */) {\n // build-up meta-structure\n var retval = meta.type(this, ':host', ':host.entity');\n // element must be a registered custom-element (hyphen!)\n if (retval.tagName.indexOf('-') === -1) {\n this.log(Logging.LogLevel.Error, `${tagName} is not an allowed form-field`);\n }\n else {\n // set tagName\n tagName = retval.tagName;\n // set/override attributes\n Utils.extend(attrs, retval.attrs || {});\n // prepare recursive seeding function\n function seedChildren(parent, children) {\n if (!Utils.isNullOrEmpty(children)) {\n for (let child of children) {\n // element must be a registered custom-element (hyphen!)\n if (child.tagName.indexOf('-') === -1) {\n this.log(Logging.LogLevel.Error, `${child.tagName} is not an allowed child element for form-field ${tagName}`);\n continue;\n }\n const el = document.createElement(child.tagName);\n if (!Utils.isNullOrEmpty(child.attrs)) {\n for (let attr in child.attrs) {\n const attrVal = child.attrs[attr];\n el.setAttribute(attr, attrVal);\n }\n }\n if (!Utils.isNullOrEmpty(child.children)) {\n // recursion here\n seedChildren(el, child.children);\n }\n parent.appendChild(el);\n }\n }\n }\n // seed\n seedChildren(children, retval.children);\n }\n }\n else\n switch (uiHint = (meta.display && meta.display.ui)) {\n // remove this (use dataType = 'HTML' instead).\n case 'contentEditable':\n console.warn('`contentEditable` ui hint is deprecated. Lean on `dataType` equal to \\'HTML\\' instead.');\n tagName = P + '-contenteditable';\n children.append(ContenteditableUtils.getDefaultDashboard());\n break;\n case 'snapshot':\n tagName = P + '-snapshot';\n if (fetchData.width > 0) {\n attrs['width'] = '' + fetchData.width;\n }\n if (fetchData.height > 0) {\n attrs['height'] = '' + fetchData.height;\n }\n if (fetchData.quality >= 0) {\n attrs['quality'] = '' + fetchData.quality;\n }\n break;\n case 'chars':\n case 'digits':\n case 'otp':\n tagName = P + '-input-chars';\n if (fetchData.charCount > 0) {\n attrs['charCount'] = '' + fetchData.charCount;\n }\n if (!Utils.isNullOrEmpty(fetchData.inputTransform)) {\n attrs['input-transform'] = fetchData.inputTransform;\n }\n break;\n case 'oneToMany':\n case 'dropdown':\n case 'radioList':\n case 'checkboxList':\n case 'manyToMany':\n if (uiHint === 'oneToMany' || uiHint === 'dropdown') {\n // select\n tagName = P + '-select';\n if (fetchData.preventWheel !== false /* must explicit a 'false': default/empty is true for <select> */) {\n attrs['on-wheel'] = '$event.preventDefault()';\n }\n }\n else {\n // checkboxlist\n delete attrs['placeholder'];\n tagName = P + (uiHint === 'radioList' ? '-radio-list' : '-checkbox-list');\n }\n if (!Utils.isNullOrEmpty(fetchData.textProperty)) {\n attrs['text-property'] = fetchData.textProperty;\n }\n if (!Utils.isNullOrEmpty(fetchData.disabledProperty)) {\n attrs['disabled-property'] = fetchData.disabledProperty;\n }\n if (!Utils.isNullOrEmpty(fetchData.valueProperty)) {\n if (!meta.isComplexType)\n attrs['value-property'] = fetchData.valueProperty;\n else\n attrs['compare-by'] = fetchData.valueProperty;\n }\n if (Utils.isNullOrEmpty(fetchData.source)) {\n // datasource has to be fetched\n this._fetcher.id = `fetch${this._key}`;\n this._fetcher.url = fetchData.sourceUrl;\n this._fetcher.method = fetchData.verb;\n //\n fetchAttrs['parameters'] = `{{ { ${dependingParameters} } }}`;\n fetchAttrs['disabled'] = disabledAttr;\n attrs['datasource'] = `{{ ${dependingClause}:host._apiResult(#fetch${this._key}.result) || null }}`;\n }\n else {\n // static datasource provided\n attrs['datasource'] = spinStaticDatasourceAttr(fetchData.source);\n }\n break;\n // experimental (do not include in metadata)\n //case 'hierarchy':\n // // select\n // delete attrs['placeholder'];\n // tagName = P + '-hierarchy';\n // if (!Utils.isNullOrEmpty(fetchData.textProperty)) {\n // attrs['text-property'] = fetchData.textProperty;\n // }\n // if (!Utils.isNullOrEmpty(fetchData.disabledProperty)) {\n // attrs['disabled-property'] = fetchData.disabledProperty;\n // }\n // if (!Utils.isNullOrEmpty(fetchData.parentsProperty)) {\n // attrs['parents-property'] = fetchData.parentsProperty;\n // }\n // if (!Utils.isNullOrEmpty(fetchData.valueProperty)) {\n // attrs['value-property'] = fetchData.valueProperty;\n // }\n // if (!Utils.isNullOrEmpty(fetchData.unlinkCaption)) {\n // attrs['unlink-caption'] = fetchData.unlinkCaption;\n // }\n // if (Utils.isNullOrEmpty(fetchData.source)) {\n // // datasource has to be fetched\n // this._fetcher.id = `fetch${this._key}`;\n // this._fetcher.url = fetchData.sourceUrl;\n // this._fetcher.method = fetchData.verb;\n // //\n // fetchAttrs['parameters'] = `{{ { ${dependingParameters} } }}`;\n // fetchAttrs['disabled'] = disabledAttr;\n // attrs['datasource'] = `{{ ${dependingClause}Pacem.Utils.getApiResult(#fetch${this._key}.result) || null }}`;\n // } else {\n // // static datasource provided\n // attrs['datasource'] = spinStaticDatasourceAttr(fetchData.source);\n // }\n // break;\n case 'suggest':\n case 'tags':\n case 'autocomplete':\n // autocomplete\n const tags = meta.display.ui === 'tags';\n tagName = P + (tags ? '-tags' : '-suggest');\n this._fetcher.id = `fetch${this._key}`;\n if (!Utils.isNullOrEmpty(fetchData.textProperty)) {\n attrs['text-property'] = fetchData.textProperty;\n }\n let itemValue = `#${this._key}.value`;\n if (!Utils.isNullOrEmpty(fetchData.valueProperty)) {\n attrs['compare-by'] = fetchData.valueProperty;\n if (tags) {\n itemValue = `(${itemValue} && ${itemValue}.${fetchData.valueProperty}) || ''`;\n }\n else {\n if (!meta.isComplexType) {\n attrs['value-property'] = fetchData.valueProperty;\n }\n else {\n itemValue += ` && ${itemValue}.${fetchData.valueProperty}`;\n }\n }\n }\n if (!Utils.isNullOrEmpty(fetchData.sourceUrl)) {\n fetchAttrs['url'] = `${fetchData.sourceUrl}`;\n this._fetcher.method = fetchData.verb;\n //\n if (!Utils.isNullOrEmpty(fetchData.dependsOn)) {\n // deps\n fetchAttrs['parameters'] = `{{ { ${dependingParameters}, q: #${this._key}.hint || '', ${(fetchData.valueProperty || 'value')}: ${itemValue} || '' } }}`;\n fetchAttrs['disabled'] = disabledAttr;\n }\n else {\n // no deps\n fetchAttrs['parameters'] = `{{ {q: #${this._key}.hint || '', ${(fetchData.valueProperty || 'value')}: ${itemValue} || '' } }}`;\n }\n attrs['datasource'] = `{{ ${dependingClause}:host._apiResult(#fetch${this._key}.result) || null }}`;\n }\n else {\n // static datasource\n attrs['datasource'] = spinStaticDatasourceAttr(fetchData.source);\n }\n if (tags) {\n // tags\n attrs['allow-new'] = (meta.extra.allowNew === true).toString();\n attrs['allow-duplicates'] = (meta.extra.allowDuplicates === true).toString();\n }\n else {\n // suggest\n if (!Utils.isNullOrEmpty(fetchData.disabledProperty)) {\n attrs['disabled-property'] = fetchData.disabledProperty;\n }\n if (!Utils.isNullOrEmpty(fetchData.itemtemplate)) {\n const itmpl = fetchData.itemtemplate;\n if (itmpl instanceof HTMLElement) {\n attrs['itemtemplate'] = '{{ #' + (itmpl.id = itmpl.id || this._key + '_itemtmpl') + ' }}';\n if (!itmpl.isConnected) {\n this.append(itmpl);\n }\n }\n else {\n attrs['itemtemplate'] = itmpl;\n }\n }\n if (!Utils.isNullOrEmpty(fetchData.filterFields)) {\n const ffields = fetchData.filterFields;\n attrs['filter-fields'] = (Utils.isArray(ffields)) ? ffields.join(' ') : ffields;\n }\n if (!Utils.isNullOrEmpty(fetchData.maxSuggestions)) {\n attrs['max-suggestions'] = fetchData.maxSuggestions.toString();\n }\n }\n break;\n case \"calendar\":\n tagName = P + '-calendar-picker';\n const calendarFormat = meta.display?.format ?? meta.extra?.format;\n if (!Utils.isNullOrEmpty(calendarFormat)) {\n attrs['format'] = '{{ ' + JSON.stringify(calendarFormat) + ' }}';\n }\n if (!Utils.isNullOrEmpty(fetchData.disabledRanges)) {\n attrs['disabled-ranges'] = '{{ ' + JSON.stringify(fetchData.disabledRanges) + ' }}';\n }\n break;\n case \"dictionary\":\n tagName = P + '-namevalue-list';\n attrs['dictionary'] = 'true';\n break;\n case 'switcher':\n if ((meta.type || '').toLowerCase() === 'boolean') {\n attrs['class'] = \"checkbox-switch\";\n }\n else {\n break;\n }\n default:\n let dataType = (meta.dataType || meta.type || '').toLowerCase();\n switch (dataType) {\n // should replace this one:\n //case 'imageurl':\n // tagName = P + '-input-image';\n // const f_id = this._fetcher.id = `fetch${this._key}`;\n // attrs['image-set'] = `{{ Pacem.Utils.getApiResult(#${f_id}.result) }}`;\n // attrs['on-imagefetchrequest'] = `#${f_id}.url = '${meta.extra.fetchUrl}'; #${f_id}.parameters = { q: $event.detail.hint, skip: $event.detail.skip, take: $event.detail.take }`;\n // attrs['max-width'] = '' + meta.extra.width;\n // attrs['max-height'] = '' + meta.extra.height;\n // attrs['max-thumbnail-height'] = '' + meta.extra.thumbHeight;\n // attrs['max-thumbnail-width'] = '' + meta.extra.thumbWidth;\n // attrs['upload-url'] = meta.extra.uploadUrl;\n // attrs['allow-snapshot'] = '' + meta.extra.snapshot;\n // break;\n case 'upload':\n // upload\n tagName = P + '-upload';\n let uploadExtra = meta.extra || {};\n attrs['url'] = uploadExtra.uploadUrl;\n attrs['parallelism'] = '' + uploadExtra.parallelism;\n attrs['chunk-size'] = '' + uploadExtra.chunkSize;\n attrs['max-image-width'] = '' + uploadExtra.maxImageWidth;\n attrs['max-image-height'] = '' + uploadExtra.maxImageHeight;\n attrs['select-mode'] = uploadExtra.mode ?? 'file';\n break;\n case 'html':\n // contenteditable\n tagName = P + '-contenteditable';\n children.append(ContenteditableUtils.getDefaultDashboard());\n break;\n case 'enumeration':\n // radiobutton list\n tagName = P + '-radio-list';\n attrs['class'] = PCSS + '-radio-list';\n attrs['value-property'] = \"value\";\n attrs['text-property'] = \"caption\";\n attrs['datasource'] = '{{ ' + JSON.stringify(meta.extra.enum) + ' }}';\n delete attrs['placeholder'];\n break;\n case 'password':\n tagName = P + '-input-password';\n break;\n case 'emailaddress':\n tagName = P + '-input-email';\n break;\n case \"color\":\n tagName = P + '-input-color';\n break;\n case \"time\":\n case \"date\":\n case \"datetime\":\n tagName = P + '-datetime-picker';\n delete attrs['placeholder'];\n if (dataType === 'datetime') {\n attrs['precision'] = \"minute\";\n }\n const dateFormat = meta.display?.format ?? meta.extra?.format;\n if (!Utils.isNullOrEmpty(dateFormat)) {\n attrs['format'] = '{{ ' + JSON.stringify(dateFormat) + ' }}';\n }\n if (!Utils.isNullOrEmpty(fetchData.disabledRanges)) {\n attrs['disabled-ranges'] = '{{ ' + JSON.stringify(fetchData.disabledRanges) + ' }}';\n }\n break;\n case \"url\":\n tagName = P + '-input-url';\n break;\n case \"phonenumber\":\n tagName = P + '-input-tel';\n break;\n case \"multilinetext\":\n tagName = P + '-textarea';\n break;\n case \"markdown\":\n tagName = P + '-textarea-markdown';\n break;\n case 'latlng':\n tagName = P + '-latlng';\n if (!Utils.isNullOrEmpty(meta.extra) && typeof meta.extra === 'object' && !Utils.isArray(meta.extra)) {\n attrs['options'] = JSON.stringify(meta.extra);\n }\n break;\n case 'percent':\n case 'percentage':\n case 'currency':\n let defaultFormatOptions = dataType === 'currency' ? { style: 'currency', currency: 'EUR' } : { style: 'percent', maximumFractionDigits: 2 };\n let intl = meta.display?.format ?? defaultFormatOptions;\n attrs['format'] = JSON.stringify(intl);\n default:\n switch ((meta.type || '').toLowerCase()) {\n case \"boolean\":\n tagName = P + '-checkbox';\n //attrs['selected'] = `{{ :host.entity.${meta.prop}, twoway }}`;\n attrs['true-value'] = \"{{ true }}\";\n attrs['false-value'] = \"{{ false }}\";\n attrs['caption'] = attrs['placeholder'];\n //delete attrs['value'];\n delete attrs['placeholder'];\n break;\n case \"byte\":\n attrs['min'] = '0';\n attrs['max'] = '255';\n case \"int16\":\n case \"int32\":\n case \"int64\":\n case \"short\":\n case \"integer\":\n case \"int\":\n case \"long\":\n attrs['step'] = '' + (meta.extra?.step ?? '1');\n tagName = numericTagName;\n const intFormat = meta.display?.format;\n if (!Utils.isNullOrEmpty(intFormat)) {\n attrs['format'] = JSON.stringify(intFormat);\n }\n if (fetchData.preventWheel !== false /* must explicit a 'false': default/empty is true for <input[type=number]> */ && tagName === (P + '-input-number')) {\n attrs['on-wheel'] = '$event.preventDefault()';\n }\n break;\n case \"double\":\n case \"decimal\":\n case \"float\":\n case \"single\":\n case \"number\":\n tagName = numericTagName;\n attrs['step'] = '' + (meta.extra?.step ?? 'any');\n const decimalFormat = meta.display?.format;\n if (!Utils.isNullOrEmpty(decimalFormat)) {\n attrs['format'] = JSON.stringify(decimalFormat);\n }\n if (fetchData.preventWheel !== false /* must explicit a 'false': default/empty is true for <input[type=number]> */ && tagName === (P + '-input-number')) {\n attrs['on-wheel'] = '$event.preventDefault()';\n }\n break;\n default:\n if ((meta.type === 'array' || meta.type === 'object') && !Utils.isNullOrEmpty(meta.props)) {\n tagName = P + '-childform';\n delete attrs['placeholder'];\n attrs['metadata'] = Utils.Json.stringify(meta.props, { functions: JsonFunctionConversion.Reference });\n attrs['mode'] = meta.type;\n attrs['lock-items'] = '' + (meta.extra && meta.extra.lockItems || false);\n attrs['logger'] = '{{ :host.logger }}';\n if (!Utils.isNullOrEmpty(dependsOn)) {\n var extraDom = '';\n for (let d of dependsOn) {\n extraDom += `<${P}-childform-propagator model=\"${attrs[\"value\"]}\" watch=\"{{ :host.entity.${d.prop} }}\" property=\"${(d.alias || d.prop)}\"></${P}-childform-propagator>\\n`;\n }\n this._container.innerHTML = extraDom;\n }\n attrs['fetch-credentials'] = '{{ :host.fetchCredentials }}';\n attrs['fetch-headers'] = '{{ :host.fetchHeaders }}';\n }\n break;\n }\n break;\n }\n break;\n }\n // #region commands\n if (!Utils.isNullOrEmpty(meta.commands)) {\n Utils.addClass(this._container, PCSS + '-fieldgroup');\n const prepend = this._container.appendChild(document.createElement('div')), append = this._container.appendChild(document.createElement('div'));\n Utils.addClass(prepend, `fieldgroup-prepend ${PCSS}-buttonset buttons`);\n Utils.addClass(append, `fieldgroup-append ${PCSS}-buttonset buttons`);\n const disable = dependingDisabling || 'false';\n meta.commands.forEach(cmd => {\n const btn = document.createElement(P + '-button');\n btn.setAttribute('icon-glyph', cmd.icon);\n btn.setAttribute('command-name', cmd.name);\n if (cmd.dependsOnValue) {\n btn.setAttribute('disabled', `{{ (${disable}) || !::_form.valid || $pacem.isNullOrEmpty(:host.entity.${meta.prop}) }}`);\n btn.setAttribute('command-argument', `{{ :host.entity.${meta.prop} }}`);\n }\n else {\n btn.setAttribute('disabled', disabledAttr);\n }\n btn.setAttribute('tooltip', cmd.tooltip);\n if (!Utils.isNullOrEmpty(cmd.cssClass)) {\n Utils.addClass(btn, cmd.cssClass.join(' '));\n }\n (cmd.prepend ? prepend : append).appendChild(btn);\n });\n }\n // #endregion\n // #region validators\n if (!Utils.isNullOrEmpty(meta.validators)) {\n meta.validators.forEach((v) => {\n var validatorElement;\n var params = {};\n var attributes = {};\n if (isKnownValidator(v)) {\n params = v['params'] || {};\n attributes['error-message'] = v.errorMessage;\n }\n if (isValidatorFactory(v)) {\n // preserve static attributes, just in case\n Utils.extend(attributes, v.attributes(this, ':host', ':host.entity'));\n }\n switch (v.type) {\n case 'required':\n attrs['required'] = 'true';\n validatorElement = new PacemRequiredValidatorElement();\n break;\n case 'length':\n let lengthValidator = new PacemLengthValidatorElement();\n validatorElement = lengthValidator;\n let max = params && params['max'];\n let min = params && params['min'];\n if (max != null) {\n attrs['maxlength'] = '' + (lengthValidator.max = max);\n if (tagName === P + '-input-chars') {\n attrs['count'] ??= '' + max;\n }\n }\n else if ('max' in attributes) {\n attrs['max'] = attributes['max'];\n }\n if (min != null) {\n attrs['minlength'] = '' + (lengthValidator.min = min);\n }\n else if ('min' in attributes) {\n attrs['minlength'] = attributes['min'];\n }\n break;\n case 'range':\n let rangeValidator = new PacemRangeValidatorElement();\n validatorElement = rangeValidator;\n let maxNum = params && params['max'];\n let minNum = params && params['min'];\n let isDateTime = tagName === P + '-datetime-picker';\n // TODO: handle calendar-picker\n if (maxNum != null) {\n rangeValidator.max = maxNum;\n attrs['max'] = \"{{ \" + (isDateTime ? \"'\" + maxNum + \"'\" : maxNum) + \" }}\";\n }\n else if ('max' in attributes) {\n attrs['max'] = attributes['max'];\n }\n if (minNum != null) {\n rangeValidator.min = minNum;\n attrs['min'] = \"{{ \" + (isDateTime ? \"'\" + minNum + \"'\" : minNum) + \" }}\";\n }\n else if ('min' in attributes) {\n attrs['min'] = attributes['min'];\n }\n break;\n case 'email':\n let emailValidator = new PacemRegexValidatorElement();\n validatorElement = emailValidator;\n attrs['pattern'] = patternToString(emailValidator.pattern = /^[\\w\\-\\.]+@[\\w\\-\\.]+\\.[a-zA-Z0-9]{2,6}$/);\n break;\n case 'regex':\n let regexValidator = new PacemRegexValidatorElement();\n validatorElement = regexValidator;\n let pattern = params['pattern'];\n pattern ||= attributes['pattern'];\n attrs['pattern'] = patternToString(pattern);\n regexValidator.pattern = pattern;\n break;\n case 'binary':\n let binaryValidator = new PacemBinaryValidatorElement();\n validatorElement = binaryValidator;\n let filePattern = params['pattern'];\n if (filePattern != null) {\n attrs['pattern'] = patternToString(filePattern);\n binaryValidator.pattern = filePattern;\n }\n else if ('pattern' in attributes) {\n attrs['pattern'] = attributes['pattern'];\n }\n let maxSize = params && params['maxSize'];\n if (maxSize != null) {\n binaryValidator.maxSize = maxSize;\n attrs['max-size'] = '' + maxSize;\n }\n else if ('max-size' in attributes) {\n attrs['max-size'] = attributes['max-size'];\n }\n break;\n case 'compare':\n let compareValidator = new PacemCompareValidatorElement();\n validatorElement = compareValidator;\n let comparedToCore = '';\n if ('value' in params) {\n comparedToCore = JSON.stringify(params.value);\n }\n else {\n const toProp = 'to' in params ? params.to : params.toProperty;\n comparedToCore = `:host.entity.${toProp}`;\n }\n const compareToAttr = `{{ ${comparedToCore} }}`;\n compareValidator.setAttribute('to', compareToAttr);\n let operator = compareValidator.operator = params['operator'] || attributes['operator'] || 'equal';\n // In case of `date(time)` try to add some interaction with `datetime-picker`'s min/max props.\n if (tagName === P + '-datetime-picker') {\n switch (operator) {\n case 'lessOrEqual':\n case 'less': // approximation: edge value won't be allowed but will result enabled on the `datetime-picker`\n attrs['max'] = compareToAttr;\n break;\n case 'greaterOrEqual':\n case 'greater': // approximation: edge value won't be allowed but will result enabled on the `datetime-picker`\n attrs['min'] = compareToAttr;\n break;\n }\n } /* // TODO: should accumulate disabled ranges (possible multiple validators)\n else if (tagName === P + '-calendar-picker') {\n //\n switch (operator) {\n case 'lessOrEqual':\n case 'less': // approximation: edge value won't be allowed but will result enabled on the `calendar-picker`\n attrs['disabled-ranges'] = `{{ [{ to: ${comparedToCore} }] }}`;\n break;\n case 'greaterOrEqual':\n case 'greater': // approximation: edge value won't be allowed but will result enabled on the `calendar-picker`\n attrs['disabled-ranges'] = `{{ [{ from: ${comparedToCore} }] }}`;\n break;\n }\n }*/\n break;\n case 'async':\n let asyncValidator = new PacemAsyncValidatorElement();\n validatorElement = asyncValidator;\n asyncValidator.url = params['url'];\n let parameters = [], depOn = params['dependsOn'] || dependsOn;\n parameters.push(`${meta.prop}: :host._adjustDependencyValue(:host.entity.${meta.prop})`);\n for (let depend of depOn || []) {\n parameters.push(`${(depend.alias || depend.prop)}: :host._adjustDependencyValue(:host.entity.${depend.prop})`);\n }\n asyncValidator.setAttribute('parameters', `{{ { ${(parameters.join(', '))} } }}`);\n asyncValidator.method = params['verb'] || Net.HttpMethod.Get;\n asyncValidator.setAttribute('fetch-credentials', '{{ :host.fetchCredentials }}');\n asyncValidator.setAttribute('fetch-headers', '{{ :host.fetchHeaders }}');\n break;\n case 'custom':\n validatorElement = new PacemCustomValidatorElement();\n break;\n default:\n // custom (extra-lib) validator\n if (!Utils.isNullOrEmpty(v.type) && /* must be a custom element */ v.type.indexOf('-') > 0) {\n const tagName = v.type;\n const extern = document.createElement(tagName);\n if (extern instanceof PacemBaseValidatorElement) {\n validatorElement = extern;\n }\n }\n break;\n }\n //\n if (Utils.isNull(validatorElement)) {\n throw `Cannot generate a formfield validator based on type: ${v.type}.`;\n }\n else {\n validatorElement.watch = meta.prop;\n validatorElement.setAttribute('hide', '{{ !this.invalid }}');\n validatorElement.setAttribute('disabled', disabledAttr);\n for (let attrName in attributes) {\n validatorElement.setAttribute(attrName, attributes[attrName]);\n }\n this._validators.appendChild(validatorElement);\n }\n });\n }\n // #endregion\n // #region build-up\n let field = document.createElement(tagName);\n for (var name in attrs) {\n let attr;\n if (!Utils.isNullOrEmpty(attr = attrs[name]))\n field.setAttribute(name, attr);\n }\n field.append(children);\n // #endregion\n this._field = field;\n this._container.insertBefore(field, this._container.firstElementChild);\n for (var name in fetchAttrs) {\n let attr;\n if (!Utils.isNullOrEmpty(attr = fetchAttrs[name]))\n this._fetcher.setAttribute(name, attr);\n }\n // fire propertychange event for bindings' sake...\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'field', currentValue: field }));\n }\n};\n__decorate([\n ViewChild('label')\n], PacemFormFieldElement.prototype, \"_label\", void 0);\n__decorate([\n ViewChild(`div.${PCSS}-input-container`)\n], PacemFormFieldElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild(P + '-fetch')\n], PacemFormFieldElement.prototype, \"_fetcher\", void 0);\n__decorate([\n ViewChild(P + '-form')\n], PacemFormFieldElement.prototype, \"_form\", void 0);\n__decorate([\n ViewChild(P + '-panel.' + PCSS + '-validators')\n], PacemFormFieldElement.prototype, \"_validators\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemFormFieldElement.prototype, \"metadata\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemFormFieldElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemFormFieldElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemFormFieldElement.prototype, \"readonly\", void 0);\n__decorate([\n Watch()\n], PacemFormFieldElement.prototype, \"entity\", void 0);\nPacemFormFieldElement = __decorate([\n CustomElement({\n tagName: P + '-form-field', template: `<${P}-form class=\"${PCSS}-field\" logger=\"{{ :host.logger }}\" \r\ncss-class=\"{{ {'${PCSS}-fetching': ::_fetcher.fetching, '${PCSS}-dirty': this.dirty, '${PCSS}-invalid': !this.valid, '${PCSS}-editable': !:host.readonly, '${PCSS}-readonly': :host.readonly, '${PCSS}-pristine': !this.dirty, '${PCSS}-valid': this.valid, '${PCSS}-has-value': !:host._isValueNullOrEmpty(:host.entity, :host.metadata) } }}\">\r\n <label class=\"${PCSS}-label\"><${P}-span></${P}-span></label>\r\n <div class=\"${PCSS}-input-container\"></div>\r\n <${P}-fetch debounce=\"300\" logger=\"{{ :host.logger }}\" credentials=\"{{ :host.fetchCredentials }}\" headers=\"{{ :host.fetchHeaders }}\" diff-by-values=\"true\"\r\n on-fetchresult=\":host._broadcastFetchResult($event.detail)\"></${P}-fetch>\r\n <${P}-panel class=\"${PCSS}-validators\" hide=\"{{ ::_form.valid || !::_form.dirty || :host.readonly }}\"></${P}-panel>\r\n</${P}-form>`\n })\n], PacemFormFieldElement);\nexport { PacemFormFieldElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, ViewChild, CustomElement, Watch, Utils, PropertyConverters } from '@pacem/pacem-core';\nimport { Components as ComponentsMaps, Maps } from '@pacem/pacem-maps';\nimport { PacemBaseElement } from './types-components';\nimport { FieldChangeEventName } from './types';\nconst MIN_LENGTH = 3;\n/** {@link PacemBaseElement}-based field pairing an address `pacem-suggest` (forward geocoding) with a draggable map marker (reverse geocoding) to pick an {@link Address}. */\nlet PacemGeolocateElement = class PacemGeolocateElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this._dragendHandler = (e) => {\n this._reverseGeocoder.position = e.detail.position;\n };\n }\n get inputFields() {\n return [];\n }\n toggleReadonlyView(readonly) {\n this._setupSuggest();\n this._setupMapMarker();\n }\n onChange(evt) {\n return new Promise((resolve, _) => {\n if (evt.type === 'success' && evt.target === this._reverseGeocoder) {\n const position = this.#marker.position;\n const sorted = evt.detail.sort((a, b) => {\n const da = Maps.MapProjection.distanceBetween(a.position, position), db = Maps.MapProjection.distanceBetween(b.position, position);\n return da < db ? 0 : -1;\n });\n const altitude = sorted[0].position.altitude;\n const value = Utils.extend({}, sorted[0], { position: Utils.extend({ altitude }, position) });\n resolve(this.value = value);\n }\n else if (evt.type === FieldChangeEventName && evt.target === this._suggest) {\n resolve(this.value = this._suggest.value);\n }\n else {\n resolve(this.value);\n }\n });\n }\n fetch(search) {\n if (Maps.LatLng.isLatLng(search)) {\n this.#marker.position =\n this._reverseGeocoder.position = search;\n }\n }\n compareValuePropertyValues(old, any) {\n const pos1 = old?.position ?? Maps.LatLng.Empty, pos2 = any?.position ?? Maps.LatLng.Empty;\n return Maps.LatLng.equals(pos1, pos2);\n }\n acceptValue(val) {\n if (!Utils.isNull(val)) {\n this._datasource.model = [val];\n this._setupMapMarker();\n }\n else {\n this._datasource.model = [];\n }\n this._setupSuggest();\n }\n getViewValue(value) {\n return value?.fullAddress || '';\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Json.convert(attr, this);\n }\n #marker;\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setup();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'adapter':\n this._setupAdapters(val);\n break;\n case 'map':\n if (old) {\n this._detachMarker(old);\n }\n if (val) {\n this._setupMapMarker(val);\n }\n break;\n case 'icon':\n this._setupMapMarker();\n break;\n case 'plaeholder':\n this._setupSuggest();\n break;\n case 'disabled':\n this._setupMapMarker();\n this._setupSuggest();\n break;\n }\n }\n }\n disconnectedCallback() {\n this._disposeMarker();\n super.disconnectedCallback();\n }\n _setupAdapters(adapter = this.adapter) {\n const gc = this._geocoder, rvgc = this._reverseGeocoder;\n // setup adapters\n if (!Utils.isNull(gc)) {\n gc.adapter = adapter;\n }\n if (!Utils.isNull(rvgc)) {\n rvgc.adapter = adapter;\n }\n }\n _setupSuggest() {\n const suggest = this._suggest;\n if (!Utils.isNull(suggest)) {\n suggest.placeholder = this.placeholder ?? 'search...';\n suggest.readonly = this.readonly;\n suggest.disabled = this.disabled;\n suggest.value = this.value;\n }\n }\n _detachMarker(map = this.map) {\n const marker = this.#marker;\n if (!Utils.isNull(marker) && marker.map === map) {\n marker.remove();\n }\n }\n _createMarker() {\n const marker = new ComponentsMaps.Maps.PacemMapMarkerElement();\n marker.addEventListener('dragend', this._dragendHandler, false);\n return marker;\n }\n _disposeMarker() {\n const marker = this.#marker;\n if (!Utils.isNull(marker)) {\n marker.removeEventListener('dragend', this._dragendHandler, false);\n }\n }\n _setupMapMarker(map = this.map) {\n const marker = this.#marker || (this.#marker = this._createMarker());\n marker.icon = this.icon;\n marker.draggable = !this.readonly && !this.disabled;\n marker.hide = this.disabled;\n const address = this.value;\n if (address && address.position) {\n marker.position = address.position;\n }\n if (marker.map !== map && !Utils.isNull(map)) {\n map.appendChild(marker);\n }\n }\n _setup() {\n this._setupAdapters();\n this._setupSuggest();\n this._setupMapMarker();\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemGeolocateElement.prototype, \"adapter\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemGeolocateElement.prototype, \"map\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemGeolocateElement.prototype, \"icon\", void 0);\n__decorate([\n ViewChild(P + '-data[ds]')\n], PacemGeolocateElement.prototype, \"_datasource\", void 0);\n__decorate([\n ViewChild(P + '-suggest')\n], PacemGeolocateElement.prototype, \"_suggest\", void 0);\n__decorate([\n ViewChild(P + '-map-geocode')\n], PacemGeolocateElement.prototype, \"_geocoder\", void 0);\n__decorate([\n ViewChild(P + '-map-geocode[reverse]')\n], PacemGeolocateElement.prototype, \"_reverseGeocoder\", void 0);\nPacemGeolocateElement = __decorate([\n CustomElement({\n tagName: P + '-geolocate', shadow: false, template: `<${P}-map-geocode search=\"{{ ::_suggest.hint }}\"\r\n disabled=\"{{ (::_suggest.hint || '').length < ${MIN_LENGTH} }}\" on-success=\"::_datasource.model = $event.detail\"></${P}-map-geocode>\r\n<${P}-map-geocode reverse on-success=\":host.changeHandler($event)\"></${P}-map-geocode>\r\n\r\n<${P}-data ds></${P}-data>\r\n\r\n<${P}-suggest on-change=\":host.changeHandler($event)\" datasource=\"{{ ::_datasource.model || [] }}\"\r\n compare-by=\"fullAddress\" text-property=\"fullAddress\"></${P}-suggest>`\n })\n], PacemGeolocateElement);\nexport { PacemGeolocateElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Components, PropertyConverters, Utils, P, PCSS, CustomElement, Watch, Defaults, ViewChild, CustomEventUtils, CustomElementUtils, avoidHandler, UI } from '@pacem/pacem-core';\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { PacemBaseElement } from './types-components';\n//namespace Components.Scaffolding {\nclass HierarchyChangeEvent extends CustomEvent {\n constructor(v) {\n super('hierarchychange', { detail: v, bubbles: false, cancelable: false });\n }\n}\nconst HIERARCHYITEM_CSSCLASS = 'hierarchy-item';\nconst HIERARCHYITEM_CSSCLASS_FULL = HIERARCHYITEM_CSSCLASS + ' ' + PCSS + '-anim anim-fade-in anim-sudden';\nconst HIERARCHYITEM_CSSCLASS_ATTR = \"{{ { 'item-disabled' : ^item.disabled } }}\";\nconst BINDER_HIERARCHYDATAKEY = 'pacemHierarchy';\nconst HIERARCHYITEM_CONTENT_CSSCLASS = 'item-content';\nconst HIERARCHYITEM_LINK_CSSCLASS = 'item-link';\nconst HIERARCHYITEM_LINK_CSSCLASS_FULL = HIERARCHYITEM_LINK_CSSCLASS + ' icon-rotate rotate-135';\nconst HIERARCHYITEM_LINK_ICON = 'link';\nconst HIERARCHYITEM_MOVE_CSSCLASS = 'item-move';\nconst HIERARCHYITEM_MOVE_ICON = 'drag_indicator';\nconst DEFAULT_PARENTSPROPERTY = 'parents';\n/**\n * {@link PacemBaseElement}-based field for editing a DAG-like parent/child hierarchy over {@link datasource}: items are\n * arranged level-by-level and linked/unlinked via drag-drop, producing an array `value` of `{ [valueProperty]: any, parents: any[] }`.\n */\nlet PacemHierarchyElement = class PacemHierarchyElement extends PacemBaseElement {\n getViewValue(value) {\n return '';\n }\n convertValueAttributeToProperty(attr) {\n return Utils.Json.parse(attr);\n }\n constructor() {\n super();\n this.#bindings = new Map();\n this.#dropTargets = new Map();\n /** Gets or sets the caption of the balloon button used to unlink a parent/child relation. */\n this.unlinkCaption = 'Delete';\n this._binderClickHandler = (evt) => {\n const origType = evt.originalEvent.type;\n if (origType === 'mousedown' && evt.originalEvent.button === 1) {\n avoidHandler(evt.originalEvent);\n const binder = evt.srcElement;\n this._unlink(binder);\n }\n else if (origType === 'click' || origType === 'contextmenu') {\n avoidHandler(evt.originalEvent);\n this.#unlinkingBinder = evt.srcElement;\n const balloon = this._balloon;\n balloon.target = { x: evt.pageX, y: evt.pageY };\n balloon.popup();\n }\n };\n // #region drag-drop\n this._dragInitHandler = (evt) => {\n let args = evt.detail;\n const dragger = this._dragger;\n dragger.floater = document.createElement('span');\n dragger.dropTargets = Array.from(this.#dropTargets.keys()).filter(i => i !== args.element);\n if (!Utils.isNull(this.#dragBinder)) {\n this.#dragBinder.remove();\n }\n const binder = this.#dragBinder = new ComponentsUI.UI.PacemBinderElement();\n binder.from = args.element;\n this.#shell.appendChild(binder);\n };\n this._dragStartHandler = (evt) => {\n Utils.addClass(evt.detail.element, 'item-drag');\n };\n this._dragHandler = (evt) => {\n this.#dragBinder.to = evt.detail.currentPosition;\n };\n this._dragEndHandler = (evt) => {\n Utils.removeClass(evt.detail.element, 'item-drag');\n this.#dragBinder.remove();\n this.#dragBinder = null;\n };\n this._dropHandler = (evt) => {\n const source = evt.detail.data, target = this.#dropTargets.get(evt.detail.target);\n // set source as a parent of target\n // just in case (double-check)\n if (!this._isInAncestors(source, target) && !this._isInDescendants(source, target)) {\n // set new relation\n this._compileHierarchy({ source, target });\n }\n };\n this._dragOverHandler = (evt) => {\n const source = evt.detail.data, target = this.#dropTargets.get(evt.detail.target);\n if (target.disabled || this._isInAncestors(source, target) || this._isInDescendants(source, target)) {\n evt.preventDefault();\n }\n };\n this._dragOutHandler = (evt) => {\n };\n // #endregion\n // #region balloon\n this._popoutHandler = (evt) => {\n this._balloon.popout();\n };\n this.#key = Utils.uniqueCode();\n }\n #key;\n #bindings;\n #dragBinder;\n #unlinkingBinder;\n #dropTargets;\n #shell;\n get inputFields() {\n return [];\n }\n toggleReadonlyView(readonly) {\n this._dragger.disabled = readonly;\n if (!Utils.isNull(this._adaptedDatasource)) {\n this._databind();\n }\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n if (CustomEventUtils.isInstanceOf(evt, HierarchyChangeEvent)) {\n resolve(this.value = evt.detail);\n }\n else {\n resolve(this.value);\n }\n });\n }\n acceptValue(val) {\n // nothing to do here...\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.#shell = CustomElementUtils.findAncestorShell(this);\n this._setupItemTemplate();\n this._setupDragger();\n this._setupBalloon();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'datasource':\n case 'textProperty':\n case 'disabledProperty':\n case 'valueProperty':\n cancelAnimationFrame(this._handle);\n this._handle = requestAnimationFrame(() => {\n this._buildAdaptedDatasource();\n });\n break;\n case 'itemtemplate':\n if (!first) {\n this._setupItemTemplate();\n }\n break;\n case '_adaptedDatasource':\n case 'value':\n cancelAnimationFrame(this._handle2);\n this._handle2 = requestAnimationFrame(() => {\n this._databind();\n });\n break;\n }\n }\n disconnectedCallback() {\n this._disposeBindersAndTargets();\n this._disposeDragger();\n this._disposeBalloon();\n super.disconnectedCallback();\n }\n _buildAdaptedDatasource(ds = this.datasource) {\n this._adaptedDatasource = ds && ds.map(i => this._mapEntityToItem(i));\n }\n _mapEntityToValue(entity) {\n let value = entity, prop;\n if (prop = this.valueProperty) {\n value = entity[prop];\n }\n return value;\n }\n _mapEntityToViewValue(entity) {\n let viewValue = entity.toString(), prop;\n if (prop = this.textProperty) {\n viewValue = entity[prop];\n }\n return viewValue;\n }\n _mapEntityToItem(entity) {\n if (entity == null) {\n throw new Error('Entity cannot be null');\n }\n // databound\n let disabled = false;\n const disabledProp = this.disabledProperty;\n if (!Utils.isNullOrEmpty(disabledProp)) {\n disabled = entity[disabledProp] || false;\n }\n return { value: this._mapEntityToValue(entity), viewValue: this._mapEntityToViewValue(entity), disabled: disabled, data: entity };\n }\n _unlink(arg) {\n var binder;\n if (arg instanceof ComponentsUI.UI.PacemBinderElement) {\n binder = arg;\n }\n else {\n arg.preventDefault();\n arg.stopPropagation();\n binder = this.#unlinkingBinder;\n }\n const { parent, child } = JSON.parse(binder.dataset[BINDER_HIERARCHYDATAKEY]);\n const ds = this._adaptedDatasource, source = ds.find(i => i.value === parent), target = ds.find(i => i.value === child);\n if (!source.disabled && !target.disabled) {\n this._compileHierarchy({ source, target }, true);\n }\n }\n _buildHierarchyItemDomId(itemId) {\n return `hierarchyitem_${this.#key}_${itemId}`;\n }\n _itemCreate(evt) {\n const item = evt.detail.dom.find(i => i instanceof HTMLElement && i.classList.contains(HIERARCHYITEM_CSSCLASS)), index = evt.detail.index, hierarchyItem = evt.detail.item;\n item.id = this._buildHierarchyItemDomId(hierarchyItem.value);\n if (hierarchyItem.disabled) {\n item.setAttribute('behaviors', '{{ [#' + this._dragger2.id + '] }}');\n }\n else {\n item.setAttribute('behaviors', '{{ [#' + this._dragger.id + ', #' + this._dragger2.id + '] }}');\n }\n const bindings = this.#bindings;\n const bindingKey = hierarchyItem.value;\n let binders;\n if (!bindings.has(bindingKey)) {\n bindings.set(bindingKey, binders = new Map());\n }\n else {\n binders = bindings.get(bindingKey);\n }\n // ensure loop\n for (let parent of hierarchyItem.parents || []) {\n const binderKey = parent.value;\n const newBinder = !binders.has(binderKey);\n const binder = newBinder\n ? new ComponentsUI.UI.PacemBinderElement()\n : binders.get(binderKey);\n binder.fromAnchor = ComponentsUI.UI.BinderAnchor.Bottom;\n binder.toAnchor = ComponentsUI.UI.BinderAnchor.Top;\n binder.toEnd = ComponentsUI.UI.BinderEnd.Arrow;\n //binder.to = item;\n binder.setAttribute('from', '{{ #' + this._buildHierarchyItemDomId(parent.value) + ' }}');\n binder.setAttribute('to', '{{ #' + item.id + ' }}');\n binder.cssClass = ['hierarchy-binder'];\n binder.dataset[BINDER_HIERARCHYDATAKEY] = JSON.stringify({ parent: parent.value, child: hierarchyItem.value });\n binder.interactive = !this.readonly && !hierarchyItem.disabled && !parent.disabled;\n if (newBinder) {\n binder.addEventListener(ComponentsUI.UI.BinderInteractionEventName, this._binderClickHandler, false);\n this.#shell.appendChild(binder);\n binders.set(binderKey, binder);\n }\n }\n // cleanup loop\n for (let binderKey of binders.keys()) {\n const found = (hierarchyItem.parents.find(p => p.value === binderKey));\n if (!Utils.isNull(found)) {\n continue;\n }\n const binder = binders.get(binderKey);\n binder.removeEventListener(ComponentsUI.UI.BinderInteractionEventName, this._binderClickHandler);\n binder.remove();\n binders.delete(binderKey);\n }\n if (!this.#dropTargets.has(item)) {\n this.#dropTargets.set(item, hierarchyItem);\n }\n }\n _itemRemove(evt) {\n const item = evt.detail.dom.find(i => i instanceof HTMLElement && i.classList.contains(HIERARCHYITEM_CSSCLASS)), hierarchyItem = evt.detail.item;\n this._disposeBinders(hierarchyItem.value);\n if (this.#dropTargets.has(item)) {\n this.#dropTargets.delete(item);\n }\n }\n _disposeBinders(bindingKey) {\n const bindings = this.#bindings;\n if (bindings.has(bindingKey)) {\n const binders = bindings.get(bindingKey);\n for (let binderKey of binders.keys()) {\n const binder = binders.get(binderKey);\n binder.removeEventListener(ComponentsUI.UI.BinderInteractionEventName, this._binderClickHandler, false);\n binder.remove();\n }\n bindings.delete(bindingKey);\n }\n }\n _disposeBindersAndTargets() {\n // clear binders\n for (let bindingKey of this.#bindings.keys()) {\n this._disposeBinders(bindingKey);\n }\n this.#dropTargets.clear();\n }\n _setupItemTemplate() {\n if (this.itemtemplate instanceof HTMLTemplateElement) {\n const frag = this.itemtemplate.cloneNode(true).content;\n const tmpl = document.createElement('template');\n const wrapper = document.createElement(P + '-panel');\n wrapper.className = HIERARCHYITEM_CSSCLASS_FULL;\n wrapper.setAttribute('css-class', HIERARCHYITEM_CSSCLASS_ATTR);\n const move = new ComponentsUI.UI.PacemIconElement();\n move.setAttribute('icon', HIERARCHYITEM_MOVE_ICON);\n move.className = HIERARCHYITEM_MOVE_CSSCLASS;\n wrapper.appendChild(move);\n const content = document.createElement('div');\n content.className = HIERARCHYITEM_CONTENT_CSSCLASS;\n content.append(frag);\n wrapper.appendChild(content);\n const link = new ComponentsUI.UI.PacemIconElement();\n link.setAttribute('icon', HIERARCHYITEM_LINK_ICON);\n link.className = HIERARCHYITEM_LINK_CSSCLASS_FULL;\n wrapper.appendChild(link);\n tmpl.content.appendChild(wrapper);\n this._template = tmpl;\n }\n else {\n this._template = this._defaultTemplate;\n }\n }\n _compileHierarchy(relation, remove = false) {\n const value = /* clone to detach any referemce with the original value, thus allowing `reset` */ Utils.clone(this.value || []);\n const newParent = relation.source.value, newChild = relation.target.value;\n const parentsProperty = this.parentsProperty || DEFAULT_PARENTSPROPERTY;\n var found = value.find(i => i[this.valueProperty] === newChild);\n if (remove) {\n if (!Utils.isNull(found)) {\n const parents = found[parentsProperty] || [], ndx = parents.indexOf(newParent);\n if (ndx >= 0) {\n parents.splice(ndx, 1);\n }\n }\n }\n else {\n if (Utils.isNull(found)) {\n found = {};\n found[this.valueProperty] = newChild;\n found[parentsProperty] = [];\n value.push(found);\n }\n found[parentsProperty].push(newParent);\n }\n // tidy up\n this._tidyUpHierarchy(value);\n //\n this.changeHandler(new HierarchyChangeEvent(value));\n }\n _tidyUpHierarchy(value = []) {\n const valueProperty = this.valueProperty, parentsProperty = this.parentsProperty || DEFAULT_PARENTSPROPERTY;\n const isInAncestors = (sourceId, targetId) => {\n const target = value.find(i => i[valueProperty] == targetId);\n if (Utils.isNull(target) || Utils.isNullOrEmpty(target[parentsProperty])) {\n return false;\n }\n const parents = target[parentsProperty];\n if (parents.indexOf(sourceId) >= 0) {\n return true;\n }\n return parents.some(p => isInAncestors(sourceId, p));\n };\n // bottom-up: if a parent is also an ancestor, then remove the link\n for (let v of value) {\n const parents = v[parentsProperty] || [];\n for (let j = parents.length - 1; j >= 0; j--) {\n const parent = parents[j];\n const otherParents = parents.filter(p0 => p0 !== parent);\n for (let otherParent of otherParents) {\n if (isInAncestors(parent, otherParent)) {\n parents.splice(j, 1);\n break;\n }\n }\n }\n }\n }\n _setupDragger() {\n const dragger = this._dragger;\n dragger.id = 'hierarchy_link_' + this.#key;\n dragger.handleSelector = '.' + HIERARCHYITEM_LINK_CSSCLASS;\n dragger.dropBehavior = UI.DropBehavior.None;\n dragger.spillBehavior = UI.DropTargetMissedBehavior.None;\n dragger.mode = UI.DragDataMode.Copy;\n dragger.addEventListener(UI.DragDropEventType.Drop, this._dropHandler, false);\n dragger.addEventListener(UI.DragDropEventType.Drag, this._dragHandler, false);\n dragger.addEventListener(UI.DragDropEventType.Init, this._dragInitHandler, false);\n dragger.addEventListener(UI.DragDropEventType.Start, this._dragStartHandler, false);\n dragger.addEventListener(UI.DragDropEventType.End, this._dragEndHandler, false);\n dragger.addEventListener(UI.DragDropEventType.Over, this._dragOverHandler, false);\n dragger.addEventListener(UI.DragDropEventType.Out, this._dragOutHandler, false);\n const dragger2 = this._dragger2;\n dragger2.id = 'hierarchy_move_' + this.#key;\n dragger2.mode = UI.DragDataMode.Self;\n dragger2.dropBehavior = UI.DropBehavior.None;\n dragger2.spillBehavior = UI.DropTargetMissedBehavior.None;\n dragger2.handleSelector = '.' + HIERARCHYITEM_MOVE_CSSCLASS;\n }\n _disposeDragger() {\n const dragger = this._dragger;\n if (!Utils.isNull(dragger)) {\n dragger.removeEventListener(UI.DragDropEventType.Drop, this._dropHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Drag, this._dragHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Init, this._dragInitHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Start, this._dragStartHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.End, this._dragEndHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Over, this._dragOverHandler, false);\n dragger.removeEventListener(UI.DragDropEventType.Out, this._dragOutHandler, false);\n }\n }\n _setupBalloon() {\n this._balloon = this._shellProxy.dom.find(i => i instanceof ComponentsUI.UI.PacemBalloonElement);\n window.addEventListener('mousedown', this._popoutHandler, false);\n }\n _disposeBalloon() {\n window.removeEventListener('mousedown', this._popoutHandler, false);\n }\n // #endregion\n _isInAncestors(source, target) {\n if (Utils.isNull(target) || Utils.isNullOrEmpty(target.parents)) {\n return false;\n }\n if (target.parents.indexOf(source) >= 0) {\n return true;\n }\n return target.parents.some(p => this._isInAncestors(source, p));\n }\n _isInDescendants(source, target) {\n return this._isInAncestors(target, source);\n }\n _databind() {\n // check value property\n const valueProperty = this.valueProperty;\n if (Utils.isNullOrEmpty(valueProperty)) {\n throw new Error('Missing valueProperty.');\n }\n // merge datasource and value\n const ds = Utils.clone(this._adaptedDatasource || []), mapping = this.value || [], parentsProperty = this.parentsProperty || DEFAULT_PARENTSPROPERTY;\n for (let item of ds) {\n const found = mapping.find(i => i[valueProperty] === item.value);\n if (!Utils.isNull(found)) {\n item.parents = (found[parentsProperty] || []).map(i => ds.find(i0 => i0.value === i)).filter(i => !Utils.isNull(i));\n }\n }\n // layerize and bind to repeater\n this._databindByParents(ds);\n }\n _databindByParents(ds) {\n // naive algo:\n // find topmost then loop-find direct-only children until no more descendant remains.\n const levelMatrix = [];\n function count() {\n return levelMatrix.reduce((previousLength, item) => previousLength + item.length, 0);\n }\n do {\n if (Utils.isNullOrEmpty(levelMatrix)) {\n // topmost\n const topmost = ds.filter((i) => Utils.isNullOrEmpty(i.parents));\n levelMatrix.push(topmost);\n }\n else {\n // other levels\n const upperLevels = Array.prototype.concat.apply([], levelMatrix), upperLevel = levelMatrix[levelMatrix.length - 1];\n const level = ds.filter((i) => {\n if (Utils.isNullOrEmpty(i.parents)) {\n return false;\n }\n return i.parents.every(p => upperLevels.indexOf(p) >= 0) && i.parents.some(p => upperLevel.indexOf(p) >= 0);\n });\n levelMatrix.push(level);\n }\n } while (count() < ds.length);\n // databind\n this._repeater.datasource = levelMatrix;\n }\n};\n__decorate([\n ViewChild('template[default]')\n], PacemHierarchyElement.prototype, \"_defaultTemplate\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemHierarchyElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(P + '-drag-drop')\n], PacemHierarchyElement.prototype, \"_dragger\", void 0);\n__decorate([\n ViewChild(P + '-drag-drop[move]')\n], PacemHierarchyElement.prototype, \"_dragger2\", void 0);\n__decorate([\n ViewChild(P + '-shell-proxy')\n], PacemHierarchyElement.prototype, \"_shellProxy\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemHierarchyElement.prototype, \"datasource\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHierarchyElement.prototype, \"valueProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHierarchyElement.prototype, \"textProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHierarchyElement.prototype, \"disabledProperty\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemHierarchyElement.prototype, \"unlinkCaption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemHierarchyElement.prototype, \"_adaptedDatasource\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemHierarchyElement.prototype, \"itemtemplate\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemHierarchyElement.prototype, \"_template\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHierarchyElement.prototype, \"parentsProperty\", void 0);\nPacemHierarchyElement = __decorate([\n CustomElement({\n tagName: P + '-hierarchy', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater>\r\n <template>\r\n <${P}-repeater on-${Components.RepeaterItemCreateEventName}=\":host._itemCreate($event)\" on-${Components.RepeaterItemRemoveEventName}=\":host._itemRemove($event)\" datasource=\"{{ ^item }}\">\r\n <div class=\"hierarchy-level\">\r\n <${P}-template-proxy target=\"{{ :host._template }}\"></${P}-template-proxy>\r\n </div>\r\n </${P}-repeater>\r\n </template>\r\n </div>\r\n</${P}-repeater><${P}-content></${P}-content>\r\n<${P}-drag-drop></${P}-drag-drop>\r\n<${P}-drag-drop move></${P}-drag-drop>\r\n<template default>\r\n <${P}-panel class=\"${HIERARCHYITEM_CSSCLASS_FULL} item-default\" css-class=\"${HIERARCHYITEM_CSSCLASS_ATTR}\">\r\n <${P}-icon class=\"${HIERARCHYITEM_MOVE_CSSCLASS}\" icon=\"${HIERARCHYITEM_MOVE_ICON}\"></${P}-icon>\r\n <pacem-span class=\"${HIERARCHYITEM_CONTENT_CSSCLASS}\" content=\"{{ ^item.viewValue }}\"></${P}-span>\r\n <${P}-icon class=\"${HIERARCHYITEM_LINK_CSSCLASS_FULL}\" icon=\"${HIERARCHYITEM_LINK_ICON}\"></${P}-icon>\r\n </${P}-panel>\r\n</template>\r\n<${P}-shell-proxy>\r\n <${P}-balloon options=\"{{ { behavior: '${ComponentsUI.UI.BalloonBehavior.Inert}' } }}\">\r\n <${P}-button icon-glyph=\"link_off\" class=\"${PCSS}-margin margin-0 button-flat display-flex flex-middle icon-rotate rotate-135\"\r\n on-click=\":host._unlink($event)\"\r\n on-mousedown=\"$event.stopPropagation()\"\r\n on-mouseup=\"::_balloon.popout()\"><${P}-text class=\"${PCSS}-margin margin-left-1\" text=\"{{ :host.unlinkCaption }}\"></${P}-text></${P}-button>\r\n </${P}-balloon>\r\n</${P}-shell-proxy>`\n })\n], PacemHierarchyElement);\nexport { PacemHierarchyElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { PropertyConverters, Utils, Watch, CustomElementUtils } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\n/** When a {@link PacemBaseInputElement} propagates its native input's value to the `value` property: on every keystroke (`Input`), or only once the field loses focus (`Blur`). */\nexport var ChangePolicy;\n(function (ChangePolicy) {\n ChangePolicy[\"Input\"] = \"input\";\n ChangePolicy[\"Blur\"] = \"blur\";\n})(ChangePolicy || (ChangePolicy = {}));\n/** Attached-property key used to mark a native `<input>`/`<textarea>` as already wired up, so re-registration doesn't double-attach listeners (see {@link PacemBaseInputElement#registerInputFields}). */\nconst INPUT_FIELD_ACTIVATED_PROP = 'pacem:scaffolding:input_field';\n/**\n * Base class for fields backed by one or more native `<input>`/`<textarea>` elements ({@link inputField}):\n * wires `input`/`focus` listeners onto them, applies `changePolicy`/`debounce` to decide when the native\n * value is read back into {@link PacemModelElement#value} (via {@link getValue}), and optionally\n * auto-selects the field's content on focus.\n *\n * Extended by {@link PacemOrdinalInputElement} (numeric/date-like inputs) and\n * {@link PacemTextualInputElement} (text-like inputs); further specialized by the concrete `input-*.ts`\n * elements in this package (e.g. text, number, date, password, ...).\n */\nexport class PacemBaseInputElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n /** Gets or sets how long to wait, after the native input changes, before propagating the value: `false` (default, propagate on the next animation frame), `true` (propagate via `requestAnimationFrame`), or a number of milliseconds to debounce by. */\n this.debounce = false;\n /** Gets or sets when the native input's value gets read back into {@link PacemModelElement#value}: on every `input` event, or only on `blur`. Defaults to {@link ChangePolicy.Input}. */\n this.changePolicy = ChangePolicy.Input;\n this._focusHandler = (evt) => {\n if (!this.autoselect) {\n return;\n }\n let field = /* first field (usually the only one) */ this.inputField;\n for (let f of this.inputFields ?? []) {\n if (f === document.activeElement) {\n field = f;\n break;\n }\n }\n field?.select();\n };\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'placeholder':\n for (let inputField of this.inputFields ?? []) {\n inputField.setAttribute(name, val);\n }\n break;\n }\n }\n acceptValue(val) {\n if (this.inputField && val !== this.inputField.value) {\n this.inputField.value = Utils.isNullOrEmpty(val) ? '' : val;\n }\n }\n /** @readonly Gets the first (usually only) native input element among {@link PacemBaseElement#inputFields}. */\n get inputField() {\n return this.inputFields[0];\n }\n onChange(evt) {\n return new Promise((resolve) => {\n if (this.readonly) {\n resolve(this.value);\n }\n else if (evt.type === 'input' && this.changePolicy === ChangePolicy.Blur) {\n resolve(this.value);\n }\n else {\n //\n const fn = () => {\n const val = this.getValue(this.inputField.value);\n if (val !== this.value) {\n this.value = val;\n // /* DO NOT MESS THE change EVENT DISPATCH */ this.dispatchEvent(new Event('change'));\n }\n resolve(val);\n };\n const d = this.debounce;\n if (typeof d === 'number' && d > 0) {\n clearTimeout(this._handle);\n this._handle = setTimeout(fn, d);\n }\n else if (d === true) {\n cancelAnimationFrame(this._handle);\n this._handle = requestAnimationFrame(fn);\n }\n else\n requestAnimationFrame(fn);\n }\n });\n }\n ;\n registerInputFields(inputFields = this.inputFields) {\n super.registerInputFields(inputFields);\n if (!Utils.isNull(inputFields) && !Utils.isArray(inputFields)) {\n inputFields = [inputFields];\n }\n for (let field of inputFields ?? []) {\n if (!(field instanceof HTMLInputElement) && !(field instanceof HTMLTextAreaElement)) {\n continue;\n }\n if (CustomElementUtils.getAttachedPropertyValue(field, INPUT_FIELD_ACTIVATED_PROP, 'off') === 'on') {\n continue;\n }\n CustomElementUtils.setAttachedPropertyValue(field, INPUT_FIELD_ACTIVATED_PROP, 'on');\n if ('size' in field) {\n // HTMLInputElement only\n field.size = 1;\n }\n field.autocomplete = 'off';\n field.addEventListener('input', this.changeHandler, false);\n field.addEventListener('focus', this._focusHandler, false);\n }\n }\n unregisterInputFields(inputFields = this.inputFields) {\n super.unregisterInputFields(inputFields);\n if (!Utils.isNull(inputFields) && !Utils.isArray(inputFields)) {\n inputFields = [inputFields];\n }\n for (let field of inputFields ?? []) {\n if (CustomElementUtils.getAttachedPropertyValue(field, INPUT_FIELD_ACTIVATED_PROP) !== 'on') {\n continue;\n }\n CustomElementUtils.deleteAttachedPropertyValue(field, INPUT_FIELD_ACTIVATED_PROP);\n field.removeEventListener('input', this.changeHandler, false);\n field.removeEventListener('focus', this._focusHandler, false);\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.registerInputFields();\n }\n disconnectedCallback() {\n this.unregisterInputFields();\n super.disconnectedCallback();\n }\n}\n__decorate([\n Watch({\n emit: false, converter: {\n convert: (attr) => {\n switch (attr) {\n case 'true':\n return true;\n case 'false':\n return false;\n default:\n return parseFloat(attr);\n }\n },\n convertBack: (prop) => prop.toString()\n }\n })\n], PacemBaseInputElement.prototype, \"debounce\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemBaseInputElement.prototype, \"changePolicy\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemBaseInputElement.prototype, \"autoselect\", void 0);\n/**\n * Base class for numeric/ordinal native inputs (e.g. `number`, `range`, `date`-like fields): adds\n * `min`/`max`/`step`, mirrored onto the native input's own attributes, and parses its `value` attribute as\n * a float.\n */\nexport class PacemOrdinalInputElement extends PacemBaseInputElement {\n convertValueAttributeToProperty(attr) {\n return parseFloat(attr);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'min':\n case 'max':\n case 'step':\n val != null ? this.inputField.setAttribute(name, val) : this.inputField.removeAttribute(name);\n break;\n }\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemOrdinalInputElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemOrdinalInputElement.prototype, \"max\", void 0);\n__decorate([\n Watch({\n converter: {\n convert: (attr) => {\n const num = parseFloat(attr);\n return isNaN(num) ? 'any' : num;\n },\n convertBack: (val) => val.toString()\n }\n })\n], PacemOrdinalInputElement.prototype, \"step\", void 0);\n/**\n * Base class for text-like native inputs (e.g. `text`, `password`, `textarea` fields): adds\n * `pattern`/`minlength`/`maxlength`, mirrored onto the native input's own attributes, and treats an empty\n * string `value` as `null`.\n */\nexport class PacemTextualInputElement extends PacemBaseInputElement {\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'pattern':\n case 'maxlength':\n case 'minlength':\n val != null ? this.inputField.setAttribute(name, val) : this.inputField.removeAttribute(name);\n break;\n }\n }\n getValue(val) {\n return Utils.isNullOrEmpty(val) ? null : val;\n }\n getViewValue(val) {\n return val;\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemTextualInputElement.prototype, \"pattern\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemTextualInputElement.prototype, \"minlength\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemTextualInputElement.prototype, \"maxlength\", void 0);\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Arrays } from '@pacem/pacem-foundation';\nimport { Components, PropertyConverters, Utils, P, PCSS, CustomElement, Watch, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemBaseInputElement } from './input';\n//namespace Pacem.Components.Scaffolding {\n/** {@link PacemBaseInputElement} rendering one single-character `<input>` per position (e.g. OTP/verification codes), joining them into a single string `value`. */\nlet PacemCharsInputElement = class PacemCharsInputElement extends PacemBaseInputElement {\n constructor() {\n super();\n /** Gets or sets how many single-character inputs to render. */\n this.charCount = 6;\n /** Gets or sets how the entered characters are transformed/displayed: as-is, forced to a case, or masked like a password. */\n this.inputTransform = 'none';\n this._itemCreateHandler = (e) => {\n const { dom, index } = e.detail;\n const inputField = dom.find(i => i instanceof HTMLInputElement);\n this.#inputs[index] = inputField;\n this.registerInputFields(inputField);\n };\n this.#inputs = [];\n }\n redactViewValue(value = this.value) {\n this.viewValue = this.getViewValue(value);\n }\n getValue(_) {\n const val = this.#inputs.reduce((acc, input) => acc + (Utils.isNullOrEmpty(input.value) ? ' ' : input.value), '');\n switch (this.inputTransform) {\n case 'lowercase':\n return val.toLowerCase();\n case 'uppercase':\n return val.toUpperCase();\n default:\n return val;\n }\n }\n getViewValue(value) {\n const size = this.charCount;\n return this.inputTransform == 'password' ? Arrays.range(size).map(i => '*').join('') : value;\n }\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n toggleReadonlyView(readonly = this.readonly) {\n this._span.hidden = !readonly;\n this._chars.hidden = readonly;\n }\n /** Override base behavior. */\n focus() {\n // check if one of the fields has already focus, if so, do not steal it.\n for (let inputField of this.inputFields ?? []) {\n if (inputField === document.activeElement) {\n if (this.autofocus) {\n inputField.select();\n }\n return;\n }\n }\n super.focus();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (first) {\n return;\n }\n switch (name) {\n case 'charCount':\n this._databind();\n this.redactViewValue();\n break;\n case 'inputTransform':\n this.registerInputFields();\n this.value = this.getValue(this.value);\n break;\n }\n }\n /**\n * Override to apply input transform to all input fields.\n * @param fields\n */\n registerInputFields(fields = this.inputFields) {\n super.registerInputFields(fields);\n if (!Utils.isNull(fields) && !Utils.isArray(fields)) {\n fields = [fields];\n }\n const inputs = this.#inputs;\n for (let inputField of fields ?? []) {\n const ndx = inputs.indexOf(inputField);\n Utils.toggleClass(inputField, 'last-char', ndx === (this.charCount - 1));\n Utils.toggleClass(inputField, 'first-char', ndx === 0);\n if (Utils.isNullOrEmpty(inputField.id)) {\n inputField.setAttribute('id', 'code_' + ndx + '_' + Utils.uniqueCode());\n }\n inputField.value = this.value?.charAt(ndx) || '';\n if (this.inputTransform === 'password') {\n inputField.setAttribute('type', 'password');\n }\n else {\n inputField.setAttribute('type', 'text');\n }\n }\n }\n acceptValue(val) {\n // shadow super method\n // update ui\n const inputs = this.#inputs;\n if (typeof val === 'string') {\n let counter = 0;\n const limit = Math.min(val.length, inputs.length);\n for (let j = 0; j < limit; j++) {\n inputs[j].value = val.charAt(j);\n counter++;\n }\n for (let j = counter; j < inputs.length; j++) {\n inputs[j].value = '';\n }\n }\n }\n onChange(evt) {\n return super.onChange(evt).then(v => {\n const inputs = this.#inputs, index = inputs.indexOf(evt.target);\n if (index >= 0 && index < (inputs.length - 1)) {\n const input = inputs[index];\n if (Utils.isNullOrEmpty(input.value?.trim())) {\n input.value = '';\n }\n else {\n const next = index + 1;\n inputs[next].focus();\n }\n }\n return v;\n });\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (Utils.isNull(this.autoselect)) {\n // defaults autoselect to true\n this.autoselect = true;\n }\n this._chars.addEventListener(Components.RepeaterItemCreateEventName, this._itemCreateHandler, false);\n this._databind();\n }\n disconnectedCallback() {\n const repeater = this._chars;\n if (!Utils.isNull(repeater)) {\n repeater.removeEventListener(Components.RepeaterItemCreateEventName, this._itemCreateHandler);\n }\n super.disconnectedCallback();\n }\n _databind() {\n const size = this.charCount, inputs = this.#inputs;\n if (inputs.length > size) {\n super.unregisterInputFields(inputs.splice(size));\n }\n this._chars.datasource = Arrays.range(size);\n }\n #inputs;\n get inputFields() {\n return this.#inputs;\n }\n};\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemCharsInputElement.prototype, \"charCount\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemCharsInputElement.prototype, \"inputTransform\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemCharsInputElement.prototype, \"_chars\", void 0);\n__decorate([\n ViewChild('span.' + PCSS + '-readonly')\n], PacemCharsInputElement.prototype, \"_span\", void 0);\nPacemCharsInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-chars',\n template: `<${P}-repeater class=\"display-flex flex-nowrap\">\r\n <template><input type=\"text\" class=\"${PCSS}-input flex-auto\" maxlength=\"1\" /></template>\r\n </${P}-repeater><span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemCharsInputElement);\nexport { PacemCharsInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Colors } from '@pacem/pacem-foundation';\nimport { Utils, P, PCSS, CustomElement, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\n/** {@link PacemBaseElement}-based field pairing a native color picker with an alpha (0-100) slider, producing a hex/rgba color string `value`. */\nlet PacemColorInputElement = class PacemColorInputElement extends PacemBaseElement {\n acceptValue(val) {\n const parsed = this._parseValue(val);\n if (parsed != null) {\n this._tint.value = parsed.tint;\n this._alpha.value = parsed.alpha.toString();\n }\n }\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n onChange(evt) {\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/669685/ (bug open since Aug 2014!)\n const alpha = this._alpha.valueAsNumber || parseInt(this._alpha.value);\n const tint = this._tint.value;\n const value = this.value = this._getValue(tint, alpha);\n return Utils.fromResult(value);\n }\n constructor() {\n super();\n }\n toggleReadonlyView(readonly) {\n this._wrapper.hidden = readonly;\n this._span.hidden = !readonly;\n }\n _getValue(tint, alpha) {\n // #rrggbb\n if (isNaN(alpha) || alpha === 100)\n return tint;\n const rgb = Colors.parse(tint);\n rgb.a = alpha * .01;\n return Colors.stringify(rgb);\n }\n _parseValue(val) {\n const rgb = Colors.parse(val);\n if (Utils.isNullOrEmpty(rgb)) {\n return null;\n }\n return { tint: Colors.stringify({ r: rgb.r, g: rgb.g, b: rgb.b }), alpha: rgb.a * 100 };\n }\n getViewValue(value) {\n return value;\n }\n get inputFields() {\n return [this._tint, this._alpha].filter(e => !Utils.isNull(e));\n }\n};\n__decorate([\n ViewChild('input[type=color]')\n], PacemColorInputElement.prototype, \"_tint\", void 0);\n__decorate([\n ViewChild('input[type=number]')\n], PacemColorInputElement.prototype, \"_alpha\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-viewfinder`)\n], PacemColorInputElement.prototype, \"_wrapper\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-readonly`)\n], PacemColorInputElement.prototype, \"_span\", void 0);\nPacemColorInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-color', template: `<div class=\"${PCSS}-viewfinder\">\r\n<${P}-panel class=\"${PCSS}-input-color\" css=\"{{ { \\'background-color\\': :host.viewValue } }}\"><input type=\"color\" class=\"${PCSS}-input\" /></${P}-panel>\r\n<input class=\"${PCSS}-input\" type=\"number\" min=\"0\" max=\"100\" step=\"1\" value=\"100\" />\r\n</div>\r\n<${P}-span class=\"${PCSS}-readonly\" css=\"{{ { \\'background-color\\': :host.viewValue } }}\"></${P}-span>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemColorInputElement);\nexport { PacemColorInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Utils, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\n/** {@link PacemTextualInputElement} for an `<input type=\"email\">`, whose read-only view renders as a `mailto:` link. */\nlet PacemEmailInputElement = class PacemEmailInputElement extends PacemTextualInputElement {\n toggleReadonlyView(readonly) {\n const input = this._input, anchor = this._anchor;\n if (!Utils.isNull(input))\n input.hidden = readonly;\n if (!Utils.isNull(anchor))\n anchor.hidden = !readonly;\n }\n get inputFields() {\n return Utils.isNull(this._input)\n ? []\n : [this._input];\n }\n};\n__decorate([\n ViewChild('input[type=email]')\n], PacemEmailInputElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(P + '-a')\n], PacemEmailInputElement.prototype, \"_anchor\", void 0);\nPacemEmailInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-email',\n template: `<input type=\"email\" class=\"${PCSS}-input ${PCSS}-viewfinder\" />${CHAR_COUNTER_CHILD}<${P}-a class=\"${PCSS}-readonly\" disabled=\"{{ $pacem.isNullOrEmpty(:host.value) }}\" href=\"{{ \\'mailto:\\'+ :host.value }}\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></${P}-a>`, shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemEmailInputElement);\nexport { PacemEmailInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, CustomTypedEvent, CustomEventUtils, PropertyConverters, Animations, Utils, stopPropagationHandler, avoidHandler } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n/** Name of the {@link FileUploadEvent} dispatched by {@link PacemUploadElement} while/after a chunked upload progresses. */\nexport const FileUploadEventName = 'fileupload';\n/** Name of the {@link FileChangeEvent} dispatched by {@link PacemUploadElement} whenever the selected file(s)/directory change. */\nexport const FileChangeEventName = 'filechange';\nclass StoragePickEvent extends CustomTypedEvent {\n constructor(file) {\n super('pick', file);\n }\n}\n/** Dispatched by {@link PacemUploadElement} to report chunked-upload progress/completion. */\nexport class FileUploadEvent extends CustomTypedEvent {\n constructor(file) {\n super(FileUploadEventName, file);\n }\n}\n/** Dispatched by {@link PacemUploadElement} whenever the user picks (or clears) file(s)/a directory. */\nexport class FileChangeEvent extends CustomTypedEvent {\n constructor(file) {\n super(FileChangeEventName, file);\n }\n}\nconst ERROR_BINDING = '!$pacem.isNullOrEmpty(:host.value) && :host.invalidFile && $pacem.isNullOrEmpty(:host.url)';\nasync function computeDirStats(dir, stats = { files: 0, directories: 0, size: 0 }) {\n for await (let [_, entry] of dir.entries()) {\n if (entry.kind === 'file') {\n stats.files++;\n const file = await entry.getFile();\n stats.size += file.size;\n }\n else {\n stats.directories++;\n await computeDirStats(entry, stats);\n }\n }\n return stats;\n}\nasync function computeFileStats(files) {\n const stats = { files: 0, directories: 0, size: 0 };\n for (let f of files) {\n const file = await f.getFile();\n stats.files++;\n stats.size += file.size;\n }\n return stats;\n}\n/**\n * PacemUploader Component: {@link PacemBaseElement}-based field to pick and (optionally chunk-)upload file(s)/a directory to {@link url},\n * or defer to the File System Access API pickers depending on {@link selectMode}.\n */\nlet PacemUploadElement = class PacemUploadElement extends PacemBaseElement {\n constructor(_tweener = new Animations.TweenService()) {\n super();\n this._tweener = _tweener;\n /** Gets or sets the caption of the \"undo\" button, shown while an upload with {@link url} set is in progress. */\n this.undoCaption = 'undo';\n /** Gets or sets the caption of the \"retry\" button, shown after a {@link failed} upload. */\n this.retryCaption = 'retry';\n /** Gets or sets the caption of the \"clear\" button. */\n this.clearCaption = 'clear';\n /** @readonly Gets whether an upload is currently in progress. */\n this.uploading = false;\n /** @readonly Gets the total size (in bytes) of the file(s) currently being uploaded. */\n this.size = 0;\n /** @readonly Gets the current upload progress, from 0 to 100. */\n this.percentage = .0;\n /** @readonly Gets whether the current upload has completed. */\n this.complete = false;\n /** @readonly Gets whether the current upload chunk request failed (enabling the retry button). */\n this.failed = false;\n /** @readonly Gets whether the selected file failed {@link pattern}/{@link maxSize} validation. */\n this.invalidFile = false;\n this._fields = {\n 'parallelism': 3,\n 'uid': '',\n 'ongoing': 0,\n 'enqueuer': null,\n 'blob': null,\n 'retryFrom': 0,\n 'chunkSize': 1024 * 128,\n 'undone': false\n };\n }\n convertValueAttributeToProperty(attr) {\n return attr; // better assumptions anyone?\n }\n acceptValue(val) {\n this.percentage = 0;\n this.uploading = false;\n this._fileupload.value = '';\n }\n _getMimeIcon(file = this.value, uploading = this.uploading, mode = this.selectMode ?? 'file') {\n if (uploading) {\n return 'sync';\n }\n const hasValue = !Utils.isNullOrEmpty(file);\n switch (mode) {\n case 'directory':\n case 'directory-picker':\n return hasValue ? 'folder' : 'drive_folder_upload';\n case 'multiple':\n case 'multiple-picker':\n return hasValue ? 'files' : 'upload_file';\n }\n if (Utils.isNullOrEmpty(file)) {\n return 'upload_file';\n }\n var filename = file;\n if (typeof file === 'object') {\n filename = file.name;\n }\n const extPattern = /\\.([\\w]+)(\\s|$)/;\n const match = extPattern.exec(filename);\n if (match && match.length) {\n switch (match[1].toLowerCase()) {\n case 'pdf':\n return 'picture_as_pdf';\n //case 'txt':\n //case 'doc':\n //case 'docx':\n // return '<i class=\"pacem-icon\">collection_text</i>';\n case 'jpg':\n case 'jpeg':\n case 'gif':\n case 'png':\n return 'filter';\n }\n }\n return 'filter_none';\n }\n /** @readonly Gets the raw blob currently being (or last) uploaded. */\n get blob() {\n return this._fields.blob;\n }\n get inputFields() {\n return Utils.isNull(this._fileupload)\n ? []\n : [this._fileupload];\n }\n getViewValue(val) {\n const value = this._localValue || val;\n if (Utils.isNullOrEmpty(value)) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n let caption = 'name' in value ? value.name : '';\n if (Utils.isArray(value)) {\n caption = value.map(i => i.name).join(', ');\n }\n const stats = this._stats;\n if (Utils.isNullOrEmpty(stats)) {\n return caption;\n }\n const { size, files } = stats;\n return `${caption}\\n(${files} file${files === 1 ? '' : 's'}, ${Utils.core.size(size)})`;\n }\n toggleReadonlyView(readonly) {\n this._setupInputElement(readonly);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setupInputElement();\n this._fileupload.addEventListener('click', stopPropagationHandler, false);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'selectMode':\n this._setupInputElement();\n }\n }\n }\n disconnectedCallback() {\n if (this._fileupload) {\n this._fileupload.removeEventListener('click', stopPropagationHandler, false);\n }\n super.disconnectedCallback();\n }\n _setupInputElement(readonly = this.readonly, mode = this.selectMode ?? 'file') {\n const input = this._fileupload;\n input.removeAttribute('webkitdirectory');\n input.removeAttribute('multiple');\n input.hidden = readonly;\n switch (mode) {\n case 'directory':\n input.setAttribute('webkitdirectory', 'true');\n break;\n case 'multiple':\n input.setAttribute('multiple', 'true');\n break;\n case 'directory-picker':\n case 'file-picker':\n case 'multiple-picker':\n input.hidden = true;\n break;\n }\n }\n /**\n * Triggered from the component's template.\n */\n _dispatchDownload(evt) {\n avoidHandler(evt);\n const value = /* download the file being currently precessed, if available */ this._localValue || this.value, dispatch = (name) => {\n this.dispatchEvent(new CustomEvent('download', { detail: name, bubbles: true, cancelable: false }));\n };\n if (!Utils.isNullOrEmpty(value)) {\n if (typeof value === 'string') {\n // dispatch outside if url is provided\n dispatch(value);\n }\n else {\n if ('content' in value && !Utils.isNullOrEmpty(value.content)) {\n // download right-away the content when provided\n Utils.download(Utils.dataURLToBlob('data:application/download;base64,' + value.content), value.name, value.type);\n }\n else if ('name' in value) {\n if ('kind' in value) {\n if (value.kind === 'file') {\n value.getFile().then(file => {\n Utils.download(file, file.name, file.type);\n });\n }\n else {\n dispatch(value.name);\n }\n }\n else {\n // dispatch outside if content is empty\n dispatch(value.name);\n }\n }\n }\n }\n }\n reset() {\n super.reset();\n this._localValue = null;\n this.invalidFile = false;\n }\n _validateAll() {\n const stats = this._stats;\n const size = this.maxSize;\n if (size > 0 && size < stats.size) {\n this.invalidFile = true;\n return false;\n }\n // all-righty then\n this.invalidFile = false;\n return true;\n }\n _validateSingleFile(file = this._fileupload.files[0], filename) {\n if (file instanceof File) {\n filename = file.name;\n }\n filename = filename.substring(filename.lastIndexOf('\\\\') + 1);\n // max size exceeded\n const size = this.maxSize;\n if (size > 0 && size < file.size) {\n this.invalidFile = true;\n return false;\n }\n // pattern unmatched\n const pattern = this.pattern;\n if (pattern && !(new RegExp(pattern, 'i').test(filename))) {\n this.invalidFile = true;\n return false;\n }\n // all-righty then\n this.invalidFile = false;\n return true;\n }\n upload(file, filename, state) {\n if (this._validateSingleFile(file, filename)) {\n return this._upload(file, filename, state);\n }\n }\n async _upload(file, filename, state) {\n var uploader = this, fields = uploader._fields;\n if (!file)\n return;\n if (!filename && file instanceof File) {\n filename = file.name;\n }\n uploader.failed = false;\n fields.undone = false;\n fields.ongoing = 0;\n const blob = file, size = uploader.size = blob.size;\n filename = filename.substring(filename.lastIndexOf('\\\\') + 1);\n uploader.percentage = .0;\n uploader.complete = false;\n //\n var request = {\n filename, length: size, action: \"start\", state, type: file.type\n };\n //\n uploader.uploading = true;\n try {\n var r = await uploader._fetch(request);\n if (r.ok) {\n var json = await r.json();\n fields.retryFrom = 0;\n fields.blob = blob;\n fields.uid = json.uid;\n uploader._manage();\n }\n else {\n uploader.uploading = false;\n }\n return r;\n }\n catch (e) {\n uploader.uploading = false;\n }\n finally {\n }\n }\n async _blobToBase64(blob) {\n const result = await Utils.blobToDataURL(blob);\n return result.substring(result.indexOf('base64,') + 7);\n }\n async _doUpload(blob, skip) {\n var uploader = this, fields = uploader._fields;\n fields.ongoing++;\n //\n const chunk = await this._blobToBase64(blob);\n var request = {\n chunk: chunk,\n uid: fields.uid, position: skip,\n action: \"do\"\n };\n try {\n const r = await uploader._fetch(request);\n if (r.ok) {\n fields.ongoing--;\n if (!!fields.undone)\n return;\n const json = await r.json();\n const result = json;\n // parallelism > 1 may cause non-ordered responses\n if (result.percentage > this.percentage) {\n await uploader._tweenPercentage(Math.round(Math.max(1, result.percentage)), 200);\n }\n if (uploader.complete != result.complete) {\n uploader.complete = result.complete;\n if (uploader.complete === true) {\n uploader.uploading = false;\n uploader.changeHandler(new FileUploadEvent(result));\n }\n }\n }\n else {\n // error occurred\n fields.retryFrom = skip;\n uploader.failed = true;\n uploader.uploading = false;\n }\n }\n catch (_) {\n // crash\n fields.retryFrom = skip;\n uploader.failed = true;\n uploader.uploading = false;\n }\n }\n _manage() {\n const fields = this._fields, size = this.size, blob = fields.blob, chunkSize = this.chunkSize || fields.chunkSize;\n var start = fields.retryFrom;\n var end = start + chunkSize;\n //\n fields.enqueuer = setInterval(() => {\n if (start < size && !this.failed) {\n const parallelism = this.parallelism || fields.parallelism;\n if (fields.ongoing >= parallelism)\n return;\n this._doUpload(blob.slice(start, end), start);\n start = end;\n end = start + chunkSize;\n }\n else {\n var input = this._fileupload;\n input.value = '';\n window.clearInterval(fields.enqueuer);\n }\n }, 100);\n }\n async _buildLocalValue(file, filename = file.name, blob = file) {\n return this._localValue = {\n name: filename,\n size: blob.size,\n type: file.type,\n lastModified: Utils.parseDate(file.lastModified).toISOString(),\n content: await this._blobToBase64(blob)\n };\n }\n _canPick(w) {\n return \"showDirectoryPicker\" in w &&\n (() => {\n try {\n return w.self === w.top;\n }\n catch {\n return false;\n }\n })();\n }\n _tryPickDirectory() {\n if (!this._canPick(window)) {\n return;\n }\n window.showDirectoryPicker({ mode: 'read' }).then(directory => {\n this.changeHandler(new StoragePickEvent(directory));\n });\n }\n _tryPickFiles(multiple = this.selectMode === 'multiple-picker', pattern = this.pattern) {\n if (!this._canPick(window)) {\n return;\n }\n window.showOpenFilePicker({ multiple }).then(files => {\n this.changeHandler(new StoragePickEvent(files));\n });\n }\n /**\n * Called from the template.\n * @param evt\n */\n _clickHandler(evt) {\n avoidHandler(evt);\n if (this.readonly) {\n return;\n }\n switch (this.selectMode) {\n case 'directory-picker':\n this._tryPickDirectory();\n break;\n case 'file-picker':\n case 'multiple-picker':\n this._tryPickFiles();\n break;\n }\n }\n async _mimicCompute() {\n // mimic upload\n this.uploading = true; // <- triggers anim\n if (!Utils.isNullOrEmpty(this.value)) {\n this.percentage = 0;\n await Utils.waitForAnimationEnd(this._tuner);\n }\n else {\n await Utils.idle(250);\n }\n await this._tweener.run(0, 100, 500, 0, Animations.Easings.sineInOut, (t, v) => {\n this.percentage = v;\n });\n // reset pct\n this.percentage = .0;\n this.uploading = false;\n }\n onChange(evt) {\n return new Promise(async (resolve, reject) => {\n if (CustomEventUtils.isInstanceOf(evt, FileUploadEvent)) {\n // result of an upload?\n const file = this.value = evt.detail.filename;\n this.dispatchEvent(evt);\n resolve(file);\n }\n else if (CustomEventUtils.isInstanceOf(evt, StoragePickEvent)) {\n // FileSystem API?\n let val = evt.detail;\n let directory, file, files;\n switch (this.selectMode) {\n case 'directory-picker':\n directory = val;\n this._stats = await computeDirStats(directory);\n break;\n case 'multiple-picker':\n case 'file-picker':\n files = val;\n if (files.length === 1) {\n val = files[0];\n }\n this._stats = await computeFileStats(files);\n break;\n default:\n // shouldn't be here\n this._stats = { directories: 0, files: 0, size: 0 };\n break;\n }\n resolve(this.value = this._localValue = val);\n const valid = this._validateAll();\n this.dispatchEvent(new FileChangeEvent({ directory, file, files, valid }));\n }\n else {\n // HTMLInputElement change event\n let input = this._fileupload;\n if (input.files.length === 0) {\n // clear\n this._stats = { directories: 0, files: 0, size: 0 };\n resolve(this.value = null);\n }\n else {\n const files = input.files.length;\n this._stats = { directories: 0, files, size: Array.from(input.files).reduce((acc, file, _) => acc += file.size, 0) };\n if (files > 1) {\n // directory or multiple files\n const selectedFiles = Array.from(input.files);\n resolve(this.value = this._localValue = selectedFiles);\n const valid = this._validateAll();\n this.dispatchEvent(new FileChangeEvent({ files: selectedFiles, valid }));\n }\n else {\n const file = input.files[0], filename = file.name;\n let blob = file;\n // validate file\n if (!this._validateSingleFile(file) && !Utils.isNullOrEmpty(this.url)) {\n // do not start uploads with an invalid file\n resolve(this.value = await this._buildLocalValue(file));\n }\n else {\n if (/\\.(jpe?g|png)$/i.test(filename) && this.maxImageWidth > 0 && this.maxImageHeight > 0) {\n blob = await Utils.Images.resize(blob, this.maxImageWidth, this.maxImageHeight, { quality: .8 });\n }\n await this._buildLocalValue(file, filename, blob);\n if (Utils.isNullOrEmpty(this.url)) {\n // mimic upload\n await this._mimicCompute();\n // no direct upload? set the value to the very File\n resolve(this.value = this._localValue);\n }\n else {\n // upload, then wait for resulting filename (value will be the filename string) \n this._upload(blob, input.value);\n resolve(this.value);\n }\n }\n // dispatch filechange\n this.dispatchEvent(new FileChangeEvent({ valid: !this.invalidFile, file }));\n }\n }\n }\n });\n }\n _fetch(request) {\n return fetch(this.url, {\n method: 'POST', credentials: this.fetchCredentials, headers: Utils.extend({ 'Accept': 'application/json', 'Content-Type': 'application/json' }, this.fetchHeaders || {}), body: JSON.stringify(request)\n });\n }\n async _undo(e) {\n e.preventDefault();\n e.stopPropagation();\n var Uploader = this, fields = Uploader._fields, input = Uploader._fileupload;\n clearInterval(fields.enqueuer);\n var request = {\n action: \"undo\", uid: fields.uid\n };\n try {\n var r = await Uploader._fetch(request);\n if (r.ok) {\n fields.undone = true;\n Uploader.size = 0;\n Uploader._tweenPercentage(.0, 300);\n }\n return r;\n }\n catch (e) {\n }\n finally {\n // This input element accepts a filename, which may only be programmatically set to the empty string(!)\n input.value = '';\n Uploader.uploading = false;\n return r;\n }\n }\n _tweenPercentage(pct, duration = 500) {\n const from = this.percentage;\n return this._tweener.run(from, pct, duration, 0, Animations.Easings.sineInOut, (t, v) => {\n this.percentage = v;\n });\n }\n _retry(e) {\n e.preventDefault();\n e.stopPropagation();\n this.failed = false;\n this._manage();\n }\n _clear(e) {\n e.preventDefault();\n e.stopPropagation();\n this.invalidFile = false;\n const input = this.inputFields[0];\n // https://stackoverflow.com/a/35323290\n input.value = '';\n if (!/safari/i.test(navigator.userAgent)) {\n input.type = '';\n input.type = 'file';\n }\n this.changeHandler(null);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemUploadElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n ViewChild('input[type=file]')\n], PacemUploadElement.prototype, \"_fileupload\", void 0);\n__decorate([\n ViewChild(`${P}-tuner`)\n], PacemUploadElement.prototype, \"_tuner\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"undoCaption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"retryCaption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"clearCaption\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"pattern\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"maxImageWidth\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"parallelism\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"chunkSize\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"maxImageHeight\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"maxSize\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemUploadElement.prototype, \"selectMode\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemUploadElement.prototype, \"uploading\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"size\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemUploadElement.prototype, \"percentage\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemUploadElement.prototype, \"complete\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemUploadElement.prototype, \"failed\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemUploadElement.prototype, \"invalidFile\", void 0);\nPacemUploadElement = __decorate([\n CustomElement({\n tagName: P + '-upload', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-button on-click=\":host._dispatchDownload($event)\" class=\"${PCSS}-upload ${PCSS}-viewfinder flat\" css-class=\"{{ {'upload-chosen': !$pacem.isNullOrEmpty(:host.value) && !:host.uploading, 'upload-error': ${ERROR_BINDING}, 'upload-readonly': :host.readonly } }}\">\r\n\r\n <${P}-panel class=\"upload-button\" hide=\"{{ (:host.uploading || :host.failed) && !$pacem.isNullOrEmpty(:host.url) }}\">\r\n <${P}-button tooltip=\"{{ :host.readonly ? :host.viewValue : 'upload' }}\" class=\"button-circle pos-relative overflow-hidden\"\r\n icon-glyph=\"{{ :host._getMimeIcon(:host.value, :host.uploading, :host.selectMode) }}\"\r\n on-click=\":host._clickHandler($event)\"\r\n on-mouseover=\"$this.iconGlyph = :host._getMimeIcon(:host.readonly ? :host.value : '', :host.uploading, :host.selectMode)\"\r\n on-mouseout=\"$this.iconGlyph = :host._getMimeIcon(:host.value, :host.uploading, :host.selectMode)\"\r\n css-class=\"{{ {'${PCSS}-anim anim-rotate': :host.uploading, 'button-error': :host.invalidFile, 'button-primary': $pacem.isNullOrEmpty(:host.value) && !:host.invalidFile, 'button-success': !Pacem.Utils.isNullOrEmpty(:host.value) && !:host.invalidFile } }}\">\r\n <input type=\"file\" class=\"${PCSS}-transparent ${PCSS}-clickable pos-absolute absolute-left absolute-right absolute-top absolute-bottom\" />\r\n </${P}-button>\r\n </${P}-panel>\r\n <${P}-panel class=\"upload-button\" hide=\"{{ !:host.failed }}\">\r\n <${P}-button class=\"button-circle button-flat\" icon-glyph=\"refresh\"\r\n tooltip=\"{{ :host.retryCaption }}\" on-click=\":host._retry($event)\"><${P}-text text=\"{{ :host.retryCaption }}\"></${P}-text></${P}-button>\r\n </${P}-panel>\r\n <${P}-panel class=\"upload-button\" hide=\"{{ !:host.uploading || $pacem.isNullOrEmpty(:host.url) }}\">\r\n <${P}-button class=\"button-circle button-flat\" icon-glyph=\"clear\" tooltip=\"{{ :host.undoCaption }}\" \r\n on-click=\":host._undo($event)\"><${P}-text text=\"{{ :host.undoCaption }}\"></${P}-text></${P}-button>\r\n </${P}-panel>\r\n\r\n <${P}-span tooltip=\"{{ :host.viewValue }}\"\r\n hide=\"{{ $pacem.isNullOrEmpty(:host.value) || :host.uploading }}\" class=\"upload-data readonly text-reset display-block ${PCSS}-anim text-truncate text-left ${PCSS}-pad pad-right-3\" text=\"{{ :host.viewValue }}\"></${P}-span>\r\n\r\n <${P}-panel class=\"upload-progress hit-none\" hide=\"{{ :host.readonly || (!$pacem.isNullOrEmpty(:host.value) && !:host.uploading) }}\">\r\n <${P}-tuner value=\"{{ :host.percentage }}\" css-class=\"{{ {'tuner-success': !:host.invalidFile, 'tuner-error': :host.invalidFile} }}\" interactive=\"false\"></${P}-tuner>\r\n </${P}-panel>\r\n\r\n <${P}-button class=\"button-circle button-flat clear-button\" icon-glyph=\"clear\" hide=\"{{ $pacem.isNullOrEmpty(:host.value) || :host.uploading }}\" tooltip=\"{{ :host.clearCaption }}\" on-click=\":host._clear($event)\"></${P}-button>\r\n \r\n</${P}-button>`\n })\n], PacemUploadElement);\nexport { PacemUploadElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Defaults, ViewChild, Utils } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\n//namespace Pacem.Components.Scaffolding {\n/** {@link PacemTextualInputElement} wrapping an `<input type=\"hidden\">`, for values that must round-trip without a visible UI. */\nlet PacemHiddenInputElement = class PacemHiddenInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n }\n toggleReadonlyView(readonly) { }\n get inputFields() {\n return Utils.isNull(this._input)\n ? []\n : [this._input];\n }\n};\n__decorate([\n ViewChild('input[type=hidden]')\n], PacemHiddenInputElement.prototype, \"_input\", void 0);\nPacemHiddenInputElement = __decorate([\n CustomElement({ tagName: P + '-input-hidden', template: '<input type=\"hidden\" />', shadow: Defaults.USE_SHADOW_ROOT })\n], PacemHiddenInputElement);\nexport { PacemHiddenInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, CustomEventUtils, PropertyConverters, Utils, CustomUIEvent, avoidHandler, Logging } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nconst getUserMediaFunctions = Utils.getUserMediaFunctions();\n/** The current stage of {@link PacemSnapshotElement}'s capture workflow: idle/upload-or-camera choice, live webcam preview, or reviewing the captured image before confirming. */\nexport var SnapshotStep;\n(function (SnapshotStep) {\n SnapshotStep[\"Start\"] = \"start\";\n SnapshotStep[\"Taking\"] = \"taking\";\n SnapshotStep[\"Confirm\"] = \"confirm\";\n})(SnapshotStep || (SnapshotStep = {}));\nclass ConfirmSnapshotEvent extends CustomUIEvent {\n constructor(buffer) {\n super('confirmsnapshot', { buffer });\n }\n}\n/** A `<p-snapshot>` field: a {@link PacemBaseElement} image-capture control that lets the user upload a file or, when a webcam is available, take a live snapshot (with an optional 3s timer); its `value` is the resulting data-URL string. */\nlet PacemSnapshotElement = class PacemSnapshotElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this._resizeHandler = (evt) => {\n this._renderValue();\n };\n /** Gets or sets the current step of the capture workflow. Defaults to {@link SnapshotStep.Start}. */\n this.step = SnapshotStep.Start;\n /*const*/ this._canUseWebcam = getUserMediaFunctions.length > 0;\n /** Seconds left before the timed shutter fires; `0` outside of a timed countdown. */\n this._countdown = 0;\n this._webcamInitialized = false;\n this._grabberChangeHandler = (e) => {\n const input = this._grabber;\n if (input.files.length > 0) {\n Utils.blobToDataURL(input.files[0]).then(url => {\n Utils.loadImage(url).then(img => {\n this._shutter(img);\n });\n });\n }\n };\n this._snapshooterClickHandler = (e) => {\n avoidHandler(e);\n this.step = SnapshotStep.Taking;\n };\n this._pickerClickHandler = (e) => {\n avoidHandler(e);\n this._grabber.click();\n };\n this._takerClickHandler = (e) => {\n avoidHandler(e);\n this._countdown = 0;\n this._shutter();\n };\n this._timerClickHandler = (e) => {\n avoidHandler(e);\n this._countdown = 3;\n this._shutter();\n };\n this._confirmerClickHandler = (e) => {\n avoidHandler(e);\n this.changeHandler(new ConfirmSnapshotEvent(this._buffer));\n };\n }\n get inputFields() {\n return [];\n }\n toggleReadonlyView(readonly) {\n // TODO\n }\n onChange(evt) {\n return new Promise((resolve, _) => {\n if (CustomEventUtils.isInstanceOf(evt, ConfirmSnapshotEvent)) {\n resolve(this.value = evt.detail.buffer);\n this.step = SnapshotStep.Start;\n }\n else {\n resolve(this.value);\n }\n });\n }\n acceptValue(val) {\n this._renderValue(val);\n }\n getViewValue(value) {\n return value;\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.String.convert(attr, this);\n }\n get _getUserMedia() {\n return this._canUseWebcam && getUserMediaFunctions[0];\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'step':\n switch (val) {\n case SnapshotStep.Start:\n this._buffer = null;\n const input = this._grabber;\n // https://stackoverflow.com/a/35323290\n input.value = '';\n if (!/safari/i.test(navigator.userAgent)) {\n input.type = '';\n input.type = 'file';\n }\n break;\n case SnapshotStep.Taking:\n this._ensureWebcamRunning();\n break;\n }\n break;\n case '_buffer':\n this._renderValue(val || this.value);\n break;\n case 'width':\n case 'height':\n this._syncSize();\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._syncSize();\n this._picker.addEventListener('click', this._pickerClickHandler, false);\n this._snapshooter.addEventListener('click', this._snapshooterClickHandler, false);\n this._taker.addEventListener('click', this._takerClickHandler, false);\n this._timer.addEventListener('click', this._timerClickHandler, false);\n this._confirmer.addEventListener('click', this._confirmerClickHandler, false);\n this._grabber.addEventListener('change', this._grabberChangeHandler, false);\n }\n disconnectedCallback() {\n if (this.isReady) {\n this._picker.removeEventListener('click', this._pickerClickHandler, false);\n this._snapshooter.removeEventListener('click', this._snapshooterClickHandler, false);\n this._taker.removeEventListener('click', this._takerClickHandler, false);\n this._timer.removeEventListener('click', this._timerClickHandler, false);\n this._confirmer.removeEventListener('click', this._confirmerClickHandler, false);\n this._grabber.removeEventListener('change', this._grabberChangeHandler, false);\n }\n super.disconnectedCallback();\n }\n _syncSize() {\n const canvas = this._stage, video = this._player;\n if (!Utils.isNull(canvas) && !Utils.isNull(video)) {\n canvas.style.width = video.style.width = (this.width && this.width + 'px') || '',\n canvas.style.height = video.style.height = (this.height && this.height + 'px') || '';\n this._renderValue(this._buffer || this.value);\n }\n }\n _shutter(el) {\n const me = this, video = this._player, canvas = this._stage;\n me._confirmer.disabled = true;\n if (Utils.isNull(el)) {\n el = me._player;\n }\n var srcWidth, srcHeight;\n if (el instanceof HTMLVideoElement) {\n srcWidth = el.videoWidth;\n srcHeight = el.videoHeight;\n }\n else {\n srcWidth = el.naturalWidth;\n srcHeight = el.naturalHeight;\n }\n if (me._countdown <= 0) {\n var cnv = document.createElement('canvas');\n cnv.width = this.width || canvas.clientWidth;\n cnv.height = this.height || canvas.clientHeight;\n var ctx = cnv.getContext('2d');\n Utils.cropImageOntoCanvas(el, ctx, srcWidth, srcHeight);\n let root = me._root;\n root.insertBefore(cnv, video);\n cnv.className = 'snapshot-brightout';\n setTimeout(function () {\n root.removeChild(cnv);\n }, 1000);\n me._refreshBuffer(cnv.toDataURL()).then((b) => {\n me._setToBeConfirmed(b);\n me._confirmer.disabled = false;\n });\n }\n else\n setTimeout(() => { me._countdown--; this._shutter(); }, 1000);\n }\n _renderValue(val = this.value) {\n let cnv = this._stage;\n if (!Utils.isNull(cnv)) {\n cnv.width = cnv.clientWidth;\n cnv.height = cnv.clientHeight;\n let ctx = cnv.getContext('2d');\n if (Utils.isNullOrEmpty(val)) {\n ctx.clearRect(0, 0, cnv.width, cnv.height);\n }\n else {\n Utils.loadImage(val).then(img => {\n Utils.cropImageOntoCanvas(img, ctx, img.width, img.height);\n });\n }\n }\n }\n _setToBeConfirmed(buffer) {\n this.step = SnapshotStep.Confirm;\n this._buffer = buffer;\n }\n _refreshBuffer(buffer) {\n var cnv = this._stage;\n cnv.width = /*this.width ||*/ cnv.clientWidth;\n cnv.height = /*this.height ||*/ cnv.clientHeight;\n let quality;\n if (this.quality > 0) {\n quality = Math.min(1, Math.max(0, this.quality));\n }\n return Utils.cropImage(buffer, cnv.width, cnv.height, quality);\n }\n _ensureWebcamRunning() {\n if (this._canUseWebcam && !this._webcamInitialized) {\n var me = this;\n me._webcamInitialized = true;\n me._getUserMedia.apply(navigator, [{ video: true /*, audio: false*/ },\n /* success */ function (localMediaStream) {\n var video = me._player;\n // deprecated:\n //video.src = window.URL.createObjectURL(localMediaStream);\n // replaced with:\n video.srcObject = localMediaStream;\n }, /* fail */ function (e) {\n me.log(Logging.LogLevel.Error, (e || e.message).toString());\n }]);\n }\n }\n};\n__decorate([\n ViewChild('.' + PCSS + '-snapshot')\n], PacemSnapshotElement.prototype, \"_root\", void 0);\n__decorate([\n ViewChild('canvas')\n], PacemSnapshotElement.prototype, \"_stage\", void 0);\n__decorate([\n ViewChild('input[type=file]')\n], PacemSnapshotElement.prototype, \"_grabber\", void 0);\n__decorate([\n ViewChild('video')\n], PacemSnapshotElement.prototype, \"_player\", void 0);\n__decorate([\n ViewChild(P + '-button.button.snapshot-upload')\n], PacemSnapshotElement.prototype, \"_picker\", void 0);\n__decorate([\n ViewChild(P + '-button.button.snapshot-camera')\n], PacemSnapshotElement.prototype, \"_snapshooter\", void 0);\n__decorate([\n ViewChild(P + '-button.button.snapshot-take')\n], PacemSnapshotElement.prototype, \"_taker\", void 0);\n__decorate([\n ViewChild(P + '-button.button.snapshot-timer3s')\n], PacemSnapshotElement.prototype, \"_timer\", void 0);\n__decorate([\n ViewChild(P + '-button.button.snapshot-confirm')\n], PacemSnapshotElement.prototype, \"_confirmer\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemSnapshotElement.prototype, \"step\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSnapshotElement.prototype, \"width\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSnapshotElement.prototype, \"height\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSnapshotElement.prototype, \"quality\", void 0);\n__decorate([\n Watch()\n], PacemSnapshotElement.prototype, \"_countdown\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemSnapshotElement.prototype, \"_buffer\", void 0);\nPacemSnapshotElement = __decorate([\n CustomElement({\n tagName: P + '-snapshot',\n shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-panel class=\"${PCSS}-snapshot\" \r\ncss-class=\"{{ { \r\n'snapshot-start': :host.step === '${SnapshotStep.Start}',\r\n'snapshot-taking': :host.step === '${SnapshotStep.Taking}', \r\n'snapshot-confirm': :host.step === '${SnapshotStep.Confirm}' } }}\">\r\n\r\n <${P}-resize target=\"{{ ::_stage }}\" on-resize=\":host._resizeHandler($event)\"></${P}-resize>\r\n\r\n <canvas class=\"${PCSS}-viewfinder\"></canvas>\r\n\r\n <video autoplay=\"autoplay\"></video>\r\n\r\n <input type=\"file\" accept=\"image/*\" />\r\n\r\n <div class=\"${PCSS}-buttonset snapshot-step step-start\">\r\n <div class=\"buttonset-center\">\r\n <${P}-button class=\"button snapshot-upload\" icon-glyph=\"upload\"></${P}-button>\r\n <${P}-button class=\"button snapshot-camera\" icon-glyph=\"photo_camera\"></${P}-button> \r\n </div>\r\n </div>\r\n\r\n <div class=\"${PCSS}-buttonset snapshot-step step-taking\">\r\n <div class=\"buttonset-center\">\r\n <${P}-button class=\"button snapshot-undo\" icon-glyph=\"undo\" on-click=\":host.step = '${SnapshotStep.Start}'\"></${P}-button>\r\n <${P}-button class=\"button snapshot-take\" icon-glyph=\"camera\"></${P}-button>\r\n <${P}-button class=\"button snapshot-timer3s\" icon-glyph=\"timer_3\"></${P}-button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"${PCSS}-buttonset snapshot-step step-confirm\">\r\n <div class=\"buttonset-center\">\r\n <${P}-button class=\"button snapshot-undo\" icon-glyph=\"undo\" on-click=\":host.step = '${SnapshotStep.Start}'\"></${P}-button>\r\n <${P}-button class=\"button snapshot-confirm\" icon-glyph=\"done\"></${P}-button>\r\n </div>\r\n </div>\r\n\r\n <${P}-span class=\"snapshot-countdown\" text=\"{{ :host._countdown }}\" hide=\"{{ :host.step !== '${SnapshotStep.Taking}' || !(:host._countdown > 0) }}\"></${P}-span>\r\n <${P}-span hide=\"{{ :host._canUseWebcam }}\"><${P}-content></${P}-content></${P}-span>\r\n\r\n</${P}-panel>`\n })\n], PacemSnapshotElement);\nexport { PacemSnapshotElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, CustomTypedEvent, Components, CustomEventUtils, PropertyConverters, PropertyChangeEventName, Utils, Debounce, avoidHandler } from '@pacem/pacem-core';\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { PacemBaseElement } from './types-components';\nimport { FileUploadEventName } from './input-file';\nimport { SnapshotStep } from './snapshot';\n//namespace Pacem.Components.Scaffolding {\n/** A single image entry (full-size and thumbnail sources) offered as a pick candidate by {@link PacemEditImageElement}. */\nexport class Picture {\n}\n/** Name of the {@link ImageFetchRequestEvent} dispatched by {@link PacemEditImageElement}/{@link PacemImageInputElement} to request a page of pictures. */\nexport const ImageFetchRequestEventName = 'imagefetchrequest';\n/** Dispatched to request a page of {@link Picture}s (e.g. on scroll, or when the search hint changes); handlers are expected to respond by setting `imageSet`. */\nexport class ImageFetchRequestEvent extends CustomTypedEvent {\n constructor(args) {\n super(ImageFetchRequestEventName, args, { bubbles: true /*, scoped: false */ });\n }\n}\n/**\n * Picture-picker panel: lets the user search/browse a fetched {@link imageSet}, upload a new full-size/thumbnail pair, or take a\n * snapshot, resolving `value` to the chosen picture's source. Hosted inside a dialog by {@link PacemImageInputElement}.\n */\nlet PacemEditImageElement = class PacemEditImageElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n this._index = 0;\n /** Gets or sets the search hint typed by the user, triggering a fresh {@link ImageFetchRequestEvent} when it changes. */\n this.hint = '';\n }\n _uploaderPropertyChangedCallback(evt) {\n const val = evt.detail.currentValue;\n switch (evt.detail.propertyName) {\n case 'percentage':\n this._progressbar.percentage = val * 100.0;\n break;\n case 'uploading':\n if (val)\n this._done(true);\n break;\n }\n }\n _thumbnailUploaderPropertyChangedCallback(evt) {\n const val = evt.detail.currentValue;\n switch (evt.detail.propertyName) {\n case 'percentage':\n this._progressbar.percentage = val * 100.0;\n break;\n case 'uploading':\n this._done(val);\n break;\n }\n }\n _uploaderFileUploadCallback(evt) {\n const uploader = this._uploader;\n const thumbUploader = this._thumbUploader, w = thumbUploader.maxImageWidth, h = thumbUploader.maxImageHeight;\n if (w > 0 && h > 0) {\n var blob = uploader.blob;\n const uid = evt.detail.uid;\n Utils.resizeImage(blob, w, h).then(blob2 => {\n if (blob2 != blob) {\n thumbUploader.upload(blob2, 'thumbnail.jpg', uid);\n return;\n }\n else\n // fallback\n this._done(false);\n });\n }\n else\n // fallback\n this._done(false);\n }\n _done(uploading) {\n if (!uploading) {\n this._imagefetch(0);\n }\n this._repeater.hidden = uploading;\n this._progressbar.hidden = !uploading;\n }\n _snapshotPropertyChangedCallback(evt) {\n switch (evt.detail.propertyName) {\n case 'value':\n const blob = Utils.dataURLToBlob(evt.detail.currentValue);\n this._uploader.upload(blob, 'snapshot.jpg');\n break;\n }\n }\n reset() {\n this._snapshot.step = SnapshotStep.Start;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'imageSet':\n let set = val || { skip: 0, set: [] };\n if (Utils.isNullOrEmpty(this._images) || set.skip === 0)\n this._images = set.set;\n else if (!Utils.isNull(this._images))\n Array.prototype.splice.apply(this._images, [set.skip, this._images.length - set.skip].concat(set.set));\n this._fetching = false;\n break;\n case 'hint':\n if (!first)\n this._imagefetch(0);\n break;\n }\n }\n _imagefetchSuddenly(ndx) {\n this._fetching = true;\n this._imagefetch(ndx);\n }\n _imagefetch(ndx) {\n if (!(ndx >= 0))\n ndx = (this._images && this._images.length) || 0;\n this.dispatchEvent(new ImageFetchRequestEvent({ hint: this.hint, skip: ndx, take: 18 }));\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemEditImageElement.prototype, \"uploadUrl\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemEditImageElement.prototype, \"hint\", void 0);\n__decorate([\n Watch()\n], PacemEditImageElement.prototype, \"imageSet\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemEditImageElement.prototype, \"value\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemEditImageElement.prototype, \"maxWidth\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemEditImageElement.prototype, \"maxHeight\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemEditImageElement.prototype, \"maxThumbnailWidth\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemEditImageElement.prototype, \"maxThumbnailHeight\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemEditImageElement.prototype, \"allowSnapshot\", void 0);\n__decorate([\n Watch()\n], PacemEditImageElement.prototype, \"_fetching\", void 0);\n__decorate([\n Watch()\n], PacemEditImageElement.prototype, \"_images\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemEditImageElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(P + '-upload[main]')\n], PacemEditImageElement.prototype, \"_uploader\", void 0);\n__decorate([\n ViewChild(P + '-upload[thumb]')\n], PacemEditImageElement.prototype, \"_thumbUploader\", void 0);\n__decorate([\n ViewChild(P + '-snapshot')\n], PacemEditImageElement.prototype, \"_snapshot\", void 0);\n__decorate([\n ViewChild(P + '-progressbar')\n], PacemEditImageElement.prototype, \"_progressbar\", void 0);\n__decorate([\n Debounce(500)\n], PacemEditImageElement.prototype, \"_imagefetch\", null);\nPacemEditImageElement = __decorate([\n CustomElement({\n tagName: P + '-edit-image', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-panel class=\"${PCSS}-edit-image\"\r\n css-class=\"{{ {'${PCSS}-snapshot': ::_snapshot.step != '${SnapshotStep.Start}', '${PCSS}-uploading': ::_uploader.uploading, '${PCSS}-upload-enabled': !Pacem.Utils.isNullOrEmpty(:host.uploadUrl), '${PCSS}-snapshot-enabled': !Pacem.Utils.isNullOrEmpty(:host.uploadUrl) && :host.allowSnapshot} }}\">\r\n <div>\r\n <${P}-input-search value=\"{{ :host.hint, twoway }}\"></${P}-input-search>\r\n <${P}-upload main pattern=\".+\\.(jpe?g|png|svg|ico)$\" url=\"{{ :host.uploadUrl }}\"\r\n max-image-width=\"{{ :host.maxWidth }}\" max-image-height=\"{{ :host.maxHeight }}\"\r\n on-${FileUploadEventName}=\":host._uploaderFileUploadCallback($event)\"\r\n on-${PropertyChangeEventName}=\":host._uploaderPropertyChangedCallback($event)\" hide=\"{{ Pacem.Utils.isNullOrEmpty(:host.uploadUrl) || ::_thumbUploader.uploading }}\"></${P}-upload>\r\n <${P}-upload thumb pattern=\".+\\.(jpe?g|png|svg|ico)$\" url=\"{{ :host.uploadUrl }}\" hide=\"{{ !::_thumbUploader.uploading }}\"\r\n max-image-width=\"{{ :host.maxThumbnailWidth }}\" max-image-height=\"{{ :host.maxThumbnailHeight }}\"\r\n on-${PropertyChangeEventName}=\":host._thumbnailUploaderPropertyChangedCallback($event)\"></${P}-upload>\r\n <${P}-button class=\"${PCSS}-snapshot\" on-click=\"Pacem.avoidHandler($event); ::_snapshot.step = '${SnapshotStep.Taking}'\" hide=\"{{ Pacem.Utils.isNullOrEmpty(:host.uploadUrl) || !:host.allowSnapshot }}\"></${P}-button>\r\n <${P}-infinite-scroller container=\"{{ ::_repeater }}\" on-fetchmore=\":host._imagefetchSuddenly()\" disabled=\"{{ :host._fetching || :host.disabled || :host._images.length >= :host.imageSet.total }}\"></${P}-infinite-scroller>\r\n <${P}-repeater datasource=\"{{ :host._images }}\">\r\n <template>\r\n <${P}-img css-class=\"{{ {'${PCSS}-selected': ^item.src === :host.value } }}\" on-click=\":host.value = ^item.src\" src=\"{{ ^item.thumb }}\" adapt=\"contain\"></${P}-img>\r\n </template>\r\n </${P}-repeater>\r\n <${P}-progressbar class=\"progressbar-smaller progressbar-accent\" caption=\"{{ ::_thumbUploader.uploading ? 'thumbnail...' : 'uploading...' }}\"></${P}-progressbar>\r\n </div>\r\n <div>\r\n <${P}-snapshot hide=\"{{ !:host.allowSnapshot }}\" on-${PropertyChangeEventName}=\":host._snapshotPropertyChangedCallback($event)\"></${P}-snapshot>\r\n </div>\r\n </${P}-panel>`\n })\n], PacemEditImageElement);\nexport { PacemEditImageElement };\n/**\n * {@link PacemBaseElement}-based field showing an image preview with edit/clear buttons; editing opens a dialog hosting a\n * {@link PacemEditImageElement} to pick/upload/snapshot a new picture, while `value` also accepts a directly-typed URL.\n */\nlet PacemImageInputElement = class PacemImageInputElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this._broadcastFetchRequestEventName = (evt) => {\n this.dispatchEvent(new ImageFetchRequestEvent(evt.detail));\n };\n this._innerValueChangedHandler = (evt) => {\n if (evt.detail.propertyName === 'value' && !Utils.isNull(this._dialog))\n this._dialog.state = evt.detail.currentValue;\n };\n // #endregion\n }\n convertValueAttributeToProperty(attr) {\n return attr; // better assumptions anyone?\n }\n getViewValue(value) {\n return value;\n }\n get inputFields() {\n return [];\n }\n _clear(evt) {\n this.changeHandler(evt);\n }\n onChange(evt) {\n let value = this.value;\n if (CustomEventUtils.isInstanceOf(evt, ComponentsUI.UI.DialogResultEvent)\n && evt.detail.button === ComponentsUI.UI.DialogButton.Ok)\n value = this.value = evt.detail.state;\n else if (evt.target === this._input)\n value = this.value = this._input.value;\n else if (evt.target === this._clearBtn)\n value = this.value = undefined;\n return Utils.fromResult(value);\n }\n toggleReadonlyView(readonly) {\n this._input.hidden = this._editBtn.hide = this._clearBtn.hide = readonly;\n }\n _addDialog() {\n var dialog = document.createElement(P + '-dialog');\n dialog.buttons = ComponentsUI.UI.DialogButtons.OkCancel;\n dialog.addEventListener(ComponentsUI.UI.DialogResultEventName, this.changeHandler, false);\n dialog.appendChild(this._addEditImage());\n document.body.appendChild(dialog);\n //\n return this._dialog = dialog;\n }\n _removeDialog() {\n this._removeEditImage();\n if (!Utils.isNull(this._dialog)) {\n this._dialog.removeEventListener(ComponentsUI.UI.DialogResultEventName, this.changeHandler, false);\n this._dialog.remove();\n }\n }\n _addEditImage() {\n var editImage = document.createElement(P + '-edit-image');\n editImage.disabled = true;\n editImage.addEventListener(PropertyChangeEventName, this._innerValueChangedHandler, false);\n editImage.addEventListener(ImageFetchRequestEventName, this._broadcastFetchRequestEventName, false);\n editImage.uploadUrl = this.uploadUrl;\n editImage.allowSnapshot = this.allowSnapshot;\n editImage.maxWidth = this.maxWidth;\n editImage.maxHeight = this.maxHeight;\n editImage.maxThumbnailHeight = this.maxThumbnailHeight;\n editImage.maxThumbnailWidth = this.maxThumbnailWidth;\n return this._editImage = editImage;\n }\n _removeEditImage() {\n if (!Utils.isNull(this._editImage)) {\n this._editImage.removeEventListener(PropertyChangeEventName, this._innerValueChangedHandler, false);\n this._editImage.removeEventListener(ImageFetchRequestEventName, this._broadcastFetchRequestEventName, false);\n }\n }\n connectedCallback() {\n super.connectedCallback();\n this._addDialog();\n }\n disconnectedCallback() {\n this._removeDialog();\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'uploadUrl':\n if (!Utils.isNull(this._editImage))\n this._editImage.uploadUrl = val;\n break;\n case 'allowSnapshot':\n if (!Utils.isNull(this._editImage))\n this._editImage.allowSnapshot = val;\n break;\n case 'imageSet':\n if (!Utils.isNull(this._editImage))\n this._editImage.imageSet = val;\n break;\n case 'maxThumbnailHeight':\n if (!Utils.isNull(this._editImage))\n this._editImage.maxThumbnailHeight = val;\n break;\n case 'maxThumbnailWidth':\n if (!Utils.isNull(this._editImage))\n this._editImage.maxThumbnailWidth = val;\n break;\n case 'maxHeight':\n if (!Utils.isNull(this._editImage))\n this._editImage.maxHeight = val;\n break;\n case 'maxWidth':\n if (!Utils.isNull(this._editImage))\n this._editImage.maxWidth = val;\n break;\n }\n }\n acceptValue(val) {\n if (!Utils.isNull(this._editImage))\n this._editImage.value = val;\n }\n _update(val) {\n this._image.src = val;\n }\n _retrieve() {\n return this.value;\n }\n _edit(evt) {\n avoidHandler(evt);\n var editImage = this._editImage, state = this.value;\n editImage.disabled = false;\n editImage.reset();\n editImage.value = state;\n this._dialog.open(state).then(args => {\n switch (args.button) {\n case ComponentsUI.UI.DialogButton.Cancel:\n // reset value\n this._update(this.value);\n break;\n case ComponentsUI.UI.DialogButton.Ok:\n // save\n this._update(args.state);\n break;\n }\n this._editImage.disabled = true;\n });\n }\n};\n__decorate([\n ViewChild(P + '-img')\n], PacemImageInputElement.prototype, \"_image\", void 0);\n__decorate([\n ViewChild(P + '-button.' + PCSS + '-edit')\n], PacemImageInputElement.prototype, \"_editBtn\", void 0);\n__decorate([\n ViewChild(P + '-button.' + PCSS + '-clear')\n], PacemImageInputElement.prototype, \"_clearBtn\", void 0);\n__decorate([\n ViewChild(P + '-input-url')\n], PacemImageInputElement.prototype, \"_input\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemImageInputElement.prototype, \"uploadUrl\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemImageInputElement.prototype, \"imageSet\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageInputElement.prototype, \"maxWidth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageInputElement.prototype, \"maxHeight\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageInputElement.prototype, \"maxThumbnailWidth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemImageInputElement.prototype, \"maxThumbnailHeight\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemImageInputElement.prototype, \"allowSnapshot\", void 0);\nPacemImageInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-image', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-input-image\"><${P}-img src=\"{{ :host.value }}\" adapt=\"contain\"></${P}-img><div class=\"${PCSS}-input-image-dashboard\">\r\n <${P}-button on-click=\":host._edit($event)\" hide=\"{{ :host.disabled }}\" class=\"${PCSS}-edit\">Edit</${P}-button>\r\n <${P}-button on-click=\":host._clear($event)\" hide=\"{{ :host.disabled }}\" class=\"${PCSS}-clear\">Clear</${P}-button>\r\n</div><${P}-input-url placeholder=\"{{ :host.placeholder }}\" on-change=\":host.changeHandler($event)\" value=\"{{ :host.value }}\"></${P}-input-url>\r\n\r\n <${P}-panel hide=\"{{ Pacem.Utils.isNullOrEmpty(:host.value) }}\">\r\n <dl class=\"${PCSS}-input-image-preview\">\r\n <dt>dimensions:</dt><dd><${P}-text text=\"{{ ::_image.size.width +'x'+ ::_image.size.height }}\"></${P}-text></dd>\r\n <dt>size:</dt><dd><${P}-text text=\"{{ $pacem.size(::_image.size.weight) }}\"></${P}-text></dd>\r\n </dl></${P}-panel>\r\n\r\n</div>`\n })\n], PacemImageInputElement);\nexport { PacemImageInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, PropertyConverters, Utils } from '@pacem/pacem-core';\nimport { PacemOrdinalInputElement } from './input';\n//namespace Pacem.Components.Scaffolding {\n/** {@link PacemOrdinalInputElement} for an `<input type=\"number\">`, formatting its read-only view value via {@link format}. */\nlet PacemNumberInputElement = class PacemNumberInputElement extends PacemOrdinalInputElement {\n toggleReadonlyView(readonly) {\n this._span.hidden = !readonly;\n this._input.hidden = readonly;\n }\n get inputFields() {\n return Utils.isNull(this._input)\n ? []\n : [this._input];\n }\n getViewValue(val) {\n return this.value != null ? this._format(this.value) : undefined;\n }\n _format(v = this.value) {\n const intl = this.format;\n if (!Utils.isNullOrEmpty(intl)) {\n return new Intl.NumberFormat(Utils.lang(this), intl).format(v);\n }\n return v.toString();\n }\n getValue(val) {\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/669685/ (bug open since Aug 2014!)\n const v = this.inputField.valueAsNumber || parseFloat(this.inputField.value);\n return isNaN(v) ? undefined : v;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n var options = { capture: false, passive: false };\n this._input.addEventListener(\"wheel\", this.emitHandler, options);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._input)) {\n var options = { capture: false, passive: false };\n this._input.removeEventListener(\"wheel\", this.emitHandler, options);\n }\n super.disconnectedCallback();\n }\n};\n__decorate([\n ViewChild('input[type=number]')\n], PacemNumberInputElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemNumberInputElement.prototype, \"_span\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemNumberInputElement.prototype, \"format\", void 0);\nPacemNumberInputElement = __decorate([\n CustomElement({ tagName: P + '-input-number', template: `<input type=\"number\" class=\"${PCSS}-input ${PCSS}-viewfinder\" /><span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>`, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemNumberInputElement);\nexport { PacemNumberInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, avoidHandler, Defaults, ViewChild, Utils } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\n/** {@link PacemTextualInputElement} for an `<input type=\"password\">`, with a toggle to reveal/hide the entered text and a masked read-only view. */\nlet PacemPasswordInputElement = class PacemPasswordInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n this._togglerMousedownHandler = (evt) => {\n if (evt.button == 0) {\n avoidHandler(evt);\n this.toggleVisibility();\n }\n };\n }\n get inputFields() {\n return Utils.isNull(this._input)\n ? []\n : [this._input];\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const baseId = this.id ?? '_' + Utils.uniqueCode();\n const inputId = this._input.id = baseId + '_ctrl';\n this._toggler.setAttribute('aria-controls', inputId);\n this._toggler.setAttribute('role', 'button');\n this._syncToggler();\n this._toggler.addEventListener('mousedown', this._togglerMousedownHandler, false);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._toggler)) {\n this._toggler.removeEventListener('mousedown', this._togglerMousedownHandler, false);\n }\n }\n /** Toggles the native input between `password` (masked) and `text` (revealed) type. */\n toggleVisibility() {\n const current = this._input.type;\n this._input.type = current === 'password' ? 'text' : 'password';\n this._syncToggler();\n }\n _syncToggler() {\n const collapsed = this._input.type === 'password';\n this._toggler.innerText = collapsed ? 'visibility_off' : 'visibility';\n this._toggler.setAttribute('aria-expanded', (!collapsed).toString());\n }\n toggleReadonlyView(readonly) {\n this._input.hidden = this._toggler.hidden = readonly;\n this._span.hidden = !readonly;\n }\n getViewValue(val) {\n return Utils.leftPad('', Math.floor(8 + 3 * Math.random()), '•');\n }\n};\n__decorate([\n ViewChild('input[type=password]')\n], PacemPasswordInputElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemPasswordInputElement.prototype, \"_span\", void 0);\n__decorate([\n ViewChild(`i.${PCSS}-icon.${PCSS}-clickable`)\n], PacemPasswordInputElement.prototype, \"_toggler\", void 0);\nPacemPasswordInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-password', template: `<input type=\"password\" class=\"${PCSS}-input ${PCSS}-viewfinder\" /><i class=\"${PCSS}-icon ${PCSS}-clickable\"></i>\r\n${CHAR_COUNTER_CHILD}<span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>`, shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemPasswordInputElement);\nexport { PacemPasswordInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Utils, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\n//namespace Pacem.Components.Scaffolding {\n/** A `<p-input-search>` field: a {@link PacemTextualInputElement} backed by a native `<input type=\"search\">`. */\nlet PacemSearchInputElement = class PacemSearchInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n }\n get inputFields() {\n return Utils.isNull(this._input)\n ? []\n : [this._input];\n }\n toggleReadonlyView(readonly) {\n // no readonly view provided.\n }\n};\n__decorate([\n ViewChild('input[type=search]')\n], PacemSearchInputElement.prototype, \"_input\", void 0);\nPacemSearchInputElement = __decorate([\n CustomElement({ tagName: P + '-input-search', template: '<input type=\"search\" class=\"' + PCSS + '-input\" />', shadow: Defaults.USE_SHADOW_ROOT })\n], PacemSearchInputElement);\nexport { PacemSearchInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Utils, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\n//namespace Pacem.Components.Scaffolding {\n/** A `<p-input-tel>` field: a {@link PacemTextualInputElement} backed by a native `<input type=\"tel\">`, whose readonly view renders as a clickable `tel:` link. */\nlet PacemTelInputElement = class PacemTelInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n }\n toggleReadonlyView(readonly) {\n const input = this._input, anchor = this._anchor;\n if (!Utils.isNull(input))\n input.hidden = readonly;\n if (!Utils.isNull(anchor))\n anchor.hidden = !readonly;\n }\n get inputFields() {\n return Utils.isNull(this._input)\n ? []\n : [this._input];\n }\n};\n__decorate([\n ViewChild('input[type=tel]')\n], PacemTelInputElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(P + '-a')\n], PacemTelInputElement.prototype, \"_anchor\", void 0);\nPacemTelInputElement = __decorate([\n CustomElement({ tagName: P + '-input-tel', template: `<input type=\"tel\" class=\"${PCSS}-input\" /><${P}-a class=\"${PCSS}-readonly\" disabled=\"{{ $pacem.isNullOrEmpty(:host.value) }}\" href=\"{{ 'tel:'+ :host.value }}\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></${P}-a>`, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemTelInputElement);\nexport { PacemTelInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Utils, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\n/** A `<p-input-text>` field: a {@link PacemTextualInputElement} backed by a native `<input type=\"text\">`, with an optional character counter. */\nlet PacemTextInputElement = class PacemTextInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n }\n toggleReadonlyView(readonly) {\n this._span.hidden = !readonly;\n this._input.hidden = readonly;\n }\n get inputFields() {\n return Utils.isNull(this._input)\n ? []\n : [this._input];\n }\n};\n__decorate([\n ViewChild('input[type=text]')\n], PacemTextInputElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild('span.' + PCSS + '-readonly')\n], PacemTextInputElement.prototype, \"_span\", void 0);\nPacemTextInputElement = __decorate([\n CustomElement({\n tagName: P + '-input-text',\n template: `<input type=\"text\" class=\"${PCSS}-input\" />${CHAR_COUNTER_CHILD}<span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemTextInputElement);\nexport { PacemTextInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Utils, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\n/** A `<p-input-url>` field: a {@link PacemTextualInputElement} backed by a native `<input type=\"url\">`, whose readonly view renders as a clickable link opening in a new tab. */\nlet PacemUrlInputElement = class PacemUrlInputElement extends PacemTextualInputElement {\n constructor() {\n super();\n }\n toggleReadonlyView(readonly) {\n const input = this._input, anchor = this._anchor;\n if (!Utils.isNull(input))\n input.hidden = readonly;\n if (!Utils.isNull(anchor))\n anchor.hidden = !readonly;\n }\n get inputFields() {\n return Utils.isNull(this._input)\n ? []\n : [this._input];\n }\n};\n__decorate([\n ViewChild('input[type=url]')\n], PacemUrlInputElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(P + '-a')\n], PacemUrlInputElement.prototype, \"_anchor\", void 0);\nPacemUrlInputElement = __decorate([\n CustomElement({ tagName: P + '-input-url', template: `<input type=\"url\" class=\"${PCSS}-input\" />${CHAR_COUNTER_CHILD}<${P}-a class=\"${PCSS}-readonly\" disabled=\"{{ $pacem.isNullOrEmpty(:host.value) }}\" href=\"{{ :host.value }}\" target=\"_blank\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></${P}-a>`, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemUrlInputElement);\nexport { PacemUrlInputElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, ViewChild, CustomElement, Watch, Utils, PropertyConverters, Defaults } from '@pacem/pacem-core';\nimport { Components as ComponentsMaps } from '@pacem/pacem-maps';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\n/** Default tile-layer URL template used by {@link PacemLatLngElement} when {@link LatLngOptions.tiles} isn't set (currently empty, i.e. the map adapter's own default applies). */\nexport const DEFAULT_TILES = \"\";\n/** Default map attribution string used by {@link PacemLatLngElement} when {@link LatLngOptions.attribution} isn't set (currently empty, i.e. the map adapter's own default applies). */\nexport const DEFAULT_ATTRIBUTION = \"\";\n//const TILES = `//api.mapbox.com/styles/v1/cmerighi/ciwz1gib7002l2prvgpi724nk/tiles/256/{z}/{x}/{y}?access_token=pk.eyJ1IjoiY21lcmlnaGkiLCJhIjoiY2lsZHIxdGJmMDAxOHc4bHowamxpZ2Z2OCJ9.7I7ndF-rAkx_1Sqi0bw3Ew`;\n//const ATTRIBUTION = `Map data © <a href=\"http://openstreetmap.org\">OpenStreetMap</a> contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>, Imagery © <a href=\"http://mapbox.com\">Mapbox</a>`\nconst REVERSE_GEOCODE_URL = 'https://nominatim.openstreetmap.org/reverse';\n/** A `<p-latlng>` field: a {@link PacemBaseElement} coordinate picker combining paired lat/lng number inputs with an interactive, draggable-marker map (Leaflet/OSM, Azure Maps or Google Maps) and reverse-geocoded address preview. */\nlet PacemLatLngElement = class PacemLatLngElement extends PacemBaseElement {\n convertValueAttributeToProperty(attr) {\n const regexArray = /^\\s*([+-]?\\d+\\.?\\d+)[,\\s]\\s*([+-]?\\d+\\.?\\d+)\\s*$/.exec(attr);\n if (regexArray && regexArray.length === 3) {\n return { lat: parseFloat(regexArray[1]), lng: parseFloat(regexArray[2]) };\n }\n throw `Invalid coordinates format for \"${attr}\"`;\n }\n compareValuePropertyValues(old, val) {\n if (old && typeof old.lat === 'number' && typeof old.lng === 'number'\n && val && typeof val.lat === 'number' && typeof val.lng === 'number') {\n return old.lat === val.lat && old.lng === val.lng;\n }\n return false;\n }\n getViewValue(value) {\n return this._getViewValue(value);\n }\n _getViewValue(value, precision = 8) {\n return value && typeof value.lat === 'number' && typeof value.lng === 'number' && value.lat.toFixed(precision) + ',' + value.lng.toFixed(precision) || '';\n }\n get inputFields() {\n return [this._latInput, this._lngInput];\n }\n toggleReadonlyView(readonly) {\n this._inputContainer.hidden = /*\n this._lngInput.hide = this._latInput.hide =*/\n readonly;\n }\n // regex: \n acceptValue(val) {\n let e_val = this._ensureValue(val);\n this._lat = e_val.lat;\n this._lng = e_val.lng;\n }\n _ensureValue(val) {\n return (val && typeof val.lat === 'number' && typeof val.lng === 'number') ? val : ComponentsMaps.Maps.MapConsts.DEFAULT_COORDS;\n }\n onChange(evt) {\n if (evt && evt.type === 'dragend') {\n var mevt = evt;\n // geocoordinate change due to map drag\n this._lat = mevt.detail.position.lat;\n this._lng = mevt.detail.position.lng;\n } // else: geocoordinate change due to text-input\n const lat = this._lat;\n const lng = this._lng;\n if (Utils.isNull(lat) || Utils.isNull(lng))\n return Utils.fromResult(this.value);\n return Utils.fromResult(this.value = { lat: lat, lng: lng });\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'options' && !first) {\n const opts = Utils.clone((val || { provider: 'osm' }));\n this._synchronizeOptions(opts);\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._synchronizeOptions();\n }\n _synchronizeOptions(opts = this.options || { provider: 'osm' }) {\n const marker = this._marker, map = this._map;\n marker.icon = opts.icon;\n switch (opts && opts.provider) {\n case 'azure':\n this._azureAdapter.subscriptionKey = opts.apiKey;\n map.adapter = this._azureAdapter;\n break;\n case 'google':\n case 'gmaps':\n this._googleAdapter.apiKey = opts.apiKey;\n map.adapter = this._googleAdapter;\n break;\n default:\n if (!Utils.isNullOrEmpty(opts.attribution)) {\n this._leafletAdapter.attribution = opts.attribution;\n }\n if (!Utils.isNullOrEmpty(opts.tiles)) {\n this._leafletAdapter.tiles = opts.tiles;\n }\n map.adapter = this._leafletAdapter;\n break;\n }\n delete opts['provider'];\n delete opts['icon'];\n delete opts['apiKey'];\n delete opts['attribution'];\n delete opts['tiles'];\n for (let prop in opts) {\n if (prop in map) {\n map[prop] = opts[prop];\n }\n }\n }\n};\n__decorate([\n ViewChild(P + '-map-adapter-leaflet')\n], PacemLatLngElement.prototype, \"_leafletAdapter\", void 0);\n__decorate([\n ViewChild(P + '-map-adapter-azure')\n], PacemLatLngElement.prototype, \"_azureAdapter\", void 0);\n__decorate([\n ViewChild(P + '-map-adapter-google')\n], PacemLatLngElement.prototype, \"_googleAdapter\", void 0);\n__decorate([\n ViewChild(P + '-map')\n], PacemLatLngElement.prototype, \"_map\", void 0);\n__decorate([\n ViewChild(P + '-map-marker')\n], PacemLatLngElement.prototype, \"_marker\", void 0);\n__decorate([\n ViewChild(P + '-input-number:nth-child(1)')\n], PacemLatLngElement.prototype, \"_latInput\", void 0);\n__decorate([\n ViewChild(P + '-input-number:nth-child(2)')\n], PacemLatLngElement.prototype, \"_lngInput\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-latlng-fields`)\n], PacemLatLngElement.prototype, \"_inputContainer\", void 0);\n__decorate([\n ViewChild(P + '-fetch')\n], PacemLatLngElement.prototype, \"_fetcher\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json, emit: false })\n], PacemLatLngElement.prototype, \"options\", void 0);\n__decorate([\n Watch()\n], PacemLatLngElement.prototype, \"_lat\", void 0);\n__decorate([\n Watch()\n], PacemLatLngElement.prototype, \"_lng\", void 0);\nPacemLatLngElement = __decorate([\n CustomElement({\n tagName: P + '-latlng', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-latlng\">\r\n <div class=\"${PCSS}-latlng-fields ${PCSS}-viewfinder\">\r\n <${P}-input-number class=\"${PCSS}-lat\" value=\"{{ :host._lat, twoway }}\" min=\"-90\" max=\"90\" step=\"{{ 'any' }}\"></${P}-input-number>\r\n <${P}-input-number class=\"${PCSS}-lng\" value=\"{{ :host._lng, twoway }}\" min=\"-180\" max=\"180\" step=\"{{ 'any' }}\"></${P}-input-number>\r\n </div>\r\n <${P}-panel hide=\"{{ Pacem.Utils.isNull(:host.value) || :host.readonly }}\">\r\n <dl class=\"${PCSS}-latlng-preview\">\r\n <dt>decimals:</dt><dd><${P}-text text=\"{{ :host._getViewValue(:host.value, 12) }}\"></${P}-text></dd>\r\n <dt>address:</dt><dd><${P}-text text=\"{{ ::_fetcher.result.display_name || '?' }}\"></${P}-text></dd>\r\n <dt>degrees:</dt><dd><${P}-span css-class=\"{{ {'${PCSS}-lat-north': :host._lat > 0, '${PCSS}-lat-south': :host._lat < 0} }}\" content=\"{{ $pacem.decToDeg(Math.abs(:host._lat)) }}\"></${P}-span>,\r\n <${P}-span css-class=\"{{ {'${PCSS}-lng-east': :host._lng > 0, '${PCSS}-lng-west': :host._lng < 0} }}\" content=\"{{ $pacem.decToDeg(Math.abs(:host._lng)) }}\"></${P}-span></dd>\r\n </dl>\r\n </${P}-panel>\r\n <${P}-span class=\"${PCSS}-readonly\" hide=\"{{ !:host.readonly }}\" content=\"{{ :host.viewValue + ($pacem.isNullOrEmpty(::_fetcher.result.display_name) ? '' : (' <small>'+ ::_fetcher.result.display_name +'</small>')) }}\"></${P}-span>\r\n\r\n <${P}-map-adapter-leaflet></${P}-map-adapter-leaflet>\r\n <${P}-map-adapter-azure></${P}-map-adapter-azure>\r\n <${P}-map-adapter-google></${P}-map-adapter-google>\r\n\r\n <${P}-map adapter=\"{{ ::_adapter }}\">\r\n <${P}-map-marker position=\"{{ :host._ensureValue(:host.value) }}\" on-dragend=\":host.changeHandler($event)\" draggable=\"{{ !:host.readonly }}\"></${P}-map-marker>\r\n </${P}-map>\r\n <${P}-fetch disabled=\"{{ $pacem.isNull(:host.value) }}\" parameters=\"{{ { format: 'json', lat: :host._lat, lon: :host._lng } }}\" url=\"${REVERSE_GEOCODE_URL}\"></${P}-fetch>\r\n</div>`\n })\n], PacemLatLngElement);\nexport { PacemLatLngElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, Defaults } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\nimport { ChangePolicy } from './input';\n//namespace Pacem.Components.Scaffolding {\nconst ITEM_TXT_CORE = `change-policy=\"${ChangePolicy.Blur}\" readonly=\"{{ :host.readonly }}\"`;\nfunction isEmpty(nvp) {\n return Utils.isNullOrEmpty(nvp && nvp.name);\n}\nfunction pullEmpty() {\n return { name: '', value: '' };\n}\n/** A `<p-namevalue-list>` field: a {@link PacemBaseElement} editor for a repeatable list of name/value string pairs, whose `value` is either an array of {@link NameValuePair}s or, when {@link PacemNameValueListElement#dictionary} is set, a plain `{ [name]: value }` object. */\nlet PacemNameValueListElement = class PacemNameValueListElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this.inputFields = [];\n /** Internal editable rows, mirrored to/from `value` depending on {@link dictionary}. */\n this._bag = [];\n }\n toggleReadonlyView(readonly) {\n // let the bindings do their job...\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n let val = this._bagToValue(this._bag);\n if (!this.compareValuePropertyValues(val, this.value)) {\n resolve(this.value = val);\n }\n else {\n reject();\n }\n });\n }\n acceptValue(val) {\n this._bag = this._valueToBag(val);\n }\n getViewValue(value) {\n return ''; // unneeded\n }\n compareValuePropertyValues(old, val) {\n return Utils.Json.stringify(old) === Utils.Json.stringify(val);\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Json.convert(attr);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'dictionary' && !first) {\n this.value = this._bagToValue();\n }\n }\n _bagToValue(bag = this._bag) {\n if (!this.dictionary) {\n // not a dictionary\n // return an array\n let b = [];\n for (let item of bag || []) {\n if (isEmpty(item)) {\n continue;\n }\n if (b.find(i => i.name === item.name && i.value === item.value)) {\n continue;\n }\n b.push(item);\n }\n return b;\n }\n // dictionary\n // return an object\n let v = {};\n for (let kvp of bag || []) {\n if (kvp.name in v) {\n // skip existing names...\n continue;\n }\n v[kvp.name] = kvp.value;\n }\n return v;\n }\n _valueToBag(val = this.value) {\n const bag = [];\n if (!Utils.isNullOrEmpty(val) && typeof val === 'object') {\n if (this.dictionary && !Utils.isArray(val)) {\n for (let prop in val) {\n bag.push({ name: prop, value: val[prop] });\n }\n }\n else if (!this.dictionary && Utils.isArray(val)) {\n Array.prototype.splice.apply(bag, [0, 0].concat(val.map(i => Utils.clone(i))));\n }\n }\n return !Utils.isNullOrEmpty(bag) ? bag : [pullEmpty()];\n }\n _deleteAt(evt) {\n this._bag.splice(evt.detail, 1);\n this.changeHandler(evt);\n }\n _addItem(evt) {\n const bag = this._bag, lastItem = this._bag[this._bag.length - 1];\n if (Utils.isEmpty(bag) || !isEmpty(lastItem)) {\n bag.push(pullEmpty());\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemNameValueListElement.prototype, \"dictionary\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemNameValueListElement.prototype, \"_bag\", void 0);\nPacemNameValueListElement = __decorate([\n CustomElement({\n tagName: P + '-namevalue-list', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater datasource=\"{{ :host._bag }}\" on-itemdelete=\":host._deleteAt($event)\">\r\n <template>\r\n <div class=\"${PCSS}-fieldset ${PCSS}-margin margin-bottom-1\">\r\n <div class=\"fieldset-auto\">\r\n <div class=\"${PCSS}-fieldgroup\">\r\n <${P}-input-text ${ITEM_TXT_CORE} value=\"{{ ^item.name, twoway }}\" on-change=\":host.changeHandler($event)\"></${P}-input-text>\r\n <div class=\"fieldgroup-prepend\"></div>\r\n </div>\r\n <div class=\"${PCSS}-fieldgroup\">\r\n <${P}-input-text ${ITEM_TXT_CORE} value=\"{{ ^item.value, twoway }}\" on-change=\":host.changeHandler($event)\"></${P}-input-text>\r\n <div class=\"fieldgroup-append\">\r\n <${P}-button class=\"${PCSS}-cell cols-2 flat delete\" hide=\"{{ :host.readonly }}\" command-name=\"delete\" command-argument=\"{{ ^index }}\"></${P}-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </template>\r\n <${P}-button class=\"flat add\" hide=\"{{ :host.readonly }}\" on-click=\":host._addItem($event)\"></${P}-button>\r\n</${P}-repeater>`\n })\n], PacemNameValueListElement);\nexport { PacemNameValueListElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, ViewChild, CustomElement, Watch, Utils, PropertyConverters, Defaults, CustomElementUtils } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\n/** A `<p-property-picker>` field: a {@link PacemBaseElement} wrapping a {@link PacemSelectElement} whose datasource is auto-populated with the (recursively flattened) watched property names of a `target` element. */\nlet PacemPropertyPickerElement = class PacemPropertyPickerElement extends PacemBaseElement {\n get inputFields() {\n return [this._select];\n }\n toggleReadonlyView(readonly) {\n this._select.readonly = readonly;\n }\n onChange(evt) {\n return Utils.fromResult(this.value = this._select.value);\n }\n acceptValue(val) {\n this._select.value = val;\n }\n getViewValue(value) {\n return this._select.viewValue;\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Element.convert(attr);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._databind();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'target':\n this._databind();\n break;\n }\n }\n }\n _databind() {\n const props = [], \n // recursive fn\n fnRec = (container, prop, name) => {\n const val = container[prop];\n if (typeof val === 'object' && val != null && !Utils.isArray(val)) {\n for (let key of Object.keys(val)) {\n const fullName = name + '.' + key;\n // add nested\n props.push(fullName);\n // try again (recursively)\n fnRec(val, key, fullName);\n }\n }\n };\n let src = this.target;\n if (!Utils.isNull(src)) {\n let observed = CustomElementUtils.getWatchedProperties(src);\n for (let obs of observed) {\n let name = obs.name;\n // add straight\n props.push(name);\n // dig nested stuff\n fnRec(src, name, name);\n }\n }\n this._select.datasource = props.sort();\n }\n};\n__decorate([\n ViewChild(P + '-select')\n], PacemPropertyPickerElement.prototype, \"_select\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemPropertyPickerElement.prototype, \"target\", void 0);\nPacemPropertyPickerElement = __decorate([\n CustomElement({\n tagName: P + '-property-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-select></${P}-select>`\n })\n], PacemPropertyPickerElement);\nexport { PacemPropertyPickerElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, ViewChild, CustomElement, Watch, Utils, PropertyConverters, Defaults } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\n/** A `<p-radio>` field: a {@link PacemBaseElement} wrapping a single native `<input type=\"radio\">` with a caption label; its `value` is the radio's native value when {@link selected}, otherwise `undefined`. Used standalone or as the item template driven by {@link PacemRadioListElement}. */\nlet PacemRadioElement = class PacemRadioElement extends PacemBaseElement {\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n constructor() {\n super();\n this._key = '_' + Utils.uniqueCode();\n }\n toggleReadonlyView(readonly) {\n this.span.hidden = !readonly;\n this._radio.hidden = /*this.label.hidden =*/ readonly;\n }\n get inputFields() {\n return [this._radio];\n }\n onChange(evt) {\n this.selected = this._radio.checked;\n const value = this.selected ? this._radio.value : undefined;\n return Utils.fromResult(value);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._radio.id = this._label.htmlFor = this._key;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'name':\n this._radio.name = val;\n break;\n case 'selected':\n (this._radio.checked = val) ?\n Utils.addClass(this, PCSS + '-selected')\n :\n Utils.removeClass(this, PCSS + '-selected');\n break;\n }\n }\n acceptValue(val) {\n this._radio.value = Utils.isNullOrEmpty(val) ? '' : val;\n }\n getViewValue(val) {\n if (!Utils.isNull(val))\n return this.caption;\n return '';\n }\n};\n__decorate([\n ViewChild(\"input[type=radio]\")\n], PacemRadioElement.prototype, \"_radio\", void 0);\n__decorate([\n ViewChild(\"label\")\n], PacemRadioElement.prototype, \"_label\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-readonly`)\n], PacemRadioElement.prototype, \"span\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemRadioElement.prototype, \"caption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemRadioElement.prototype, \"selected\", void 0);\nPacemRadioElement = __decorate([\n CustomElement({\n tagName: P + '-radio',\n template: `<${P}-span class=\"${PCSS}-readonly ${PCSS}-radio\" text=\"{{ :host.caption }}\"></${P}-span><input type=\"radio\" class=\"${PCSS}-input\" /><label class=\"${PCSS}-label ${PCSS}-radio ${PCSS}-viewfinder\"><${P}-text text=\"{{ :host.caption }}\"></${P}-text></label>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemRadioElement);\nexport { PacemRadioElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PCSS, PropertyChangeEventName, Utils, ViewChild } from '@pacem/pacem-core';\nimport { PacemDataSourceElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\n/** A `<p-radio-list>` field: a {@link PacemDataSourceElement} rendering the datasource as a group of mutually-exclusive `<p-radio>` buttons. */\nlet PacemRadioListElement = class PacemRadioListElement extends PacemDataSourceElement {\n acceptValue(val) {\n // no need to implement\n }\n constructor() {\n super();\n this['key'] = '_' + Utils.uniqueCode();\n }\n get inputFields() {\n return [];\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'disabled') {\n this._disable.model = val;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._disable.model = this.disabled;\n }\n toggleReadonlyView(readonly) {\n this._repeater.hidden = readonly;\n this._span.hidden = !readonly;\n }\n _selectionChanged(evt, index, item) {\n if (evt.detail.propertyName === 'selected' && evt.detail.currentValue === true) {\n this._selectedValue = this.mapEntityToValue(this.datasource[index]);\n this.changeHandler(evt);\n }\n }\n onChange(evt) {\n this.value = this._selectedValue;\n this.databind();\n return Utils.fromResult(this._selectedValue);\n }\n};\n__decorate([\n ViewChild(P + '-repeater')\n], PacemRadioListElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(P + '-data')\n], PacemRadioListElement.prototype, \"_disable\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemRadioListElement.prototype, \"_span\", void 0);\nPacemRadioListElement = __decorate([\n CustomElement({\n tagName: P + '-radio-list', template: `<${P}-repeater datasource=\"{{ :host.adaptedDatasource }}\">\r\n <ol class=\"${PCSS}-radio-list ${PCSS}-viewfinder\" pacem>\r\n <template>\r\n <li><${P}-radio disabled=\"{{ ::_disable.model || ^item.disabled }}\" name=\"{{ :host.key, once }}\" autobind=\"off\" caption=\"{{ ^item.viewValue }}\" value=\"{{ ^item.value }}\" selected=\"{{ :host.isDataSourceItemSelected(^item, :host.value) }}\"\r\non-focus=\":host.focusHandler($event)\" on-blur=\":host.focusHandler($event)\"\r\non-${PropertyChangeEventName}=\":host._selectionChanged($event, ^index, ^item)\"></${P}-radio></li>\r\n </template>\r\n </ol>\r\n</${P}-repeater><span class=\"${PCSS}-readonly ${PCSS}-radio\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span><${P}-data></${P}-data><${P}-content></${P}-content>`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemRadioListElement);\nexport { PacemRadioListElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Components, PropertyConverters, Utils, P, PCSS, CustomElement, Watch, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemDataSourceElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\n/** A `<p-select>` field: a {@link PacemDataSourceElement} rendering the datasource as a native `<select>` dropdown. */\nlet PacemSelectElement = class PacemSelectElement extends PacemDataSourceElement {\n constructor() {\n super(...arguments);\n /** Gets or sets whether an extra, empty/placeholder `<option>` is prepended to the rendered choices. Defaults to `true`. */\n this.emptyOption = true;\n }\n toggleReadonlyView(readonly) {\n this._repeater.hidden = readonly;\n this._span.hidden = !readonly;\n }\n // no actual need to be idem-potent...\n // (take care in future)\n get inputFields() {\n return Utils.isNull(this._select)\n ? []\n : [this._select];\n }\n _manageDom(evt) {\n const args = evt.detail, item = args.item;\n let option = args.dom.find(o => o instanceof HTMLOptionElement);\n option.value = item.value;\n option.textContent = item.viewValue;\n option.disabled = item.disabled;\n option.selected = this.isDataSourceItemSelected(item);\n (Utils.isNullOrEmpty(option.value) ? Utils.addClass : Utils.removeClass).apply(this, [option, PCSS + '-watermark']);\n }\n onChange(evt) {\n let select = this._select, selectedIndex = select.selectedIndex, datasource = this.adaptedDatasource, item = selectedIndex >= 0 && datasource[selectedIndex], value;\n if (item != null) {\n value = item.value;\n }\n else\n value = undefined;\n return Utils.fromResult(this.value = value);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n // case 'required':\n case 'placeholder':\n case 'emptyOption':\n this.databind();\n break;\n }\n }\n buildAdaptedDatasource(ds = this.datasource) {\n let adapted = super.buildAdaptedDatasource(ds);\n if (adapted && this.emptyOption) {\n adapted.splice(0, 0, { viewValue: this.placeholder || '', value: undefined, data: undefined });\n }\n return adapted;\n }\n handleDatasourceMismatch(ds) {\n if (this.emptyOption) {\n super.handleDatasourceMismatch(ds);\n }\n else {\n // change value, since it does not exist in database and there's not null/empty fallback...\n if (Utils.isNullOrEmpty(ds)) {\n this.value = void 0;\n }\n else {\n this.value = ds[0].value;\n // ...you'll re-enter the acceptValue procedure with hopefully more luck.\n }\n }\n }\n ;\n acceptValue(val) {\n const ds = this.adaptedDatasource, item = ds && ds.filter(i => this.isDataSourceItemSelected(i, val));\n //let item = this.datasource && this.datasource.filter(i => this.isItemSelected(i));\n if (item && item.length == 1)\n this._select.selectedIndex = ds.indexOf(item[0]);\n else {\n this._select.value = undefined;\n let opts = this._select.options;\n if (opts.length > 0 && Utils.isNullOrEmpty(opts[0].value)) {\n this._select.selectedIndex = 0;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n //select.addEventListener(\"change\", this.changeHandler, false);\n var options = { capture: false, passive: false };\n this._select.addEventListener(\"wheel\", this.emitHandler, options);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._select)) {\n //select.removeEventListener(\"change\", this.changeHandler, false);\n var options = { capture: false, passive: false };\n this._select.removeEventListener(\"wheel\", this.emitHandler, options);\n }\n super.disconnectedCallback();\n }\n};\n__decorate([\n ViewChild('select')\n], PacemSelectElement.prototype, \"_select\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemSelectElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemSelectElement.prototype, \"_span\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemSelectElement.prototype, \"emptyOption\", void 0);\nPacemSelectElement = __decorate([\n CustomElement({\n tagName: P + '-select', template: `<${P}-repeater datasource=\"{{ :host.adaptedDatasource }}\" on-${Components.RepeaterItemCreateEventName}=\":host._manageDom($event)\">\r\n <select class=\"${PCSS}-select ${PCSS}-viewfinder\">\r\n <template>\r\n <option></option>\r\n </template>\r\n </select>\r\n</${P}-repeater><span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span><${P}-content></${P}-content>`, shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemSelectElement);\nexport { PacemSelectElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { P, PCSS, ViewChild, CustomElement, Watch, Utils, PropertyConverters, Defaults, avoidHandler, Components, UI } from '@pacem/pacem-core';\nimport { PacemBaseElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\n// TODO: exploit 202x features like https://developer.mozilla.org/en-US/docs/Web/CSS/offset-path or https://developer.chrome.com/blog/anchor-positioning-api\n/** A `<p-slider>` field: a {@link PacemBaseElement} numeric range control with a draggable thumb, keyboard support, and an optional tooltip-style thumb label; its `value` is a number between `min` and `max`. */\nlet PacemSliderElement = class PacemSliderElement extends PacemBaseElement {\n constructor() {\n super(...arguments);\n this.inputFields = [];\n this._dragHandler = (evt) => {\n evt.preventDefault();\n this._computeAndAssignValue(evt.detail.currentPosition.x, this.changePolicy !== 'end');\n };\n this._endHandler = (evt) => {\n evt.preventDefault();\n this._computeAndAssignValue(evt.detail.currentPosition.x, this.changePolicy === 'end');\n };\n this._startHandler = (evt) => {\n this._thumb.focus();\n };\n this._downHandler = (evt) => {\n const x = evt instanceof MouseEvent ? evt.clientX : evt.touches && evt.touches.length && evt.touches[0].clientX, trackSize = this._trackSize;\n if (!Utils.isNullOrEmpty(trackSize)) {\n this._computeAndAssignValue(x, true);\n }\n };\n this._keydownHandler = (evt) => {\n switch (evt.keyCode) {\n case 39: // right\n case 37: // left\n avoidHandler(evt);\n let forward = evt.keyCode === 39; // TODO: include rtl!\n let step = (typeof this.step !== 'number' ? 1.0 : this.step) * (forward ? 1 : -1);\n let cease = false;\n let ceaseFn = (evt) => {\n cease = true;\n window.removeEventListener('keyup', ceaseFn, false);\n Utils.removeClass(this, 'slider-keydown');\n };\n window.addEventListener('keyup', ceaseFn, false);\n Utils.addClass(this, 'slider-keydown');\n Utils.accelerateCallback(token => {\n if (!(token.cancel = cease)) {\n this._setValue(this.value + step);\n }\n });\n break;\n }\n };\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n if (evt.type === 'slide') {\n resolve(this.value = evt.detail);\n }\n resolve(this.value);\n });\n }\n _draw(val = this.value) {\n const trackSize = this._trackSize;\n if (Utils.isNull(trackSize)) {\n return;\n }\n const v = Utils.isNullOrEmpty(val) ? this.min : parseFloat(val);\n const percentage = Math.min(1, Math.max(0, (v - this.min) / (this.max - this.min)));\n this._progress.style.transform = `scale(${(percentage)}, 1)`;\n this._thumb.style.transform = `translateX(${Math.round(percentage * trackSize.width)}px)`;\n }\n _format(v) {\n const intl = this.format;\n if (!Utils.isNullOrEmpty(intl)) {\n return new Intl.NumberFormat(Utils.lang(this), intl).format(v);\n }\n // fallback\n let sv = '-';\n if (!Utils.isNull(v)) {\n sv = v.toLocaleString();\n }\n let evt = new CustomEvent(\"formatvalue\", { detail: { value: v } });\n this.dispatchEvent(evt);\n return Utils.isNull(evt.detail.output) ? sv : evt.detail.output;\n }\n acceptValue(val) {\n this._draw(val);\n }\n getViewValue(value) {\n return this._format(value);\n }\n convertValueAttributeToProperty(attr) {\n return parseFloat(attr);\n }\n toggleReadonlyView(readonly) {\n this._thumb.hidden = readonly;\n const css = 'cursor-pointer';\n if (readonly) {\n Utils.removeClass(this._max, css);\n Utils.removeClass(this._min, css);\n }\n else {\n Utils.addClass(this._max, css);\n Utils.addClass(this._min, css);\n }\n }\n _setTrackSize(evt) {\n const size = evt.detail;\n this._trackSize = { x: size.left, y: size.top, width: size.width, height: size.height };\n this._draw(this.value);\n }\n _computeAndAssignValue(x, triggerChange) {\n if (this.readonly || this.disabled) {\n return;\n }\n // constraint to track size to compute the slider value\n const constraint = this._trackSize, step = this.step;\n let perc = (x - constraint.x) / constraint.width;\n let v = (this.max - this.min) * perc + this.min;\n if (typeof step === 'number') {\n v = Math.round(v / step) * step;\n }\n if (triggerChange) {\n this._setValue(v);\n }\n else {\n this._draw(v);\n }\n }\n _setValue(v) {\n if (isNaN(v) || Utils.isNull(v)) {\n // keep in sync with pacem-input-number logic (TODO: centralize code, this is a fix)\n // cast NaN to undefined\n v = undefined;\n }\n else {\n if (!isNaN(this.min) && v < this.min) {\n v = this.min;\n }\n if (!isNaN(this.max) && v > this.max) {\n v = this.max;\n }\n }\n this.changeHandler(new CustomEvent('slide', { detail: v }));\n }\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('mousedown', this._downHandler, false);\n this.addEventListener('touchstart', this._downHandler, { passive: false, capture: false });\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._dragger.addEventListener(UI.DragDropEventType.Init, this._startHandler, false);\n this._dragger.addEventListener(UI.DragDropEventType.Drag, this._dragHandler, false);\n this._dragger.addEventListener(UI.DragDropEventType.End, this._endHandler, false);\n this._thumb.addEventListener('keydown', this._keydownHandler, false);\n this._min.text = this._format(this.min);\n this._max.text = this._format(this.max);\n // balloon\n const balloon = this._shellProxy.dom[0];\n if (!Utils.isNull(balloon)) {\n balloon.target = this._thumb;\n balloon.options = {\n trigger: ComponentsUI.UI.BalloonTrigger.Focus,\n trackPosition: true,\n position: ComponentsUI.UI.BalloonPosition.Top,\n align: ComponentsUI.UI.BalloonAlignment.Center,\n behavior: ComponentsUI.UI.BalloonBehavior.Tooltip,\n hoverDelay: 0, hoverTimeout: 0\n };\n this._syncThumbLabel();\n }\n //\n this._thumb.tabIndex = 0;\n }\n _syncThumbLabel(thumbLabel = this.thumbLabel) {\n const balloon = this._shellProxy.dom[0];\n (thumbLabel ? Utils.addClass : Utils.removeClass).apply(this, [this, 'slider-thumblabel']);\n balloon.disabled = !thumbLabel;\n }\n disconnectedCallback() {\n this.removeEventListener('mousedown', this._downHandler, false);\n this.removeEventListener('touchstart', this._downHandler, { capture: false });\n if (!Utils.isNull(this._dragger)) {\n this._dragger.removeEventListener(UI.DragDropEventType.End, this._endHandler, false);\n this._dragger.removeEventListener(UI.DragDropEventType.Drag, this._dragHandler, false);\n this._dragger.removeEventListener(UI.DragDropEventType.Init, this._startHandler, false);\n }\n if (!Utils.isNull(this._thumb)) {\n this._thumb.removeEventListener('keydown', this._keydownHandler, false);\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (first) {\n return;\n }\n switch (name) {\n case 'thumbLabel':\n this._syncThumbLabel(val);\n break;\n case 'min':\n case 'max':\n if (!Utils.isNull(this._max) && !Utils.isNull(this._min)) {\n this._min.text = this._format(this.min);\n this._max.text = this._format(this.max);\n }\n this._setValue(this.value);\n this._draw();\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSliderElement.prototype, \"min\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSliderElement.prototype, \"max\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemSliderElement.prototype, \"thumbLabel\", void 0);\n__decorate([\n Watch({\n emit: false, converter: {\n convert: (attr) => {\n let v = parseFloat(attr);\n if (isNaN(v)) {\n return 'any';\n }\n return v;\n }, convertBack: (v) => (v || '').toString()\n }\n })\n], PacemSliderElement.prototype, \"step\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemSliderElement.prototype, \"changePolicy\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemSliderElement.prototype, \"format\", void 0);\n__decorate([\n ViewChild(`.slider-track`)\n], PacemSliderElement.prototype, \"_track\", void 0);\n__decorate([\n ViewChild(`.slider-progress`)\n], PacemSliderElement.prototype, \"_progress\", void 0);\n__decorate([\n ViewChild(`.slider-thumb`)\n], PacemSliderElement.prototype, \"_thumb\", void 0);\n__decorate([\n ViewChild(`${P}-text[min]`)\n], PacemSliderElement.prototype, \"_min\", void 0);\n__decorate([\n ViewChild(`${P}-text[max]`)\n], PacemSliderElement.prototype, \"_max\", void 0);\n__decorate([\n ViewChild(`${P}-drag-drop`)\n], PacemSliderElement.prototype, \"_dragger\", void 0);\n__decorate([\n ViewChild(`${P}-shell-proxy`)\n], PacemSliderElement.prototype, \"_shellProxy\", void 0);\nPacemSliderElement = __decorate([\n CustomElement({\n tagName: P + '-slider',\n template: `<div class=\"${PCSS}-viewfinder ${PCSS}-slider\"><${P}-text text=\"{{ :host._format(:host.min) }}\" min></${P}-text>\r\n <div class=\"slider-track\"><div class=\"slider-progress\"></div></div>\r\n <${P}-panel class=\"${PCSS}-clickable slider-thumb\" behaviors=\"{{ [::_dragger] }}\">\r\n <div class=\"thumb-label\"></div>\r\n </${P}-panel>\r\n <${P}-text text=\"{{ :host._format(:host.max) }}\" max></${P}-text>\r\n <div class=\"slider-footer\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></div>\r\n </div>\r\n<${P}-drag-drop lock-timeout=\"0\"></${P}-drag-drop><${P}-resize watch-position=\"true\" on-${Components.ResizeEventName}=\":host._setTrackSize($event)\" target=\"{{ ::_track }}\"></${P}-resize>\r\n<${P}-shell-proxy><${P}-balloon class=\"text-center\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></${P}-balloon></${P}-shell-proxy>\r\n`,\n shadow: Defaults.USE_SHADOW_ROOT\n })\n], PacemSliderElement);\nexport { PacemSliderElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomTypedEvent, CustomElement, Watch, ViewChild, Defaults, PCSS, P, Components, PropertyConverters, Utils, avoidHandler, Logging, CustomElementUtils } from '@pacem/pacem-core';\nimport { Components as ComponentsUI } from '@pacem/pacem-ui';\nimport { PacemDataSourceElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nclass SuggestionSelectEvent extends CustomTypedEvent {\n constructor(value) {\n super('suggestionselect', { selectedValue: value });\n }\n}\nconst BALLOON_POPUP_DELAY = 100;\nconst BALLOON_POPOUT_DELAY = 0;\n/** A `<p-suggest>` field: a {@link PacemDataSourceElement} autocomplete/typeahead text input, backed by a native `<input type=\"text\">` and a dropdown balloon of filtered, highlighted suggestions; optionally accepts free-typed values not present in the datasource. */\nlet PacemSuggestElement = class PacemSuggestElement extends PacemDataSourceElement {\n constructor() {\n super(...arguments);\n this._toggleBtnHandler = (evt) => {\n evt.preventDefault();\n if (!this.disabled) {\n this._balloon.toggle();\n }\n };\n this._clearBtnHandler = (evt) => {\n evt.preventDefault();\n this.hint = this._input.value = '';\n this.value = void 0;\n this._focus(null);\n this.changeHandler(new SuggestionSelectEvent(null));\n };\n this._balloonPopupHandler = (evt) => {\n Utils.addClass(this._btnArrow, 'rotate-180');\n };\n this._balloonPopoutHandler = (evt) => {\n Utils.removeClass(this._btnArrow, 'rotate-180');\n };\n this._inputHandler = (evt) => {\n switch (evt.keyCode) {\n case 9 /*tab*/:\n case 13 /*enter*/:\n break;\n default:\n this._focus(null);\n this.hint = this._input.value;\n this.changeHandler(new SuggestionSelectEvent(null));\n break;\n }\n };\n this._keyupHandler = (evt) => {\n if (this.#keyupManaged) {\n avoidHandler(evt);\n this.#keyupManaged = false;\n }\n };\n this._focusHandler = (evt) => {\n if (this.preventFocus) {\n // manage the balloon toggle manually (since focus won't be dispatched)\n evt.preventDefault();\n const balloon = this._balloon;\n if (!balloon.visible) {\n this.popup();\n }\n else {\n this.popout();\n }\n }\n const actualHint = this._input.value;\n if (this.viewValue != actualHint) {\n this._databind();\n }\n // now just lean on the balloon's trigger, it will popup eventually...\n };\n this._blurHandler = (evt) => {\n this._undo();\n };\n this.#keyupManaged = false;\n this._keydownHandler = (evt) => {\n var managed = false;\n if (Utils.isNull(this.#selectedItem)) {\n const el = this._findFirstAvailableListItem();\n if (!Utils.isNull(el)) {\n switch (evt.keyCode) {\n case 40: /*arrow down*/\n //case 9: /*tab*/\n //case 13: /* enter */ \n avoidHandler(evt);\n this._focus(el);\n break;\n case 13: /* enter */\n avoidHandler(evt);\n managed = true;\n if (this.#datasource.length === 1) {\n this._select(el);\n }\n else {\n this._focus(el);\n }\n break;\n }\n }\n }\n else {\n var li = this.#selectedItem, cursor = li, target;\n const skipPredicate = (e) => !Utils.isNull(e) && e.localName === 'li' && e.dataset['pacemDisabled'] === 'true', matchPredicate = (e) => !Utils.isNull(e) && e.localName === 'li' && e.dataset['pacemDisabled'] !== 'true';\n switch (evt.keyCode) {\n case 38 /*arrow up*/:\n avoidHandler(evt);\n do {\n cursor = cursor.previousElementSibling;\n if (matchPredicate(cursor)) {\n target = cursor;\n break;\n }\n } while (skipPredicate(cursor));\n target ??= li;\n break;\n case 40 /*arrow down*/:\n avoidHandler(evt);\n do {\n cursor = (cursor.nextElementSibling);\n if (matchPredicate(cursor)) {\n target = cursor;\n break;\n }\n } while (skipPredicate(cursor));\n target ??= li;\n break;\n case 27 /*esc*/:\n avoidHandler(evt);\n this._undo();\n this.popout();\n break;\n case 9 /*tab*/:\n case 13 /*enter*/:\n // case 32 /*space-bar*/:\n avoidHandler(evt);\n managed = true;\n this._select();\n break;\n }\n this._focus(target);\n this.#keyupManaged = managed;\n }\n };\n this._selectHandler = (evt) => {\n avoidHandler(evt);\n this._select(evt.currentTarget);\n };\n }\n get inputFields() {\n return [this._input];\n }\n acceptValue(val) {\n if ( /*!this._isTyping && */(this.allowNew || !Utils.isNullOrEmpty(this.datasource))) {\n this._input.value = this.getViewValue(val) || (this._isTyping ? this._input.value : '');\n }\n }\n getViewValue(val) {\n var superValue = super.getViewValue(val);\n if (Utils.isNullOrEmpty(superValue) && this.allowNew && !Utils.isNullOrEmpty(val)) {\n superValue = this.mapEntityToViewValue(val);\n }\n return superValue;\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n // change triggered elsewhere... (see _afterSelectHandler)\n if (evt.type === 'suggestionselect') {\n const val = evt.detail.selectedValue;\n this.value = val;\n if (val) {\n this.popout();\n }\n resolve(val);\n }\n else {\n // keep the current value\n resolve(this.value);\n }\n });\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setDropdownMode();\n this._setupItemTemplate();\n var balloon = this._createBalloon();\n balloon.appendChild(this._repeater);\n this._checkBalloon(balloon);\n const shell = CustomElementUtils.findAncestorShell(this);\n shell.appendChild(balloon);\n this._balloon = balloon;\n this._input.addEventListener('mousedown', this._focusHandler, false);\n this._input.addEventListener('keydown', this._keydownHandler, false);\n this._input.addEventListener('keyup', this._keyupHandler, false);\n this._input.addEventListener('focus', this._focusHandler, false);\n this._input.addEventListener('blur', this._blurHandler, false);\n this._input.addEventListener('input', this._inputHandler, false);\n this._btnClear.addEventListener('mousedown', this._clearBtnHandler, false);\n this._btnArrow.addEventListener('mousedown', this._toggleBtnHandler, false);\n this._databind();\n this._syncButtons();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (Utils.isNull(this._balloon)) {\n return;\n }\n const typing = this._isTyping;\n switch (name) {\n case 'adaptedDatasource':\n if (!Utils.isNullOrEmpty(val)) {\n if (!typing) {\n this._input.value = this.getViewValue(this.value);\n }\n else {\n this.popup();\n }\n }\n else {\n this.popout();\n }\n break;\n case 'hint':\n if (!typing && val !== this._input.value) {\n this._input.value = val;\n this.#selectedItem = null;\n }\n break;\n case 'readonly':\n // overrides default behavior: attribute synchronization (see `PacemBaseElement` in types.ts)\n this._setDropdownMode();\n // then fall below\n case 'disabled':\n case 'value':\n this._checkBalloon();\n break;\n case 'itemtemplate':\n if (!first) {\n this._setupItemTemplate();\n }\n break;\n case 'allowTyping':\n if (!first) {\n this._setDropdownMode();\n }\n break;\n }\n if (['adaptedDatasource', 'hint', 'value'].indexOf(name) >= 0) {\n this._databind();\n }\n if (['allowTyping', 'value', 'hint'].indexOf(name) >= 0) {\n this._syncButtons();\n }\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._balloon)) {\n this._balloon.removeEventListener('popup', this._balloonPopupHandler, false);\n this._balloon.removeEventListener('popout', this._balloonPopoutHandler, false);\n this._balloon.remove();\n }\n if (!Utils.isNull(this._input)) {\n this._input.removeEventListener('mousedown', this._focusHandler, false);\n this._input.removeEventListener('focus', this._focusHandler, false);\n this._input.removeEventListener('blur', this._blurHandler, false);\n this._input.removeEventListener('keydown', this._keydownHandler, false);\n this._input.removeEventListener('keyup', this._keyupHandler, false);\n this._input.removeEventListener('input', this._inputHandler, false);\n }\n if (!Utils.isNull(this._btnClear)) {\n this._btnClear.removeEventListener('mousedown', this._clearBtnHandler, false);\n }\n if (!Utils.isNull(this._btnArrow)) {\n this._btnArrow.addEventListener('mousedown', this._toggleBtnHandler, false);\n }\n super.disconnectedCallback();\n }\n #datasource;\n _databind() {\n if (!Utils.isNull(this._repeater)) {\n const ds = this.#datasource = this._filter(this.adaptedDatasource, this._input.value);\n this._repeater.datasource = ds;\n }\n }\n _syncButtons() {\n if (!Utils.isNull(this._btnArrow)) {\n // hide=\"{{ !$pacem.isNullOrEmpty(:host.hint || :host.value) || :host.allowTyping !== false }}\"\n this._btnArrow.hide = this.allowTyping !== false || !Utils.isNullOrEmpty(this._input.value || this.value);\n }\n if (!Utils.isNull(this._btnClear)) {\n // hide=\"{{ $pacem.isNullOrEmpty(:host.hint || :host.value) }}\"\n this._btnClear.hide = this.readonly || Utils.isNullOrEmpty(this._input.value || this.value);\n }\n }\n get _isTyping() {\n return Utils.is(this._input, ':focus'); // && this.viewValue !== this._input.value;\n }\n _undo() {\n this._focus(null);\n this.hint = this._input.value = this.getViewValue(this.value) || '';\n }\n _findFirstAvailableListItem() {\n var el;\n if (this._balloon.visible === true && !Utils.isNull(el = this._repeater.querySelector('ol > li'))) {\n while (!Utils.isNull(el) && el.dataset['pacemDisabled'] === 'true' && el.localName === 'li') {\n el = el.nextElementSibling;\n }\n }\n return el;\n }\n #keyupManaged;\n _setDropdownMode(allowTyping = this.allowTyping) {\n this._input.readOnly = !(allowTyping ?? true);\n }\n _setupItemTemplate() {\n if (this.itemtemplate instanceof HTMLTemplateElement) {\n const frag = this.itemtemplate.cloneNode(true).content;\n const tmpl = document.createElement('template');\n const li = document.createElement('li');\n li.append(frag);\n tmpl.content.appendChild(li);\n this._tmplProxy.target = tmpl;\n }\n else {\n this._tmplProxy.target = this._defaultTemplate;\n }\n }\n #selectedItem;\n _focus(el) {\n if (this.preventFocus) {\n return;\n }\n if (Utils.isNull(el)) {\n this.#selectedItem = null;\n return;\n }\n const siblings = el.parentElement.children;\n for (let j = 0; j < siblings.length; j++) {\n const item = siblings.item(j);\n if (item === el) {\n item.dataset['pacemFocused'] = 'true';\n this.#selectedItem = item;\n const input = this._input, viewValue = input.value = JSON.parse(item.dataset['pacemViewValue']);\n input.setSelectionRange(viewValue.length, viewValue.length);\n }\n else {\n delete item.dataset['pacemFocused'];\n }\n }\n }\n _select(el = this.#selectedItem) {\n const value = JSON.parse(el.dataset['pacemValue']), disabled = el.dataset['pacemDisabled'] === 'true';\n if (!disabled) {\n this.changeHandler(new SuggestionSelectEvent(value));\n }\n }\n _filter(ds, hint, value = this.value) {\n let datasource = ds || [];\n //if (!Utils.isNull(value)) {\n // datasource = datasource.filter(i => i.value == value);\n //} else \n if (!Utils.isNullOrEmpty(hint && hint.trim())) {\n const lowerHints = hint.toLowerCase().split(' ');\n let filtered = datasource.filter(i => {\n for (let lowerHint of lowerHints) {\n if (i.viewValue?.toLowerCase().indexOf(lowerHint) >= 0) {\n return true;\n }\n // check the whole 'data' object, just in case\n const filters = this.filterFields;\n if (!Utils.isNullOrEmpty(filters)) {\n const iData = i.data;\n if (typeof iData === 'object' && !Utils.isNullOrEmpty(iData)) {\n for (let filter of filters) {\n const filterStruct = filter.split('.');\n let j = 0;\n let value = iData;\n while (!Utils.isNull(value) && j < filterStruct.length) {\n value = value[filterStruct[j]];\n j++;\n }\n if (Utils.isNullOrEmpty(value)) {\n continue;\n }\n if (value.toString().toLowerCase().indexOf(lowerHint) >= 0) {\n return true;\n }\n }\n }\n }\n }\n return false;\n });\n const concatenate = this.allowNew\n // only concatenate on plain strings...\n && Utils.isNullOrEmpty(this.valueProperty)\n && Utils.isNullOrEmpty(this.textProperty)\n // ...and no matches are available\n && (Utils.isNullOrEmpty(filtered) || Utils.isNull(filtered.find(i => i.viewValue === hint)));\n datasource = concatenate ? [{ value: hint, viewValue: hint, data: hint }].concat(filtered) : filtered;\n }\n let retval = datasource;\n if (this.allowTyping !== false) {\n // max-suggestions enabled only when typing is allowed (default)\n retval = datasource.slice(0, this.maxSuggestions || 10);\n }\n //\n if (this._isTyping) {\n this.popup();\n }\n this._balloon.style.opacity = Utils.isNullOrEmpty(retval) ? '0' : '';\n this.log(Logging.LogLevel.Log, `${retval.length} dropdown suggestion(s), given hint '${hint}' and ${(ds || []).length} datasource items`);\n return retval;\n }\n _itemCreate(evt) {\n const li = evt.detail.dom.find(i => i instanceof HTMLLIElement);\n const item = evt.detail.item;\n const index = evt.detail.index;\n const disabled = item.disabled === true;\n li.tabIndex = disabled ? -1 : 0;\n li.dataset['pacemValue'] = JSON.stringify(item.value);\n li.dataset['pacemViewValue'] = JSON.stringify(item.viewValue);\n li.dataset['pacemDisabled'] = disabled.toString();\n li.addEventListener('mousedown', this._selectHandler, false);\n }\n _itemRemove(evt) {\n const li = evt.detail.dom.find(i => i instanceof HTMLLIElement);\n li.removeEventListener('mousedown', this._selectHandler, false);\n }\n toggleReadonlyView(readonly) {\n this.span.hidden = !readonly;\n this._input.hidden = readonly;\n if (readonly) {\n this._btnClear.hide = this._btnArrow.hide = true;\n }\n else {\n this._syncButtons();\n }\n }\n /*\n Balloon and repeater\n */\n popup(delay = BALLOON_POPUP_DELAY) {\n if (!Utils.isNullOrEmpty(this.adaptedDatasource) && Utils.isVisible(this)) {\n //console.log('Popping up from here...');\n this._balloon?.popup(delay);\n }\n }\n popout(delay = BALLOON_POPOUT_DELAY) {\n this.#selectedItem = null;\n this._balloon?.popout(delay);\n }\n _checkBalloon(balloon = this._balloon) {\n if (!Utils.isNull(balloon)) {\n const hasValue = !Utils.isNullOrEmpty(this.value) && !Utils.isNullOrEmpty(this._input.value) /* && Utils.isNullOrEmpty(this.hint)*/;\n balloon.disabled = hasValue || this.readonly || this.disabled || /* normalize to an actual boolean */ false; // || Pacem.Utils.isNullOrEmpty(this.adaptedDatasource);\n }\n }\n _createBalloon() {\n /*<${ P }-balloon target=\"{{ ::_input }}\" options=\"{ position: 'bottom', align: 'left', behavior: 'inert', hoverDelay: 0 }\"\ndisabled=\"{{ :host.readonly || Pacem.Utils.isNullOrEmpty(:host.adaptedDatasource) }}\">*/\n const balloon = document.createElement(P + '-balloon');\n Utils.addClass(balloon, 'suggest dropdown');\n balloon.options = {\n trackPosition: true,\n trigger: ComponentsUI.UI.BalloonTrigger.Focus,\n position: ComponentsUI.UI.BalloonPosition.VerticalAuto,\n size: ComponentsUI.UI.BalloonSizing.Match,\n align: ComponentsUI.UI.BalloonAlignment.Start,\n behavior: ComponentsUI.UI.BalloonBehavior.Menu, // UI.BalloonBehavior.Inert,\n hoverDelay: BALLOON_POPUP_DELAY, hoverTimeout: BALLOON_POPOUT_DELAY\n };\n balloon.addEventListener('popup', this._balloonPopupHandler, false);\n balloon.addEventListener('popout', this._balloonPopoutHandler, false);\n balloon.target = this._input;\n return balloon;\n }\n};\n__decorate([\n ViewChild('input[type=text]')\n], PacemSuggestElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemSuggestElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemSuggestElement.prototype, \"span\", void 0);\n__decorate([\n ViewChild(`template`)\n], PacemSuggestElement.prototype, \"_defaultTemplate\", void 0);\n__decorate([\n ViewChild(P + '-template-proxy')\n], PacemSuggestElement.prototype, \"_tmplProxy\", void 0);\n__decorate([\n ViewChild(`${P}-button[toggle]`)\n], PacemSuggestElement.prototype, \"_btnArrow\", void 0);\n__decorate([\n ViewChild(`${P}-button[clear]`)\n], PacemSuggestElement.prototype, \"_btnClear\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemSuggestElement.prototype, \"hint\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSuggestElement.prototype, \"maxSuggestions\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemSuggestElement.prototype, \"allowTyping\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemSuggestElement.prototype, \"preventFocus\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemSuggestElement.prototype, \"itemtemplate\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.StringArray })\n], PacemSuggestElement.prototype, \"filterFields\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemSuggestElement.prototype, \"allowNew\", void 0);\nPacemSuggestElement = __decorate([\n CustomElement({\n tagName: P + '-suggest', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-relative\"><input type=\"text\" class=\"${PCSS}-input\" />\r\n<${P}-button clear tab-order=\"-1\"\r\nclass=\"button-flat ${PCSS}-anim anim-pop anim-sudden anim-quick pos-absolute absolute-right absolute-top display-block ${PCSS}-margin margin-0\" \r\n icon-glyph=\"highlight_off\"></${P}-button>\r\n<${P}-button \r\nclass=\"button-flat icon-rotate ${PCSS}-anim anim-pop anim-sudden anim-quick pos-absolute absolute-right absolute-top display-block ${PCSS}-margin margin-0\" \r\n icon-glyph=\"arrow_drop_down\" tab-order=\"-1\" toggle></${P}-button>\r\n</div>\r\n<span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>\r\n<${P}-repeater on-${Components.RepeaterItemCreateEventName}=\":host._itemCreate($event)\" on-${Components.RepeaterItemRemoveEventName}=\":host._itemRemove($event)\">\r\n <ol>\r\n <${P}-template-proxy></${P}-template-proxy>\r\n </ol>\r\n</${P}-repeater><${P}-content></${P}-content>\r\n<template>\r\n <li><${P}-span content=\"{{ $pacem.highlight(^item.viewValue, :host.hint) }}\"></${P}-span></li>\r\n</template>`\n })\n], PacemSuggestElement);\nexport { PacemSuggestElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PCSS, Components, CustomTypedEvent, PropertyConverters, Watch, Utils, ViewChild } from '@pacem/pacem-core';\nimport { PacemDataSourceElement } from './types-components';\n//namespace Pacem.Components.Scaffolding {\nclass TagRemoveEvent extends CustomTypedEvent {\n constructor(value) {\n super('tagremove', { index: value });\n }\n}\nclass TagAddEvent extends CustomTypedEvent {\n constructor(value) {\n super('tagadd', { value: value });\n }\n}\n/** A single `<p-tag>` chip: displays a label and a remove button, dispatching a `remove` event (after an out-transition) when dismissed. Rendered by {@link PacemTagsElement} for each item in its `value`. */\nlet PacemTagElement = class PacemTagElement extends Components.PacemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'readonly':\n let readonly = !!val;\n (readonly ? Utils.addClass : Utils.removeClass)(this, 'tag-readonly');\n this._btn.disabled = this._btn.hide = readonly;\n break;\n case 'tag':\n Utils.removeClass(this, 'tag-out');\n break;\n }\n }\n _remove() {\n const tag = this;\n Utils.addClass(tag, 'tag-out');\n Utils.addAnimationEndCallback(tag, () => {\n this.dispatchEvent(new Event(\"remove\"));\n });\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemTagElement.prototype, \"tag\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemTagElement.prototype, \"readonly\", void 0);\n__decorate([\n ViewChild(P + '-button')\n], PacemTagElement.prototype, \"_btn\", void 0);\nPacemTagElement = __decorate([\n CustomElement({\n tagName: P + '-tag', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-text text=\"{{ :host.tag }}\"></${P}-text>\r\n <${P}-button on-click=\":host._remove()\"></${P}-button>`\n })\n], PacemTagElement);\nexport { PacemTagElement };\n/** A `<p-tags>` field: a {@link PacemDataSourceElement} editor rendering `value` as a list of removable {@link PacemTagElement} chips, plus a {@link PacemSuggestElement} for picking (or, when {@link allowNew} is set, typing) new tags to add. */\nlet PacemTagsElement = class PacemTagsElement extends PacemDataSourceElement {\n constructor() {\n super(true);\n this.inputFields = [];\n }\n toggleReadonlyView(readonly) {\n this._suggest.readonly = readonly;\n this.querySelector('.tag-new').hidden = readonly;\n }\n _tagRemove(ndx) {\n this.changeHandler(new TagRemoveEvent(ndx));\n }\n _tagAdd(v) {\n this.changeHandler(new TagAddEvent(v));\n // after the - just in case - assignment => reset the suggest component\n }\n handleDatasourceMismatch() {\n // do nothing!\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'datasource':\n case 'textProperty':\n this._suggest[name] = val;\n break;\n case 'valueProperty':\n // DON't pass the value-property to the suggest\n if (!Utils.isNullOrEmpty(val)) {\n throw `Cannot set 'valueProperty' on ${this.constructor.name}s.`;\n }\n break;\n case 'value':\n this._tags.datasource = val;\n break;\n }\n }\n onChange(evt) {\n return new Promise((resolve, reject) => {\n switch (evt.type) {\n case 'tagremove':\n this._justAddedIndex = -1;\n const trev = evt, ndxrev = trev.detail.index, \n // manipulate a copy of the array (to preserve the originalValue)\n valrev = Utils.clone(this.value);\n const trunk2 = valrev.splice(ndxrev + 1), trunk1 = valrev.splice(0, ndxrev);\n resolve(this.value = trunk1.concat(trunk2));\n break;\n case 'tagadd':\n const value = evt.detail.value, \n // manipulate a copy of the array (to preserve the originalValue)\n valadd = Utils.clone(this.value);\n if ( // no empty items\n !Utils.isNullOrEmpty(value)\n // no duplicated items\n && (this.allowDuplicates || Utils.isNullOrEmpty(valadd && valadd.find(i => this.mapEntityToViewValue(i) == this.mapEntityToViewValue(value))))) {\n let newvalue = (valadd || []).concat([value]);\n resolve(this.value = newvalue);\n this._justAddedIndex = this.value.length - 1;\n setTimeout(() => {\n this._suggest.focus();\n }, 250);\n // this will allow to accept the hint change...\n this._suggest.blur();\n this._suggest.hint = '';\n this._suggest.reset();\n }\n break;\n default:\n resolve(this.value);\n break;\n }\n });\n }\n acceptValue(val) {\n // no need to implement\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemTagsElement.prototype, \"hint\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemTagsElement.prototype, \"allowDuplicates\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemTagsElement.prototype, \"allowNew\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemTagsElement.prototype, \"_justAddedIndex\", void 0);\n__decorate([\n ViewChild(P + '-suggest')\n], PacemTagsElement.prototype, \"_suggest\", void 0);\n__decorate([\n ViewChild(P + '-repeater.' + PCSS + '-tags')\n], PacemTagsElement.prototype, \"_tags\", void 0);\nPacemTagsElement = __decorate([\n CustomElement({\n tagName: P + '-tags', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater class=\"${PCSS}-tags\">\r\n <ul class=\"${PCSS}-tags ${PCSS}-viewfinder ${PCSS}-list list-unstyled list-inline\">\r\n <template>\r\n <li class=\"${PCSS}-tag\">\r\n <${P}-tag on-remove=\":host._tagRemove(^index)\" css-class=\"{{ { 'tag-in': :host._justAddedIndex === ^index } }}\" tag=\"{{ :host.mapEntityToViewValue(^item) }}\" readonly=\"{{ :host.readonly }}\"></${P}-tag>\r\n </li>\r\n </template>\r\n <li class=\"tag-new\">\r\n <${P}-suggest logger=\"{{ :host.logger }}\" placeholder=\"{{ :host.placeholder }}\" allow-new=\"{{ :host.allowNew }}\" class=\"${PCSS}-tags\" on-change=\":host._tagAdd($this.value)\" hint=\"{{ :host.hint, twoway }}\">\r\n <${P}-content></${P}-content>\r\n </${P}-suggest>\r\n </li>\r\n </ul>\r\n</${P}-repeater>`\n })\n], PacemTagsElement);\nexport { PacemTagsElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, PropertyConverters, Utils } from '@pacem/pacem-core';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\n/** A `<p-textarea>` field: a {@link PacemTextualInputElement} backed by a native `<textarea>`, with an optional character counter. */\nlet PacemTextAreaElement = class PacemTextAreaElement extends PacemTextualInputElement {\n constructor() {\n super(...arguments);\n /** Gets or sets the native `<textarea>`'s `rows` attribute. Defaults to `5`. */\n this.rows = 5;\n /** Gets or sets the native `<textarea>`'s `cols` attribute. Defaults to `50`. */\n this.cols = 50;\n }\n /** @override */\n get preventKeyboardSubmit() {\n return true;\n }\n toggleReadonlyView(readonly) {\n const input = this._input, span = this._span;\n if (!Utils.isNull(input))\n input.hidden = readonly;\n if (!Utils.isNull(span))\n span.hidden = !readonly;\n }\n get inputFields() {\n return Utils.isNull(this._input)\n ? []\n : [this._input];\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'rows'\n || name === 'cols') {\n this.inputField.setAttribute(name, val);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTextAreaElement.prototype, \"rows\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTextAreaElement.prototype, \"cols\", void 0);\n__decorate([\n ViewChild('textarea')\n], PacemTextAreaElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(`span.${PCSS}-readonly`)\n], PacemTextAreaElement.prototype, \"_span\", void 0);\nPacemTextAreaElement = __decorate([\n CustomElement({ tagName: P + '-textarea', template: `<textarea class=\"${PCSS}-input\" pacem></textarea>${CHAR_COUNTER_CHILD}<span class=\"${PCSS}-readonly\"><${P}-text text=\"{{ :host.viewValue }}\"></${P}-text></span>`, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemTextAreaElement);\nexport { PacemTextAreaElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Defaults, ViewChild, PropertyConverters, preventDefaultHandler, Utils } from '@pacem/pacem-core';\nimport { Components } from '@pacem/pacem-ui';\nimport { PacemTextualInputElement } from './input';\nimport { CHAR_COUNTER_CHILD } from './char-counter';\n//namespace Pacem.Components.Scaffolding {\n/** A `<p-textarea-markdown>` field: a {@link PacemTextualInputElement} backed by a native `<textarea>` for editing Markdown text, whose readonly view renders the value as HTML via {@link Components.UI.MarkdownService}. */\nlet PacemMarkdownTextAreaElement = class PacemMarkdownTextAreaElement extends PacemTextualInputElement {\n constructor(_md = new Components.UI.MarkdownService()) {\n super();\n this._md = _md;\n /** Gets or sets the native `<textarea>`'s `rows` attribute. Defaults to `5`. */\n this.rows = 5;\n /** Gets or sets the native `<textarea>`'s `cols` attribute. Defaults to `50`. */\n this.cols = 50;\n this._keydownHandler = (evt) => {\n if (evt.keyCode === 9 /* tab */) {\n const input = this._input, value = input.value;\n var ndx = input.selectionStart;\n input.value = value.substr(0, ndx) + ' ' + value.substr(ndx);\n preventDefaultHandler(evt);\n }\n };\n }\n toggleReadonlyView(readonly) {\n if (!Utils.isNull(this._input))\n this._input.hidden = readonly;\n }\n /** @override */\n get preventKeyboardSubmit() {\n return true;\n }\n get inputFields() {\n return Utils.isNull(this._input)\n ? []\n : [this._input];\n }\n getViewValue(val) {\n return this._md.toHtml(val);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'rows'\n || name === 'cols') {\n this.inputField.setAttribute(name, val);\n }\n else if (name == 'viewValue') {\n this._markdown.innerHTML = val;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._input.addEventListener(\"keydown\", this._keydownHandler, false);\n }\n disconnectedCallback() {\n this._input &&\n this._input.removeEventListener(\"keydown\", this._keydownHandler, false);\n super.disconnectedCallback();\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMarkdownTextAreaElement.prototype, \"rows\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMarkdownTextAreaElement.prototype, \"cols\", void 0);\n__decorate([\n ViewChild('textarea')\n], PacemMarkdownTextAreaElement.prototype, \"_input\", void 0);\n__decorate([\n ViewChild(`div.${PCSS}-readonly`)\n], PacemMarkdownTextAreaElement.prototype, \"_markdown\", void 0);\nPacemMarkdownTextAreaElement = __decorate([\n CustomElement({ tagName: P + '-textarea-markdown', template: `<textarea class=\"${PCSS}-input\" pacem></textarea>${CHAR_COUNTER_CHILD}<div class=\"${PCSS}-readonly ${PCSS}-markdown\"></div>`, shadow: Defaults.USE_SHADOW_ROOT })\n], PacemMarkdownTextAreaElement);\nexport { PacemMarkdownTextAreaElement };\n","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["CustomTypedEvent","Net","Utils","__decorate","this","Transformer","CommandEventName","Components","CustomElementUtils","Watch","PropertyConverters","P","avoidHandler","PCSS","PropertyChangeEvent","DeferPromise","PropertyChangeEventName","Logging","Debounce","CustomElement","stopPropagationHandler","DefaultComparer","Defaults","CustomEventUtils","HistoryService","ViewChild","JsonOrStringConverter","ComponentsUI","PacemEventTarget","UI","JsonFunctionConversion","Maps","ComponentsMaps","Arrays","Colors","Animations","CustomUIEvent","preventDefaultHandler","DeepMerger"],"mappings":";;;IACA;IACO,MAAM,oBAAoB,GAAG,QAAQ;IAC5C;IACO,MAAM,gBAAgB,SAASA,0BAAgB,CAAC;IACvD,IAAI,WAAW,CAAC,IAAI,EAAE;IACtB,QAAQ,KAAK,CAAC,oBAAoB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAC/E,IAAI;IACJ;IACA;;ICRA;IACO,IAAI,gBAAgB;IAC3B,CAAC,UAAU,gBAAgB,EAAE;IAC7B,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,QAAQ;IACzC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,QAAQ;IACzC,IAAI,gBAAgB,CAAC,UAAU,CAAC,GAAG,UAAU;IAC7C,IAAI,gBAAgB,CAAC,SAAS,CAAC,GAAG,SAAS;IAC3C,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,QAAQ;IACzC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,QAAQ;IACzC,CAAC,EAAE,gBAAgB,KAAK,gBAAgB,GAAG,EAAE,CAAC,CAAC;IAC/C;IACO,MAAM,aAAa,CAAC;IAC3B;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;IAC7B,QAAQ,IAAI,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;IACpC,YAAY,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE;IACxD,SAAS,CAAC;IACV,QAAQ,IAAI;IACZ,YAAY,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;IACxC,YAAY,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC;IACxC,QAAQ;IACR,QAAQ,OAAO,CAAC,EAAE;IAClB,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,IAAI;IACJ;IACA,MAAM,WAAW,GAAG,8CAA8C;IAClE;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE;IACrD,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IACpC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;IAC/B,QAAQ,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;IACrE,IAAI;IACJ,IAAI,OAAO,IAAI;IACf;IACA;;IC5CA;IACA,MAAM,SAAS,GAAGC,aAAG,CAAC,UAAU;IAChC;IACO,MAAM,aAAa,SAAS,aAAa,CAAC;IACjD,IAAI,mBAAmB,CAAC,iBAAiB,EAAE;IAC3C,QAAQ,IAAI,OAAO,GAAG,sBAAsB;IAC5C,QAAQ,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACjD,QAAQ,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;IACzC,YAAY,OAAO,iBAAiB;IACpC,QAAQ,OAAO,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE;IACxB,QAAQ,IAAI,CAAC,GAAG,OAAO;IACvB,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;IACnC,YAAY,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7B,QAAQ;IACR,QAAQ,MAAM,IAAI,GAAG,CAAC;IACtB,QAAQ,IAAI,WAAW,GAAG,EAAE;IAC5B,QAAQ,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE;IAC1C,YAAY,IAAI,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;IACpD,YAAY,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IACrD,QAAQ;IACR,QAAQ,IAAI,OAAO,GAAG,EAAE;IACxB,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;IAClD,YAAY,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ;IACzE,QAAQ;IACR,aAAa,IAAI,GAAG,EAAE;IACtB;IACA,YAAY,IAAI,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC;IAC3D,YAAY,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;IACzC,gBAAgB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;IAC1D,oBAAoB,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9C,gBAAgB;IAChB,gBAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;IACrD,oBAAoB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;IACzC,oBAAoB,IAAI,CAAC,QAAQ,GAAG,EAAE;IACtC,gBAAgB;IAChB,gBAAgB,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;IACnC,YAAY;IACZ,QAAQ;IACR,aAAa;IACb,YAAY,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC;IAC/E,QAAQ;IACR,QAAQ,IAAI,MAAM,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE;IAClF,QAAQ,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;IACrC,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACtC,YAAY,KAAK,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE;IACjG,gBAAgB,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAClD,gBAAgB,IAAI,EAAE,EAAE;IACxB,oBAAoB,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC;IAC/E,oBAAoB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;IACnD,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,MAAM;IACrB,IAAI;IACJ,IAAI,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5C,QAAQ,OAAO;IACf,YAAY,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;IACpD,YAAY,IAAI,EAAE,IAAI;IACtB,YAAY,MAAM,EAAE,MAAM;IAC1B,YAAY,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE;IACvD,SAAS;IACT,IAAI;IACJ,IAAI,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;IACjC,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,QAAQ;IACzB,YAAY,KAAK,SAAS;IAC1B,gBAAgB,OAAO,gBAAgB,CAAC,MAAM;IAC9C,YAAY,KAAK,SAAS;IAC1B,gBAAgB,OAAO,gBAAgB,CAAC,OAAO;IAC/C,YAAY,KAAK,QAAQ;IACzB,gBAAgB,QAAQ,MAAM;IAC9B,oBAAoB,KAAK,MAAM;IAC/B,oBAAoB,KAAK,WAAW;IACpC,wBAAwB,OAAO,gBAAgB,CAAC,QAAQ;IACxD,oBAAoB,KAAK,MAAM;IAC/B,wBAAwB,OAAO,gBAAgB,CAAC,MAAM;IACtD,oBAAoB,KAAK,QAAQ;IACjC,wBAAwB,MAAM,CAAC,4BAA4B,CAAC;IAC5D;IACA,gBAAgB,OAAO,gBAAgB,CAAC,MAAM;IAC9C;IACA,QAAQ,OAAO,gBAAgB,CAAC,MAAM;IACtC,IAAI;IACJ,IAAI,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE;IACvC,QAAQ,OAAO,CAAC,SAAS,CAAC,UAAU,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI;IACrD,YAAY,MAAM,EAAE,GAAG,CAAC;IACxB,YAAY,IAAI,MAAM,GAAG;IACzB,gBAAgB,IAAI,EAAE,EAAE,CAAC,IAAI;IAC7B,gBAAgB,QAAQ,EAAE,EAAE,CAAC,QAAQ,IAAI;IACzC,aAAa;IACb,YAAY,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI;IAC7B,YAAY,IAAI,CAAC,CAAC,MAAM,EAAE;IAC1B,gBAAgB,IAAI,KAAK,GAAG,CAAC;IAC7B,gBAAgB,MAAM,CAAC,IAAI,GAAG,gBAAgB,CAAC,MAAM;IACrD,gBAAgB,IAAI,IAAI,GAAG,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IACxF,gBAAgB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACpD,YAAY;IACZ,iBAAiB,IAAI,IAAI,EAAE;IAC3B,gBAAgB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACjE,YAAY;IACZ,YAAY,OAAO,MAAM;IACzB,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE;IACrC,QAAQ,IAAI,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;IAC3C,QAAQ,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM;IAC7B,YAAY,OAAO,IAAI;IACvB,QAAQ,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE,IAAI,EAAE,IAAI;IACzD,QAAQ,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE;IAC5B,YAAY,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;IAC3D,YAAY,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACzC,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,GAAG,EAAE,CAAC,MAAM;IAC5B,YAAY,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;IACjC,gBAAgB,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;IAC5D,oBAAoB,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;IACzE,oBAAoB,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACjD,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK;IAC1C,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;IACzD,IAAI;IACJ;;ICtIA;IACO,MAAM,cAAc,SAAS,aAAa,CAAC;IAClD;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE;IACxB,QAAQ,IAAI,CAAC,GAAG,OAAO;IACvB,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;IACnC,YAAY,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7B,QAAQ;IACR,QAAQ,MAAM,IAAI,GAAG,CAAC;IACtB,QAAQ,MAAM,SAAS,GAAG,EAAE;IAC5B,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;IACvF,QAAQ,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;IACrC,YAAY,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;IACjD,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACzD,gBAAgB,SAAS,CAAC,IAAI,CAAC;IAC/B,oBAAoB,IAAI;IACxB,oBAAoB,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;IAChD,oBAAoB,UAAU,EAAE,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,UAAU,CAAC;IACjF,oBAAoB,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,QAAQ,CAAC,SAAS;IAClF,iBAAiB,CAAC;IAClB,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE;IACvD,IAAI;IACJ,IAAI,uBAAuB,CAAC,UAAU,GAAG,EAAE,EAAE;IAC7C,QAAQ,MAAM,MAAM,GAAG,EAAE;IACzB,QAAQ,KAAK,IAAI,CAAC,IAAI,UAAU,EAAE;IAClC,YAAY,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM;IACnC,YAAY,IAAI,MAAM,IAAI,MAAM,EAAE;IAClC,gBAAgB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;IAC7H,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,MAAM;IACrB,IAAI;IACJ,IAAI,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;IACjC,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,QAAQ;IACzB,YAAY,KAAK,SAAS;IAC1B,gBAAgB,OAAO,gBAAgB,CAAC,MAAM;IAC9C,YAAY,KAAK,SAAS;IAC1B,gBAAgB,OAAO,gBAAgB,CAAC,OAAO;IAC/C,YAAY,KAAK,QAAQ;IACzB,gBAAgB,QAAQ,MAAM;IAC9B,oBAAoB,KAAK,MAAM;IAC/B,oBAAoB,KAAK,WAAW;IACpC,wBAAwB,OAAO,gBAAgB,CAAC,QAAQ;IACxD,oBAAoB,KAAK,MAAM;IAC/B,wBAAwB,OAAO,gBAAgB,CAAC,MAAM;IACtD,oBAAoB,KAAK,QAAQ;IACjC,wBAAwB,MAAM,CAAC,4BAA4B,CAAC;IAC5D;IACA,gBAAgB,OAAO,gBAAgB,CAAC,MAAM;IAC9C;IACA,QAAQ,OAAO,gBAAgB,CAAC,MAAM;IACtC,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE;IAC1C,QAAQ,MAAM,MAAM,GAAG,EAAE;IACzB,QAAQ,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;IACpC,YAAY,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;IAC5E,QAAQ;IACR,QAAQ,OAAO,MAAM;IACrB,IAAI;IACJ,IAAI,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE;IAC7C,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;IAChC,YAAY,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IACrC,QAAQ;IACR,QAAQ,IAAI,IAAI,IAAI,OAAO,EAAE;IAC7B;IACA,YAAY,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACxC,YAAY,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;IACtC,YAAY,OAAO,MAAM;IACzB,QAAQ;IACR,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,mBAAmB,CAAC,iBAAiB,EAAE;IAC3C,QAAQ,IAAI,OAAO,GAAG,8BAA8B;IACpD,QAAQ,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACjD,QAAQ,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;IACzC,YAAY,OAAO,iBAAiB;IACpC,QAAQ,OAAO,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI;IACJ,IAAI,eAAe,CAAC,WAAW,EAAE,SAAS,EAAE;IAC5C,QAAQ,MAAM,SAAS,GAAG,EAAE,SAAS,EAAE;IACvC,QAAQ,IAAI,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;IAC3C,QAAQ,IAAIC,eAAK,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE;IACnD,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,IAAI,MAAM;IAClB,QAAQ,KAAK,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;IACrC,YAAY,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM;IAC5C,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,IAAI,GAAG,QAAQ,EAAE,IAAI,EAAE,IAAI;IACvC,QAAQ,IAAI,MAAM,IAAI,MAAM,EAAE;IAC9B,YAAY,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC;IACxD,gBAAgB,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;IACxC,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,GAAG,MAAM,CAAC,IAAI;IAC9B,YAAY,IAAI,GAAG,MAAM;IACzB,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;IACzC,gBAAgB,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;IAC5C,oBAAoB,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;IACtE,oBAAoB,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;IAC5C,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,IAAI,GAAG,MAAM,CAAC,KAAK;IACvC,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;IAC7C,IAAI;IACJ;;ICpHA;IACA;IACO,MAAM,aAAa,SAAS,aAAa,CAAC;IACjD,IAAI,WAAW,CAAC,SAAS,GAAG,IAAI,cAAc,EAAE,EAAE,QAAQ,GAAG,IAAI,aAAa,EAAE,EAAE;IAClF,QAAQ,KAAK,EAAE;IACf,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS;IAClC,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAChC,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE;IACxB,QAAQ,IAAI,CAAC,GAAG,OAAO;IACvB,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;IACnC,YAAY,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7B,QAAQ;IACR,QAAQ,MAAM,IAAI,GAAG,CAAC;IACtB,QAAQ,IAAI,SAAS,IAAI,IAAI,EAAE;IAC/B,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC;IAClD,QAAQ;IACR,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC;IAC7C,IAAI;IACJ;IACA;;;;;;;;;;;;IC7BA,IAAIC,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAED,MAAM,8BAA8B,GAAG;IACvC,IAAI,OAAO,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,KAAK,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACpF,IAAI,SAAS,EAAE,CAAC,aAAa,EAAE,kBAAkB,EAAE,IAAI,EAAE,UAAU,KAAK,UAAU,CAAC,YAAY,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,UAAU,CAAC,YAAY,GAAG,aAAa,GAAG,kBAAkB,GAAG,GAAG,GAAG,IAAI,CAAC;IAC3M,IAAI,cAAc,EAAE,CAAC,WAAW,EAAE,UAAU,KAAK,UAAU,CAAC,kBAAkB,GAAG,WAAW;IAC5F,CAAC;IACD;IACO,MAAM,KAAK,CAAC;IACnB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,OAAO,gBAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE;IAC3D,QAAQ,OAAO,KAAK,CAAC,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC;IACrE,IAAI;IACJ,IAAI,OAAO,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,EAAE,EAAE;IACzE,QAAQ,OAAO,GAAGF,eAAK,CAAC,MAAM,CAAC,EAAE,EAAE,8BAA8B,EAAE,OAAO,CAAC;IAC3E,QAAQ,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE;IACzC;IACA,YAAY,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,CAACA,eAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IACjG,gBAAgB,MAAM,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG;IACpD,gBAAgB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC;IAC1F,YAAY;IACZ,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE;IAC7D,YAAY,MAAM,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI;IAC/C,YAAY,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,IAAI,OAAO,CAAC,IAAI;IACxF,YAAY,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,IAAI,OAAO,CAAC,SAAS;IACvG,YAAY,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,CAAC,IAAI,OAAO,CAAC,WAAW;IAC7G,YAAY,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;IACrD,gBAAgB,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;IACnD,oBAAoB,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC;IACpF,oBAAoB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;IACvD,wBAAwB,OAAO,CAAC,OAAO,GAAG,OAAO;IACjD,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,YAAY,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;IACvD,gBAAgB,MAAM,QAAQ,GAAG,EAAE;IACnC,gBAAgB,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;IACvD,oBAAoB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI;IAC/C,oBAAoB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;IAClD,wBAAwB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;IACjF,wBAAwB,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC;IACjG,wBAAwB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE;IAChE,4BAA4B,SAAS,CAAC,cAAc,CAAC,GAAG,YAAY;IACpE,wBAAwB;IACxB,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,QAAQ;IACvB,IAAI;IACJ;AACAC,gBAAU,CAAC;IACX,IAAIE,qBAAW,CAAC,wBAAwB;IACxC,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,CAAC;IACnC;;;;;;;;;;;;;;;IClEA,IAAIF,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACO,MAAM,mBAAmB,GAAG,QAAQ;IAC3C;IACO,MAAM,kBAAkB,GAAG,OAAO;IACzC;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,eAAe,SAASJ,0BAAgB,CAAC;IACtD,IAAI,WAAW,CAAC,IAAI,EAAE;IACtB,QAAQ,KAAK,CAAC,mBAAmB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC7E,IAAI;IACJ;IACA;IACO,MAAM,cAAc,SAAS,KAAK,CAAC;IAC1C,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACtE,IAAI;IACJ;IACA;IACA,MAAM,qBAAqB,GAAG,CAAC,UAAU,mDAAmD,oBAAoB,eAAeM,0BAAgB,CAAC;IAChJ;IACA,MAAM,yBAAyB,GAAG,KAAK;IACvC;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,gBAAgB,CAAC;IAC9B,IAAI,WAAW,CAAC,QAAQ,EAAE;IAC1B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAChC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,KAAK;IACvC;IACA,YAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACnC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAKA,0BAAgB,EAAE;IAC7C;IACA,gBAAgB,MAAM,GAAG,GAAG,CAAC;IAC7B,gBAAgB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IAC5I,YAAY;IACZ,QAAQ,CAAC;IACT,IAAI;IACJ;IACA,IAAI,KAAK,GAAG;IACZ,QAAQ,qBAAqB,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAC3G,IAAI;IACJ;IACA,IAAI,IAAI,GAAG;IACX,QAAQ,qBAAqB,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAC9G,IAAI;IACJ;IACA;IACO,MAAM,wBAAwB,SAASC,oBAAU,CAAC,YAAY,CAAC;IACtE,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,IAAI,GAAGC,4BAAkB,CAAC,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,CAAC;IACjF,IAAI;IACJ;AACAL,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IACtD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,gBAAgB,GAAG,MAAM,gBAAgB,SAAS,wBAAwB,CAAC;IAC/E,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,MAAM,CAAC;IACrB;IACA,QAAQ,IAAI,CAAC,MAAM,GAAGT,aAAG,CAAC,UAAU,CAAC,IAAI;IACzC,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI;IAC5B,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IAC/D,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK;IAC9B,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,KAAK;IACtC,YAAY,IAAI,GAAG,CAAC,OAAO,iBAAiB;IAC5C;IACA,mBAAmB,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;IACjF,gBAAgB,IAAI,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,aAAa,CAACU,WAAC,GAAG,sBAAsB,CAAC;IACrF,gBAAgB,IAAI,CAACT,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAIA,eAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;IACjF,oBAAoB,GAAG,CAAC,KAAK,EAAE;IAC/B,gBAAgB;IAChB,YAAY;IACZ,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK;IACzC,YAAY,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;IACpC,gBAAgBU,sBAAY,CAAC,GAAG,CAAC;IACjC,YAAY;IACZ,YAAY,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI;IAC7D,gBAAgB,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,EAAE;IAC1D,oBAAoB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI;IACnD;IACA,wBAAwB,IAAI,CAAC,WAAW,EAAE;IAC1C,oBAAoB,CAAC,EAAE,CAAC,IAAI;IAC5B;IACA,oBAAoB,CAAC,CAAC;IACtB,gBAAgB;IAChB,YAAY,CAAC,CAAC;IACd,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK;IAC/B,YAAY,IAAI,CAACV,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC;IAClC,gBAAgBU,sBAAY,CAAC,GAAG,CAAC;IACjC,YAAY,IAAI,QAAQ,GAAG,IAAI,cAAc,EAAE;IAC/C,YAAY,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;IACxC,YAAY,IAAI,QAAQ,CAAC,gBAAgB,EAAE;IAC3C,gBAAgB;IAChB,YAAY;IACZ;IACA;IACA,YAAY,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;IAC5C,gBAAgB,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC7C,gBAAgB,IAAI,GAAG,YAAY,iBAAiB;IACpD,oBAAoB,GAAG,CAAC,KAAK,EAAE;IAC/B,YAAY;IACZ;IACA,YAAY,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;IAC7C,gBAAgB,IAAI,CAAC,MAAM,EAAE;IAC7B,YAAY;IACZ,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE;IACzB,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE;IAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE;IAC3B,QAAQ,IAAI,CAAC,qBAAqB,GAAG,CAAC,GAAG,KAAK;IAC9C,YAAY,QAAQ,GAAG,CAAC,MAAM,CAAC,YAAY;IAC3C,gBAAgB,KAAK,OAAO;IAC5B;IACA,oBAAoB,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM;IAC1C,oBAAoB,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC;IACxD,oBAAoB;IACpB,gBAAgB,KAAK,OAAO;IAC5B,oBAAoB,IAAI,CAAC,eAAe,EAAE;IAC1C,oBAAoB;IACpB,gBAAgB,KAAK,OAAO;IAC5B,oBAAoB,IAAI,CAAC,cAAc,EAAE;IACzC,oBAAoB;IACpB;IACA,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,yBAAyB,GAAG,CAAC,GAAG,KAAK;IAClD,YAAY,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,SAAS,CAAC,KAAK;IAChE,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE;IACvD,gBAAgB,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;IACzD,gBAAgB,IAAI,SAAS,CAAC,OAAO;IACrC,oBAAoB,KAAK,CAAC,KAAK,GAAG,KAAK;IACvC;IACA,oBAAoB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;IAClD,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;IAC9C,YAAY;IACZ,QAAQ,CAAC;IACT;IACA;IACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI;IACpC;IACA,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI;IAC9B,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC;IAClD,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,CAACV,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;IACnG,aAAa,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC;IAC/D,aAAa,IAAI,KAAK,cAAc,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;IAChI,YAAY,IAAI,CAAC,YAAY,EAAE;IAC/B,QAAQ;IAQR,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;IACpD,QAAQ,IAAI,CAAC,cAAc,EAAE;IAC7B,QAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IACjE,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IAC7B,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IAC5B,QAAQ,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IACpE,QAAQ,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;IACtD,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ,IAAI,YAAY,GAAG;IACnB,QAAQ,MAAM,GAAG,GAAG,GAAG,GAAGA,eAAK,CAAC,UAAU,EAAE;IAC5C,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC;IAC9C,QAAQ,MAAM,KAAK,GAAG,OAAO,GAAG,GAAG;IACnC;IACA,QAAQ,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;IACnD,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,GAAG;IAC9B,QAAQ,IAAI,CAAC,SAAS,GAAGW,cAAI,GAAG,OAAO;IACvC,QAAQ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;IACtC,QAAQ,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC;IAC3C,QAAQ,MAAM,IAAI,GAAG,CAAC,CAAC,EAAEF,WAAC,CAAC,0BAA0B,EAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC;AAC1G,KAAK,EAAEA,WAAC,CAAC,gBAAgB,EAAE,GAAG,CAAC,sBAAsB,EAAE,GAAG,CAAC,0CAA0C,EAAE,GAAG,CAAC,sBAAsB,EAAE,GAAG,CAAC,0CAA0C,EAAE,GAAG,CAAC,yDAAyD,EAAEE,cAAI,CAAC,iBAAiB,EAAEA,cAAI,CAAC;AAC/Q;AACA,aAAa,EAAEF,WAAC,CAAC,mCAAmC,EAAE,GAAG,CAAC,yCAAyC,EAAE,GAAG,CAAC;AACzG,wBAAwB,EAAE,GAAG,CAAC,wBAAwB,EAAE,GAAG,CAAC;AAC5D,iDAAiD,EAAE,GAAG,CAAC,oCAAoC,EAAEA,WAAC,CAAC;AAC/F;AACA,MAAM,EAAEA,WAAC,CAAC;AACV,EAAE,EAAEA,WAAC,CAAC;AACN,CAAC,EAAEA,WAAC,CAAC,mBAAmB,EAAE,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,mCAAmC,EAAE,GAAG,CAAC,oBAAoB,EAAEA,WAAC,CAAC;AACxK,YAAY,EAAEE,cAAI,CAAC;AACnB;AACA,SAAS,EAAEF,WAAC,CAAC,oBAAoB,EAAE,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,mCAAmC,EAAE,GAAG,CAAC,4BAA4B,EAAE,GAAG,CAAC;AAC7N;AACA,mCAAmC,EAAE,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,0BAA0B,EAAE,GAAG,CAAC;AAChG,eAAe,EAAE,GAAG,CAAC,yBAAyB,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC;AACzF,aAAa,EAAEA,WAAC,CAAC,6BAA6B,EAAEE,cAAI,CAAC,2BAA2B,EAAE,GAAG,CAAC,wBAAwB,EAAEA,cAAI,CAAC,MAAM,EAAEA,cAAI,CAAC,6DAA6D,EAAEF,WAAC,CAAC;AACnM,aAAa,EAAEA,WAAC,CAAC,gBAAgB,EAAE,GAAG,CAAC,6BAA6B,EAAEA,WAAC,CAAC;AACxE,UAAU,EAAEA,WAAC,CAAC;AACd,SAAS,EAAEA,WAAC,CAAC,oBAAoB,EAAE,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC,uGAAuG,EAAE,GAAG,CAAC,mCAAmC,EAAE,GAAG,CAAC,4BAA4B,EAAE,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,0BAA0B,EAAE,GAAG,CAAC,yBAAyB,EAAE,GAAG,CAAC;AACnY,aAAa,EAAEA,WAAC,CAAC,gBAAgB,EAAE,GAAG,CAAC,+BAA+B,EAAEA,WAAC,CAAC;AAC1E,UAAU,EAAEA,WAAC,CAAC;AACd,YAAY,CAAC;IACb;IACA,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI;IAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE;IAC3B,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC9B,QAAQ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAEC,sBAAY,EAAE,KAAK,CAAC;IAC5D,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ;IACjC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG;IACpC,YAAY,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,iBAAiB;IAC7E,YAAY,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;IAC3D,SAAS;IACT,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAIE,6BAAmB,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IACtH,IAAI;IACJ;IACA,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAO,IAAI,CAAC,QAAQ;IAC5B,IAAI;IACJ,IAAI,SAAS;IACb;IACA,IAAI,IAAI,QAAQ,GAAG;IACnB,QAAQ,OAAO,IAAI,CAAC,SAAS;IAC7B,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,MAAM,CAAC,OAAO,EAAE;IACpB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IAChD,YAAY,IAAIZ,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IACvC,gBAAgB,MAAM,CAAC,CAAC,+CAA+C,CAAC,CAAC;IACzE,YAAY;IACZ,YAAY,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI;IAC3D,gBAAgB,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClF,gBAAgB,OAAO,CAAC,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,GAAG,IAAI;IACtB,gBAAgB,IAAI,GAAG,KAAK,yBAAyB,EAAE;IACvD,oBAAoB,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAChF,gBAAgB;IAChB,gBAAgB,MAAM,CAAC,GAAG,CAAC;IAC3B,YAAY,CAAC,CAAC;IACd,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA,IAAI,KAAK,GAAG;IACZ,QAAQ,IAAI,CAAC,MAAM,EAAE;IACrB,IAAI;IACJ,IAAI,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE;IACrC,QAAQ,IAAIA,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC;IACjC,YAAY,MAAM,CAAC,+CAA+C,CAAC;IACnE,QAAQ,IAAI,QAAQ,GAAGa,sBAAY,CAAC,KAAK,EAAE;IAC3C,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC,UAAU;IAChE,QAAQ,IAAI,KAAK,GAAG,EAAE;IACtB,QAAQ,IAAI,CAACb,eAAK,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;IAC9C,YAAY,KAAK,CAAC,UAAU,CAAC,GAAG,MAAM;IACtC,QAAQ;IACR,aAAa;IACb,YAAY,KAAK,GAAG,MAAM;IAC1B,QAAQ;IACR,QAAQ,IAAI,IAAI,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE;IACtE;IACA,QAAQ,IAAI,SAAS,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC;IACjD,QAAQ,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;IACrC,QAAQ,IAAI,SAAS,CAAC,gBAAgB,EAAE;IACxC;IACA,YAAY,QAAQ,CAAC,MAAM,CAAC,yBAAyB,CAAC;IACtD,QAAQ;IACR,aAAa;IACb;IACA,YAAY,OAAO,CAAC,UAAU,GAAGA,eAAK,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;IAC9E;IACA,YAAY,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK;IACvC,gBAAgB,OAAO,CAAC,mBAAmB,CAACD,aAAG,CAAC,qBAAqB,EAAE,SAAS,EAAE,KAAK,CAAC;IACxF,gBAAgB,OAAO,CAAC,mBAAmB,CAACA,aAAG,CAAC,mBAAmB,EAAE,OAAO,EAAE,KAAK,CAAC;IACpF,gBAAgB,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,GAAGA,aAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACpE,gBAAgB,IAAI,KAAK,EAAE;IAC3B;IACA,oBAAoB,OAAO,CAAC,mBAAmB,CAACA,aAAG,CAAC,oBAAoB,EAAE,QAAQ,EAAE,KAAK,CAAC;IAC1F,oBAAoB,IAAI,CAAC,OAAO,GAAG,IAAI;IACvC,oBAAoB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,gBAAgB;IAChB,gBAAgB,QAAQ,CAAC,CAAC,MAAM;IAChC,oBAAoB,KAAK,GAAG;IAC5B,wBAAwB,IAAI,CAAC,MAAM,EAAE;IACrC,wBAAwB;IACxB;IACA,YAAY,CAAC;IACb;IACA,YAAY,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK;IACtC;IACA,gBAAgB,OAAO,CAAC,mBAAmB,CAACA,aAAG,CAAC,oBAAoB,EAAE,QAAQ,EAAE,KAAK,CAAC;IACtF;IACA,gBAAgB,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM;IACvC,gBAAgB,IAAI,QAAQ,MAAM,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;IACtF;IACA,oBAAoB,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE;IACjD,wBAAwB,IAAI,CAAC,OAAO,GAAG,IAAI;IAC3C,wBAAwB,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IAC7D,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB,IAAI,CAAC,IAAI,GAAG,IAAI;IACxC,wBAAwB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;IACrD,oBAAoB;IACpB,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,IAAI,CAAC,OAAO,GAAG,IAAI;IACvC,oBAAoB,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;IAC5C,gBAAgB;IAChB,YAAY,CAAC;IACb;IACA,YAAY,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK;IACrC;IACA,gBAAgB,OAAO,CAAC,mBAAmB,CAACA,aAAG,CAAC,qBAAqB,EAAE,SAAS,EAAE,KAAK,CAAC;IACxF,gBAAgB,OAAO,CAAC,mBAAmB,CAACA,aAAG,CAAC,oBAAoB,EAAE,QAAQ,EAAE,KAAK,CAAC;IACtF,gBAAgB,OAAO,CAAC,mBAAmB,CAACA,aAAG,CAAC,mBAAmB,EAAE,OAAO,EAAE,KAAK,CAAC;IACpF,gBAAgB,IAAI,CAAC,IAAI,GAAG,IAAI;IAChC,gBAAgB,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM;IAC3C,gBAAgB,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;IACzC,YAAY,CAAC;IACb;IACA,YAAY,MAAM,YAAY,GAAG,CAAC,GAAG,KAAK;IAC1C,gBAAgB,QAAQ,GAAG,CAAC,MAAM,CAAC,YAAY;IAC/C,oBAAoB,KAAK,UAAU;IACnC,wBAAwB,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,IAAI,EAAE;IAC9D,4BAA4BC,eAAK,CAAC,QAAQ,CAAC,IAAI,EAAEW,cAAI,GAAG,WAAW,CAAC;IACpE,4BAA4B,IAAI,CAAC,SAAS,GAAG,IAAI;IACjD,4BAA4B,IAAI,CAAC,aAAa,CAAC,IAAIC,6BAAmB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1I,wBAAwB;IACxB,6BAA6B;IAC7B,4BAA4B,IAAI,CAAC,SAAS,GAAG,KAAK;IAClD,4BAA4B,IAAI,CAAC,aAAa,CAAC,IAAIA,6BAAmB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1I,4BAA4BZ,eAAK,CAAC,WAAW,CAAC,IAAI,EAAEW,cAAI,GAAG,WAAW,CAAC;IACvE,4BAA4B,OAAO,CAAC,mBAAmB,CAACG,iCAAuB,EAAE,YAAY,EAAE,KAAK,CAAC;IACrG,wBAAwB;IACxB,wBAAwB;IACxB;IACA,YAAY,CAAC;IACb,YAAY,OAAO,CAAC,gBAAgB,CAACA,iCAAuB,EAAE,YAAY,EAAE,KAAK,CAAC;IAClF,YAAY,OAAO,CAAC,gBAAgB,CAACf,aAAG,CAAC,qBAAqB,EAAE,SAAS,EAAE,KAAK,CAAC;IACjF,YAAY,OAAO,CAAC,gBAAgB,CAACA,aAAG,CAAC,oBAAoB,EAAE,QAAQ,EAAE,KAAK,CAAC;IAC/E,YAAY,OAAO,CAAC,gBAAgB,CAACA,aAAG,CAAC,mBAAmB,EAAE,OAAO,EAAE,KAAK,CAAC;IAC7E,YAAY,IAAI,CAACC,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IACnD,gBAAgB,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM;IACzC,YAAY;IACZ;IACA,YAAY,IAAI,OAAO,YAAYK,oBAAU,CAAC,iBAAiB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;IACvF,gBAAgB,OAAO,CAAC,KAAK,EAAE;IAC/B,YAAY;IACZ,YAAY,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK;IAC5C,QAAQ;IACR;IACA,QAAQ,OAAO,QAAQ,CAAC,OAAO;IAC/B,IAAI;IACJ,IAAI,aAAa,CAAC,WAAW,GAAG,EAAE,EAAE;IACpC,QAAQL,eAAK,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC;IAC/C,QAAQ,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;IACzC,YAAY,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;IAC3C,QAAQ;IACR,QAAQ,OAAO,WAAW;IAC1B,IAAI;IACJ;IACA,IAAI,KAAK,CAAC,KAAK,EAAE;IACjB,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;IACxC,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,CAAC,MAAM,GAAGA,eAAK,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;IAC1D,QAAQ,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;IAChC,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC/B,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,WAAW,CAAC,GAAG,KAAK,EAAE;IAC1B,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC;IACpC,IAAI;IACJ;IACA,IAAI,QAAQ,CAAC,GAAG,KAAK,EAAE;IACvB,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC;IACnC,IAAI;IACJ,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE;IAC5B,QAAQ,MAAM,QAAQ,GAAG,CAACA,eAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAC9C,QAAQ,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;IACxC,YAAY,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;IACxD,gBAAgB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC/C,gBAAgB,IAAI,GAAG,YAAY,iBAAiB,EAAE;IACtD,oBAAoB,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE;IAC9D,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,QAAQ,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;IACzC,YAAY,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;IACxE,QAAQ;IACR,IAAI;IACJ,IAAI,mBAAmB,CAAC,IAAI,EAAE;IAC9B,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;IACpC,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IACxC,QAAQ;IACR,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;IAClC,YAAY,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;IACnD,QAAQ;IACR,QAAQ,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;IACrC,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,QAAQ,CAAC,IAAI,EAAE;IACnB,QAAQ,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;IACxC,YAAY,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;IACnD,QAAQ;IACR,aAAa;IACb,YAAY,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC;IAChG,QAAQ;IACR,IAAI;IACJ,IAAI,kBAAkB,CAAC,UAAU,GAAG,IAAI,EAAE;IAC1C,QAAQ,MAAM,KAAK,GAAG,EAAE;IACxB,QAAQ,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;IACxC,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC9D,QAAQ;IACR,QAAQ,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE;IACxC,YAAY,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACjF,QAAQ;IACR,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ;IACA;IACA,IAAI,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE;IACrC,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK;IAC3C,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1C,YAAY,IAAI,KAAK,EAAE;IACvB,gBAAgB,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;IAC7D,gBAAgB,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;IACzD,oBAAoB,IAAI,CAAC,GAAG,CAACe,iBAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzF,oBAAoB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK;IAC1E,yBAAyB,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,yBAAyB,IAAI,CAAC,OAAO,IAAI;IACzC,wBAAwB,IAAI,KAAK,GAAG,IAAI;IACxC,wBAAwB,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;IACpD,4BAA4B,IAAI,MAAM,KAAK,KAAK,EAAE;IAClD,gCAAgC,KAAK,GAAG,KAAK;IAC7C;IACA,gCAAgC,IAAI,UAAU,EAAE;IAChD,oCAAoC,KAAK,CAAC,QAAQ,EAAE;IACpD,gCAAgC;IAChC,gCAAgC;IAChC,4BAA4B;IAC5B,wBAAwB;IACxB,wBAAwB,IAAI,CAAC,GAAG,CAACA,iBAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,GAAG,KAAK,GAAG,EAAE,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC;IACjI,wBAAwB,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IACpD,oBAAoB,CAAC,CAAC;IACtB,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,IAAI,CAAC,GAAG,CAACA,iBAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjG,oBAAoB,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;IAC/C,gBAAgB;IAChB,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,IAAI,CAAC,GAAG,CAACA,iBAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAChG,gBAAgB,OAAO,CAAC,IAAI,CAAC;IAC7B,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA,IAAI,eAAe,GAAG;IACtB,QAAQ,IAAI,KAAK,GAAG,KAAK;IACzB,QAAQ,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;IACxC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE;IACpD,gBAAgB,KAAK,GAAG,IAAI;IAC5B,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,QAAQ,gBAAgB,KAAK,KAAK,KAAK,EAAE;IACzC,YAAY,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;IAC7C,gBAAgB,IAAI,IAAI,CAAC,KAAK,EAAE;IAChC,oBAAoB,KAAK,GAAG,IAAI;IAChC,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;IAC1B,IAAI;IACJ;IACA,IAAI,cAAc,GAAG;IACrB,QAAQ,IAAI,KAAK,GAAG,IAAI;IACxB,QAAQ,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;IACxC,YAAY,IAAI,CAAC,GAAG,CAACA,iBAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3E,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE;IACrD,gBAAgB,IAAI,CAAC,GAAG,CAACA,iBAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAC1E,gBAAgB,KAAK,GAAG,KAAK;IAC7B,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,QAAQ,gBAAgB,KAAK,KAAK,IAAI,EAAE;IACxC,YAAY,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;IAC7C,gBAAgB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;IACjC,oBAAoB,KAAK,GAAG,KAAK;IACjC,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;IAC1B,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,eAAe,CAAC,IAAI,EAAE;IAC1B,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS;IAChC,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;IACrC,YAAY,IAAI,CAAC,gBAAgB,CAACD,iCAAuB,EAAE,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC;IAC7F,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B,YAAY,IAAI,CAAC,cAAc,EAAE;IACjC,YAAY,IAAI,CAAC,eAAe,EAAE;IAClC,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,iBAAiB,CAAC,IAAI,EAAE;IAC5B,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;IACzD,QAAQ,IAAI,GAAG,IAAI,CAAC,EAAE;IACtB,YAAY,IAAI,CAAC,mBAAmB,CAACA,iCAAuB,EAAE,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC;IAChG,YAAY,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9B,YAAY,IAAI,CAAC,cAAc,EAAE;IACjC,YAAY,IAAI,CAAC,eAAe,EAAE;IAClC,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE;IAC/B,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO;IACpC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE;IACtC,YAAY,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC;IAC7C,YAAY,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK;IACnC,YAAY,IAAI,CAAC,GAAG,CAACC,iBAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1E,YAAY,IAAI,KAAK,YAAY,WAAW,EAAE;IAC9C,gBAAgB,KAAK,CAAC,gBAAgB,CAACD,iCAAuB,EAAE,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC;IAClG,YAAY;IACZ,YAAY,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;IAC1C,YAAY,IAAI,CAAC,eAAe,EAAE;IAClC,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,eAAe,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE;IACxC,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC;IAC/D,QAAQ,IAAI,OAAO,YAAY,WAAW,EAAE;IAC5C,YAAY,OAAO,CAAC,mBAAmB,CAACA,iCAAuB,EAAE,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC;IACnG,QAAQ;IACR,QAAQ,OAAO,SAAS,CAAC,IAAI,CAAC;IAC9B,QAAQ,IAAI,OAAO,IAAI,KAAK,KAAK,IAAI,EAAE;IACvC,YAAY,IAAI,CAAC,cAAc,EAAE;IACjC,YAAY,IAAI,CAAC,eAAe,EAAE;IAClC,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE;IACvC,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;IACnH,QAAQ,IAAI,KAAK,IAAI,EAAE,EAAE;IACzB,YAAY,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;IACrC,YAAY,IAAI,SAAS,YAAY,WAAW,EAAE;IAClD,gBAAgB,SAAS,CAAC,gBAAgB,CAACA,iCAAuB,EAAE,IAAI,CAAC,yBAAyB,EAAE,KAAK,CAAC;IAC1G,YAAY;IACZ,YAAY,IAAI,CAAC,GAAG,CAACC,iBAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC5G;IACA,YAAY,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;IAC1C,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE;IACzC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC;IACxD,IAAI;IACJ,IAAI,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;IACjD,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;IACnH,QAAQ,IAAI,KAAK,IAAI,CAAC,EAAE;IACxB,YAAY,IAAI,SAAS,YAAY,WAAW,EAAE;IAClD,gBAAgB,SAAS,CAAC,mBAAmB,CAACD,iCAAuB,EAAE,IAAI,CAAC,yBAAyB,EAAE,KAAK,CAAC;IAC7G,YAAY;IACZ,YAAY,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACtC,YAAY,IAAI,KAAK,EAAE;IACvB,gBAAgB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;IAC9C,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,CAAC;AACDb,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IAChE,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AACjDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,kBAAkB,EAAE,MAAM,CAAC;AAC1DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAC7D,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AACtDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IACrE,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAChDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IACrE,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC;AACvDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IACrE,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AACtDP,gBAAU,CAAC;IACX,IAAIe,kBAAQ,CAAC,GAAG;IAChB,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC;AACpDf,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACtE,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AAC/CP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACtE,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AAC/CP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACtE,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AAClDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AACjDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAC9CP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAChD,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAChDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AACpDP,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AAClDN,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IAChE,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AACtDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,kBAAkB,EAAE,MAAM,CAAC;AAC1DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IAChE,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AACpDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;IAChD,gBAAgB,GAAGP,YAAU,CAAC;IAC9B,IAAIgB,uBAAa,CAAC,EAAE,OAAO,EAAER,WAAC,GAAG,OAAO,EAAE;IAC1C,CAAC,EAAE,gBAAgB,CAAC;;ICprBpB,IAAIR,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACA,MAAM,oBAAoB,GAAG,4BAA4B;IACzD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,iBAAiB,SAAS,wBAAwB,CAAC;IAChE,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,2BAA2B,EAAE;IAC1C,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5C,IAAI;IACJ,IAAI,2BAA2B,GAAG;IAClC,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI;IAChD,QAAQ,IAAI,CAACF,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI;IAC5D,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU;IAC7C,oBAAoB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,CAAC,EAAE;IAC5G,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC;IAC1C;IACA,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;IAC7C,gBAAgB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,MAAM,GAAGA,eAAK,CAAC,UAAU,EAAE;IAC/E,gBAAgB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACrF,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,OAAO;IACxB,gBAAgB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;IACvD,gBAAgB;IAChB,YAAY,KAAK,OAAO;IACxB,gBAAgB,IAAI,CAAC,GAAG,EAAE;IAC1B,oBAAoBA,eAAK,CAAC,QAAQ,CAAC,IAAI,EAAEW,cAAI,GAAG,UAAU,CAAC;IAC3D,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoBX,eAAK,CAAC,WAAW,CAAC,IAAI,EAAEW,cAAI,GAAG,UAAU,CAAC;IAC9D,gBAAgB;IAChB,gBAAgB;IAChB,YAAY,KAAK,OAAO;IACxB,gBAAgB,IAAI,GAAG,EAAE;IACzB,oBAAoBX,eAAK,CAAC,QAAQ,CAAC,IAAI,EAAEW,cAAI,GAAG,QAAQ,CAAC;IACzD,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoBX,eAAK,CAAC,WAAW,CAAC,IAAI,EAAEW,cAAI,GAAG,QAAQ,CAAC;IAC5D,gBAAgB;IAChB,gBAAgB;IAChB,YAAY,KAAK,MAAM;IACvB,gBAAgB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI;IACpC,gBAAgB,IAAI,IAAI,IAAI,IAAI,EAAE;IAClC,oBAAoB,IAAI,GAAG;IAC3B,wBAAwB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;IACjD,gBAAgB;IAChB,gBAAgB,IAAI,CAAC,2BAA2B,EAAE;IAClD,gBAAgB;IAChB,YAAY,KAAK,MAAM;IACvB,gBAAgB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;IACjC,gBAAgB,IAAI,CAACX,eAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;IAC7C,oBAAoB,IAAI,GAAG,IAAI,IAAI;IACnC,wBAAwB,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;IAC9C,gBAAgB;IAChB,gBAAgB,IAAI,CAAC,2BAA2B,EAAE;IAClD,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI;IAC9C,QAAQ,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IAC7D,YAAY,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;IACtC,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ;IACA,IAAI,IAAI,aAAa,GAAG;IACxB,QAAQ,OAAOM,4BAAkB,CAAC,wBAAwB,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACtF,IAAI;IACJ,IAAI,mBAAmB,CAAC,CAAC,EAAE;IAC3B,QAAQA,4BAAkB,CAAC,wBAAwB,CAAC,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAClF,IAAI;IACJ;IACA,IAAI,KAAK,GAAG;IACZ,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa;IACvC;IACA,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;IAC1B,IAAI;IACJ;IACA,IAAI,WAAW,GAAG;IAClB,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5C;IACA,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;IAC1B,IAAI;IACJ;IACA,IAAI,QAAQ,GAAG;IACf,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI;IACzB,IAAI;IACJ;AACAL,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,iBAAiB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACpDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC;IACV,QAAQ,SAAS,EAAE;IACnB,YAAY,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK;IACxC,gBAAgB,IAAI,EAAE,OAAO,YAAY,iBAAiB,CAAC,EAAE;IAC7D,oBAAoB,OAAO,IAAI;IAC/B,gBAAgB;IAChB,gBAAgB,OAAO,OAAO,CAAC,+BAA+B,CAAC,IAAI,CAAC;IACpE,YAAY,CAAC;IACb,YAAY,WAAW,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ;IAChD;IACA,KAAK;IACL,CAAC,EAAE,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AAChDN,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AAChDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AAChDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IAC/C;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,gBAAgB,SAAS,iBAAiB,CAAC;IACxD,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3B,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK;IACrC,YAAY,MAAM,eAAe,GAAG,CAAC,GAAG,GAAG,IAAI,KAAK;IACpD;IACA,gBAAgB,IAAIR,eAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,GAAGW,cAAI,GAAG,aAAa,CAAC,EAAE;IACpF,oBAAoB,CAAC,GAAG,GAAGX,eAAK,CAAC,QAAQ,GAAGA,eAAK,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,aAAa,EAAEW,cAAI,GAAG,QAAQ,CAAC,CAAC;IACjH,gBAAgB;IAChB,YAAY,CAAC;IACb,YAAY,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC;IAC/D,YAAY,QAAQ,GAAG,CAAC,IAAI;IAC5B,gBAAgB,KAAK,OAAO;IAC5B,oBAAoBX,eAAK,CAAC,QAAQ,CAAC,IAAI,EAAEW,cAAI,GAAG,QAAQ,CAAC;IACzD,oBAAoB,eAAe,EAAE;IACrC,oBAAoB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK;IACpD,oBAAoB;IACpB,gBAAgB,KAAK,MAAM;IAC3B,oBAAoBX,eAAK,CAAC,WAAW,CAAC,IAAI,EAAEW,cAAI,GAAG,QAAQ,CAAC;IAC5D,oBAAoB,cAAc,EAAE;IACpC,oBAAoB;IACpB;IACA,YAAY,IAAI,GAAG,CAAC,OAAO;IAC3B,gBAAgB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC9B;IACA,gBAAgB,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5D,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,KAAK;IACtC,YAAY,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK;IAClC,YAAY,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI;IACzC,gBAAgB,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;IAC9D,oBAAoB,IAAI,CAAC,aAAa,CAAC,IAAI,gBAAgB,CAAC;IAC5D,wBAAwB,SAAS,EAAE,IAAI,CAAC,IAAI;IAC5C,wBAAwB,QAAQ,EAAE,GAAG;IACrC,wBAAwB,YAAY,EAAE,CAAC;IACvC,wBAAwB,WAAW,EAAE,CAAC,IAAI,CAAC;IAC3C,qBAAqB,CAAC,CAAC;IACvB,oBAAoB,IAAI,CAAC,KAAK,GAAG,IAAI;IACrC,gBAAgB;IAChB,YAAY,CAAC,EAAE,CAAC,IAAI;IACpB;IACA,YAAY,CAAC,CAAC;IACd,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,KAAK;IACvC,YAAYO,gCAAsB,CAAC,GAAG,CAAC;IACvC,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK;IACrC,YAAY,QAAQ,GAAG,CAAC,OAAO;IAC/B,gBAAgB,eAAe,EAAE;IACjC,oBAAoBA,gCAAsB,CAAC,GAAG,CAAC;IAC/C;IACA,oBAAoB,IAAI,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE;IAClG,wBAAwB,IAAI,CAAC,KAAK,EAAE;IACpC,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc;IACxD,oBAAoB;IACpB,oBAAoB,IAAI,CAAC,IAAI,EAAE;IAC/B,oBAAoB;IACpB,gBAAgB,iBAAiB,EAAE;IACnC,oBAAoB,IAAI,IAAI,CAAC,qBAAqB,EAAE;IACpD,wBAAwBA,gCAAsB,CAAC,GAAG,CAAC;IACnD,oBAAoB;IACpB,oBAAoB;IACpB;IACA,QAAQ,CAAC;IACT,IAAI;IACJ,IAAI,0BAA0B,CAAC,GAAG,EAAE,GAAG,EAAE;IACzC,QAAQ,OAAOC,yBAAe,CAAC,GAAG,EAAE,GAAG,CAAC;IACxC,IAAI;IACJ;IACA,IAAI,IAAI,qBAAqB,GAAG;IAChC,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,UAAU;IAC3B,YAAY,KAAK,UAAU;IAC3B,YAAY,KAAK,WAAW;IAC5B,YAAY,KAAK,aAAa;IAC9B,YAAY,KAAK,UAAU;IAC3B,gBAAgB,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE;IACzD,oBAAoB,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC;IAC/F,gBAAgB;IAChB,gBAAgB;IAChB;IACA,YAAY,KAAK,UAAU;IAC3B,gBAAgB,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE;IACzD,oBAAoB,UAAU,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC;IAC5D,gBAAgB;IAChB,gBAAgB;IAChB,YAAY,KAAK,OAAO;IACxB,gBAAgB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IACrC,gBAAgB;IAChB;IACA,QAAQ,IAAI,IAAI,KAAK;IACrB,eAAe,IAAI,KAAK;IACxB,eAAe,IAAI,KAAK,UAAU,EAAE;IACpC,YAAY,IAAI,SAAS,GAAG,CAAC,EAAER,cAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7C,YAAY,GAAG,GAAGX,eAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,GAAGA,eAAK,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC;IACtF,QAAQ;IACR,QAAQ,IAAI,IAAI,KAAK,UAAU,EAAE;IACjC,YAAY,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC;IACxC,QAAQ;IACR;IACA,aAAa,IAAI,IAAI,KAAK,UAAU,EAAE;IACtC,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;IAC5D,QAAQ;IACR,aAAa,IAAI,IAAI,KAAK,OAAO,EAAE;IACnC;IACA;IACA,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC5E,QAAQ;IACR,IAAI;IACJ,IAAI,mBAAmB,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;IACxD,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAACA,eAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;IACvE,YAAY,WAAW,GAAG,CAAC,WAAW,CAAC;IACvC,QAAQ;IACR,QAAQ,KAAK,IAAI,UAAU,IAAI,WAAW,EAAE;IAC5C,YAAY,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IAC1E,YAAY,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IACzE,YAAY,UAAU,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IAC5E;IACA,YAAY,UAAU,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;IAC9E,YAAY,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IAC1E,YAAY,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAEkB,gCAAsB,EAAE,KAAK,CAAC;IACnF,YAAY,UAAU,CAAC,gBAAgB,CAAC,YAAY,EAAEA,gCAAsB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACjH,QAAQ;IACR,IAAI;IACJ,IAAI,qBAAqB,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;IAC1D,QAAQ,IAAI,CAAClB,eAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAACA,eAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;IACvE,YAAY,WAAW,GAAG,CAAC,WAAW,CAAC;IACvC,QAAQ;IACR,QAAQ,KAAK,IAAI,UAAU,IAAI,WAAW,EAAE;IAC5C,YAAY,IAAIA,eAAK,CAAC,MAAM,CAAC,UAAU,CAAC;IACxC,gBAAgB;IAChB,YAAY,UAAU,CAAC,mBAAmB,CAAC,YAAY,EAAEkB,gCAAsB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACpG,YAAY,UAAU,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;IACjF,YAAY,UAAU,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IAC7E,YAAY,UAAU,CAAC,mBAAmB,CAAC,WAAW,EAAEA,gCAAsB,EAAE,KAAK,CAAC;IACtF;IACA,YAAY,UAAU,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IAC/E,YAAY,UAAU,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IAC7E,YAAY,UAAU,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IAC5E,QAAQ;IACR,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC;IACvD;IACA,QAAQ,IAAI,CAAClB,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;IAC3C,YAAY,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzE,YAAY,IAAI,KAAK,EAAE;IACvB,gBAAgB,IAAI,KAAK,CAAC,EAAE,EAAE;IAC9B,oBAAoB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;IACpE,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC;IACxE,gBAAgB;IAChB,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC;IACzD,gBAAgB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;IACpD,YAAY;IAEZ,QAAQ;IACR;IACA,QAAQ,IAAI,CAAC,mBAAmB,EAAE;IAClC,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B;IACA,QAAQ,IAAI,CAAC,qBAAqB,EAAE;IACpC,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ,IAAI,KAAK,GAAG;IACZ,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW;IACvC,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;IACrC,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;IAC7B,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,GAAG;IACX,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW;IACvC,QAAQ,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;IAC1C,YAAY,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE;IACtC,gBAAgB,KAAK,CAAC,IAAI,EAAE;IAC5B,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ;AACAC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AAClDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACnDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AAClDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAC9CP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC;IACrD;IACA;IACA;IACA;IACA;IACO,MAAM,gBAAgB,SAASH,oBAAU,CAAC,YAAY,CAAC;IAC9D,IAAI,UAAU;IACd;IACA,IAAI,aAAa,GAAG;IACpB,QAAQ,OAAOC,4BAAkB,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,8BAA8B,CAAC;IACtG,IAAI;IACJ;IACA,IAAI,IAAI,SAAS,GAAG;IACpB,QAAQ,OAAO,IAAI,CAAC,UAAU;IAC9B,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;IAChE,QAAQ,IAAI,CAACN,eAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;IACtC,YAAY,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;IACpC,QAAQ;IACR,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;IAC5C,YAAY,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;IAC5C,QAAQ;IACR,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,8BAA8B,SAAS,gBAAgB,CAAC;IACrE;IACA;IACA;IACA;IACA,IAAI,QAAQ,CAAC,IAAI,EAAE;IACnB,QAAQ,IAAI,IAAI,GAAG,IAAI;IACvB,QAAQ,IAAIA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IACtC,YAAY,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC;IAC/B,QAAQ;IACR,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;IAClD,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,GAAG,KAAK;IACxB,QAAQ;IACR,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,UAAU,CAAC,IAAI,EAAE;IACrB,QAAQ,MAAM,GAAG,GAAG,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IACzE,QAAQ,IAAI,GAAG,IAAI,CAAC,EAAE;IACtB,YAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ;AACAC,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,8BAA8B,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;IAC7D;IACA,IAAI,oBAAoB,GAAG,MAAM,oBAAoB,SAAS,gBAAgB,CAAC;IAC/E,CAAC;AACDN,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC;IACV,QAAQ,SAAS,EAAE;IACnB,YAAY,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK;IACxC;IACA,gBAAgB,IAAI,IAAI,KAAK,MAAM;IACnC,oBAAoB,OAAO,IAAI;IAC/B,gBAAgB,IAAI,IAAI,KAAK,OAAO;IACpC,oBAAoB,OAAO,KAAK;IAChC;IACA,gBAAgB,IAAI,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC;IAC1C,gBAAgB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IAC/B,oBAAoB,OAAO,GAAG;IAC9B;IACA,gBAAgB,IAAI,IAAI,GAAGP,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;IAClD,gBAAgB,IAAIA,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IAC5C,oBAAoB,OAAO,IAAI;IAC/B,gBAAgB,OAAO,IAAI;IAC3B,YAAY,CAAC;IACb,YAAY,WAAW,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ;IAChD;IACA,KAAK;IACL,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AACnDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AACnDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;IACtD,oBAAoB,GAAGP,YAAU,CAAC;IAClC,IAAIgB,uBAAa,CAAC,EAAE,OAAO,EAAER,WAAC,GAAG,YAAY,EAAE;IAC/C,CAAC,EAAE,oBAAoB,CAAC;IAExB;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,sBAAsB,SAAS,8BAA8B,CAAC;IAC3E,IAAI,WAAW,CAAC,cAAc,GAAG,KAAK,EAAE;IACxC,QAAQ,KAAK,EAAE;IACf,QAAQ,IAAI,CAAC,cAAc,GAAG,cAAc;IAC5C,QAAQ,IAAI,CAAC,2BAA2B,GAAG,CAAC,GAAG,KAAK;IACpD,YAAY,IAAI,CAAC,QAAQ,EAAE;IAC3B,QAAQ,CAAC;IACT,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,QAAQ,CAAC,IAAI,EAAE;IACnB,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;IACzC,QAAQ,IAAI,IAAI,EAAE;IAClB,YAAY,IAAI,CAAC,gBAAgB,CAACK,iCAAuB,EAAE,IAAI,CAAC,2BAA2B,EAAE,KAAK,CAAC;IACnG,QAAQ;IACR,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,UAAU,CAAC,IAAI,EAAE;IACrB,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;IACzC,QAAQ,IAAI,IAAI,EAAE;IAClB,YAAY,IAAI,CAAC,mBAAmB,CAACA,iCAAuB,EAAE,IAAI,CAAC,2BAA2B,EAAE,KAAK,CAAC;IACtG,QAAQ;IACR,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ;IACA,IAAI,sBAAsB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;IACjD,QAAQ,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI;IACJ;IACA,IAAI,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;IACxE,QAAQ,IAAId,eAAK,CAAC,MAAM,CAAC,UAAU,CAAC,IAAIA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;IAC5E,YAAY;IACZ,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE,CAAC;IAC7D;IAEA,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,YAAY,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC;IAC7C,IAAI;IACJ;IACA,IAAI,wBAAwB,CAAC,UAAU,EAAE;IACzC,QAAQ,IAAI,CAAC,KAAK,GAAG,SAAS;IAC9B,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;IAC7C,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;IACxC,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS;IACjE,QAAQ,IAAI,IAAI,CAAC,cAAc,IAAIA,eAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IACvD,YAAY,OAAO,CAACA,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C;IACA,YAAY,CAAC,2BAA2B,CAAC,2BAA2B,OAAO,CAAC,KAAK,QAAQ,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjK,aAAa,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;IACvC,YAAY,OAAO,KAAK,UAAU,CAAC,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/I,QAAQ;IACR,aAAa;IACb,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,wBAAwB,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;IACvD,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;IACxC,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;IAC3B,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS;IAChC,QAAQ,IAAI,IAAI,CAAC,cAAc,IAAIA,eAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IACzD;IACA,YAAY,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,QAAQ,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpN,YAAY,OAAO,CAACA,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IACvC,QAAQ;IACR,aAAa,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IAC3E,YAAY,OAAO,KAAK,UAAU,IAAI,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9M,QAAQ;IACR,aAAa;IACb,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,gBAAgB,CAAC,MAAM,EAAE;IAC7B,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;IAC5B,YAAY,MAAM,uBAAuB;IACzC,QAAQ;IACR;IACA,QAAQ,IAAI,MAAM,YAAY,oBAAoB,EAAE;IACpD,YAAY,OAAO,MAAM,CAAC,KAAK;IAC/B,QAAQ;IACR;IACA,QAAQ,IAAI,KAAK,GAAG,MAAM,EAAE,IAAI;IAChC,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;IACvC,YAAY,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;IAChC,QAAQ;IACR,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ;IACA,IAAI,oBAAoB,CAAC,MAAM,EAAE;IACjC,QAAQ,IAAI,MAAM,IAAI,IAAI;IAC1B,YAAY,MAAM,uBAAuB;IACzC;IACA,QAAQ,IAAI,MAAM,YAAY,oBAAoB,EAAE;IACpD,YAAY,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK;IAC/C,QAAQ;IACR;IACA,QAAQ,IAAI,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI;IAC/C,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;IACtC,YAAY,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;IACpC,QAAQ;IACR,QAAQ,OAAO,SAAS;IACxB,IAAI;IACJ;IACA,IAAI,eAAe,CAAC,MAAM,EAAE;IAC5B,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;IAC5B,YAAY,MAAM,uBAAuB;IACzC,QAAQ;IACR;IACA,QAAQ,IAAI,MAAM,YAAY,oBAAoB,EAAE;IACpD,YAAY,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5H,QAAQ;IACR;IACA,QAAQ,IAAI,QAAQ,GAAG,KAAK;IAC5B,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB;IAClD,QAAQ,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE;IAChD,YAAY,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,KAAK;IACpD,QAAQ;IACR,QAAQ,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;IACvI,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,YAAY;IAC7B,YAAY,KAAK,cAAc;IAC/B,YAAY,KAAK,kBAAkB;IACnC,YAAY,KAAK,eAAe;IAChC,gBAAgB,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;IAClD,gBAAgB,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC,MAAM;IAC3D,oBAAoB,IAAI,CAAC,QAAQ,EAAE;IACnC;IACA,oBAAoB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IAClE,gBAAgB,CAAC,CAAC;IAClB,gBAAgB;IAChB,YAAY,KAAK,OAAO;IACxB,gBAAgB,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC;IACvD,gBAAgB,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,MAAM;IAChE,oBAAoB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK;IAChD,gBAAgB,CAAC,CAAC;IAClB,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,YAAY,CAAC,GAAG,EAAE;IACtB,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;IAClD,YAAY,OAAO,SAAS;IAC5B,QAAQ;IACR,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACpH,IAAI;IACJ,IAAI,+BAA+B,CAAC,IAAI,EAAE;IAC1C,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;IACjC,YAAY,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,QAAQ;IACR,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,0BAA0B,CAAC,GAAG,EAAE,GAAG,EAAE;IACzC,QAAQ,OAAOmB,yBAAe,CAAC,GAAG,EAAE,GAAG,CAAC;IACxC,IAAI;IACJ;AACAlB,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAC7D,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AAC1DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC;AAC7DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AAC5DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,kBAAkB,EAAE,MAAM,CAAC;AAChEP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACzDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAChD,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,mBAAmB,EAAE,MAAM,CAAC;AACjEP,gBAAU,CAAC;IACX,IAAIe,kBAAQ,CAAC,IAAI;IACjB,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC;;ICrpBtD,IAAIf,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAED;IACA;IACO,MAAM,kBAAkB,GAAG,CAAC,CAAC,EAAEO,WAAC,CAAC,0LAA0L,EAAEA,WAAC,CAAC,YAAY,CAAC;IACnP;IACA,IAAI,qBAAqB,GAAG,MAAM,qBAAqB,SAASJ,oBAAU,CAAC,YAAY,CAAC;IACxF,IAAI,QAAQ,CAAC,CAAC,EAAE;IAChB,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACjC,QAAQ,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS;IACpD,YAAY,OAAO,KAAK;IACxB,QAAQ,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS;IACpD,YAAY,OAAO,KAAK;IACxB,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,OAAO,CAAC,CAAC,EAAE;IACf,QAAQ,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;IACnC,IAAI;IACJ,CAAC;AACDJ,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACxDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACxDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;IACrD,qBAAqB,GAAGP,YAAU,CAAC;IACnC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,aAAa;IAClC,QAAQ,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IACxC,QAAQ,QAAQ,EAAE,CAAC,CAAC,EAAEX,WAAC,CAAC,cAAc,EAAEE,cAAI,CAAC;AAC7C,KAAK,EAAEF,WAAC,CAAC,iDAAiD,EAAEE,cAAI,CAAC,6CAA6C,EAAEF,WAAC,CAAC;AAClH,KAAK,EAAEA,WAAC,CAAC,aAAa,EAAEE,cAAI,CAAC,iEAAiE,EAAEF,WAAC,CAAC;AAClG,KAAK,EAAEA,WAAC,CAAC,iDAAiD,EAAEE,cAAI,CAAC,6CAA6C,EAAEF,WAAC,CAAC;AAClH,EAAE,EAAEA,WAAC,CAAC,OAAO;IACb,KAAK;IACL,CAAC,EAAE,qBAAqB,CAAC;;IC3CzB,IAAIR,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAKD;IACA,MAAM,mBAAmB,GAAG,SAAS;IACrC,MAAM,aAAa,GAAG,aAAa;IACnC,MAAM,0BAA0B,SAASJ,0BAAgB,CAAC;IAC1D,IAAI,WAAW,CAAC,IAAI,EAAE;IACtB,QAAQ,KAAK,CAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACtD,IAAI;IACJ;IACA;IACO,MAAM,kCAAkC,SAAS,gBAAgB,CAAC;IACzE,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3B,QAAQ,IAAI,CAAC,2BAA2B,GAAG,CAAC,GAAG,KAAK;IACpD,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM;IAChC,YAAY,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,WAAW,CAAC;IAC5G,QAAQ,CAAC;IACT,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,IAAI,EAAE;IACzB,QAAQ,MAAM,EAAE,GAAG,IAAI;IACvB,QAAQ,IAAI,EAAE,CAAC,QAAQ,EAAE;IACzB,YAAY;IACZ,QAAQ;IACR,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI;IAC1C,YAAY,EAAE,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC5D,QAAQ,CAAC,EAAE,CAAC,IAAI;IAChB,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5B,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,iBAAiB,GAAG;IACxB,QAAQ,KAAK,CAAC,iBAAiB,EAAE;IACjC,QAAQE,eAAK,CAAC,QAAQ,CAAC,IAAI,EAAEW,cAAI,GAAG,0BAA0B,CAAC;IAC/D,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS;IAClC,QAAQ,IAAI,CAACX,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;IAChC,YAAY,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc;IACpD,YAAY,GAAG,CAAC,gBAAgB,CAACc,iCAAuB,EAAE,IAAI,CAAC,2BAA2B,EAAE,KAAK,CAAC;IAClG,QAAQ;IACR,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS;IAClC,QAAQ,IAAI,CAACd,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;IAChC,YAAY,GAAG,CAAC,mBAAmB,CAACc,iCAAuB,EAAE,IAAI,CAAC,2BAA2B,EAAE,KAAK,CAAC;IACrG,QAAQ;IACR,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ,IAAI,gCAAgC,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IAC5D,QAAQ,IAAI,IAAI,KAAK,OAAO,EAAE;IAC9B,YAAY,IAAI,CAAC,KAAK,GAAG,GAAG;IAC5B,QAAQ;IACR,IAAI;IACJ;AACAb,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,kCAAkC,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AACjEN,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,kCAAkC,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,CAAC;IAC1E,SAAS,aAAa,CAAC,GAAG,EAAE;IAC5B,IAAI,OAAO,GAAG,YAAY,kCAAkC,IAAI,eAAe,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,eAAe,CAAC,KAAK,UAAU;IACpI;IACA,SAAS,SAAS,CAAC,IAAI,EAAE;IACzB,IAAI,OAAO,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,YAAY;IAC9C;IACA;IACA,IAAI,2BAA2B,GAAG,MAAM,2BAA2B,SAAS,8BAA8B,CAAC;IAC3G,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,kBAAkB,CAAC;IACjC,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,KAAK;IACtC,YAAY,IAAI,CAAC,wBAAwB,EAAE;IAC3C,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK;IACrC;IACA,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU;IAC7C,YAAY,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE;IAC5C,gBAAgB,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1C,YAAY;IACZ,YAAY,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC;IAC1C,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,KAAK;IACtC;IACA,YAAY,GAAG,CAAC,cAAc,EAAE;IAChC,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK;IACrE,YAAY,IAAI,CAACP,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;IAC5D,gBAAgB,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC;IACpE,gBAAgB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;IACvF,gBAAgB,MAAM,IAAI,GAAG,KAAK,CAAC,wBAAwB,CAAC,SAAS,CAAC;IACtE,gBAAgB,KAAK,CAAC,cAAc,EAAE;IACtC,gBAAgB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;IACtC,gBAAgB,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC;IAC9C,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACvD,oBAAoB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,oBAAoB,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;IAChD,wBAAwB,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;IAChD,4BAA4B,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IACpG,wBAAwB;IACxB,oBAAoB;IACpB,gBAAgB;IAChB;IACA,YAAY;IACZ,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,gBAAgB,GAAG,CAAC,GAAG,KAAK;IACzC;IACA,YAAY,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;IACvF;IACA,gBAAgB,GAAG,CAAC,cAAc,EAAE;IACpC,YAAY;IACZ,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,KAAK;IACtC,YAAY,IAAI,CAAC,eAAe,EAAE;IAClC,YAAY,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC;IAC1C,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,oBAAoB,GAAG,CAAC,GAAG,KAAK;IAC7C,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,SAAS,CAAC,SAAS;IAC9E,YAAY,IAAI,IAAI,GAAG,SAAS;IAChC,YAAY,IAAIA,eAAK,CAAC,aAAa,CAAC,SAAS;IAC7C,mBAAmB,SAAS,KAAK;IACjC,mBAAmB,SAAS,KAAK,aAAa,EAAE;IAChD,gBAAgB,SAAS,CAAC,SAAS,GAAG,aAAa;IACnD,gBAAgB,IAAI,GAAG,EAAE;IACzB,YAAY;IACZ,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;IACpC,gBAAgB,IAAI,CAAC,aAAa,CAAC,IAAI,0BAA0B,CAAC,IAAI,CAAC,CAAC;IACxE,gBAAgB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;IACzD,oBAAoB,IAAI,CAAC,cAAc,EAAE;IACzC,gBAAgB;IAChB,YAAY;IACZ;IACA,YAAY,IAAI,CAAC,kBAAkB,EAAE;IACrC,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,uBAAuB,GAAG,CAAC,GAAG,KAAK;IAChD,YAAY,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE;IACrD,YAAY,IAAI,SAAS,IAAI,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;IACrG,gBAAgB,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IACrD,gBAAgB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE;IAC/C,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,IAAI,CAAC,KAAK,GAAG,IAAI;IACjC,YAAY;IACZ,QAAQ,CAAC;IACT;IACA,IAAI;IACJ,IAAI,QAAQ;IACZ;IACA,IAAI,IAAI,OAAO,GAAG;IAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ;IAC5B,IAAI;IACJ,IAAI,KAAK,GAAG;IACZ,QAAQ,KAAK,CAAC,KAAK,EAAE;IACrB,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IAC7B,QAAQ,IAAI,CAAC,kBAAkB,EAAE;IACjC,IAAI;IACJ,IAAI,kBAAkB,GAAG;IACzB,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ;IAC/B,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAIY,6BAAmB,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9G,IAAI;IACJ,IAAI,+BAA+B,CAAC,IAAI,EAAE;IAC1C,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,QAAQ;IACzC,QAAQ,IAAI,QAAQ,EAAE;IACtB,YAAY,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,iBAAiB,CAAC;IAC9D,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnE,YAAY,QAAQ,CAAC,WAAW,CAAC,2BAA2B,EAAE,KAAK,EAAE,GAAG,CAAC;IACzE,QAAQ;IACR,IAAI;IACJ,IAAI,QAAQ,CAAC,IAAI,EAAE;IACnB,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;IAClC,YAAY,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC;IACxF,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ,IAAI,UAAU,CAAC,IAAI,EAAE;IACrB,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;IACpC,YAAY,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC;IAC3F,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ;IACA,IAAI,IAAI,qBAAqB,GAAG;IAChC,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;IAChC,IAAI;IACJ,IAAI,IAAI,cAAc,GAAG;IACzB,QAAQ,OAAO,IAAI,CAAC,UAAU;IAC9B,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IAChD,YAAY,IAAIS,0BAAgB,CAAC,YAAY,CAAC,GAAG,EAAE,0BAA0B,CAAC,EAAE;IAChF,gBAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI;IACzD,gBAAgB,OAAO,CAAC,IAAI,CAAC;IAC7B;IACA,gBAAgB,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC;IACjD,YAAY;IACZ;IACA,gBAAgB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,eAAe,GAAG;IACtB,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,CAAC,IAAI,KAAK;IAC1D,YAAY,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IACxD,YAAY,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE;IAC5D,gBAAgB,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtF,YAAY;IACZ,iBAAiB,IAAI,IAAI,YAAY,WAAW,EAAE;IAClD,gBAAgB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;IAC7C,YAAY;IACZ,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,KAAK;IAC1B,YAAY,IAAI,OAAO,GAAG,IAAI;IAC9B,YAAY,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;IACrC,gBAAgB,OAAO,GAAG,IAAI,CAAC,aAAa;IAC5C,YAAY;IACZ,YAAY,WAAW,CAAC,OAAO,CAAC;IAChC,QAAQ,CAAC;IACT,QAAQ,IAAI,CAACrB,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;IAClC,YAAY,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC;IAC7C,QAAQ;IACR,IAAI;IACJ,IAAI,wBAAwB,GAAG;IAC/B,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,KAAK,CAAC,MAAM;IAClG,QAAQ,IAAI,UAAU,IAAI,CAAC,IAAI,SAAS,CAAC,SAAS,KAAK,aAAa,EAAE;IACtE,YAAY,SAAS,CAAC,SAAS,GAAG,aAAa;IAC/C,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,IAAI,EAAE,KAAK;IAC3B,YAAY,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK;IACtC,gBAAgB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IACpC,gBAAgB,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;IACrD,gBAAgB,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACzC,YAAY,CAAC;IACb,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;IACjD,gBAAgB,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,gBAAgB,IAAI,EAAE,IAAI,YAAY,OAAO,CAAC,EAAE;IAChD,oBAAoB,IAAIA,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;IAC7C,wBAAwB,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE;IACtD,wBAAwB,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;IAClD,oBAAoB;IACpB,gBAAgB;IAChB,qBAAqB,IAAI,KAAK,EAAE;IAChC,oBAAoB,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC;IACpD,oBAAoB,KAAK,GAAG,IAAI;IAChC,gBAAgB;IAChB,YAAY;IACZ;IACA,YAAY,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;IACtC,gBAAgB,UAAU,CAAC,IAAI,CAAC;IAChC,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,cAAc,GAAG;IACrB,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACtC,QAAQ,IAAI,CAAC,kBAAkB,EAAE;IACjC,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,+FAA+F,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;IAC3K,YAAY,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,GAAG;IAC3C,QAAQ;IACR,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU;IACzC,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAIsB,8BAAc,CAAC,IAAI,CAAC,KAAK,CAAC;IACtD,QAAQ,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IACpE,QAAQ,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC;IAC3E,QAAQ,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IACtE,QAAQ,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IACtE,QAAQ,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IACtE,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC;IACzF,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,QAAQ,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC;IAC5F,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU;IACzC,QAAQ,IAAI,CAACtB,eAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;IACtC,YAAY,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC;IAClF,YAAY,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IAC3E,YAAY,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IAC7E,YAAY,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IAC7E,YAAY,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IAC7E,QAAQ;IACR,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ,IAAI,YAAY,CAAC,GAAG,EAAE;IACtB,QAAQ,OAAO,GAAG;IAClB,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,YAAY;IAC1B,CAAC,EAAE,2BAA2B,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AAC/DtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,gBAAgB;IAC9B,CAAC,EAAE,2BAA2B,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AAC/DtB,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,2BAA2B,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AAC1DN,gBAAU,CAAC;IACX,IAAIe,kBAAQ,CAAC,GAAG;IAChB,CAAC,EAAE,2BAA2B,CAAC,SAAS,EAAE,gBAAgB,EAAE,IAAI,CAAC;IACjE,2BAA2B,GAAGf,YAAU,CAAC;IACzC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,kBAAkB,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IACzE,QAAQ,QAAQ,EAAE,CAAC,YAAY,EAAET,cAAI,CAAC,iBAAiB,EAAEA,cAAI,CAAC;AAC9D;AACA,MAAM,EAAE,kBAAkB,CAAC;AAC3B;AACA,KAAK,EAAEF,WAAC,CAAC,WAAW,EAAEA,WAAC,CAAC;AACxB,MAAM;IACN,KAAK;IACL,CAAC,EAAE,2BAA2B,CAAC;;ICvU/B,IAAIR,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAGD;IACA;IACO,MAAM,wCAAwC,SAAS,kCAAkC,CAAC;IACjG,IAAI,OAAO,CAAC,CAAC,EAAE;IACf;IACA,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,IAAI,KAAK,OAAO,EAAE;IAC9B,YAAY,IAAI,CAAC,MAAM,GAAG,CAACF,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC;IAC5C,QAAQ;IACR,IAAI;IACJ,IAAI,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;IACzE,QAAQ,MAAM,IAAI,GAAG,OAAO;IAC5B,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;IAC3C,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtC,IAAI;IACJ;AACAC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,wCAAwC,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AACtEP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,wCAAwC,CAAC,SAAS,EAAE,kBAAkB,EAAE,MAAM,CAAC;AAClFP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,wCAAwC,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AACzEP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,wCAAwC,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;IACjE,MAAM,qCAAqC,GAAG,CAAC,CAAC,EAAEC,WAAC,CAAC,gOAAgO,EAAEA,WAAC,CAAC,sDAAsD,EAAEA,WAAC,CAAC,QAAQ,EAAEA,WAAC,CAAC;AACrW,oBAAoB,EAAEA,WAAC,CAAC,2JAA2J,EAAEA,WAAC,CAAC,UAAU,CAAC;IAClM;;IC1CA,IAAIR,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAGD;IACA;IACA,IAAI,yCAAyC,GAAG,MAAM,yCAAyC,SAAS,wCAAwC,CAAC;IACjJ,IAAI,IAAI,GAAG;IACX,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK;IAC3C,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO;IACnD,YAAY,IAAI,CAACF,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IACxC,gBAAgB,QAAQ,IAAI,CAAC,OAAO;IACpC,oBAAoB,KAAK,MAAM;IAC/B,wBAAwB,IAAI,OAAO,CAAC,OAAO,EAAE;IAC7C,4BAA4B,OAAO,CAAC,IAAI,EAAE;IAC1C,4BAA4B,OAAO,EAAE;IACrC,wBAAwB;IACxB,wBAAwB;IACxB,oBAAoB;IACpB,wBAAwB,IAAI,OAAO,CAAC,OAAO,EAAE;IAC7C,4BAA4B,OAAO,CAAC,IAAI,EAAE;IAC1C,4BAA4B,OAAO,EAAE;IACrC,wBAAwB;IACxB,wBAAwB;IACxB;IACA,gBAAgB,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO;IAC/D,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,UAAU,CAAC,CAAC,EAAE;IAClB,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,SAAS;IAC1B,gBAAgB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG;IAC5C,gBAAgB,IAAI,CAAC,OAAO,GAAG,GAAG;IAClC,gBAAgB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,KAAK,OAAO,IAAI,GAAG,KAAK,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACzG,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,gCAAgC,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IAC5D,QAAQ,KAAK,CAAC,gCAAgC,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IACrE,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO;IAC/C,QAAQ,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS,EAAE;IACpD;IACA,YAAY,IAAI,CAAC,MAAM,GAAG,CAACA,eAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAChD,iBAAiB,CAAC,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,EAAE,OAAO,MAAM,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IACpG,QAAQ;IACR,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE;IAClF,CAAC,EAAE,yCAAyC,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;IAC1E,yCAAyC,GAAGP,YAAU,CAAC;IACvD,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,iCAAiC,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IACxF,QAAQ,QAAQ,EAAE;IAClB,KAAK;IACL,CAAC,EAAE,yCAAyC,CAAC;;IChE7C,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACA;IACA,IAAI,sCAAsC,GAAG,MAAM,sCAAsC,SAAS,wCAAwC,CAAC;IAC3I,IAAI,UAAU,CAAC,KAAK,EAAE;IACtB,QAAQ,OAAO,CAACF,eAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAChG,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;IAC/C,YAAY,IAAI,CAAC,OAAO,GAAG,aAAa;IACxC,QAAQ;IACR,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAC5C,YAAY,IAAI,CAAC,IAAI,GAAG,aAAa;IACrC,QAAQ;IACR,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;IACxD,YAAY,IAAI,CAAC,gBAAgB,GAAG,QAAQ;IAC5C,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;IACpC,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IAChD,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK;IACtC,YAAY,IAAI,UAAU,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACnG;IACA,YAAY,IAAI,OAAO,GAAG,SAAS;IACnC,YAAY,IAAI,KAAK,GAAG,qBAAqB;IAC7C,YAAY,IAAI,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;IAChE,gBAAgB,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7D,YAAY;IACZ;IACA,YAAY,IAAI,GAAG,KAAK,SAAS,EAAE;IACnC,gBAAgB,OAAO,OAAO,IAAI,SAAS,GAAG,EAAE,GAAG,OAAO;IAC1D,YAAY;IACZ,YAAY,IAAI,IAAI,GAAG,GAAG,KAAK,GAAG,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;IACnG,YAAY,IAAI,CAAC,IAAI,EAAE;IACvB,gBAAgB,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC;IAC9C,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC;IAC/D,gBAAgB,UAAU,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACnG,gBAAgB,IAAI,UAAU,EAAE;IAChC,oBAAoB,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,IAAI,QAAQ,CAAC;IACzE,gBAAgB;IAChB,YAAY;IACZ,YAAY,OAAO,EAAE;IACrB,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,sCAAsC,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;IACtE,sCAAsC,GAAGP,YAAU,CAAC;IACpD,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,8BAA8B,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IACrF,QAAQ,QAAQ,EAAE;IAClB,KAAK;IACL,CAAC,EAAE,sCAAsC,CAAC;;IChE1C,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE;IACpC,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IAC5C,QAAQF,eAAK,CAAC,aAAa,CAAC,IAAI;IAChC,aAAa,IAAI,CAACA,eAAK,CAAC,SAAS;IACjC,aAAa,IAAI,CAAC,GAAG,IAAI;IACzB,YAAY,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;IACzD,YAAY,GAAG,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACxD,YAAY,GAAG,CAAC,QAAQ,GAAG,CAAC;IAC5B,YAAY,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC;IAChC,YAAY,KAAK,CAAC,cAAc,EAAE;IAClC,YAAY,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;IACjC,YAAY,OAAO,CAAC,GAAG,CAAC;IACxB,QAAQ,CAAC,CAAC;IACV,IAAI,CAAC,CAAC;IACN;IACA;IACA,IAAI,uCAAuC,GAAG,MAAM,uCAAuC,SAAS,wCAAwC,CAAC;IAC7I,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3B,QAAQ,IAAI,CAAC,mBAAmB,GAAG,CAAC,GAAG,KAAK;IAC5C,YAAY,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,aAAa;IAC3D;IACA,YAAY,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC;IACzD,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC,KAAK;IAC9C,QAAQ,CAAC;IACT;IACA,IAAI;IACJ,IAAI,aAAa,CAAC,CAAC,EAAE;IACrB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;IACxC,YAAY,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/C,QAAQ;IACR,aAAa;IACb,YAAY,OAAO,OAAO,CAAC,MAAM,EAAE;IACnC,QAAQ;IACR,IAAI;IACJ,IAAI,OAAO,CAAC,OAAO,EAAE;IACrB,QAAQ,OAAO,CAAC,gBAAgB,CAAC,gCAAgC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI;IAClF,YAAY,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM;IACpD,YAAY,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IACrD;IACA,gBAAgB,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;IAC/C,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV;IACA,QAAQ,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAGW,cAAI,GAAG,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IACrF,IAAI;IACJ,IAAI,UAAU,CAAC,KAAK,EAAE;IACtB,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAIX,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;IAC/C,YAAY,IAAI,CAAC,OAAO,GAAG,cAAc;IACzC,QAAQ;IACR,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAC5C,YAAY,IAAI,CAAC,IAAI,GAAG,cAAc;IACtC,QAAQ;IACR,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;IACxD,YAAY,IAAI,CAAC,gBAAgB,GAAG,cAAc;IAClD,QAAQ;IACR,QAAQ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;IAC1E,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;IAC1C,YAAY,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;IACjF,YAAY,IAAI,CAAC,iBAAiB,EAAE;IACpC,QAAQ;IACR,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,UAAU;IAC3B,gBAAgB,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;IAClD,oBAAoB,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,GAAG;IAChD,gBAAgB;IAChB,gBAAgB;IAChB,YAAY,KAAK,gBAAgB;IACjC,gBAAgB,IAAI,GAAG,EAAE;IACzB,oBAAoB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;IAC/C,gBAAgB;IAChB,gBAAgB,IAAI,GAAG,EAAE;IACzB,oBAAoB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;IAC5C,gBAAgB;IAChB,gBAAgB;IAChB,YAAY,KAAK,OAAO;IACxB,gBAAgB,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC;IACnD,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,IAAI,GAAG;IACX,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IAChD,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK;IACvD,YAAY,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,KAAK;IACrC,gBAAgB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,gBAAgB,IAAIA,eAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;IACrC,oBAAoB,OAAO,EAAE;IAC7B,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,aAAa,CAAC,KAAK,EAAE,CAAC;IAC1C,yBAAyB,IAAI,CAAC,GAAG,IAAI;IACrC,wBAAwB,IAAI,CAAC,KAAK,GAAG,EAAE;IACvC,wBAAwB,OAAO,EAAE;IACjC,oBAAoB,CAAC,CAAC;IACtB,gBAAgB;IAChB,YAAY,CAAC;IACb,YAAY,IAAI,CAAC,KAAK,EAAE;IACxB,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,GAAG,CAAC,cAAc,EAAE;IAC5B,QAAQ,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,GAAG,GAAG,CAAC,iBAAiB;IACjG,QAAQ,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI;IAC3C,QAAQ,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI;IAC7C,IAAI;IACJ,IAAI,SAAS;IACb,IAAI,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE;IACnC,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,GAAG;IAC7B,eAAe,CAAC,GAAG,CAAC;IACpB,eAAe,GAAG,CAAC,uBAAuB,YAAY;IACtD,eAAe,GAAG,CAAC,uBAAuB,KAAK,GAAG,CAAC;IACnD,eAAe,GAAG,CAAC,uBAAuB,KAAK,GAAG,CAAC;IACnD,eAAe,GAAG,CAAC,WAAW,MAAM,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE;IACxD,YAAY,MAAM,EAAE,GAAG,GAAG,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;IACnF,YAAY,IAAI,EAAE,YAAY,kBAAkB,EAAE;IAClD,gBAAgB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;IAC5C,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,GAAG;IAC7B,eAAe,CAAC,GAAG,CAAC;IACpB,eAAe,GAAG,CAAC,uBAAuB,YAAY;IACtD,eAAe,GAAG,CAAC,uBAAuB,KAAK,GAAG,CAAC;IACnD,eAAe,GAAG,CAAC,uBAAuB,KAAK,GAAG,CAAC;IACnD,eAAe,GAAG,CAAC,WAAW,MAAM,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE;IACxD,YAAY,MAAM,EAAE,GAAG,GAAG,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;IACnF,YAAY,IAAI,EAAE,YAAY,kBAAkB,EAAE;IAClD,gBAAgB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC1C,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,sBAAsB,CAAC,GAAG,EAAE;IAChC,QAAQ,IAAI,GAAG,CAAC,iBAAiB,EAAE;IACnC,YAAY,GAAG,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;IAC5F,YAAY,GAAG,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC;IAC/F,QAAQ;IACR,IAAI;IACJ,IAAI,wBAAwB,CAAC,GAAG,EAAE;IAClC,QAAQ,IAAI,GAAG,CAAC,iBAAiB,EAAE;IACnC;IACA,YAAY,GAAG,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;IAC/F,YAAY,GAAG,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC;IAClG,QAAQ;IACR,IAAI;IACJ,IAAI,cAAc,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;IACzD,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,0BAA0B,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK;IAC1F,YAAY,IAAI,GAAG,YAAY,kBAAkB,EAAE;IACnD,gBAAgB,IAAI,OAAO,EAAE;IAC7B,oBAAoB,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC;IACtD,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC;IACpD,gBAAgB;IAChB,YAAY;IACZ,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,IAAI;IACJ,IAAI,iBAAiB,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE;IAC/C,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;IACvC,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;IACrC,YAAY,QAAQ,CAAC,OAAO,EAAE;IAC9B,QAAQ;IACR,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,kBAAkB;IAChC,CAAC,EAAE,uCAAuC,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AACtEtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,UAAU;IAC5B,CAAC,EAAE,uCAAuC,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;IACzE,uCAAuC,GAAGR,YAAU,CAAC;IACrD,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,+BAA+B,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IACtF,QAAQ,QAAQ,EAAE,CAAC,6FAA6F,EAAET,cAAI,CAAC,YAAY,EAAEA,cAAI,CAAC,qBAAqB,CAAC;IAChK,YAAY,qCAAqC,GAAG,CAAC,CAAC,EAAEF,WAAC,CAAC,mCAAmC,EAAEA,WAAC,CAAC,SAAS;IAC1G,KAAK;IACL,CAAC,EAAE,uCAAuC,CAAC;;ICjN3C,IAAIR,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACA;IACO,IAAI,gBAAgB;IAC3B,CAAC,UAAU,gBAAgB,EAAE;IAC7B,IAAI,gBAAgB,CAAC,MAAM,CAAC,GAAG,MAAM;IACrC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,QAAQ;IACzC,IAAI,gBAAgB,CAAC,WAAW,CAAC,GAAG,WAAW;IAC/C,IAAI,gBAAgB,CAAC,eAAe,CAAC,GAAG,eAAe;IACvD,IAAI,gBAAgB,CAAC,aAAa,CAAC,GAAG,mBAAmB;IACzD,IAAI,gBAAgB,CAAC,eAAe,CAAC,GAAG,qBAAqB;IAC7D,IAAI,gBAAgB,CAAC,aAAa,CAAC,GAAG,aAAa;IACnD,IAAI,gBAAgB,CAAC,eAAe,CAAC,GAAG,eAAe;IACvD,IAAI,gBAAgB,CAAC,cAAc,CAAC,GAAG,cAAc;IACrD,IAAI,gBAAgB,CAAC,aAAa,CAAC,GAAG,aAAa;IACnD;IACA;IACA;IACA;IACA;IACA,CAAC,EAAE,gBAAgB,KAAK,gBAAgB,GAAG,EAAE,CAAC,CAAC;IAE/C;IACA;IACA;IACA;IACA,SAAS,mBAAmB,CAAC,GAAG,EAAE;IAClC,IAAI,MAAM,SAAS,GAAG,GAAG,EAAE,WAAW,EAAE;IACxC,IAAI,QAAQ,SAAS;IACrB,QAAQ,KAAK,MAAM;IACnB,QAAQ,KAAK,QAAQ;IACrB,YAAY,OAAO,SAAS,GAAG,SAAS;IACxC,QAAQ,KAAK,WAAW;IACxB,YAAY,OAAO,mBAAmB;IACtC,QAAQ,KAAK,eAAe;IAC5B,YAAY,OAAO,iBAAiB;IACpC,QAAQ,KAAK,mBAAmB;IAChC,YAAY,OAAO,sBAAsB;IACzC,QAAQ,KAAK,qBAAqB;IAClC,YAAY,OAAO,sBAAsB;IACzC,QAAQ,KAAK,aAAa;IAC1B,QAAQ,KAAK,cAAc;IAC3B,QAAQ,KAAK,eAAe;IAC5B,YAAY,OAAO,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,iBAAiB;IACxE,QAAQ,KAAK,aAAa;IAC1B,YAAY,OAAO,sBAAsB;IACzC,QAAQ;IACR,YAAY,OAAO,cAAc;IACjC;IACA;IACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,QAAQ,EAAE;IAC/C,IAAI,MAAM,SAAS,GAAG,GAAG,EAAE,WAAW,EAAE;IACxC,IAAI,QAAQ,SAAS;IACrB,QAAQ,KAAK,MAAM;IACnB,YAAY,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC;IAClC,QAAQ,KAAK,QAAQ;IACrB,YAAY,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;IAC9B,QAAQ,KAAK,WAAW;IACxB,YAAY,OAAO,CAAC,GAAG,CAAC;IACxB,QAAQ,KAAK,eAAe;IAC5B,YAAY,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC;IACzC,QAAQ,KAAK,mBAAmB;IAChC,YAAY,OAAO,CAAC,IAAI,CAAC;IACzB,QAAQ,KAAK,qBAAqB;IAClC,YAAY,OAAO,CAAC,IAAI,CAAC;IACzB,QAAQ,KAAK,aAAa;IAC1B,YAAY,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC;IACrE,QAAQ,KAAK,cAAc;IAC3B,YAAY,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;IACtE,QAAQ,KAAK,eAAe;IAC5B,YAAY,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;IACvE,QAAQ,KAAK,aAAa;IAC1B,YAAY,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC;IACxE,QAAQ,KAAK,aAAa;IAC1B,YAAY,OAAO,CAAC,QAAQ,CAAC;IAC7B,QAAQ;IACR,YAAY,OAAO,CAAC,MAAM,CAAC;IAC3B;IACA;IACA;IACA,IAAI,sCAAsC,GAAG,MAAM,sCAAsC,SAAS,wCAAwC,CAAC;IAC3I,IAAI,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE;IAChC,QAAQ,MAAM,KAAK,GAAG,CAAC,OAAO,GAAG,KAAK,QAAQ;IAC9C,YAAY,oBAAoB,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,YAAY;IACpF,oBAAoBF,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE;IAClG,mBAAmB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK;IACjE,cAAc,oBAAoB,CAAC,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC;IAClE,QAAQ,OAAO,CAACA,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IACnC,IAAI;IACJ,IAAI,UAAU,CAAC,KAAK,EAAE;IACtB,QAAQ,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC;IAC3E,QAAQ,KAAK,IAAI,CAAC,IAAI,OAAO,EAAE;IAC/B,YAAY,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE;IAChD,gBAAgB,OAAO,IAAI;IAC3B,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE;IAChC,YAAY,IAAIA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,CAAC,GAAG,CAAC,EAAE;IAC1F,gBAAgB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC;IACpD,YAAY;IACZ,YAAY,IAAIA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,EAAE;IAC3E,gBAAgB,IAAI,CAAC,OAAO,GAAG,GAAG;IAClC,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,GAAG;IACX,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK;IAC3C;IACA,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpG,YAAY,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;IAClC;IACA,gBAAgB,MAAM,MAAM,GAAG,oBAAoB,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC/E,gBAAgB,IAAI,MAAM,CAAC;IAC3B,uBAAuB,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;IAC3G;IACA,oBAAoB,MAAM,OAAO,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,CAAC,EAAE,SAAS,CAAC;IAC1F,oBAAoB,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;IACnF;IACA,wBAAwB,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO;IAC5F,wBAAwB,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC7E,wBAAwB,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3D,oBAAoB;IACpB,yBAAyB;IACzB;IACA,wBAAwB,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO;IAC5F,wBAAwB,MAAM,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE;IACxD,wBAAwB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IACvC,wBAAwB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IACtC,wBAAwB,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3D,oBAAoB;IACpB,gBAAgB;IAChB;IACA,qBAAqB;IACrB,oBAAoB,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;IAC5E,gBAAgB;IAChB,YAAY;IACZ,YAAY,OAAO,EAAE;IACrB,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,sCAAsC,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AACvEP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,sCAAsC,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;IACxE,sCAAsC,GAAGP,YAAU,CAAC;IACpD,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,8BAA8B,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IACrF,QAAQ,QAAQ,EAAE;IAClB,KAAK;IACL,CAAC,EAAE,sCAAsC,CAAC;;IC7J1C;IACA,SAAS,MAAM,CAAC,OAAO,EAAE;IACzB,IAAI,OAAO,OAAO,YAAY;IAC9B,WAAW,OAAO,CAAC,eAAe,KAAK;IACvC,WAAW,OAAO,CAAC,YAAY,CAAC,OAAO;IACvC,WAAW,OAAO,CAAC,YAAY,CAAC,MAAM;IACtC,WAAW,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,WAAW;IAC3D;IACA;IACO,MAAM,0BAA0B,CAAC;IACxC;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,WAAW,CAAC,cAAc,EAAE,gBAAgB,EAAE,QAAQ,GAAG,0BAA0B,EAAE;IACzF,QAAQ,IAAI,CAAC,SAAS,GAAG,gBAAgB;IACzC,QAAQ,IAAI,CAAC,SAAS,GAAG,QAAQ;IACjC,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,gBAAgB,CAAC,IAAI,IAAI;IAC9D,YAAY,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK;IAC1C,gBAAgB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,yBAAyB,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACjF,gBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC;IAC/C,YAAY,CAAC;IACb,YAAY,KAAK,IAAI,KAAK,IAAI,IAAI,EAAE;IACpC,gBAAgB,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU;IAC9C,gBAAgB,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY;IAClD,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACvD,oBAAoB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,oBAAoB,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;IACnC,gBAAgB;IAChB,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACzD,oBAAoB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,oBAAoB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;IAClC,gBAAgB;IAChB,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,QAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;IAC3C,IAAI;IACJ,IAAI,cAAc,CAAC,cAAc,EAAE;IACnC,QAAQ,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACzF,QAAQ,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC1F,QAAQ,IAAI,CAAC,eAAe,GAAG,cAAc;IAC7C,IAAI;IACJ,IAAI,iBAAiB,CAAC,cAAc,EAAE;IACtC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB;IAC/C,QAAQ,IAAI,CAACpB,eAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;IACrC,YAAY,QAAQ,CAAC,UAAU,EAAE;IACjC,QAAQ;IACR,QAAQ,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC/F,IAAI;IACJ;IACA,IAAI,OAAO,GAAG;IACd,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC;IACpD,IAAI;IACJ,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,eAAe;IACnB,IAAI,iBAAiB;IACrB;IACA;IACO,MAAM,oBAAoB,CAAC;IAClC;IACA,IAAI,OAAO,mBAAmB,GAAG;IACjC,QAAQ,MAAM,IAAI,GAAG,IAAI,gBAAgB,EAAE;IAC3C,QAAQ,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;IACtD,QAAQA,eAAK,CAAC,QAAQ,CAAC,QAAQ,EAAEW,cAAI,GAAG,0BAA0B,CAAC;IACnE,QAAQ,MAAM,IAAI,GAAG,IAAI,yCAAyC,EAAE;IACpE,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;IAC7B,QAAQ,IAAI,CAAC,gBAAgB,GAAG,QAAQ;IACxC,QAAQ,MAAM,IAAI,GAAG,IAAI,yCAAyC,EAAE;IACpE,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;IAC7B,QAAQ,IAAI,CAAC,gBAAgB,GAAG,QAAQ;IACxC,QAAQ,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;IACnC,QAAQ,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;IACxD,QAAQX,eAAK,CAAC,QAAQ,CAAC,UAAU,EAAEW,cAAI,GAAG,4BAA4B,CAAC;IACvE,QAAQ,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;IACtD,QAAQX,eAAK,CAAC,QAAQ,CAAC,QAAQ,EAAEW,cAAI,GAAG,0BAA0B,CAAC;IACnE,QAAQ,MAAM,IAAI,GAAG,IAAI,sCAAsC,EAAE;IACjE,QAAQ,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,IAAI;IAC5C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,QAAQ;IACxC,QAAQ,MAAM,MAAM,GAAG,IAAI,sCAAsC,EAAE;IACnE,QAAQ,MAAM,CAAC,OAAO,GAAG,gBAAgB,CAAC,MAAM;IAChD,QAAQ,MAAM,CAAC,gBAAgB,GAAG,QAAQ;IAC1C,QAAQ,MAAM,SAAS,GAAG,IAAI,sCAAsC,EAAE;IACtE,QAAQ,SAAS,CAAC,OAAO,GAAG,gBAAgB,CAAC,SAAS;IACtD,QAAQ,SAAS,CAAC,gBAAgB,GAAG,QAAQ;IAC7C,QAAQ,MAAM,MAAM,GAAG,IAAI,sCAAsC,EAAE;IACnE,QAAQ,MAAM,CAAC,OAAO,GAAG,gBAAgB,CAAC,aAAa;IACvD,QAAQ,SAAS,CAAC,gBAAgB,GAAG,QAAQ;IAC7C,QAAQ,MAAM,EAAE,GAAG,IAAI,sCAAsC,EAAE;IAC/D,QAAQ,EAAE,CAAC,OAAO,GAAG,gBAAgB,CAAC,aAAa;IACnD,QAAQ,MAAM,EAAE,GAAG,IAAI,sCAAsC,EAAE;IAC/D,QAAQ,EAAE,CAAC,OAAO,GAAG,gBAAgB,CAAC,WAAW;IACjD,QAAQ,MAAM,SAAS,GAAG,IAAI,uCAAuC,EAAE;IACvE,QAAQ,SAAS,CAAC,KAAK,GAAG,MAAM;IAChC,QAAQ,MAAM,WAAW,GAAG,IAAI,uCAAuC,EAAE;IACzE,QAAQ,WAAW,CAAC,KAAK,GAAG,QAAQ;IACpC,QAAQ,MAAM,UAAU,GAAG,IAAI,uCAAuC,EAAE;IACxE,QAAQ,UAAU,CAAC,KAAK,GAAG,OAAO;IAClC,QAAQ,MAAM,OAAO,GAAG,IAAI,uCAAuC,EAAE;IACrE,QAAQ,OAAO,CAAC,KAAK,GAAG,SAAS;IACjC,QAAQ,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC;IAC7G,QAAQ,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;IACxD,QAAQX,eAAK,CAAC,QAAQ,CAAC,UAAU,EAAEW,cAAI,GAAG,4BAA4B,CAAC;IACvE,QAAQ,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;IACtD,QAAQX,eAAK,CAAC,QAAQ,CAAC,QAAQ,EAAEW,cAAI,GAAG,0BAA0B,CAAC;IACnE,QAAQ,MAAM,IAAI,GAAG,IAAI,sCAAsC,EAAE;IACjE,QAAQ,MAAM,GAAG,GAAG,IAAI,uCAAuC,EAAE;IACjE,QAAQ,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC;IAClC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC;IACzE,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,OAAO,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE;IAC5C,QAAQ,IAAI,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,uBAAuB;IAChF,QAAQ,OAAO,IAAI,IAAI,EAAE,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,WAAW;IACjH,eAAe,OAAO,IAAI,KAAK,UAAU,IAAIX,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI;IACtF,eAAe,OAAO,IAAI,KAAK,UAAU,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,YAAY,IAAI,CAAC,EAAE;IACrG,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU;IAC1C,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;IAChC,gBAAgB,IAAI,GAAG,IAAI;IAC3B,gBAAgB;IAChB,YAAY;IACZ,YAAY,IAAI,GAAG,MAAM;IACzB,QAAQ;IACR,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,OAAO,2BAA2B,CAAC,KAAK,EAAE;IAC9C,QAAQ,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,CAAC,cAAc,CAAC;IACnF,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,OAAO,mCAAmC,CAAC,KAAK,EAAE;IACtD,QAAQ,IAAI,MAAM,GAAG,EAAE;IACvB,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;IAC1C,YAAY,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;IAClC,gBAAgB,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc;IACjD,gBAAgB,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;IAC3E,oBAAoB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,oBAAoB,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;IACpD,wBAAwB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1D,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,YAAY,OAAO,MAAM;IACzB,QAAQ;IACR;IACA,QAAQ,IAAI,KAAK,CAAC,cAAc,KAAK,KAAK,CAAC,YAAY,EAAE;IACzD,YAAY,IAAI,MAAM,GAAG,KAAK,CAAC,cAAc;IAC7C,YAAY,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,eAAe,IAAI,MAAM,EAAE;IACnH,gBAAgB,MAAM,GAAG,MAAM,CAAC,aAAa;IAC7C,YAAY;IACZ,YAAY,OAAO,MAAM,YAAY,OAAO,GAAG,CAAC,MAAM,CAAC;IACvD,iBAAiB,MAAM,CAAC,aAAa,CAAC,eAAe,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC/F,QAAQ;IACR;IACA,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,uBAAuB,EAAE,OAAO,GAAG,KAAK;IACjE,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACzD,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,YAAY,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC;IAC1E,mBAAmB,OAAO;IAC1B,YAAY,IAAI,IAAI,IAAI,oBAAoB,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;IACpE,gBAAgB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IAClC,gBAAgB,OAAO,GAAG,IAAI;IAC9B,gBAAgB,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;IACxD,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,OAAO,GAAG,MAAM,IAAI,IAAI,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1F,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,OAAO,0BAA0B,CAAC,KAAK,EAAE;IAC7C,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,EAAE,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE;IACtE,QAAQ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC7B,QAAQ,MAAM,CAAC,QAAQ,EAAE;IACzB,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,eAAe,KAAK,MAAM,CAAC;IACpG,QAAQ,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC;IAC7B,QAAQ,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;IACtD,YAAY,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC;IACvD,QAAQ;IACR,QAAQ,OAAO,MAAM;IACrB,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,OAAO,cAAc,CAAC,IAAI,EAAE;IAChC,QAAQ,OAAO,IAAI,YAAY,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;IAC9F,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE;IACxC,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE;IAC5C,QAAQ,IAAI,CAAC,MAAM,EAAE;IACrB,YAAY,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;IACtC,YAAY,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;IACnC,QAAQ;IACR,aAAa;IACb,YAAY,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACnC,YAAY,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IACtD,QAAQ;IACR,QAAQ,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE;IACjD,QAAQ,SAAS,CAAC,eAAe,EAAE;IACnC,QAAQ,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;IACjC,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,OAAO,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE;IACpC,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU;IACrC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC/C,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,YAAY,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;IAClD,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,OAAO,wBAAwB,CAAC,KAAK,EAAE;IAC3C,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;IAClC,YAAY,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,EAAE,KAAK,GAAG,KAAK,CAAC,WAAW;IAC1E,YAAY,IAAI,IAAI;IACpB,YAAY,IAAI,MAAM,KAAK,KAAK,CAAC,YAAY,IAAI,KAAK,KAAK,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,WAAW,IAAI,IAAI,CAAC,eAAe,KAAK,OAAO,EAAE;IACtL,gBAAgB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;IACtD,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;IAChC,IAAI;IACJ;;IC3PA,IAAIC,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACA,SAAS,YAAY,CAAC,KAAK,EAAE;IAC7B,IAAI,OAAO,eAAe,GAAG,KAAK;IAClC;IACA;IACA,IAAI,uCAAuC,GAAG,MAAM,uCAAuC,SAAS,wCAAwC,CAAC;IAC7I,IAAI,UAAU,CAAC,KAAK,EAAE;IACtB,QAAQ,MAAM,GAAG,GAAG,oBAAoB,CAAC,mCAAmC,CAAC,KAAK,CAAC;IACnF,QAAQ,IAAIF,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;IACtC,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR,QAAQ,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC,SAAS;IACrE,QAAQ,OAAO,SAAS,IAAI,IAAI,CAAC,KAAK;IACtC,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,IAAI,KAAK,OAAO,EAAE;IAC9B,YAAY,IAAIA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,GAAG,CAAC,EAAE;IACnF,gBAAgB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC;IAC7C,YAAY;IACZ,YAAY,IAAIA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,EAAE;IAC3E,gBAAgB,IAAI,CAAC,OAAO,GAAG,GAAG;IAClC,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,GAAG;IACX,QAAQ,MAAM,QAAQ,GAAG,oBAAoB,CAAC,mCAAmC,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7F,QAAQ,IAAI,WAAW;IACvB,QAAQ,KAAK,IAAI,EAAE,IAAI,QAAQ,EAAE;IACjC,YAAY,IAAI,oBAAoB,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,WAAW,EAAE;IACtF;IACA,gBAAgB,IAAIA,eAAK,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;IAC/C,oBAAoB,WAAW,GAAGA,eAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK;IAC5F,gBAAgB;IAChB,gBAAgB,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE;IACvC,gBAAgBA,eAAK,CAAC,WAAW,CAAC,EAAE,EAAE,+CAA+C,CAAC;IACtF,gBAAgB,IAAI,CAACA,eAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;IACjD,oBAAoBA,eAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,WAAW,CAAC;IAC7D,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE;IAChC,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,uCAAuC,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;IACtE,uCAAuC,GAAGP,YAAU,CAAC;IACrD,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,+BAA+B,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IACtF,QAAQ,QAAQ,EAAE;IAClB,KAAK;IACL,CAAC,EAAE,uCAAuC,CAAC;;IC7D3C,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACA,SAAS,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE;IAC/C,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;IAC7C,IAAI,GAAG,CAAC,WAAW,GAAG,WAAW;IACjC,IAAI,GAAG,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAChD;IACA;IACA,IAAI,GAAG,CAAC,QAAQ,GAAG,CAAC;IACpB,IAAI,KAAK,CAAC,cAAc,EAAE;IAC1B,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;IACzB,IAAI,OAAO,GAAG;IACd;IACA,SAAS,aAAa,CAAC,IAAI,EAAE;IAC7B,IAAI,OAAO,IAAI,YAAY,cAAc,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK;IACnE;IACA,SAAS,UAAU,CAAC,KAAK,EAAE;IAC3B,IAAI,MAAM,KAAK,GAAG,oBAAoB,CAAC,wBAAwB,CAAC,KAAK,CAAC;IACtE,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;IACtD,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW;IACxE,QAAQ,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE;IACrD,IAAI;IACJ,IAAI,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;IAC5B;IACA;IACA,IAAI,sCAAsC,GAAG,MAAM,sCAAsC,SAAS,kCAAkC,CAAC;IACrI,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3B,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,KAAK;IACtC,YAAY,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM;IAClC,YAAY,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC;IACzD,QAAQ,CAAC;IACT;IACA,IAAI;IACJ,IAAI,UAAU;IACd,IAAI,qBAAqB;IACzB,IAAI,OAAO,CAAC,OAAO,EAAE;IACrB,QAAQ,OAAO,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI;IAC9E,YAAYF,eAAK,CAAC,WAAW,CAAC,GAAG,EAAE,sBAAsB,CAAC;IAC1D,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,IAAI,CAAC,EAAE,EAAE;IACb,QAAQ,MAAM,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;IACpD,QAAQ,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;IACrD,QAAQ,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC7B,QAAQ,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IAClC,IAAI;IACJ,IAAI,UAAU,CAAC,CAAC,EAAE;IAClB,QAAQ,OAAO,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,KAAK;IAC/C,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,aAAa,EAAE;IAC5B,QAAQ,IAAI,CAAC,cAAc,EAAE;IAC7B,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,CAAC,KAAK,EAAE;IACpB,YAAY,QAAQ,IAAI;IACxB,gBAAgB,KAAK,YAAY;IACjC,oBAAoB,IAAI,CAAC,aAAa,EAAE;IACxC,oBAAoB;IACpB,gBAAgB,KAAK,gBAAgB;IACrC,oBAAoB,IAAI,GAAG,EAAE;IAC7B,wBAAwB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;IACnD,oBAAoB;IACpB,oBAAoB,IAAI,GAAG,EAAE;IAC7B,wBAAwB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;IAChD,oBAAoB;IACpB,oBAAoB;IACpB,gBAAgB,KAAK,OAAO;IAC5B,oBAAoB,IAAI,CAAC,gBAAgB,EAAE;IAC3C,oBAAoB;IACpB;IACA,QAAQ;IACR,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,IAAI,CAAC,iBAAiB,EAAE;IAChC,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ,IAAI,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;IACzC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU;IACnC,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE;IACzC,YAAYA,eAAK,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,sBAAsB,CAAC;IAClE,QAAQ;IACR,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;IACvD,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE;IACzC,YAAYA,eAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,sBAAsB,CAAC;IAC/D,QAAQ;IACR,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE;IACxB,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW;IAClD,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;IACnC,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM;IACzC,QAAQ;IACR,IAAI;IACJ,IAAI,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE;IACtD,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,OAAO,CAAC,KAAK,QAAQ,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9I,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS;IACjC,QAAQ,EAAE,CAAC,YAAY;IACvB,YAAY,EAAE,CAAC,aAAa,GAAG,aAAa;IAC5C,QAAQ,EAAE,CAAC,UAAU,GAAG,EAAE;IAC1B,IAAI;IACJ;IACA,IAAI,SAAS;IACb,IAAI,cAAc,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;IACzD,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,0BAA0B,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK;IAC3F,YAAY,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE;IACrC,gBAAgB,IAAI,OAAO,EAAE;IAC7B,oBAAoB,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC;IAC3D,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC;IACzD,gBAAgB;IAChB,YAAY;IACZ,QAAQ,CAAC,EAAE,4BAA4B,CAAC;IACxC,IAAI;IACJ,IAAI,iBAAiB,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE;IAC/C,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;IACvC,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;IACrC,YAAY,QAAQ,CAAC,OAAO,EAAE;IAC9B,QAAQ;IACR,IAAI;IACJ,IAAI,0BAA0B,CAAC,GAAG,EAAE;IACpC,QAAQ,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IAChE,IAAI;IACJ,IAAI,4BAA4B,CAAC,GAAG,EAAE;IACtC,QAAQ,GAAG,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IACnE,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,UAAU;IACxB,CAAC,EAAE,sCAAsC,CAAC,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC;AAC7EtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,UAAU;IAC5B,CAAC,EAAE,sCAAsC,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACzER,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAC7D,CAAC,EAAE,sCAAsC,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;IAC1E,sCAAsC,GAAGP,YAAU,CAAC;IACpD,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,8BAA8B,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IACrF,QAAQ,QAAQ,EAAE,CAAC;AACnB,CAAC,EAAEX,WAAC,CAAC,uDAAuD,EAAEA,WAAC,CAAC;AAChE,CAAC,EAAEA,WAAC,CAAC,uHAAuH,EAAEE,cAAI,CAAC,mEAAmE,EAAEF,WAAC,CAAC;AAC1M;AACA,CAAC,EAAEA,WAAC,CAAC;AACL;AACA;AACA,oJAAoJ,EAAEA,WAAC,CAAC,SAAS;IACjK,KAAK;IACL,CAAC,EAAE,sCAAsC,CAAC;;IChK1C,IAAIR,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACA;IACA,IAAI,sCAAsC,GAAG,MAAM,sCAAsC,SAAS,wCAAwC,CAAC;IAC3I,IAAI,UAAU,CAAC,KAAK,EAAE;IACtB,QAAQ,OAAO,CAACF,eAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3F,IAAI;IACJ,IAAI,IAAI,GAAG;IACX,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK;IAC3C,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;IACxC,YAAY,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;IAC/C,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;IACxC,gBAAgB,MAAM,SAAS,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO;IACzF,uBAAuB,oBAAoB,CAAC,mBAAmB,CAAC,KAAK,CAAC,cAAc,EAAE,OAAO;IAC7F,uBAAuB,oBAAoB,CAAC,mBAAmB,CAAC,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC;IAC5F,gBAAgB,IAAIA,eAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;IAC7C;IACA,oBAAoB,MAAM,cAAc,GAAG,oBAAoB,CAAC,mCAAmC,CAAC,KAAK,CAAC;IAC1G,oBAAoB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE;IAC9D,wBAAwB,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;IACxE,wBAAwB,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;IACzD;IACA,4BAA4B,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC;IAC1D,4BAA4B,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACnD,4BAA4B,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IACtE,4BAA4B,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,EAAE;IAChE,4BAA4B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IACjD,4BAA4B,oBAAoB,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC;IAC/E,4BAA4B,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC;IAC3E,4BAA4B,IAAI,CAAC,MAAM,EAAE;IACzC,wBAAwB;IACxB,6BAA6B;IAC7B;IACA,4BAA4B,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IACnE,4BAA4B,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxF,4BAA4B,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,EAAE;IAChE,4BAA4B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IACjD,4BAA4B,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;IACtD,wBAAwB;IACxB,wBAAwB,MAAM,CAAC,GAAG,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC;IAC7E,wBAAwB,CAAC,CAAC,QAAQ,EAAE;IACpC,oBAAoB;IACpB,gBAAgB;IAChB,qBAAqB;IACrB;IACA,oBAAoB,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAChD,oBAAoB,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;IACxE;IACA,oBAAoB,IAAI,OAAO,GAAG,KAAK;IACvC,oBAAoB,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU;IAC3D,oBAAoB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAChE,wBAAwB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,wBAAwB,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;IACzE,4BAA4B,OAAO,GAAG,IAAI;IAC1C,4BAA4B;IAC5B,wBAAwB;IACxB,oBAAoB;IACpB,oBAAoB,IAAI,OAAO,EAAE;IACjC,wBAAwB,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;IAC7D,wBAAwB,oBAAoB,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC;IACzE,wBAAwB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;IACzD,wBAAwB,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC;IACvE,wBAAwB,MAAM,CAAC,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC;IACtE,wBAAwB,CAAC,CAAC,QAAQ,EAAE;IACpC,oBAAoB;IACpB,yBAAyB;IACzB;IACA,wBAAwB,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,SAAS,CAAC;IAC7F,wBAAwB,MAAM,CAAC,GAAG,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC;IACvF,wBAAwB,CAAC,CAAC,QAAQ,EAAE;IACpC,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,YAAY,OAAO,EAAE;IACrB,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,sCAAsC,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;IACvE,sCAAsC,GAAGP,YAAU,CAAC;IACpD,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,8BAA8B,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IACrF,QAAQ,QAAQ,EAAE;IAClB,KAAK;IACL,CAAC,EAAE,sCAAsC,CAAC;;IC7F1C,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACA,MAAMsB,uBAAqB,GAAG;IAC9B,IAAI,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK;IAC3B,QAAQ,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAGhB,4BAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAGA,4BAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IACpH,IAAI,CAAC;IACL,IAAI,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK;IAC/B,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;IACtC,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,OAAOA,4BAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;IAC5D,IAAI;IACJ,CAAC;IACD;IACA,SAAS,cAAc,GAAG;IAC1B,IAAI,IAAI,MAAM,GAAG,EAAE;IACnB,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE;IAC7C,QAAQ,MAAM,IAAI,CAAC,iCAAiC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,EAAEC,WAAC,CAAC,mEAAmE,EAAE,KAAK,CAAC,4DAA4D,EAAE,KAAK,CAAC,iEAAiE,EAAE,KAAK,CAAC,sDAAsD,EAAE,KAAK,CAAC,QAAQ,EAAEA,WAAC,CAAC,YAAY,CAAC;IACtX,IAAI;IACJ,IAAI,OAAO,MAAM;IACjB;IACA;IACA,IAAI,+BAA+B,GAAG,MAAM,+BAA+B,SAASJ,oBAAU,CAAC,YAAY,CAAC;IAC5G,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,UAAU;IAC3B,gBAAgB,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACzI,gBAAgBL,eAAK,CAAC,WAAW,CAAC,IAAI,EAAE,iCAAiC,CAAC;IAC1E,gBAAgB,qBAAqB,CAAC,MAAM;IAC5C,oBAAoBA,eAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,mBAAmB,GAAG,eAAe,CAAC;IAC3F,gBAAgB,CAAC,CAAC;IAClB,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,cAAc,CAAC,CAAC,EAAE;IACtB,QAAQ,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IAC7C,QAAQ,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACzC,QAAQ,OAAO,IAAI,CAAC,cAAc,CAACA,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACxE,IAAI;IACJ,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;IACvC,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IACtD,IAAI;IACJ,IAAI,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;IAC3D,QAAQ,MAAM,MAAM,GAAGA,eAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACzC,QAAQ,IAAI,CAACA,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;IACzC,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR,QAAQ,MAAM,QAAQ,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IACtD,QAAQ,OAAO,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,QAAQ;IAC3E,IAAI;IACJ,IAAI,SAAS,CAAC,CAAC,EAAE;IACjB,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ;IAClC,QAAQ,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACzC,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI;IACzB,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/G,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAChD,CAAC,EAAE,+BAA+B,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AAC9DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAChD,CAAC,EAAE,+BAA+B,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;IACjE,+BAA+B,GAAGP,YAAU,CAAC;IAC7C,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,wBAAwB,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IAC/E,QAAQ,QAAQ,EAAE,CAAC,YAAY,EAAET,cAAI,CAAC,eAAe,EAAE,cAAc,EAAE,CAAC,MAAM;IAC9E,KAAK;IACL,CAAC,EAAE,+BAA+B,CAAC;IAEnC;IACO,MAAM,yBAAyB,SAASc,kBAAY,CAAC,EAAE,CAAC,eAAe,CAAC;IAC/E,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,MAAM,CAAC;IACrB,IAAI;IACJ;IACA;IACA;IACA,MAAM,cAAc,GAAG,EAAE;IACzB,SAAS,aAAa,GAAG;IACzB,IAAI,IAAI,MAAM,GAAG,EAAE;IACnB,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,cAAc,EAAE,IAAI,EAAE,EAAE;IACtD,QAAQ,MAAM,IAAI,CAAC,+BAA+B,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,EAAEhB,WAAC,CAAC,iEAAiE,EAAE,IAAI,CAAC,0DAA0D,EAAE,IAAI,CAAC,8DAA8D,EAAE,IAAI,CAAC,qDAAqD,EAAE,IAAI,CAAC,wBAAwB,EAAEA,WAAC,CAAC,YAAY,CAAC;IACvX,IAAI;IACJ,IAAI,OAAO,MAAM;IACjB;IACA,SAAS,cAAc,CAAC,CAAC,EAAE;IAC3B,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE;IACtB,IAAI,OAAO,CAAC,GAAG,GAAG;IAClB;IACA;IACA,IAAI,8BAA8B,GAAG,MAAM,8BAA8B,SAASJ,oBAAU,CAAC,YAAY,CAAC;IAC1G,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,UAAU;IAC3B,gBAAgB,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACzI,gBAAgBL,eAAK,CAAC,WAAW,CAAC,IAAI,EAAE,iCAAiC,CAAC;IAC1E,gBAAgB,qBAAqB,CAAC,MAAM;IAC5C,oBAAoBA,eAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,mBAAmB,GAAG,eAAe,CAAC;IAC3F,gBAAgB,CAAC,CAAC;IAClB,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,aAAa,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;IAC3C,QAAQ,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC;IAC1C,QAAQ,OAAO,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;IAC/B,IAAI;IACJ,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;IACtC,QAAQ,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IACrD,IAAI;IACJ,IAAI,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;IACzD,QAAQ,MAAM,MAAM,GAAGA,eAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACzC,QAAQ,IAAI,CAACA,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;IACzC,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR,QAAQ,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,CAAC;IAE7D,QAAQ,OAAO,MAAM,CAAC,WAAW,EAAE,KAAK,QAAQ;IAChD,IAAI;IACJ,IAAI,QAAQ,CAAC,CAAC,EAAE;IAChB,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC;IAC1D,QAAQ,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9C,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;IACxB,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9G,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAChD,CAAC,EAAE,8BAA8B,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAC5DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAChD,CAAC,EAAE,8BAA8B,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;IAChE,8BAA8B,GAAGP,YAAU,CAAC;IAC5C,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,uBAAuB,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IAC9E,QAAQ,QAAQ,EAAE,CAAC,YAAY,EAAET,cAAI,CAAC,cAAc,EAAE,aAAa,EAAE,CAAC,MAAM;IAC5E,KAAK;IACL,CAAC,EAAE,8BAA8B,CAAC;IAElC;IACA,SAAS,mBAAmB,GAAG;IAC/B,IAAI,IAAI,MAAM,GAAG,EAAE;IACnB,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE;IACtC,QAAQ,MAAM,IAAI,CAAC,CAAC,EAAEF,WAAC,CAAC,kCAAkC,EAAE,GAAG,GAAG,CAAC,CAAC,2DAA2D,EAAE,GAAG,CAAC,SAAS,EAAEA,WAAC,CAAC,MAAM,CAAC;IACzJ,IAAI;IACJ,IAAI,OAAO,CAAC,CAAC,EAAEA,WAAC,CAAC,0EAA0E,EAAE,MAAM,CAAC,EAAE,EAAEA,WAAC,CAAC,OAAO,CAAC;IAClH;IACA;IACA,IAAI,0BAA0B,GAAG,MAAM,0BAA0B,SAAS,gBAAgB,CAAC;IAC3F,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3B;IACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,UAAU;IAClC,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK;IAC5B,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK;IACpC,YAAY,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS;IAC1C,YAAY,QAAQ,GAAG;IACvB,gBAAgB,KAAK,MAAM;IAC3B,oBAAoB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC,oBAAoB;IACpB,gBAAgB,KAAK,OAAO;IAC5B,oBAAoB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC,oBAAoB;IACpB;IACA,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,gBAAgB,GAAG,CAAC,GAAG,KAAK;IACzC,YAAY,GAAG,CAAC,cAAc,EAAE;IAChC,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE;IACvC,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,yBAAyB,EAAE,CAAC;IAC/D,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,KAAK;IAC7C,YAAY,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACrC,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,KAAK;IAC1C,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE;IAC9B,gBAAgB;IAChB,YAAY;IACZ,YAAY,IAAI,CAAC,QAAQ,GAAG,UAAU;IACtC,YAAY,MAAM,SAAS,GAAGT,eAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;IACzD,YAAY,IAAI,CAAC,SAAS,CAAC,QAAQ;IACnC,gBAAgB,IAAI,CAAC,YAAY,CAAC,KAAK;IACvC,oBAAoB,IAAI,CAAC,WAAW,CAAC,IAAI;IACzC,wBAAwBA,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ;IAC3F,YAAY,MAAM,MAAM,GAAGA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IACpD,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;IAC3C,YAAY,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI;IACpE,YAAY,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI;IACpD,YAAY,QAAQ,CAAC,MAAM,GAAG,KAAK;IACnC,YAAY,qBAAqB,CAAC,MAAM;IACxC,gBAAgBA,eAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACvD,YAAY,CAAC,CAAC;IACd,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,KAAK;IAC3C,YAAY,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,IAAI,EAAE;IAC/C,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;IACrF,gBAAgB;IAChB,YAAY;IACZ,YAAY,IAAI,CAAC,aAAa,EAAE;IAChC,QAAQ,CAAC;IACT,IAAI;IACJ,IAAI,OAAO;IACX,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,UAAU;IAC3B,YAAY,KAAK,WAAW;IAC5B,gBAAgB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;IACtD,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5D,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAACS,WAAC,GAAG,WAAW,CAAC;IACjF,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,aAAa,CAACA,WAAC,GAAG,wBAAwB,CAAC;IACpG,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,aAAa,CAACA,WAAC,GAAG,uBAAuB,CAAC;IACjG,QAAQ,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC;IACpE,QAAQ,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC;IAClE,QAAQ,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,sBAAsB,CAAC;IACzE,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE;IACnD,QAAQ,MAAM,SAAS,GAAGT,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IACvD,QAAQ,MAAM,QAAQ,GAAGA,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;IACtD,QAAQ,MAAM,IAAI,GAAG,QAAQ,GAAG,SAAS,GAAG,GAAG;IAC/C,QAAQ,QAAQ,CAAC,iBAAiB,GAAG,CAAC,CAAC,KAAK;IAC5C,YAAY,OAAOA,eAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAACA,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IAC1F,QAAQ,CAAC;IACT,QAAQ,WAAW,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC;IAC1F,QAAQ,UAAU,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC;IACzF,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC;IACvF,QAAQ,QAAQ,CAAC,QAAQ,GAAG,IAAI;IAChC,QAAQ,QAAQ,CAAC,IAAI,GAAG,SAAS;IACjC,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM;IACjC,QAAQ,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;IACxE,QAAQ,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;IAC5E,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAEkB,gCAAsB,EAAE,KAAK,CAAC;IAC7E,QAAQ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC;IAC3F,QAAQ,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC;IACrF;IACA,QAAQ,MAAM,MAAM,GAAG,IAAIb,oBAAU,CAAC,iBAAiB,EAAE;IACzD,QAAQ,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IACvC,QAAQ,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1C,QAAQ,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IACzC,QAAQ,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IACnE,QAAQ,MAAM,IAAI,GAAGC,4BAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC;IAC/D,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IAC/C,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM;IACjC,QAAQ,IAAI,CAACN,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;IAClC,YAAY,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC;IAC5F,YAAY,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;IAC/E,YAAY,KAAK,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;IACnF,YAAY,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,WAAW,EAAEkB,gCAAsB,EAAE,KAAK,CAAC;IAC1F,YAAY,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC;IAClG,YAAY,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC;IACpG,YAAY,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC;IACvG,YAAY,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC;IACtG,QAAQ;IACR,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO;IACnC,QAAQ,IAAI,CAAClB,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;IACnC,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,IAAI,CAAC,WAAW;IAC3G,YAAY,KAAK,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE;IAChE,gBAAgB,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,EAAE,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;IACtF,gBAAgB,IAAI,UAAU,IAAI,CAAC,EAAE;IACrC,oBAAoB,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACtD,gBAAgB;IAChB,YAAY;IACZ,YAAY,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IAC1E,YAAY,MAAM,CAAC,MAAM,EAAE;IAC3B,YAAY,IAAI,CAAC,OAAO,GAAG,IAAI;IAC/B,QAAQ;IACR,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ,IAAI,eAAe,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;IAC7C,QAAQ,MAAM,GAAG,GAAGA,eAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACtC,QAAQ,IAAIA,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;IACrC,YAAY,OAAO,GAAG,CAAC,cAAc,CAACA,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC9E,QAAQ;IACR,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ,IAAI,KAAK,CAAC,CAAC,EAAE;IACb,QAAQ,IAAI,MAAM,GAAG,EAAE;IACvB,QAAQ,QAAQ,IAAI,CAAC,QAAQ;IAC7B,YAAY,KAAK,OAAO;IACxB,gBAAgB,MAAM,GAAG,GAAG;IAC5B,gBAAgB;IAChB,YAAY,KAAK,MAAM;IACvB,gBAAgB,MAAM,GAAG,IAAI;IAC7B,gBAAgB;IAChB;IACA,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IAChC,IAAI;IACJ,IAAI,KAAK,CAAC,CAAC,EAAE;IACb,QAAQ,IAAI,MAAM,GAAG,CAAC;IACtB,QAAQ,QAAQ,IAAI,CAAC,QAAQ;IAC7B,YAAY,KAAK,OAAO;IACxB,gBAAgB,MAAM,GAAG,EAAE;IAC3B,gBAAgB;IAChB,YAAY,KAAK,MAAM;IACvB,gBAAgB,MAAM,GAAG,GAAG;IAC5B,gBAAgB;IAChB;IACA,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IAChC,IAAI;IACJ,IAAI,WAAW,CAAC,CAAC,EAAE;IACnB,QAAQ,MAAM,EAAE,GAAGA,eAAK,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;IAClD,QAAQ,IAAI,CAAC,SAAS,GAAGA,eAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;IACrD,IAAI;IACJ,IAAI,SAAS,CAAC,CAAC,EAAE;IACjB,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,MAAM;IACjC,QAAQ,IAAI,CAAC,QAAQ,GAAG,UAAU;IAClC,IAAI;IACJ,IAAI,QAAQ,CAAC,CAAC,EAAE;IAChB,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,MAAM;IACjC,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO;IAC/B,IAAI;IACJ,IAAI,iBAAiB,CAAC,CAAC,EAAE;IACzB,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;IACpC,YAAY;IACZ,QAAQ;IACR,QAAQ,MAAM,IAAI,GAAGA,eAAK,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;IACpD,QAAQ,IAAIA,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;IACzE,YAAY,QAAQ,IAAI,CAAC,QAAQ;IACjC,gBAAgB,KAAK,OAAO;IAC5B,oBAAoB,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAACA,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACrG,oBAAoB;IACpB,gBAAgB,KAAK,MAAM;IAC3B,oBAAoB,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACjE,oBAAoB,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC;IAChF,oBAAoB;IACpB,gBAAgB;IAChB,oBAAoB,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAACA,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACrH,oBAAoB;IACpB;IACA,QAAQ;IACR,IAAI;IACJ,IAAI,aAAa,GAAG;IACpB;IACA,QAAQA,eAAK,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;IACxD,QAAQA,eAAK,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI;IAC3D,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI;IACxC,YAAYA,eAAK,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC;IAChE,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IAC5B,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;IAC1B,YAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI;IACvC,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ;IACzC,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ;IACvC,QAAQ;IACR,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IAChD,YAAY,IAAIqB,0BAAgB,CAAC,YAAY,CAAC,GAAG,EAAEI,kBAAY,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE;IACrF,gBAAgBzB,eAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACjE,gBAAgB,MAAM,WAAW,GAAGqB,0BAAgB,CAAC,YAAY,CAAC,GAAG,EAAE,yBAAyB,CAAC;IACjG,gBAAgB,IAAI,WAAW,EAAE;IACjC,oBAAoB,IAAI,CAAC,OAAO,GAAG,IAAI;IACvC,gBAAgB;IAChB,gBAAgB,IAAI,CAAC,KAAK,EAAE;IAC5B,gBAAgB,IAAI,CAAC,OAAO,GAAG,KAAK;IACpC,gBAAgB,IAAI,CAAC,aAAa,EAAE;IACpC,gBAAgB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;IAChD,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS;IAC1C,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;IACvC,QAAQ,IAAI,CAACrB,eAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;IACrC,YAAY,MAAM,OAAO,GAAGA,eAAK,CAAC,SAAS,CAAC,GAAG,CAAC;IAChD,YAAY,IAAIA,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IAC7C,gBAAgB,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,GAAG,OAAO;IAC3D,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,QAAQ,CAAC,IAAI,GAAG,MAAM;IACtC,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,YAAY,CAAC,KAAK,EAAE;IACxB,QAAQ,MAAM,CAAC,GAAGA,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1C,QAAQ,IAAIA,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;IACnC,YAAY,OAAOA,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,OAAO,EAAEA,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/E,QAAQ;IACR,QAAQ,OAAO,EAAE;IACjB,IAAI;IACJ,IAAI,0BAA0B,CAAC,GAAG,EAAE,GAAG,EAAE;IACzC,QAAQ,MAAM,IAAI,GAAGA,eAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,GAAGA,eAAK,CAAC,SAAS,CAAC,GAAG,CAAC;IACtE,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAIA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;IACpE,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAIA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;IACpE,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR,QAAQ,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;IAC/C,IAAI;IACJ,IAAI,+BAA+B,CAAC,IAAI,EAAE;IAC1C,QAAQ,OAAOQ,4BAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;IACxD,IAAI;IACJ,CAAC;AACDP,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,kBAAkB;IAChC,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAC1DtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,CAAC,EAAEZ,cAAI,CAAC,SAAS,CAAC;IACjC,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AACzDV,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,EAAEd,WAAC,CAAC,cAAc,CAAC;IAClC,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AAChER,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,cAAc;IAChC,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAC1DR,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEiB,uBAAqB,EAAE;IAC3D,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAC1DvB,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAChD,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,CAAC;AAClEP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AAC7DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AAC5DP,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AACzDN,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;IAC7D,0BAA0B,GAAGN,YAAU,CAAC;IACxC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,kBAAkB,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IACzE,QAAQ,QAAQ,EAAE,CAAC,YAAY,EAAET,cAAI,CAAC;AACtC,8BAA8B,EAAEA,cAAI,CAAC,WAAW,EAAEF,WAAC,CAAC,0CAA0C,EAAEE,cAAI,CAAC,aAAa,EAAEF,WAAC,CAAC;AACtH,KAAK,EAAEA,WAAC,CAAC,2BAA2B,EAAEE,cAAI,CAAC,6FAA6F,EAAEA,cAAI,CAAC;AAC/I;AACA;AACA;AACA,yBAAyB,EAAEF,WAAC,CAAC;AAC7B;AACA,CAAC,EAAEA,WAAC,CAAC;AACL,gBAAgB,EAAEE,cAAI,CAAC;AACvB,SAAS,EAAEF,WAAC,CAAC;AACb;AACA;AACA,qBAAqB,EAAEA,WAAC,CAAC,4HAA4H,EAAEA,WAAC,CAAC;AACzJ,qBAAqB,EAAEA,WAAC,CAAC,uHAAuH,EAAEA,WAAC,CAAC;AACpJ,qBAAqB,EAAEA,WAAC,CAAC,2EAA2E,EAAEA,WAAC,CAAC;AACxG;AACA,+CAA+C,EAAEE,cAAI,CAAC;AACtD;AACA,yBAAyB,EAAEF,WAAC,CAAC,wGAAwG,EAAEA,WAAC,CAAC;AACzI,yBAAyB,EAAEA,WAAC,CAAC,yGAAyG,EAAEA,WAAC,CAAC;AAC1I;AACA;AACA,gBAAgB,EAAE,mBAAmB,EAAE,CAAC;AACxC,iBAAiB,EAAEA,WAAC,CAAC,oQAAoQ,EAAEA,WAAC,CAAC;AAC7R,iBAAiB,EAAEA,WAAC,CAAC,qNAAqN,EAAEA,WAAC,CAAC;AAC9O,iBAAiB,EAAEA,WAAC,CAAC,gNAAgN,EAAEA,WAAC,CAAC;AACzO;AACA,SAAS,EAAEA,WAAC,CAAC;AACb;AACA,EAAE,EAAEA,WAAC,CAAC,aAAa;IACnB,KAAK;IACL,CAAC,EAAE,0BAA0B,CAAC;;ICje9B,IAAIR,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAGD;IACA,MAAM,gCAAgC,GAAG;IACzC,IAAI,OAAO,EAAE,CAAC,IAAI,KAAK,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,IAAI,KAAK,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC;IACjF,IAAI,WAAW,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ;IACxC,CAAC;IACD;IACA,IAAI,oBAAoB,GAAG,MAAM,oBAAoB,SAAS,gBAAgB,CAAC;IAC/E,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,UAAU,CAAC;IACzB;IACA,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE;IACzB,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,GAAGF,eAAK,CAAC,UAAU,EAAE;IAC5C,IAAI;IACJ,IAAI,+BAA+B,CAAC,IAAI,EAAE;IAC1C,QAAQ,gCAAgC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU;IAC5G,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,QAAQ;IACpC,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ;IAC7D,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;IAC/B,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO;IAC9C,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU;IACnF,QAAQ,OAAOA,eAAK,CAAC,UAAU,CAAC,KAAK,CAAC;IACtC,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;IAC3D,QAAQ,IAAI,CAAC,cAAc,EAAE;IAC7B,QAAQ,IAAI,IAAI,CAAC,KAAK,wEAAwE,IAAI,CAAC,SAAS;IAC5G,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI;IAChC,aAAa,IAAI,IAAI,CAAC,KAAK,wEAAwE,IAAI,CAAC,UAAU;IAClH,YAAY,IAAI,CAAC,QAAQ,GAAG,KAAK;IACjC,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;IAC3B;IACA,YAAY;IACZ,QAAQ;IACR,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,SAAS;IAC1B,gBAAgB,IAAI,CAAC,MAAM,CAAC,MAAM,GAAGA,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC;IAC7D,gBAAgB;IAChB,YAAY,KAAK,MAAM;IACvB,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG;IACzC,gBAAgB;IAChB,YAAY,KAAK,UAAU;IAC3B,gBAAgB,IAAI,CAAC,cAAc,EAAE;IACrC,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,cAAc,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;IACxC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;IAC1C,YAAY,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS;IACvC,YAAYA,eAAK,CAAC,QAAQ,CAAC,IAAI,EAAEW,cAAI,GAAG,WAAW,CAAC;IACpD,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC;IACvD,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;IACxC,YAAYX,eAAK,CAAC,WAAW,CAAC,IAAI,EAAEW,cAAI,GAAG,WAAW,CAAC;IACvD,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC;IACxD,QAAQ;IACR,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,IAAI,CAAC,QAAQ,GAAG,GAAG,wEAAwE,IAAI,CAAC,SAAS;IACjH,IAAI;IACJ,IAAI,YAAY,CAAC,GAAG,EAAE;IACtB,QAAQ,IAAI,CAACX,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC;IAC9B,YAAY,OAAO,IAAI,CAAC,OAAO;IAC/B,QAAQ,OAAO,EAAE;IACjB,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,sBAAsB;IACpC,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACvDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,OAAO;IACrB,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACpDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,CAAC,EAAEZ,cAAI,CAAC,SAAS,CAAC;IACjC,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAClDV,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AACrDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,gCAAgC,EAAE;IACtE,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACvDN,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,gCAAgC,EAAE;IACtE,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AACxDN,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;IACtD,oBAAoB,GAAGP,YAAU,CAAC;IAClC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,WAAW;IAChC,QAAQ,QAAQ,EAAE,CAAC,CAAC,EAAEA,WAAC,CAAC,aAAa,EAAEE,cAAI,CAAC,UAAU,EAAEA,cAAI,CAAC,wCAAwC,EAAEF,WAAC,CAAC;AACzG,8BAA8B,EAAEE,cAAI,CAAC,wBAAwB,EAAEA,cAAI,CAAC,OAAO,EAAEA,cAAI,CAAC,UAAU,EAAEA,cAAI,CAAC,oBAAoB,EAAEF,WAAC,CAAC,sCAAsC,EAAEA,WAAC,CAAC,cAAc,CAAC;IACpL,QAAQ,MAAM,EAAEW,kBAAQ,CAAC;IACzB,KAAK;IACL,CAAC,EAAE,oBAAoB,CAAC;;IChHxB,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAGD;IACA;IACA,IAAI,wBAAwB,GAAG,MAAM,wBAAwB,SAAS,sBAAsB,CAAC;IAC7F,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB;IACA,IAAI;IACJ,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,IAAI,CAAC;IACnB,QAAQ,IAAI,CAAC,gBAAgB,GAAG,EAAE;IAClC,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAGF,eAAK,CAAC,UAAU,EAAE;IAC9C,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAO,EAAE;IACjB,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,IAAI,KAAK,UAAU,EAAE;IACjC,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG;IACrC,QAAQ;IACR,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ;IAC3C,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,QAAQ;IACrC,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,QAAQ;IACxC,IAAI;IACJ,IAAI,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;IACxC,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE;IACpD,YAAY,IAAI,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC,gBAAgB;IACpD,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,IAAI,EAAE;IAClD,gBAAgB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACpD,YAAY;IACZ,iBAAiB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;IAC7E,gBAAgB,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACtC,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACzF,QAAQ,OAAOA,eAAK,CAAC,UAAU,CAAC,GAAG,CAAC;IACpC,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,KAAK,EAAEZ,cAAI,CAAC,SAAS,CAAC;IACrC,CAAC,EAAE,wBAAwB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AACvDV,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,WAAW;IAC7B,CAAC,EAAE,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AAC3DR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,OAAO;IACzB,CAAC,EAAE,wBAAwB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;IAC1D,wBAAwB,GAAGR,YAAU,CAAC;IACtC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAEA,WAAC,CAAC;AACvD,eAAe,EAAEE,cAAI,CAAC,eAAe,EAAEA,cAAI,CAAC;AAC5C;AACA,iBAAiB,EAAEF,WAAC,CAAC;AACrB;AACA,GAAG,EAAEK,iCAAuB,CAAC,4FAA4F,EAAEL,WAAC,CAAC;AAC7H;AACA;AACA,EAAE,EAAEA,WAAC,CAAC,uBAAuB,EAAEE,cAAI,CAAC,YAAY,EAAEF,WAAC,CAAC,qCAAqC,EAAEA,WAAC,CAAC,cAAc,EAAEA,WAAC,CAAC,QAAQ,EAAEA,WAAC,CAAC,OAAO,EAAEA,WAAC,CAAC,WAAW,EAAEA,WAAC,CAAC,SAAS,CAAC;IAC/J,QAAQ,MAAM,EAAEW,kBAAQ,CAAC;IACzB,KAAK;IACL,CAAC,EAAE,wBAAwB,CAAC;;IC1E5B,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAGD;IACA,IAAI,+BAA+B,GAAG,MAAM,+BAA+B,SAASwB,0BAAgB,CAAC;IACrG,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,CAAC,KAAK,EAAE;IACpB,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,CAAC1B,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IACpJ,YAAY,IAAI,IAAI,KAAK;IACzB,mBAAmB,IAAI,KAAK;IAC5B,oBAAoB,IAAI,KAAK,OAAO,IAAI,cAAc,IAAI,eAAe,IAAIA,eAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;IACnJ,oBAAoB,IAAI,KAAK,OAAO,IAAI,cAAc,IAAI,eAAe,IAAI,CAACA,eAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE;IAC9I,gBAAgB,IAAI,CAAC,YAAY,EAAE;IACnC,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,YAAY,EAAE;IAC3B,IAAI;IACJ,IAAI,YAAY,GAAG;IACnB,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK;IAC/E,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,KAAK,CAAC,IAAIA,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE;IAC1E,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAIA,eAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IAClC,YAAY,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;IACpC,gBAAgB,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK;IACvC,YAAY;IACZ;IACA,YAAY,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,QAAQ;IACR,aAAa;IACb,YAAY,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK;IACpC;IACA,YAAY,IAAI,CAAC,KAAK,GAAGA,eAAK,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC;IAChD,QAAQ;IACR,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,IAAI,iCAAiC;IACvD,CAAC,EAAE,+BAA+B,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AAC9DN,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE;IAClF,CAAC,EAAE,+BAA+B,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACjEP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;IACzB,CAAC,EAAE,+BAA+B,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;IAC9D,+BAA+B,GAAGN,YAAU,CAAC;IAC7C,IAAIgB,uBAAa,CAAC,EAAE,OAAO,EAAER,WAAC,GAAG,uBAAuB,EAAE;IAC1D,CAAC,EAAE,+BAA+B,CAAC;IAEnC;IACA,IAAI,qBAAqB,GAAG,MAAM,qBAAqB,SAAS,gBAAgB,CAAC;IACjF,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3B;IACA,QAAQ,IAAI,CAAC,MAAM,GAAG,EAAE;IACxB,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE;IAC3B,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAO,EAAE;IACjB,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC;IACA,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK;IAC3C,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;IAC3C,YAAY,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IACrC,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;IAChC,IAAI;IACJ,IAAI,YAAY,CAAC,KAAK,EAAE;IACxB,QAAQ,OAAO,EAAE;IACjB,IAAI;IACJ,IAAI,+BAA+B,CAAC,IAAI,EAAE;IAC1C,QAAQ,OAAOD,4BAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;IAC1D,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,MAAM;IACvB,gBAAgB,IAAI,CAAC,cAAc,EAAE;IACrC,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,UAAU,CAAC,GAAG,EAAE;IACpB,QAAQ,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM;IAC7B,QAAQ,MAAM,IAAI,GAAGR,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO;IACvE,QAAQ,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI;IAC/C,QAAQ,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI;IACjD,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,0CAA0C;IAC3E,YAAY,IAAI,CAAC,cAAc,EAAE;IACjC,QAAQ;IACR,IAAI;IACJ,IAAI,KAAK,GAAG;IACZ,QAAQ,KAAK,CAAC,KAAK,EAAE;IACrB;IACA;IACA,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI;IACpC,YAAY,CAAC,CAAC,WAAW,EAAE;IAC3B,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,SAAS;IAC/D,QAAQ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI;IAClD,YAAY,IAAI,CAAC,YAAY,OAAO,IAAI,CAAC,CAAC,SAAS,MAAMS,WAAC,GAAG,OAAO,CAAC,EAAE;IACvE,gBAAgB,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC;IAC9D,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;IAC1B,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK;IACxC,eAAeT,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAKA,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;IACzG,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;IAC/D,YAAY,IAAI,CAAC,cAAc,EAAE;IACjC,QAAQ;IACR,IAAI;IACJ,IAAI,SAAS,CAAC,GAAG,EAAE;IACnB;IACA,QAAQU,sBAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClC,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM;IACjC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;IACnC,YAAY,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,QAAQ;IACR,aAAa;IACb,YAAY,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;IACzC,QAAQ;IACR,QAAQ,IAAI,CAAC,cAAc,EAAE;IAC7B,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM;IACnD,QAAQ,IAAI,IAAI,KAAK,OAAO,EAAE;IAC9B,YAAY,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1B,QAAQ;IACR,aAAa;IACb,YAAY,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;IAC7C,QAAQ;IACR,QAAQ,IAAI,CAAC,cAAc,EAAE;IAC7B,IAAI;IACJ,IAAI,cAAc,GAAG;IACrB,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI;IACJ,IAAI,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE;IACxC,QAAQ,QAAQ,IAAI,CAAC,IAAI;IACzB,YAAY,KAAK,OAAO;IACxB,gBAAgB,IAAI,GAAG,GAAG,MAAM,IAAI,EAAE;IACtC,gBAAgB,IAAIV,eAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;IACxC,oBAAoB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;IAC9C,gBAAgB;IAChB,gBAAgB;IAChB,YAAY;IACZ,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM;IAChE,gBAAgB,IAAI,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;IACzD,oBAAoB,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;IAC/C,wBAAwB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC;IACvD,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC;IAC/C,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;IACxC,QAAQ,QAAQ,IAAI,CAAC,IAAI;IACzB,YAAY,KAAK,OAAO;IACxB,gBAAgB,OAAOA,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC;IACzC,YAAY;IACZ,gBAAgB,OAAO,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI;IAChE;IACA,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,kBAAkB,EAAE,MAAM,CAAC;AAC/DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAC7D,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AAC3DP,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,GAAG,GAAGZ,cAAI,GAAG,YAAY;IACvC,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AACzDV,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,YAAY;IAC9B,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACvDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,GAAG,GAAGZ,cAAI,GAAG,yBAAyB;IACpD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACvDV,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AACnDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACxDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAChD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACvDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAChD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;IACrD,qBAAqB,GAAGP,YAAU,CAAC;IACnC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,YAAY,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IACnE,QAAQ,QAAQ,EAAE,CAAC,CAAC,EAAEX,WAAC,CAAC,qFAAqF,EAAEJ,oBAAU,CAAC,2BAA2B,CAAC;AACtJ,gBAAgB,EAAEM,cAAI,CAAC;AACvB;AACA,SAAS,EAAEF,WAAC,CAAC,cAAc,EAAEE,cAAI,CAAC;AAClC,aAAa,EAAEF,WAAC,CAAC,oCAAoC,EAAEE,cAAI,CAAC,yJAAyJ,EAAEA,cAAI,CAAC,oCAAoC,EAAEF,WAAC,CAAC;AACpQ,aAAa,EAAEA,WAAC,CAAC,gDAAgD,EAAEA,WAAC,CAAC,oEAAoE,EAAEE,cAAI,CAAC,gDAAgD,EAAEF,WAAC,CAAC,QAAQ,EAAEA,WAAC,CAAC;AAChN,aAAa,EAAEA,WAAC,CAAC,wHAAwH,EAAEK,iCAAuB,CAAC,uJAAuJ,EAAEL,WAAC,CAAC;AAC9T,aAAa,EAAEA,WAAC,CAAC,+DAA+D,EAAEE,cAAI,CAAC,8HAA8H,EAAEF,WAAC,CAAC;AACzN,UAAU,EAAEA,WAAC,CAAC;AACd;AACA;AACA,KAAK,EAAEA,WAAC,CAAC,oNAAoN,EAAEA,WAAC,CAAC;AACjO,EAAE,EAAEA,WAAC,CAAC;AACN,YAAY,EAAEE,cAAI,CAAC,wBAAwB,EAAEA,cAAI,CAAC;AAClD;AACA;AACA,CAAC,EAAEF,WAAC,CAAC;AACL,OAAO,EAAEkB,YAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACpC,OAAO,EAAEA,YAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC;AAClC,mBAAmB,EAAEA,YAAE,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAEA,YAAE,CAAC,YAAY,CAAC,KAAK,CAAC,uEAAuE,EAAElB,WAAC,CAAC,WAAW;IACvK,KAAK;IACL,CAAC,EAAE,qBAAqB,CAAC;;IC3OzB,IAAIR,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAKD,MAAM,qBAAqB,GAAG;IAC9B,IAAI,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK;IAC3B,QAAQ,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAGM,4BAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAGA,4BAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IACpH,IAAI,CAAC;IACL,IAAI,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK;IAC/B,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;IACtC,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,OAAOA,4BAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;IAC5D,IAAI;IACJ,CAAC;IACD;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,0BAA0B,GAAG,MAAM,0BAA0B,SAAS,gBAAgB,CAAC;IAC3F,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,EAAE;IACf;IACA,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK;IAC9B,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE;IACzB;IACA,QAAQ,IAAI,CAAC,MAAM,GAAG,EAAE;IACxB,QAAQ,IAAI,CAAC,IAAI,GAAG,EAAE;IACtB,QAAQ,IAAI,CAAC,IAAI,GAAG,EAAE;IACtB;IACA,QAAQ,IAAI,CAAC,MAAM,GAAG,EAAE;IACxB;IACA,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI;IACzB;IACA,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI;IAC3B;IACA,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI;IAC3B,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IAClG,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,QAAQ;IACzC,IAAI;IACJ,IAAI,+BAA+B,CAAC,IAAI,EAAE;IAC1C,QAAQ,OAAOA,4BAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;IACxD,IAAI;IACJ,IAAI,iBAAiB,GAAG;IACxB,QAAQ,KAAK,CAAC,iBAAiB,EAAE;IACjC,QAAQ,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;IAChC,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE;IAClD,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7C,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAC9C,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE;IACrC;IACA,QAAQ,IAAI,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,OAAO,GAAGR,eAAK,CAAC,OAAO;IAC1E;IACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;IACrC,YAAY,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,cAAc,CAACA,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAE9G,YAAY,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC/D,QAAQ;IACR,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;IAC7B;IACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;IACrC,YAAY,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1C,QAAQ;IACR,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK;IACzB;IACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;IACrC,YAAY,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5C,QAAQ;IACR,QAAQ,IAAI,CAAC,IAAI,GAAG,OAAO;IAC3B,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,WAAW;IAC5B,gBAAgB,IAAI,CAAC,GAAG,CAACe,iBAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,uBAAuB,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACzF,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;IAC1C;IACA,gBAAgB;IAChB,YAAY,KAAK,KAAK;IACtB,YAAY,KAAK,KAAK;IACtB,gBAAgB,IAAI,CAACf,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG;IACjD,uBAAuB,CAACA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IACvD,oBAAoB,IAAI,CAAC,WAAW,EAAE;IACtC,gBAAgB;IAChB,gBAAgB;IAChB,YAAY,KAAK,MAAM;IACvB,YAAY,KAAK,OAAO;IACxB,gBAAgB,IAAI,CAAC,aAAa,EAAE;IACpC,gBAAgB;IAChB,YAAY,KAAK,MAAM;IACvB,YAAY,KAAK,OAAO;IACxB,YAAY,KAAK,SAAS;IAC1B,YAAY,KAAK,SAAS;IAC1B,gBAAgB,IAAI,CAAC,QAAQ,EAAE;IAC/B,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,IAAI,CAAC,SAAS,GAAGA,eAAK,CAAC,SAAS,CAAC,GAAG,CAAC;IAC7C,IAAI;IACJ,IAAI,gBAAgB,CAAC,CAAC,EAAE;IACxB,QAAQ,IAAI,CAAC,CAAC,EAAE;IAChB,YAAY,IAAI,CAAC,IAAI,GAAG,SAAS;IACjC,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;IACjC,YAAY,CAAC,GAAGA,eAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAClC,QAAQ,MAAM,OAAO,GAAG,CAAC,CAAC,KAAKA,eAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACvD,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE;IACnC,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE;IAC/B,QAAQ,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC1C,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IAC9C,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IAC9C,IAAI;IACJ,IAAI,WAAW,GAAG;IAClB,QAAQ,IAAI,KAAK,GAAG,EAAE;IACtB,QAAQ,MAAM,GAAG,GAAGA,eAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAGA,eAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;IAC9E,QAAQ,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;IACrE,YAAY,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACzB,QAAQ;IACR,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK;IAC3B,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IAChD;IACA;IACA;IACA;IACA;IACA;IACA,YAAY,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IACtD,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,aAAa,CAAC,GAAG,EAAE;IACvB,QAAQ,IAAI,GAAG;IACf,YAAY,GAAG,CAAC,eAAe,EAAE;IACjC,QAAQ,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK;IACxF,YAAY,IAAI;IAChB,gBAAgB,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAClF,gBAAgB,OAAO,MAAM,CAAC,QAAQ,EAAE,IAAI,UAAU;IACtD,YAAY;IACZ,YAAY,OAAO,CAAC,EAAE;IACtB,gBAAgB,OAAO,KAAK;IAC5B,YAAY;IACZ,QAAQ,CAAC;IACT,QAAQ,IAAI,KAAK,GAAG,EAAE;IACtB,QAAQ,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;IAC3E,YAAY,IAAI,GAAG,GAAG,CAAC;IACvB,YAAY,GAAG;IACf,gBAAgB,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,cAAc,CAACA,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACnH,gBAAgB,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClH,YAAY,CAAC,QAAQ,MAAM,CAAC,EAAE,GAAG,CAAC;IAClC,QAAQ;IACR,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK;IAC3B,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/B,YAAY,IAAI,CAAC,IAAI,GAAG,EAAE;IAC1B;IACA,YAAY,IAAI,CAAC,QAAQ,EAAE;IAC3B,IAAI;IACJ,IAAI,aAAa,GAAG;IACpB,QAAQ,MAAM,CAAC,GAAG,IAAI;IACtB,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI;IACtC,eAAeA,eAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK;IAC1C,eAAeA,eAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;IAC5C,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,aAAa;IACb;IACA,YAAY,IAAI;IAChB,gBAAgB,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAChE,gBAAgB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACxC,gBAAgB,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5C,gBAAgB,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5C,gBAAgB,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IACxC,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE;IACpD,oBAAoB,OAAO,KAAK;IAChC,gBAAgB;IAChB;IACA,oBAAoB,OAAO,IAAI;IAC/B,YAAY;IACZ,YAAY,OAAO,CAAC,EAAE;IACtB,gBAAgB,OAAO,IAAI;IAC3B,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,IAAI,GAAG;IACf,YAAY,GAAG,CAAC,eAAe,EAAE;IACjC;IACA,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;IAC7C,IAAI;IACJ,IAAI,YAAY,CAAC,GAAG,EAAE;IACtB,QAAQ,MAAM,CAAC,yBAAyB,GAAG;IAC3C,QAAQ,IAAI,CAAC,EAAE;IACf,YAAY,OAAOA,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,IAAI,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,EAAEA,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpH,QAAQ;IACR,QAAQ,OAAO,EAAE;IACjB,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,GAAG,GAAGZ,cAAI,GAAG,gCAAgC,GAAGF,WAAC,GAAG,SAAS;IAC3E,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AAC3DR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,GAAG,GAAGZ,cAAI,GAAG,gCAAgC,GAAGF,WAAC,GAAG,SAAS;IAC3E,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AAC5DR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,GAAG,GAAGZ,cAAI,GAAG,gCAAgC,GAAGF,WAAC,GAAG,SAAS;IAC3E,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AAC3DR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,GAAG,GAAGZ,cAAI,GAAG,gCAAgC,GAAGF,WAAC,GAAG,SAAS;IAC3E,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AAC3DR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,GAAG,GAAGZ,cAAI,GAAG,gCAAgC,GAAGF,WAAC,GAAG,SAAS;IAC3E,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAC1DR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,GAAG,GAAGZ,cAAI,GAAG,gCAAgC,GAAGF,WAAC,GAAG,SAAS;IAC3E,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAC1DR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,IAAI,EAAEZ,cAAI,CAAC,uBAAuB,CAAC;IAClD,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AAC9DV,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,QAAQ,EAAE;IACpD,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AAC7DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,QAAQ,EAAE;IACpD,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;AACvDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,QAAQ,EAAE;IACpD,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;AACvDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AAC7DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,qBAAqB,EAAE;IAC3D,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAC1DN,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAC1DN,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAC1DN,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AACxDN,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AACzDN,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AACxDN,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AACzDN,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AAC3DN,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AAC3DN,gBAAU,CAAC;IACX,IAAIe,kBAAQ,CAAC,EAAE;IACf,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC;IAC1D,0BAA0B,GAAGf,YAAU,CAAC;IACxC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,kBAAkB,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IACzE,QAAQ,QAAQ,EAAE,CAAC,YAAY,EAAET,cAAI,CAAC;AACtC,gBAAgB,EAAEA,cAAI,CAAC,wBAAwB,EAAEA,cAAI,CAAC;AACtD;AACA,gBAAgB,EAAEA,cAAI,CAAC;AACvB,KAAK,EAAEF,WAAC,CAAC;AACT,MAAM,EAAEA,WAAC,CAAC;AACV;AACA,gBAAgB,EAAEE,cAAI,CAAC;AACvB,KAAK,EAAEF,WAAC,CAAC;AACT,MAAM,EAAEA,WAAC,CAAC;AACV;AACA,gBAAgB,EAAEE,cAAI,CAAC;AACvB,KAAK,EAAEF,WAAC,CAAC;AACT,MAAM,EAAEA,WAAC,CAAC;AACV;AACA,KAAK,EAAEA,WAAC,CAAC,cAAc,EAAEE,cAAI,CAAC;AAC9B,KAAK,EAAEF,WAAC,CAAC;AACT,MAAM,EAAEA,WAAC,CAAC,UAAU,EAAEA,WAAC,CAAC;AACxB;AACA,KAAK,EAAEA,WAAC,CAAC,cAAc,EAAEE,cAAI,CAAC;AAC9B,KAAK,EAAEF,WAAC,CAAC;AACT,MAAM,EAAEA,WAAC,CAAC,UAAU,EAAEA,WAAC,CAAC;AACxB;AACA,KAAK,EAAEA,WAAC,CAAC,cAAc,EAAEE,cAAI,CAAC;AAC9B,KAAK,EAAEF,WAAC,CAAC;AACT,MAAM,EAAEA,WAAC,CAAC,UAAU,EAAEA,WAAC,CAAC;AACxB;AACA;AACA,KAAK,EAAEA,WAAC,CAAC,cAAc,EAAEE,cAAI,CAAC;AAC9B;AACA,gCAAgC,EAAEF,WAAC,CAAC,qCAAqC,EAAEA,WAAC,CAAC;AAC7E,8BAA8B,EAAEA,WAAC,CAAC,8EAA8E,EAAEA,WAAC,CAAC;AACpH;AACA,MAAM,EAAEA,WAAC,CAAC;AACV,KAAK,EAAEA,WAAC,CAAC,aAAa,EAAEE,cAAI,CAAC,yKAAyK,EAAEF,WAAC,CAAC;AAC1M,MAAM;IACN,KAAK;IACL,CAAC,EAAE,0BAA0B,CAAC;;IC3T9B,IAAIR,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAGD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,yBAAyB,SAAS,wBAAwB,CAAC;IACxE,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,EAAE;IACf,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQF,eAAK,CAAC,QAAQ,CAAC,IAAI,EAAEW,cAAI,GAAG,YAAY,CAAC;IACjD,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI;IAC5B,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,OAAO;IACxB,gBAAgB,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC;IAClE,gBAAgB,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC;IACzD,gBAAgB;IAChB,YAAY,KAAK,SAAS;IAC1B,gBAAgB;IAChB,YAAY,KAAK,MAAM;IACvB,gBAAgB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK;IAClC,gBAAgB,IAAI,CAACX,eAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;IAC7C,oBAAoB,IAAI,GAAG,IAAI,IAAI;IACnC,wBAAwB,GAAG,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC;IACxD,oBAAoB,IAAI,GAAG,IAAI,IAAI;IACnC,wBAAwB,GAAG,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC;IACtD,gBAAgB;IAChB,gBAAgB;IAChB,YAAY,KAAK,UAAU;IAC3B,gBAAgB,IAAI,CAAC,0BAA0B,EAAE;IACjD,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,MAAM;IACV;IACA,IAAI,0BAA0B,GAAG;IACjC,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK;IAClD,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;IAChE,YAAY,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;IAC7C,YAAY,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,MAAM;IACtD,gBAAgB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IACpC,YAAY,CAAC,CAAC;IACd,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;IAC3B,YAAY,OAAOA,eAAK,CAAC,UAAU,CAAC,IAAI,CAAC;IACzC,QAAQ;IACR,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;IACjC,IAAI;IACJ;AACAC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AAC1DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,yBAAyB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AAC/DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClF,CAAC,EAAE,yBAAyB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;IACxD;IACO,MAAM,wBAAwB,GAAG,CAAC,CAAC,EAAEC,WAAC,CAAC,0FAA0F,EAAEA,WAAC,CAAC,MAAM,CAAC;IACnJ;IACA,SAAS,YAAY,CAAC,GAAG,EAAE;IAC3B,IAAI,OAAOT,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC;IACnC;IACA;IACA,IAAI,6BAA6B,GAAG,MAAM,6BAA6B,SAAS,yBAAyB,CAAC;IAC1G,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,IAAI,MAAM,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC;IACvC,QAAQ,OAAOA,eAAK,CAAC,UAAU,CAAC,MAAM,CAAC;IACvC,IAAI;IACJ,CAAC;IACD,6BAA6B,GAAGC,YAAU,CAAC;IAC3C,IAAIgB,uBAAa,CAAC,EAAE,OAAO,EAAER,WAAC,GAAG,qBAAqB,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe,EAAE;IAC9H,CAAC,EAAE,6BAA6B,CAAC;IAEjC;IACA,IAAI,0BAA0B,GAAG,MAAM,0BAA0B,SAAS,yBAAyB,CAAC;IACpG,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,SAAS,EAAE;IAC1C,YAAY,IAAI,CAAC,0BAA0B,EAAE;IAC7C,QAAQ;IACR,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,IAAI,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO;IACjD,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;IAChC,YAAY,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAClD,QAAQ;IACR,QAAQ,OAAOpB,eAAK,CAAC,UAAU,CAAC,MAAM,CAAC;IACvC,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;IAC3D,0BAA0B,GAAGP,YAAU,CAAC;IACxC,IAAIgB,uBAAa,CAAC,EAAE,OAAO,EAAER,WAAC,GAAG,kBAAkB,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe,EAAE;IAC3H,CAAC,EAAE,0BAA0B,CAAC;IAE9B;IACA,IAAI,2BAA2B,GAAG,MAAM,2BAA2B,SAAS,yBAAyB,CAAC;IACtG,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,CAAC,KAAK;IAClB,aAAa,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;IAChD,YAAY,IAAI,CAAC,0BAA0B,EAAE;IAC7C,QAAQ;IACR,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,IAAI,MAAM,GAAG,IAAI;IACzB,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;IAChC,YAAY,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7B,gBAAgB,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG;IAC5E,YAAY,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7B,gBAAgB,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG;IAC5E,QAAQ;IACR,QAAQ,OAAOpB,eAAK,CAAC,UAAU,CAAC,MAAM,CAAC;IACvC,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,2BAA2B,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;AACxDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,2BAA2B,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;IACxD,2BAA2B,GAAGP,YAAU,CAAC;IACzC,IAAIgB,uBAAa,CAAC,EAAE,OAAO,EAAER,WAAC,GAAG,mBAAmB,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe,EAAE;IAC5H,CAAC,EAAE,2BAA2B,CAAC;IAE/B;IACA;IACA;IACA,IAAI,0BAA0B,GAAG,MAAM,0BAA0B,SAAS,yBAAyB,CAAC;IACpG,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,CAAC,KAAK;IAClB,aAAa,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;IAChD,YAAY,IAAI,CAAC,0BAA0B,EAAE;IAC7C,QAAQ;IACR,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,IAAI,MAAM,GAAG,IAAI;IACzB,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;IAChC,YAAY,IAAI,IAAI,GAAG,GAAG;IAC1B,YAAY,IAAI,GAAG,YAAY,IAAI,KAAK,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,IAAI,GAAGpB,eAAK,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;IAC/I,gBAAgB,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI;IACpC,oBAAoB,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,IAAIA,eAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE;IAC5F,gBAAgB,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI;IACpC,oBAAoB,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,IAAIA,eAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE;IAC5F,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI;IACpC,oBAAoB,MAAM,GAAG,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG;IACtD,gBAAgB,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI;IACpC,oBAAoB,MAAM,GAAG,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG;IACtD,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAOA,eAAK,CAAC,UAAU,CAAC,MAAM,CAAC;IACvC,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;AACvDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;IACvD,0BAA0B,GAAGP,YAAU,CAAC;IACxC,IAAIgB,uBAAa,CAAC,EAAE,OAAO,EAAER,WAAC,GAAG,kBAAkB,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe,EAAE;IAC3H,CAAC,EAAE,0BAA0B,CAAC;IAE9B;IACA;IACA;IACA,IAAI,4BAA4B,GAAG,MAAM,4BAA4B,SAAS,yBAAyB,CAAC;IACxG,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,CAAC,KAAK;IAClB,aAAa,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE;IACpD,YAAY,IAAI,CAAC,0BAA0B,EAAE;IAC7C,QAAQ;IACR,IAAI;IACJ,IAAI,2BAA2B,CAAC,GAAG,EAAE,KAAK,EAAE;IAC5C;IACA,QAAQ,IAAIpB,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAIA,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;IAClE,YAAY,OAAO,CAACA,eAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAEA,eAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjE,QAAQ;IACR,QAAQ,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;IAC3B,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,IAAI,MAAM,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,EAAE;IAC1C,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;IACxD,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,GAAG,EAAE,KAAK,CAAC;IACzE,YAAY,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC;IAClD,YAAY,QAAQ,IAAI,CAAC,QAAQ;IACjC,gBAAgB,KAAK,aAAa;IAClC,oBAAoB,MAAM,GAAG,GAAG,IAAI,KAAK;IACzC,oBAAoB;IACpB,gBAAgB,KAAK,MAAM;IAC3B,oBAAoB,MAAM,GAAG,GAAG,GAAG,KAAK;IACxC,oBAAoB;IACpB,gBAAgB,KAAK,gBAAgB;IACrC,oBAAoB,MAAM,GAAG,GAAG,IAAI,KAAK;IACzC,oBAAoB;IACpB,gBAAgB,KAAK,SAAS;IAC9B,oBAAoB,MAAM,GAAG,GAAG,GAAG,KAAK;IACxC,oBAAoB;IACpB,gBAAgB,KAAK,UAAU;IAC/B,oBAAoB,MAAM,GAAG,GAAG,KAAK,KAAK;IAC1C,oBAAoB;IACpB,gBAAgB;IAChB,oBAAoB,MAAM,GAAG,GAAG,KAAK,KAAK;IAC1C,oBAAoB;IACpB;IACA,QAAQ;IACR,QAAQ,OAAOA,eAAK,CAAC,UAAU,CAAC,MAAM,CAAC;IACvC,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,4BAA4B,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AAC9DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE;IAC5C,CAAC,EAAE,4BAA4B,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC;IACxD,4BAA4B,GAAGN,YAAU,CAAC;IAC1C,IAAIgB,uBAAa,CAAC,EAAE,OAAO,EAAER,WAAC,GAAG,oBAAoB,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe,EAAE;IAC7H,CAAC,EAAE,4BAA4B,CAAC;IAEhC;IACA;IACA,IAAI,2BAA2B,GAAG,MAAM,2BAA2B,SAAS,yBAAyB,CAAC;IACtG,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,CAAC,KAAK;IAClB,aAAa,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,CAAC,EAAE;IACxD,YAAY,IAAI,CAAC,0BAA0B,EAAE;IAC7C,QAAQ;IACR,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,IAAI,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO;IACzE,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;IAChC;IACA,YAAY,IAAI,CAACpB,eAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;IAC/C,gBAAgB,IAAI,QAAQ,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI;IACvE,gBAAgB,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IAChE,YAAY;IACZ;IACA,YAAY,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE;IACnF,gBAAgB,MAAM,GAAG,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,OAAO;IACtD,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAOA,eAAK,CAAC,UAAU,CAAC,MAAM,CAAC;IACvC,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,2BAA2B,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AAC5DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,2BAA2B,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;IAC5D,2BAA2B,GAAGP,YAAU,CAAC;IACzC,IAAIgB,uBAAa,CAAC,EAAE,OAAO,EAAER,WAAC,GAAG,mBAAmB,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe,EAAE;IAC5H,CAAC,EAAE,2BAA2B,CAAC;IAE/B;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,0BAA0B,GAAG,MAAM,0BAA0B,SAAS,yBAAyB,CAAC;IACpG,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3B,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI;IAClC,IAAI;IACJ,IAAI,eAAe,GAAG;IACtB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;IACrC,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;IACrC,QAAQ,QAAQ,MAAM;IACtB,YAAY,KAAK,MAAM;IACvB,gBAAgB,OAAO,IAAI;IAE3B,YAAY,KAAK,OAAO;IACxB,gBAAgB,OAAO,KAAK;IAE5B,YAAY;IACZ,gBAAgB,IAAI;IACpB,oBAAoB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IACjD,oBAAoB,IAAI,GAAG,GAAGpB,eAAK,CAAC,YAAY,CAAC,IAAI,CAAC;IACtD,oBAAoB,QAAQ,GAAG,IAAI,KAAK;IACxC,gBAAgB;IAChB,gBAAgB,OAAO,CAAC,EAAE;IAC1B,oBAAoB,OAAO,KAAK;IAChC,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,MAAM,CAAC,GAAG,EAAE;IAChB,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc;IAC5C,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;IACrC,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE;IAC1C,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG;IAChC,QAAQ,MAAM,OAAO,GAAG;IACxB,YAAY,UAAU,EAAE,MAAM;IAC9B,YAAY,GAAG,EAAE,IAAI,CAAC,GAAG;IACzB,YAAY,EAAE,EAAE,MAAM;IACtB,YAAY,MAAM,EAAE,IAAI,CAAC;IACzB,SAAS;IACT,QAAQ,MAAM,iBAAiB,GAAGA,eAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC;IAClE;IACA;IACA,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY;IAC7C,QAAQ,IAAI,gBAAgB,GAAG,KAAK;IACpC,QAAQ,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;IAC/C,YAAY,gBAAgB,IAAI,iBAAiB,KAAK,WAAW,CAAC;IAClE,QAAQ;IACR,QAAQ,IAAI,gBAAgB,EAAE;IAC9B,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;IACjD,YAAY,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;IACpC,QAAQ;IACR,aAAa;IACb,YAAYA,eAAK,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1C;IACA,YAAY,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;IACzC,YAAY,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM;IAC/C,gBAAgB,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI;IAC1C,oBAAoB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;IACzD,oBAAoB,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;IAC5C;IACA,oBAAoB,IAAI,CAAC,YAAY,GAAG,iBAAiB;IACzD,gBAAgB,CAAC,EAAE,CAAC,IAAI;IACxB,oBAAoB,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;IAC3C,gBAAgB,CAAC,CAAC;IAClB,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,QAAQ;IACR,QAAQ,OAAO,QAAQ,CAAC,OAAO;IAC/B,IAAI;IACJ,IAAI,YAAY;IAChB,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;IACtC,YAAY,OAAOA,eAAK,CAAC,UAAU,CAAC,IAAI,CAAC;IACzC,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,GAAGa,sBAAY,CAAC,KAAK,EAAE;IAC5E,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI;IAC9C,gBAAgB,IAAI,CAAC,cAAc,GAAG,IAAI;IAC1C,gBAAgB,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,IAAI;IACpB,gBAAgB,IAAI,CAAC,cAAc,GAAG,IAAI;IAC1C,gBAAgB,OAAO,KAAK;IAC5B,YAAY,CAAC,CAAC;IACd,QAAQ;IACR,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,CAAC,KAAK,EAAE;IACpB,YAAY,QAAQ,IAAI;IACxB,gBAAgB,KAAK,YAAY;IACjC,gBAAgB,KAAK,KAAK;IAC1B,gBAAgB,KAAK,QAAQ;IAC7B,gBAAgB,KAAK,kBAAkB;IACvC,gBAAgB,KAAK,cAAc;IACnC,oBAAoB,IAAI,CAAC,0BAA0B,EAAE;IACrD,oBAAoB;IACpB;IACA,QAAQ;IACR,IAAI;IACJ,CAAC;AACDZ,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAC7D,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AAC9DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAC7D,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,kBAAkB,EAAE,MAAM,CAAC;AACpEP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAC7D,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AAChEP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;AACvDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAC1DP,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,QAAQ;IAC1B,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;IAC5D,0BAA0B,GAAGR,YAAU,CAAC;IACxC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,kBAAkB;IACvC,QAAQ,QAAQ,EAAE,wBAAwB,GAAG,CAAC,CAAC,EAAEA,WAAC,CAAC,yHAAyH,EAAEA,WAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAEW,kBAAQ,CAAC;IAC3M,KAAK;IACL,CAAC,EAAE,0BAA0B,CAAC;IAE9B;IACA,IAAI,2BAA2B,GAAG,MAAM,2BAA2B,SAAS,yBAAyB,CAAC;IACtG,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,CAAC,KAAK;IAClB,aAAa,IAAI,KAAK,SAAS,CAAC,EAAE;IAClC,YAAY,IAAI,CAAC,0BAA0B,EAAE;IAC7C,QAAQ;IACR,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,IAAI,MAAM,GAAG,IAAI;IACzB,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;IAChC,YAAY,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO;IACnC,QAAQ;IACR,QAAQ,OAAOpB,eAAK,CAAC,UAAU,CAAC,MAAM,CAAC;IACvC,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IAChE,CAAC,EAAE,2BAA2B,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;IAC5D,2BAA2B,GAAGP,YAAU,CAAC;IACzC,IAAIgB,uBAAa,CAAC,EAAE,OAAO,EAAER,WAAC,GAAG,mBAAmB,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe,EAAE;IAC5H,CAAC,EAAE,2BAA2B,CAAC;;IC/a/B,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAMD;IACA,SAAS,SAAS,CAAC,GAAG,EAAE;IACxB,IAAI,OAAO,MAAM,GAAG,GAAG;IACvB;IACA,SAAS,eAAe,CAAC,OAAO,EAAE;IAClC,IAAI,OAAO,IAAI,MAAM,CAAC,OAAO,+BAA+B,CAAC,MAAM;IACnE;IACA,SAAS,gBAAgB,CAAC,CAAC,EAAE;IAC7B,IAAI,OAAO,cAAc,IAAI,CAAC;IAC9B;IACA,SAAS,kBAAkB,CAAC,CAAC,EAAE;IAC/B,IAAI,OAAO,YAAY,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,UAAU;IAClE;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,qBAAqB,GAAG,MAAM,qBAAqB,SAAS,wBAAwB,CAAC;IACzF,IAAI,WAAW,CAAC,GAAG,GAAG,IAAIuB,kBAAY,CAAC,EAAE,CAAC,eAAe,EAAE,EAAE;IAC7D,QAAQ,KAAK,EAAE;IACf,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;IACtB,QAAQ,IAAI,CAAC,4BAA4B,GAAG,CAAC,CAAC,KAAK;IACnD;IACA,YAAY,IAAI,CAAC,aAAa,CAAC,IAAIb,6BAAmB,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9G,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,KAAK;IACzC,YAAY,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE;IAChE,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,GAAGZ,eAAK,CAAC,UAAU,EAAE;IAC5C,IAAI;IACJ;IACA,IAAI,IAAI,GAAG,GAAG;IACd,QAAQ,OAAO,IAAI,CAAC,IAAI;IACxB,IAAI;IACJ;IACA,IAAI,IAAI,OAAO,GAAG;IAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ;IAC5B,IAAI;IACJ;IACA,IAAI,IAAI,KAAK,GAAG;IAChB,QAAQ,OAAO,IAAI,CAAC,MAAM;IAC1B,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,YAAY,EAAE;IAC3B,QAAQ,IAAI,CAAC,eAAe,EAAE;IAC9B,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,UAAU;IAC3B,gBAAgB,IAAI,CAAC,cAAc,EAAE;IACrC,gBAAgB;IAChB,YAAY,KAAK,UAAU;IAC3B,gBAAgB,IAAI,CAAC,cAAc,EAAE;IACrC,gBAAgB,IAAI,CAAC,WAAW,EAAE;IAClC,gBAAgB,IAAI,CAAC,aAAa,EAAE;IACpC,gBAAgB,IAAI,CAAC,aAAa,EAAE;IACpC,gBAAgB;IAChB,YAAY,KAAK,QAAQ;IACzB;IACA;IACA;IACA;IACA,gBAAgB,IAAI,GAAG,YAAY,WAAW,EAAE;IAChD,oBAAoB,GAAG,CAAC,mBAAmB,CAACc,iCAAuB,EAAE,IAAI,CAAC,4BAA4B,EAAE,KAAK,CAAC;IAC9G,gBAAgB;IAChB,gBAAgB,IAAI,GAAG,YAAY,WAAW,EAAE;IAChD,oBAAoB,GAAG,CAAC,gBAAgB,CAACA,iCAAuB,EAAE,IAAI,CAAC,4BAA4B,EAAE,KAAK,CAAC;IAC3G,gBAAgB;IAChB,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,IAAI,IAAI,CAAC,MAAM,YAAY,WAAW,EAAE;IAChD,YAAY,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAACA,iCAAuB,EAAE,IAAI,CAAC,4BAA4B,EAAE,KAAK,CAAC;IAC9G,QAAQ;IACR,QAAQ,IAAI,CAACd,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IACxC,YAAY,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC;IACpF,QAAQ;IACR,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;IAC1C,YAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;IAClC,QAAQ;IACR,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ,IAAI,iBAAiB,GAAG;IACxB,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK;IACrG,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;IAC1C,YAAY,OAAO,QAAQ;IAC3B,QAAQ;IACR,QAAQ,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;IACjC,IAAI;IACJ,IAAI,cAAc,GAAG;IACrB,QAAQ,IAAI,SAAS,EAAE,OAAO;IAC9B,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC;IAC/B,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,KAAK,KAAK;IACnE,eAAeA,eAAK,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;IAC3H;IACA,QAAQ,IAAIA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE;IACvD,YAAY,IAAI,OAAO,GAAG,QAAQ,CAAC,aAAa,CAACS,WAAC,GAAG,UAAU,CAAC;IAChE,YAAY,OAAO,CAAC,OAAO,GAAG;IAC9B,gBAAgB,QAAQ,EAAEgB,kBAAY,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO;IACjE,gBAAgB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAIA,kBAAY,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK;IAChF,gBAAgB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAIA,kBAAY,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG;IACjF,gBAAgB,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE;IACjD,gBAAgB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAIA,kBAAY,CAAC,EAAE,CAAC,gBAAgB,CAAC;IACzE,aAAa;IACb,YAAYzB,eAAK,CAAC,QAAQ,CAAC,OAAO,EAAEW,cAAI,GAAG,gBAAgB,CAAC;IAC5D,YAAY,IAAI,KAAK,GAAGL,4BAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC;IAClE,YAAY,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IACtD,QAAQ;IACR,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;IACrC,QAAQ,IAAI,CAACN,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IACpC,YAAY,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;IACxC,YAAY,IAAI,EAAE,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE;IACjD,gBAAgB,MAAM,OAAO,GAAG,SAAS,IAAI,EAAE;IAC/C,gBAAgB,QAAQ,OAAO,CAAC,IAAI;IACpC,oBAAoB,KAAK,IAAI;IAC7B,oBAAoB,KAAK,UAAU;IACnC,wBAAwB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;IACpE,wBAAwB;IACxB,oBAAoB,KAAK,MAAM;IAC/B,wBAAwB,OAAO,CAAC,SAAS,GAAG,OAAO;IACnD,wBAAwB;IACxB,oBAAoB;IACpB,wBAAwB,OAAO,CAAC,SAAS,GAAG,OAAO;IACnD,wBAAwB;IACxB;IACA,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,WAAW,GAAG;IAClB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO;IAC9C,QAAQ,IAAIA,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IACnC,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE;IACpD,YAAY,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC;IACpF,YAAY,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC;IACxD,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ;IAC5C,QAAQ;IACR,QAAQ,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,UAAU,EAAE;IAC/C,YAAY,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC;IAC1E,YAAY,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;IAC7C,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG;IAClC,QAAQ;IACR,IAAI;IACJ,IAAI,aAAa,GAAG;IACpB;IACA,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,KAAK,CAAC,iBAAiB;IACjE,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ;IAClC,QAAQ,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;IACjC,QAAQA,eAAK,CAAC,QAAQ,CAAC,KAAK,EAAEW,cAAI,GAAG,QAAQ,CAAC;IAC9C,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU;IAC7C,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE;IAC3D,YAAYX,eAAK,CAAC,QAAQ,CAAC,KAAK,EAAEW,cAAI,GAAG,WAAW,CAAC;IACrD,QAAQ;IACR,aAAa;IACb,YAAYX,eAAK,CAAC,WAAW,CAAC,KAAK,EAAEW,cAAI,GAAG,WAAW,CAAC;IACxD,QAAQ;IACR;IACA,QAAQ,IAAI,CAACX,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IACrE,YAAYA,eAAK,CAAC,QAAQ,CAAC,KAAK,EAAEW,cAAI,GAAG,UAAU,CAAC;IACpD,QAAQ;IACR,aAAa;IACb,YAAYX,eAAK,CAAC,WAAW,CAAC,KAAK,EAAEW,cAAI,GAAG,UAAU,CAAC;IACvD,QAAQ;IACR;IACA,QAAQ,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,UAAU,EAAE;IACtD,YAAY,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC;IAC/F,YAAY,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC;IACrD,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;IAC3C,YAAY,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;IAC3E,QAAQ;IACR,QAAQ,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;IACrD,QAAQ,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC;IACvE,IAAI;IACJ;IACA,IAAI,mBAAmB,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;IACxE,QAAQ,IAAIX,eAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;IACpC,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IAC9C,QAAQ,IAAI,GAAG,GAAG,MAAM;IACxB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC/C,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;IACjC,YAAY,IAAIA,eAAK,CAAC,aAAa,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;IACvD,gBAAgB,OAAO,IAAI;IAC3B,YAAY;IACZ;IACA,YAAY,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;IAC3B,QAAQ;IACR,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ;IACA;IACA;IACA,IAAI,kBAAkB,CAAC,GAAG,EAAE;IAC5B,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,OAAO,EAAE;IACjD,YAAY,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;IAC5E,YAAY,IAAI,IAAI,CAAC,MAAM,YAAY,WAAW,EAAE;IACpD;IACA,gBAAgB,IAAI,IAAI,GAAGM,4BAAkB,CAAC,YAAY,CAAC,IAAI,CAAC;IAChE,gBAAgB,IAAIN,eAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;IAChD,oBAAoB,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC;IACrD,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;IACpE,gBAAgB;IAChB,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK;IACzC,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,sBAAsB,CAAC,CAAC,EAAE;IAC9B,QAAQ,IAAIA,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;IACnC,YAAY,OAAOA,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;IACrD,QAAQ;IACR,QAAQ,OAAO,CAAC;IAChB,IAAI;IACJ,IAAI,qBAAqB,CAAC,CAAC,EAAE;IAE7B,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACrG,IAAI;IACJ;IACA,IAAI,eAAe,GAAG;IACtB;IACA,QAAQ,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ;IACnC,QAAQ,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;IACvD,QAAQ,OAAO,CAAC,YAAY,CAAC,gBAAgB,EAAE,4CAA4C,CAAC;IAC5F,IAAI;IACJ,IAAI,YAAY,GAAG;IACnB;IACA,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK;IAC7B,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,QAAQ,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,+BAA+B,CAAC;IAC/E,IAAI;IACJ,IAAI,UAAU,CAAC,CAAC,EAAE;IAClB,QAAQ,OAAOA,eAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IACpC,IAAI;IACJ,IAAI,aAAa,GAAG;IACpB,QAAQ,IAAI,IAAI,CAAC,MAAM;IACvB,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;IAChC,QAAQ,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC;IACnD,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM;IAC5B,YAAY,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI;IACpC,QAAQ,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;IACtE,YAAY,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;IACjD,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;IAChC;IACA,QAAQ,IAAI,OAAO,oDAAoDS,WAAC,GAAG,aAAa;IACxF,QAAQ,IAAI,cAAc,GAAGA,WAAC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,QAAQ,GAAG,SAAS,GAAG,eAAe,CAAC;IAC7G,QAAQ,IAAI,KAAK,GAAG;IACpB,YAAY,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI;IAC9C;IACA,YAAY,UAAU,EAAE,uEAAuE;IAC/F,YAAY,OAAO,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IAC9D,YAAY,aAAa,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE,EAAE;IAC/E,SAAS;IACT;IACA,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,SAAS,IAAI,IAAI,EAAE;IAC3C,YAAY,KAAK,CAAC,SAAS,CAAC,GAAG,4CAA4C;IAC3E,QAAQ;IACR;IACA,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;IACxC,QAAQ,IAAI,UAAU,GAAG,EAAE;IAC3B,QAAQ,IAAI,YAAY,GAAG,OAAO;IAClC,QAAQ,IAAI,eAAe,GAAG,EAAE;IAChC,QAAQ,IAAI,kBAAkB,GAAG,EAAE;IACnC,QAAQ,IAAI,mBAAmB,GAAG,EAAE;IACpC,QAAQ,IAAI,SAAS,GAAG,EAAE;IAC1B;IACA,QAAQ,IAAI,CAACT,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;IACvD,YAAY,IAAI,OAAO,SAAS,CAAC,SAAS,KAAK,UAAU,EAAE;IAC3D,gBAAgB,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC,QAAQ;IACjI,gBAAgB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;IACpD,oBAAoB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;IACvD,gBAAgB;IAChB,gBAAgB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;IACjE,oBAAoB,YAAY,GAAG,QAAQ,CAAC,YAAY;IACxD,oBAAoB,IAAIM,4BAAkB,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE;IAC7E,wBAAwB,kBAAkB,GAAGA,4BAAkB,CAAC,iCAAiC,CAAC,YAAY,CAAC;IAC/G,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB,IAAI,CAACN,eAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;IACnE,oBAAoB,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,EAAE;IAC/E,oBAAoB,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE;IAC9C,wBAAwB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;IACtD,wBAAwB,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpE;IACA,wBAAwB,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC1D,oBAAoB;IACpB,oBAAoB,mBAAmB,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;IACnE,gBAAgB;IAChB,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,SAAS,GAAG,SAAS,CAAC,SAAS;IAC/C;IACA,gBAAgB,IAAI,gBAAgB,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IAClE,gBAAgB,IAAI,aAAa,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC/D;IACA,gBAAgB,IAAI,aAAa,GAAG,EAAE;IAEtC,gBAAgB,KAAK,IAAI,OAAO,IAAI,SAAS,EAAE;IAC/C,oBAAoB,IAAI,IAAI,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI;IACrG,oBAAoB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IAC7D,wBAAwB,IAAI,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;IACvF,wBAAwB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpH,wBAAwB,IAAI,OAAO,CAAC,IAAI,EAAE;IAC1C,4BAA4B,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrH,wBAAwB;IACxB,oBAAoB;IACpB,yBAAyB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IAChD,wBAAwB,IAAI,MAAM,GAAG,CAAC,CAAC,KAAK,uBAAuB,GAAG,CAAC,GAAG,GAAG;IAC7E,wBAAwB,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjE,wBAAwB,IAAI,OAAO,CAAC,IAAI,EAAE;IAC1C,4BAA4B,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnE,wBAAwB;IACxB,oBAAoB;IAGpB,oBAAoB,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,+BAA+B,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACnH,oBAAoB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IAC3C,wBAAwB,eAAe,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC;IAC/E,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB,mBAAmB,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9D,gBAAgB,IAAI,WAAW,GAAG,CAAC,CAAC,KAAK;IACzC,oBAAoB,IAAI,EAAE,GAAG,OAAO,EAAE,GAAG,GAAG,OAAO;IACnD,oBAAoB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;IAC1D;IACA;IACA;IACA,wBAAwB,MAAM,QAAQ,GAAG,EAAE;IAC3C,wBAAwB,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE;IACnD;IACA,4BAA4B,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;IAClF,wBAAwB;IACxB;IACA,wBAAwB,EAAE,GAAG,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG;IAC9D,oBAAoB;IACpB,oBAAoB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;IACvD;IACA;IACA,wBAAwB,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG;IAC9D,oBAAoB;IACpB,oBAAoB,OAAO,EAAE,GAAG,MAAM,GAAG,GAAG;IAC5C,gBAAgB,CAAC;IACjB,gBAAgB,kBAAkB,GAAG,WAAW,CAAC,gBAAgB,CAAC;IAClE,gBAAgB,YAAY,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,GAAG,CAAC;IAC5D;IACA;IACA,gBAAgB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC;IAChF,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,MAAM,EAAE,GAAG,IAAI;IACvB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;IAC7C,QAAQ,MAAM,wBAAwB,GAAG,CAAC,MAAM,GAAG,EAAE,KAAK;IAC1D,YAAY,IAAI,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACtF,YAAY,MAAM,KAAK,GAAG,IAAI,GAAGA,eAAK,CAAC,UAAU,EAAE;IACnD,YAAY,QAAQ,OAAO,MAAM;IACjC,gBAAgB,KAAK,UAAU;IAC/B,oBAAoB,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM;IACvC,oBAAoB;IACpB,gBAAgB;IAChB,oBAAoB,IAAIA,eAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;IAC/C,wBAAwB,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,MAAM;IACjD,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB,MAAM,4BAA4B;IAC1D,oBAAoB;IACpB,oBAAoB;IACpB;IACA,YAAY,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;IACxD,QAAQ,CAAC;IACT,QAAQ,MAAM,QAAQ,GAAG,IAAI,gBAAgB,EAAE;IAC/C,QAAQ,IAAI,MAAM;IAClB;IACA,QAAQ,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,kBAAkB;IAC7D;IACA,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC;IACjE;IACA,YAAY,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE;IACpD,gBAAgB,IAAI,CAAC,GAAG,CAACe,iBAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC3F,YAAY;IACZ,iBAAiB;IACjB;IACA,gBAAgB,OAAO,GAAG,MAAM,CAAC,OAAO;IACxC;IACA,gBAAgBf,eAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IACvD;IACA,gBAAgB,SAAS,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE;IACxD,oBAAoB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;IACxD,wBAAwB,KAAK,IAAI,KAAK,IAAI,QAAQ,EAAE;IACpD;IACA,4BAA4B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE;IACnE,gCAAgC,IAAI,CAAC,GAAG,CAACe,iBAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,gDAAgD,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9I,gCAAgC;IAChC,4BAA4B;IAC5B,4BAA4B,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;IAC5E,4BAA4B,IAAI,CAACf,eAAK,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IACnE,gCAAgC,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;IAC9D,oCAAoC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;IACrE,oCAAoC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;IAClE,gCAAgC;IAChC,4BAA4B;IAC5B,4BAA4B,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;IACtE;IACA,gCAAgC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC;IAChE,4BAA4B;IAC5B,4BAA4B,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;IAClD,wBAAwB;IACxB,oBAAoB;IACpB,gBAAgB;IAChB;IACA,gBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IACvD,YAAY;IACZ,QAAQ;IACR;IACA,YAAY,QAAQ,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9D;IACA,gBAAgB,KAAK,iBAAiB;IACtC,oBAAoB,OAAO,CAAC,IAAI,CAAC,wFAAwF,CAAC;IAC1H,oBAAoB,OAAO,GAAGS,WAAC,GAAG,kBAAkB;IACpD,oBAAoB,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,CAAC;IAC/E,oBAAoB;IACpB,gBAAgB,KAAK,UAAU;IAC/B,oBAAoB,OAAO,GAAGA,WAAC,GAAG,WAAW;IAC7C,oBAAoB,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE;IAC7C,wBAAwB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,KAAK;IAC7D,oBAAoB;IACpB,oBAAoB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;IAC9C,wBAAwB,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,MAAM;IAC/D,oBAAoB;IACpB,oBAAoB,IAAI,SAAS,CAAC,OAAO,IAAI,CAAC,EAAE;IAChD,wBAAwB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO;IACjE,oBAAoB;IACpB,oBAAoB;IACpB,gBAAgB,KAAK,OAAO;IAC5B,gBAAgB,KAAK,QAAQ;IAC7B,gBAAgB,KAAK,KAAK;IAC1B,oBAAoB,OAAO,GAAGA,WAAC,GAAG,cAAc;IAChD,oBAAoB,IAAI,SAAS,CAAC,SAAS,GAAG,CAAC,EAAE;IACjD,wBAAwB,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,SAAS;IACrE,oBAAoB;IACpB,oBAAoB,IAAI,CAACT,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE;IACxE,wBAAwB,KAAK,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC,cAAc;IAC3E,oBAAoB;IACpB,oBAAoB;IACpB,gBAAgB,KAAK,WAAW;IAChC,gBAAgB,KAAK,UAAU;IAC/B,gBAAgB,KAAK,WAAW;IAChC,gBAAgB,KAAK,cAAc;IACnC,gBAAgB,KAAK,YAAY;IACjC,oBAAoB,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,UAAU,EAAE;IACzE;IACA,wBAAwB,OAAO,GAAGS,WAAC,GAAG,SAAS;IAC/C,wBAAwB,IAAI,SAAS,CAAC,YAAY,KAAK,KAAK,oEAAoE;IAChI,4BAA4B,KAAK,CAAC,UAAU,CAAC,GAAG,yBAAyB;IACzE,wBAAwB;IACxB,oBAAoB;IACpB,yBAAyB;IACzB;IACA,wBAAwB,OAAO,KAAK,CAAC,aAAa,CAAC;IACnD,wBAAwB,OAAO,GAAGA,WAAC,IAAI,MAAM,KAAK,WAAW,GAAG,aAAa,GAAG,gBAAgB,CAAC;IACjG,oBAAoB;IACpB,oBAAoB,IAAI,CAACT,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;IACtE,wBAAwB,KAAK,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC,YAAY;IACvE,oBAAoB;IACpB,oBAAoB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE;IAC1E,wBAAwB,KAAK,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAC,gBAAgB;IAC/E,oBAAoB;IACpB,oBAAoB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE;IACvE,wBAAwB,IAAI,CAAC,IAAI,CAAC,aAAa;IAC/C,4BAA4B,KAAK,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC,aAAa;IAC7E;IACA,4BAA4B,KAAK,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,aAAa;IACzE,oBAAoB;IACpB,oBAAoB,IAAIA,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;IAC/D;IACA,wBAAwB,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,wBAAwB,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,SAAS,CAAC,SAAS;IAC/D,wBAAwB,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI;IAC7D;IACA,wBAAwB,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;IACrF,wBAAwB,UAAU,CAAC,UAAU,CAAC,GAAG,YAAY;IAC7D,wBAAwB,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC;IAC3H,oBAAoB;IACpB,yBAAyB;IACzB;IACA,wBAAwB,KAAK,CAAC,YAAY,CAAC,GAAG,wBAAwB,CAAC,SAAS,CAAC,MAAM,CAAC;IACxF,oBAAoB;IACpB,oBAAoB;IACpB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,gBAAgB,KAAK,SAAS;IAC9B,gBAAgB,KAAK,MAAM;IAC3B,gBAAgB,KAAK,cAAc;IACnC;IACA,oBAAoB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,MAAM;IAC3D,oBAAoB,OAAO,GAAGS,WAAC,IAAI,IAAI,GAAG,OAAO,GAAG,UAAU,CAAC;IAC/D,oBAAoB,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,oBAAoB,IAAI,CAACT,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;IACtE,wBAAwB,KAAK,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC,YAAY;IACvE,oBAAoB;IACpB,oBAAoB,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACzD,oBAAoB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE;IACvE,wBAAwB,KAAK,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,aAAa;IACrE,wBAAwB,IAAI,IAAI,EAAE;IAClC,4BAA4B,SAAS,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC;IACzG,wBAAwB;IACxB,6BAA6B;IAC7B,4BAA4B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;IACrD,gCAAgC,KAAK,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC,aAAa;IACjF,4BAA4B;IAC5B,iCAAiC;IACjC,gCAAgC,SAAS,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IAC1F,4BAA4B;IAC5B,wBAAwB;IACxB,oBAAoB;IACpB,oBAAoB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;IACnE,wBAAwB,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACpE,wBAAwB,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI;IAC7D;IACA,wBAAwB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;IACvE;IACA,4BAA4B,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,IAAI,OAAO,EAAE,EAAE,EAAE,SAAS,CAAC,WAAW,CAAC;IACnL,4BAA4B,UAAU,CAAC,UAAU,CAAC,GAAG,YAAY;IACjE,wBAAwB;IACxB,6BAA6B;IAC7B;IACA,4BAA4B,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,IAAI,OAAO,EAAE,EAAE,EAAE,SAAS,CAAC,WAAW,CAAC;IAC1J,wBAAwB;IACxB,wBAAwB,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC;IAC3H,oBAAoB;IACpB,yBAAyB;IACzB;IACA,wBAAwB,KAAK,CAAC,YAAY,CAAC,GAAG,wBAAwB,CAAC,SAAS,CAAC,MAAM,CAAC;IACxF,oBAAoB;IACpB,oBAAoB,IAAI,IAAI,EAAE;IAC9B;IACA,wBAAwB,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,QAAQ,EAAE;IACtF,wBAAwB,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,IAAI,EAAE,QAAQ,EAAE;IACpG,oBAAoB;IACpB,yBAAyB;IACzB;IACA,wBAAwB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE;IAC9E,4BAA4B,KAAK,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAC,gBAAgB;IACnF,wBAAwB;IACxB,wBAAwB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;IAC1E,4BAA4B,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY;IAChE,4BAA4B,IAAI,KAAK,YAAY,WAAW,EAAE;IAC9D,gCAAgC,KAAK,CAAC,cAAc,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,GAAG,KAAK;IACzH,gCAAgC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;IACxD,oCAAoC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IACtD,gCAAgC;IAChC,4BAA4B;IAC5B,iCAAiC;IACjC,gCAAgC,KAAK,CAAC,cAAc,CAAC,GAAG,KAAK;IAC7D,4BAA4B;IAC5B,wBAAwB;IACxB,wBAAwB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;IAC1E,4BAA4B,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY;IAClE,4BAA4B,KAAK,CAAC,eAAe,CAAC,GAAG,CAACA,eAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO;IAC3G,wBAAwB;IACxB,wBAAwB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE;IAC5E,4BAA4B,KAAK,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE;IAC1F,wBAAwB;IACxB,oBAAoB;IACpB,oBAAoB;IACpB,gBAAgB,KAAK,UAAU;IAC/B,oBAAoB,OAAO,GAAGS,WAAC,GAAG,kBAAkB;IACpD,oBAAoB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM;IACrF,oBAAoB,IAAI,CAACT,eAAK,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE;IAC9D,wBAAwB,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,KAAK;IACxF,oBAAoB;IACpB,oBAAoB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE;IACxE,wBAAwB,KAAK,CAAC,iBAAiB,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,KAAK;IAC3G,oBAAoB;IACpB,oBAAoB;IACpB,gBAAgB,KAAK,YAAY;IACjC,oBAAoB,OAAO,GAAGS,WAAC,GAAG,iBAAiB;IACnD,oBAAoB,KAAK,CAAC,YAAY,CAAC,GAAG,MAAM;IAChD,oBAAoB;IACpB,gBAAgB,KAAK,UAAU;IAC/B,oBAAoB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE;IACvE,wBAAwB,KAAK,CAAC,OAAO,CAAC,GAAG,iBAAiB;IAC1D,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB;IACxB,oBAAoB;IACpB,gBAAgB;IAChB,oBAAoB,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;IACnF,oBAAoB,QAAQ,QAAQ;IACpC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,wBAAwB,KAAK,QAAQ;IACrC;IACA,4BAA4B,OAAO,GAAGA,WAAC,GAAG,SAAS;IACnD,4BAA4B,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;IAC9D,4BAA4B,KAAK,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,SAAS;IAChE,4BAA4B,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,WAAW;IAC/E,4BAA4B,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,SAAS;IAC5E,4BAA4B,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,aAAa;IACrF,4BAA4B,KAAK,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,cAAc;IACvF,4BAA4B,KAAK,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC,IAAI,IAAI,MAAM;IAC7E,4BAA4B;IAC5B,wBAAwB,KAAK,MAAM;IACnC;IACA,4BAA4B,OAAO,GAAGA,WAAC,GAAG,kBAAkB;IAC5D,4BAA4B,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,CAAC;IACvF,4BAA4B;IAC5B,wBAAwB,KAAK,aAAa;IAC1C;IACA,4BAA4B,OAAO,GAAGA,WAAC,GAAG,aAAa;IACvD,4BAA4B,KAAK,CAAC,OAAO,CAAC,GAAGE,cAAI,GAAG,aAAa;IACjE,4BAA4B,KAAK,CAAC,gBAAgB,CAAC,GAAG,OAAO;IAC7D,4BAA4B,KAAK,CAAC,eAAe,CAAC,GAAG,SAAS;IAC9D,4BAA4B,KAAK,CAAC,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK;IACjG,4BAA4B,OAAO,KAAK,CAAC,aAAa,CAAC;IACvD,4BAA4B;IAC5B,wBAAwB,KAAK,UAAU;IACvC,4BAA4B,OAAO,GAAGF,WAAC,GAAG,iBAAiB;IAC3D,4BAA4B;IAC5B,wBAAwB,KAAK,cAAc;IAC3C,4BAA4B,OAAO,GAAGA,WAAC,GAAG,cAAc;IACxD,4BAA4B;IAC5B,wBAAwB,KAAK,OAAO;IACpC,4BAA4B,OAAO,GAAGA,WAAC,GAAG,cAAc;IACxD,4BAA4B;IAC5B,wBAAwB,KAAK,MAAM;IACnC,wBAAwB,KAAK,MAAM;IACnC,wBAAwB,KAAK,UAAU;IACvC,4BAA4B,OAAO,GAAGA,WAAC,GAAG,kBAAkB;IAC5D,4BAA4B,OAAO,KAAK,CAAC,aAAa,CAAC;IACvD,4BAA4B,IAAI,QAAQ,KAAK,UAAU,EAAE;IACzD,gCAAgC,KAAK,CAAC,WAAW,CAAC,GAAG,QAAQ;IAC7D,4BAA4B;IAC5B,4BAA4B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM;IACzF,4BAA4B,IAAI,CAACT,eAAK,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;IAClE,gCAAgC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,KAAK;IAC5F,4BAA4B;IAC5B,4BAA4B,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE;IAChF,gCAAgC,KAAK,CAAC,iBAAiB,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,KAAK;IACnH,4BAA4B;IAC5B,4BAA4B;IAC5B,wBAAwB,KAAK,KAAK;IAClC,4BAA4B,OAAO,GAAGS,WAAC,GAAG,YAAY;IACtD,4BAA4B;IAC5B,wBAAwB,KAAK,aAAa;IAC1C,4BAA4B,OAAO,GAAGA,WAAC,GAAG,YAAY;IACtD,4BAA4B;IAC5B,wBAAwB,KAAK,eAAe;IAC5C,4BAA4B,OAAO,GAAGA,WAAC,GAAG,WAAW;IACrD,4BAA4B;IAC5B,wBAAwB,KAAK,UAAU;IACvC,4BAA4B,OAAO,GAAGA,WAAC,GAAG,oBAAoB;IAC9D,4BAA4B;IAC5B,wBAAwB,KAAK,QAAQ;IACrC,4BAA4B,OAAO,GAAGA,WAAC,GAAG,SAAS;IACnD,4BAA4B,IAAI,CAACT,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,CAACA,eAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IAClI,gCAAgC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7E,4BAA4B;IAC5B,4BAA4B;IAC5B,wBAAwB,KAAK,SAAS;IACtC,wBAAwB,KAAK,YAAY;IACzC,wBAAwB,KAAK,UAAU;IACvC,4BAA4B,IAAI,oBAAoB,GAAG,QAAQ,KAAK,UAAU,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC,EAAE;IACxK,4BAA4B,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,oBAAoB;IACnF,4BAA4B,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAClE,wBAAwB;IACxB,4BAA4B,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;IACnE,gCAAgC,KAAK,SAAS;IAC9C,oCAAoC,OAAO,GAAGS,WAAC,GAAG,WAAW;IAC7D;IACA,oCAAoC,KAAK,CAAC,YAAY,CAAC,GAAG,YAAY;IACtE,oCAAoC,KAAK,CAAC,aAAa,CAAC,GAAG,aAAa;IACxE,oCAAoC,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC;IAC3E;IACA,oCAAoC,OAAO,KAAK,CAAC,aAAa,CAAC;IAC/D,oCAAoC;IACpC,gCAAgC,KAAK,MAAM;IAC3C,oCAAoC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG;IACtD,oCAAoC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK;IACxD,gCAAgC,KAAK,OAAO;IAC5C,gCAAgC,KAAK,OAAO;IAC5C,gCAAgC,KAAK,OAAO;IAC5C,gCAAgC,KAAK,OAAO;IAC5C,gCAAgC,KAAK,SAAS;IAC9C,gCAAgC,KAAK,KAAK;IAC1C,gCAAgC,KAAK,MAAM;IAC3C,oCAAoC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,GAAG,CAAC;IAClF,oCAAoC,OAAO,GAAG,cAAc;IAC5D,oCAAoC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM;IAC1E,oCAAoC,IAAI,CAACT,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE;IACzE,wCAAwC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;IACnF,oCAAoC;IACpC,oCAAoC,IAAI,SAAS,CAAC,YAAY,KAAK,KAAK,kFAAkF,OAAO,MAAMS,WAAC,GAAG,eAAe,CAAC,EAAE;IAC7L,wCAAwC,KAAK,CAAC,UAAU,CAAC,GAAG,yBAAyB;IACrF,oCAAoC;IACpC,oCAAoC;IACpC,gCAAgC,KAAK,QAAQ;IAC7C,gCAAgC,KAAK,SAAS;IAC9C,gCAAgC,KAAK,OAAO;IAC5C,gCAAgC,KAAK,QAAQ;IAC7C,gCAAgC,KAAK,QAAQ;IAC7C,oCAAoC,OAAO,GAAG,cAAc;IAC5D,oCAAoC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,KAAK,CAAC;IACpF,oCAAoC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM;IAC9E,oCAAoC,IAAI,CAACT,eAAK,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE;IAC7E,wCAAwC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;IACvF,oCAAoC;IACpC,oCAAoC,IAAI,SAAS,CAAC,YAAY,KAAK,KAAK,kFAAkF,OAAO,MAAMS,WAAC,GAAG,eAAe,CAAC,EAAE;IAC7L,wCAAwC,KAAK,CAAC,UAAU,CAAC,GAAG,yBAAyB;IACrF,oCAAoC;IACpC,oCAAoC;IACpC,gCAAgC;IAChC,oCAAoC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,KAAK,CAACT,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IAC/H,wCAAwC,OAAO,GAAGS,WAAC,GAAG,YAAY;IAClE,wCAAwC,OAAO,KAAK,CAAC,aAAa,CAAC;IACnE,wCAAwC,KAAK,CAAC,UAAU,CAAC,GAAGT,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE4B,gCAAsB,CAAC,SAAS,EAAE,CAAC;IAC7I,wCAAwC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI;IACjE,wCAAwC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC;IAChH,wCAAwC,KAAK,CAAC,QAAQ,CAAC,GAAG,oBAAoB;IAC9E,wCAAwC,IAAI,CAAC5B,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE;IAC7E,4CAA4C,IAAI,QAAQ,GAAG,EAAE;IAC7D,4CAA4C,KAAK,IAAI,CAAC,IAAI,SAAS,EAAE;IACrE,gDAAgD,QAAQ,IAAI,CAAC,CAAC,EAAES,WAAC,CAAC,6BAA6B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,yBAAyB,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAEA,WAAC,CAAC,wBAAwB,CAAC;IACxN,4CAA4C;IAC5C,4CAA4C,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,QAAQ;IAChF,wCAAwC;IACxC,wCAAwC,KAAK,CAAC,mBAAmB,CAAC,GAAG,8BAA8B;IACnG,wCAAwC,KAAK,CAAC,eAAe,CAAC,GAAG,0BAA0B;IAC3F,oCAAoC;IACpC,oCAAoC;IACpC;IACA,4BAA4B;IAC5B;IACA,oBAAoB;IACpB;IACA;IACA,QAAQ,IAAI,CAACT,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;IACjD,YAAYA,eAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAEW,cAAI,GAAG,aAAa,CAAC;IACjE,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3J,YAAYX,eAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,mBAAmB,EAAEW,cAAI,CAAC,kBAAkB,CAAC,CAAC;IACnF,YAAYX,eAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,kBAAkB,EAAEW,cAAI,CAAC,kBAAkB,CAAC,CAAC;IACjF,YAAY,MAAM,OAAO,GAAG,kBAAkB,IAAI,OAAO;IACzD,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI;IACzC,gBAAgB,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAACF,WAAC,GAAG,SAAS,CAAC;IACjE,gBAAgB,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC;IACxD,gBAAgB,GAAG,CAAC,YAAY,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC;IAC1D,gBAAgB,IAAI,GAAG,CAAC,cAAc,EAAE;IACxC,oBAAoB,GAAG,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,yDAAyD,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3I,oBAAoB,GAAG,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3F,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,GAAG,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC;IAC9D,gBAAgB;IAChB,gBAAgB,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC;IACxD,gBAAgB,IAAI,CAACT,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;IACxD,oBAAoBA,eAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/D,gBAAgB;IAChB,gBAAgB,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,GAAG,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC;IACjE,YAAY,CAAC,CAAC;IACd,QAAQ;IACR;IACA;IACA,QAAQ,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;IACnD,YAAY,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;IAC3C,gBAAgB,IAAI,gBAAgB;IACpC,gBAAgB,IAAI,MAAM,GAAG,EAAE;IAC/B,gBAAgB,IAAI,UAAU,GAAG,EAAE;IACnC,gBAAgB,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE;IACzC,oBAAoB,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;IAC9C,oBAAoB,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,YAAY;IAChE,gBAAgB;IAChB,gBAAgB,IAAI,kBAAkB,CAAC,CAAC,CAAC,EAAE;IAC3C;IACA,oBAAoBA,eAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;IACzF,gBAAgB;IAChB,gBAAgB,QAAQ,CAAC,CAAC,IAAI;IAC9B,oBAAoB,KAAK,UAAU;IACnC,wBAAwB,KAAK,CAAC,UAAU,CAAC,GAAG,MAAM;IAClD,wBAAwB,gBAAgB,GAAG,IAAI,6BAA6B,EAAE;IAC9E,wBAAwB;IACxB,oBAAoB,KAAK,QAAQ;IACjC,wBAAwB,IAAI,eAAe,GAAG,IAAI,2BAA2B,EAAE;IAC/E,wBAAwB,gBAAgB,GAAG,eAAe;IAC1D,wBAAwB,IAAI,GAAG,GAAG,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC;IACzD,wBAAwB,IAAI,GAAG,GAAG,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC;IACzD,wBAAwB,IAAI,GAAG,IAAI,IAAI,EAAE;IACzC,4BAA4B,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,eAAe,CAAC,GAAG,GAAG,GAAG,CAAC;IACjF,4BAA4B,IAAI,OAAO,KAAKS,WAAC,GAAG,cAAc,EAAE;IAChE,gCAAgC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG;IAC3D,4BAA4B;IAC5B,wBAAwB;IACxB,6BAA6B,IAAI,KAAK,IAAI,UAAU,EAAE;IACtD,4BAA4B,KAAK,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;IAC5D,wBAAwB;IACxB,wBAAwB,IAAI,GAAG,IAAI,IAAI,EAAE;IACzC,4BAA4B,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,eAAe,CAAC,GAAG,GAAG,GAAG,CAAC;IACjF,wBAAwB;IACxB,6BAA6B,IAAI,KAAK,IAAI,UAAU,EAAE;IACtD,4BAA4B,KAAK,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;IAClE,wBAAwB;IACxB,wBAAwB;IACxB,oBAAoB,KAAK,OAAO;IAChC,wBAAwB,IAAI,cAAc,GAAG,IAAI,0BAA0B,EAAE;IAC7E,wBAAwB,gBAAgB,GAAG,cAAc;IACzD,wBAAwB,IAAI,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC;IAC5D,wBAAwB,IAAI,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC;IAC5D,wBAAwB,IAAI,UAAU,GAAG,OAAO,KAAKA,WAAC,GAAG,kBAAkB;IAC3E;IACA,wBAAwB,IAAI,MAAM,IAAI,IAAI,EAAE;IAC5C,4BAA4B,cAAc,CAAC,GAAG,GAAG,MAAM;IACvD,4BAA4B,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,UAAU,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,KAAK;IACrG,wBAAwB;IACxB,6BAA6B,IAAI,KAAK,IAAI,UAAU,EAAE;IACtD,4BAA4B,KAAK,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;IAC5D,wBAAwB;IACxB,wBAAwB,IAAI,MAAM,IAAI,IAAI,EAAE;IAC5C,4BAA4B,cAAc,CAAC,GAAG,GAAG,MAAM;IACvD,4BAA4B,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,UAAU,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,KAAK;IACrG,wBAAwB;IACxB,6BAA6B,IAAI,KAAK,IAAI,UAAU,EAAE;IACtD,4BAA4B,KAAK,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;IAC5D,wBAAwB;IACxB,wBAAwB;IACxB,oBAAoB,KAAK,OAAO;IAChC,wBAAwB,IAAI,cAAc,GAAG,IAAI,0BAA0B,EAAE;IAC7E,wBAAwB,gBAAgB,GAAG,cAAc;IACzD,wBAAwB,KAAK,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC,cAAc,CAAC,OAAO,GAAG,yCAAyC,CAAC;IAC9H,wBAAwB;IACxB,oBAAoB,KAAK,OAAO;IAChC,wBAAwB,IAAI,cAAc,GAAG,IAAI,0BAA0B,EAAE;IAC7E,wBAAwB,gBAAgB,GAAG,cAAc;IACzD,wBAAwB,IAAI,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;IACvD,wBAAwB,OAAO,KAAK,UAAU,CAAC,SAAS,CAAC;IACzD,wBAAwB,KAAK,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC;IACnE,wBAAwB,cAAc,CAAC,OAAO,GAAG,OAAO;IACxD,wBAAwB;IACxB,oBAAoB,KAAK,QAAQ;IACjC,wBAAwB,IAAI,eAAe,GAAG,IAAI,2BAA2B,EAAE;IAC/E,wBAAwB,gBAAgB,GAAG,eAAe;IAC1D,wBAAwB,IAAI,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;IAC3D,wBAAwB,IAAI,WAAW,IAAI,IAAI,EAAE;IACjD,4BAA4B,KAAK,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC;IAC3E,4BAA4B,eAAe,CAAC,OAAO,GAAG,WAAW;IACjE,wBAAwB;IACxB,6BAA6B,IAAI,SAAS,IAAI,UAAU,EAAE;IAC1D,4BAA4B,KAAK,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC;IACpE,wBAAwB;IACxB,wBAAwB,IAAI,OAAO,GAAG,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC;IACjE,wBAAwB,IAAI,OAAO,IAAI,IAAI,EAAE;IAC7C,4BAA4B,eAAe,CAAC,OAAO,GAAG,OAAO;IAC7D,4BAA4B,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,OAAO;IAC5D,wBAAwB;IACxB,6BAA6B,IAAI,UAAU,IAAI,UAAU,EAAE;IAC3D,4BAA4B,KAAK,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC;IACtE,wBAAwB;IACxB,wBAAwB;IACxB,oBAAoB,KAAK,SAAS;IAClC,wBAAwB,IAAI,gBAAgB,GAAG,IAAI,4BAA4B,EAAE;IACjF,wBAAwB,gBAAgB,GAAG,gBAAgB;IAC3D,wBAAwB,IAAI,cAAc,GAAG,EAAE;IAC/C,wBAAwB,IAAI,OAAO,IAAI,MAAM,EAAE;IAC/C,4BAA4B,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;IACzE,wBAAwB;IACxB,6BAA6B;IAC7B,4BAA4B,MAAM,MAAM,GAAG,IAAI,IAAI,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,UAAU;IACzF,4BAA4B,cAAc,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACrE,wBAAwB;IACxB,wBAAwB,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC;IACvE,wBAAwB,gBAAgB,CAAC,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC;IAC1E,wBAAwB,IAAI,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,OAAO;IAC1H;IACA,wBAAwB,IAAI,OAAO,KAAKA,WAAC,GAAG,kBAAkB,EAAE;IAChE,4BAA4B,QAAQ,QAAQ;IAC5C,gCAAgC,KAAK,aAAa;IAClD,gCAAgC,KAAK,MAAM;IAC3C,oCAAoC,KAAK,CAAC,KAAK,CAAC,GAAG,aAAa;IAChE,oCAAoC;IACpC,gCAAgC,KAAK,gBAAgB;IACrD,gCAAgC,KAAK,SAAS;IAC9C,oCAAoC,KAAK,CAAC,KAAK,CAAC,GAAG,aAAa;IAChE,oCAAoC;IACpC;IACA,wBAAwB,CAAC;IACzB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,wBAAwB;IACxB,oBAAoB,KAAK,OAAO;IAChC,wBAAwB,IAAI,cAAc,GAAG,IAAI,0BAA0B,EAAE;IAC7E,wBAAwB,gBAAgB,GAAG,cAAc;IACzD,wBAAwB,cAAc,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;IAC1D,wBAAwB,IAAI,UAAU,GAAG,EAAE,EAAE,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,SAAS;IACrF,wBAAwB,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,4CAA4C,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChH,wBAAwB,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,EAAE,EAAE;IACxD,4BAA4B,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,4CAA4C,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1I,wBAAwB;IACxB,wBAAwB,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACzG,wBAAwB,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAIV,aAAG,CAAC,UAAU,CAAC,GAAG;IACpF,wBAAwB,cAAc,CAAC,YAAY,CAAC,mBAAmB,EAAE,8BAA8B,CAAC;IACxG,wBAAwB,cAAc,CAAC,YAAY,CAAC,eAAe,EAAE,0BAA0B,CAAC;IAChG,wBAAwB;IACxB,oBAAoB,KAAK,QAAQ;IACjC,wBAAwB,gBAAgB,GAAG,IAAI,2BAA2B,EAAE;IAC5E,wBAAwB;IACxB,oBAAoB;IACpB;IACA,wBAAwB,IAAI,CAACC,eAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;IACpH,4BAA4B,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI;IAClD,4BAA4B,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;IAC1E,4BAA4B,IAAI,MAAM,YAAY,yBAAyB,EAAE;IAC7E,gCAAgC,gBAAgB,GAAG,MAAM;IACzD,4BAA4B;IAC5B,wBAAwB;IACxB,wBAAwB;IACxB;IACA;IACA,gBAAgB,IAAIA,eAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE;IACpD,oBAAoB,MAAM,CAAC,qDAAqD,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3F,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI;IACtD,oBAAoB,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAChF,oBAAoB,gBAAgB,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC;IAC3E,oBAAoB,KAAK,IAAI,QAAQ,IAAI,UAAU,EAAE;IACrD,wBAAwB,gBAAgB,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IACrF,oBAAoB;IACpB,oBAAoB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,gBAAgB,CAAC;IAClE,gBAAgB;IAChB,YAAY,CAAC,CAAC;IACd,QAAQ;IACR;IACA;IACA,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;IACnD,QAAQ,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;IAChC,YAAY,IAAI,IAAI;IACpB,YAAY,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,gBAAgB,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;IAC9C,QAAQ;IACR,QAAQ,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9B;IACA,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK;IAC3B,QAAQ,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;IAC9E,QAAQ,KAAK,IAAI,IAAI,IAAI,UAAU,EAAE;IACrC,YAAY,IAAI,IAAI;IACpB,YAAY,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7D,gBAAgB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;IACtD,QAAQ;IACR;IACA,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAIY,6BAAmB,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;IACnG,IAAI;IACJ,CAAC;AACDX,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,OAAO;IACrB,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACrDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,IAAI,EAAEZ,cAAI,CAAC,gBAAgB,CAAC;IAC3C,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AACzDV,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,QAAQ;IAC1B,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACvDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,OAAO;IACzB,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AACpDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,SAAS,GAAGE,cAAI,GAAG,aAAa;IAClD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC;AAC1DV,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAChD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACvDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAChD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AAC3DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,kBAAkB,EAAE,MAAM,CAAC;AAC/DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACvDP,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;IACrD,qBAAqB,GAAGN,YAAU,CAAC;IACnC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAEA,WAAC,CAAC,aAAa,EAAEE,cAAI,CAAC;AACxE,gBAAgB,EAAEA,cAAI,CAAC,kCAAkC,EAAEA,cAAI,CAAC,sBAAsB,EAAEA,cAAI,CAAC,yBAAyB,EAAEA,cAAI,CAAC,8BAA8B,EAAEA,cAAI,CAAC,6BAA6B,EAAEA,cAAI,CAAC,0BAA0B,EAAEA,cAAI,CAAC,sBAAsB,EAAEA,cAAI,CAAC;AACpQ,kBAAkB,EAAEA,cAAI,CAAC,SAAS,EAAEF,WAAC,CAAC,QAAQ,EAAEA,WAAC,CAAC;AAClD,gBAAgB,EAAEE,cAAI,CAAC;AACvB,KAAK,EAAEF,WAAC,CAAC;AACT,kEAAkE,EAAEA,WAAC,CAAC;AACtE,KAAK,EAAEA,WAAC,CAAC,cAAc,EAAEE,cAAI,CAAC,8EAA8E,EAAEF,WAAC,CAAC;AAChH,EAAE,EAAEA,WAAC,CAAC,MAAM;IACZ,KAAK;IACL,CAAC,EAAE,qBAAqB,CAAC;;ICljCzB,IAAIR,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAKD,MAAM,UAAU,GAAG,CAAC;IACpB;IACA,IAAI,qBAAqB,GAAG,MAAM,qBAAqB,SAAS,gBAAgB,CAAC;IACjF,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3B,QAAQ,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,KAAK;IACtC,YAAY,IAAI,CAAC,gBAAgB,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ;IAC9D,QAAQ,CAAC;IACT,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAO,EAAE;IACjB,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,aAAa,EAAE;IAC5B,QAAQ,IAAI,CAAC,eAAe,EAAE;IAC9B,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK;IAC3C,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,gBAAgB,EAAE;IAChF,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ;IACtD,gBAAgB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;IACzD,oBAAoB,MAAM,EAAE,GAAG2B,cAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAGA,cAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACtJ,oBAAoB,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE;IAC3C,gBAAgB,CAAC,CAAC;IAClB,gBAAgB,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ;IAC5D,gBAAgB,MAAM,KAAK,GAAG7B,eAAK,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAEA,eAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC;IAC7G,gBAAgB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAC3C,YAAY;IACZ,iBAAiB,IAAI,GAAG,CAAC,IAAI,KAAK,oBAAoB,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,EAAE;IACxF,gBAAgB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IACzD,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,KAAK,CAAC,MAAM,EAAE;IAClB,QAAQ,IAAI6B,cAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC1C,YAAY,IAAI,CAAC,OAAO,CAAC,QAAQ;IACjC,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,GAAG,MAAM;IACvD,QAAQ;IACR,IAAI;IACJ,IAAI,0BAA0B,CAAC,GAAG,EAAE,GAAG,EAAE;IACzC,QAAQ,MAAM,IAAI,GAAG,GAAG,EAAE,QAAQ,IAAIA,cAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,GAAG,EAAE,QAAQ,IAAIA,cAAI,CAAC,MAAM,CAAC,KAAK;IAClG,QAAQ,OAAOA,cAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;IAC7C,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,IAAI,CAAC7B,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;IAChC,YAAY,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC;IAC1C,YAAY,IAAI,CAAC,eAAe,EAAE;IAClC,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE;IACvC,QAAQ;IACR,QAAQ,IAAI,CAAC,aAAa,EAAE;IAC5B,IAAI;IACJ,IAAI,YAAY,CAAC,KAAK,EAAE;IACxB,QAAQ,OAAO,KAAK,EAAE,WAAW,IAAI,EAAE;IACvC,IAAI;IACJ,IAAI,+BAA+B,CAAC,IAAI,EAAE;IAC1C,QAAQ,OAAOQ,4BAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;IAC1D,IAAI;IACJ,IAAI,OAAO;IACX,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,MAAM,EAAE;IACrB,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,CAAC,KAAK,EAAE;IACpB,YAAY,QAAQ,IAAI;IACxB,gBAAgB,KAAK,SAAS;IAC9B,oBAAoB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;IAC5C,oBAAoB;IACpB,gBAAgB,KAAK,KAAK;IAC1B,oBAAoB,IAAI,GAAG,EAAE;IAC7B,wBAAwB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;IAC/C,oBAAoB;IACpB,oBAAoB,IAAI,GAAG,EAAE;IAC7B,wBAAwB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;IACjD,oBAAoB;IACpB,oBAAoB;IACpB,gBAAgB,KAAK,MAAM;IAC3B,oBAAoB,IAAI,CAAC,eAAe,EAAE;IAC1C,oBAAoB;IACpB,gBAAgB,KAAK,YAAY;IACjC,oBAAoB,IAAI,CAAC,aAAa,EAAE;IACxC,oBAAoB;IACpB,gBAAgB,KAAK,UAAU;IAC/B,oBAAoB,IAAI,CAAC,eAAe,EAAE;IAC1C,oBAAoB,IAAI,CAAC,aAAa,EAAE;IACxC,oBAAoB;IACpB;IACA,QAAQ;IACR,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,IAAI,CAAC,cAAc,EAAE;IAC7B,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ,IAAI,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;IAC3C,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC,gBAAgB;IAC/D;IACA,QAAQ,IAAI,CAACR,eAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;IAC/B,YAAY,EAAE,CAAC,OAAO,GAAG,OAAO;IAChC,QAAQ;IACR,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IACjC,YAAY,IAAI,CAAC,OAAO,GAAG,OAAO;IAClC,QAAQ;IACR,IAAI;IACJ,IAAI,aAAa,GAAG;IACpB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;IACrC,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IACpC,YAAY,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,WAAW;IACjE,YAAY,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;IAC5C,YAAY,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;IAC5C,YAAY,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;IACtC,QAAQ;IACR,IAAI;IACJ,IAAI,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAClC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO;IACnC,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,GAAG,KAAK,GAAG,EAAE;IACzD,YAAY,MAAM,CAAC,MAAM,EAAE;IAC3B,QAAQ;IACR,IAAI;IACJ,IAAI,aAAa,GAAG;IACpB,QAAQ,MAAM,MAAM,GAAG,IAAI8B,oBAAc,CAAC,IAAI,CAAC,qBAAqB,EAAE;IACtE,QAAQ,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;IACvE,QAAQ,OAAO,MAAM;IACrB,IAAI;IACJ,IAAI,cAAc,GAAG;IACrB,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO;IACnC,QAAQ,IAAI,CAAC9B,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;IACnC,YAAY,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;IAC9E,QAAQ;IACR,IAAI;IACJ,IAAI,eAAe,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IACpC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IAC5E,QAAQ,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;IAC/B,QAAQ,MAAM,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ;IAC3D,QAAQ,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ;IACnC,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK;IAClC,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE;IACzC,YAAY,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ;IAC9C,QAAQ;IACR,QAAQ,IAAI,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;IACtD,YAAY,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;IACnC,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,GAAG;IACb,QAAQ,IAAI,CAAC,cAAc,EAAE;IAC7B,QAAQ,IAAI,CAAC,aAAa,EAAE;IAC5B,QAAQ,IAAI,CAAC,eAAe,EAAE;IAC9B,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IAChE,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AACtDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IAChE,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;AAClDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAC7D,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AACnDP,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,WAAW;IAC7B,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC;AAC1DR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,UAAU;IAC5B,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACvDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,cAAc;IAChC,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACxDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,uBAAuB;IACzC,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,kBAAkB,EAAE,MAAM,CAAC;IAC/D,qBAAqB,GAAGR,YAAU,CAAC;IACnC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAEA,WAAC,CAAC;AAClE,kDAAkD,EAAE,UAAU,CAAC,wDAAwD,EAAEA,WAAC,CAAC;AAC3H,CAAC,EAAEA,WAAC,CAAC,gEAAgE,EAAEA,WAAC,CAAC;AACzE;AACA,CAAC,EAAEA,WAAC,CAAC,WAAW,EAAEA,WAAC,CAAC;AACpB;AACA,CAAC,EAAEA,WAAC,CAAC;AACL,2DAA2D,EAAEA,WAAC,CAAC,SAAS;IACxE,KAAK;IACL,CAAC,EAAE,qBAAqB,CAAC;;ICpMzB,IAAIR,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACA,MAAM,oBAAoB,SAAS,WAAW,CAAC;IAC/C,IAAI,WAAW,CAAC,CAAC,EAAE;IACnB,QAAQ,KAAK,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAClF,IAAI;IACJ;IACA,MAAM,sBAAsB,GAAG,gBAAgB;IAC/C,MAAM,2BAA2B,GAAG,sBAAsB,GAAG,GAAG,GAAGS,cAAI,GAAG,gCAAgC;IAC1G,MAAM,2BAA2B,GAAG,4CAA4C;IAChF,MAAM,uBAAuB,GAAG,gBAAgB;IAChD,MAAM,8BAA8B,GAAG,cAAc;IACrD,MAAM,2BAA2B,GAAG,WAAW;IAC/C,MAAM,gCAAgC,GAAG,2BAA2B,GAAG,yBAAyB;IAChG,MAAM,uBAAuB,GAAG,MAAM;IACtC,MAAM,2BAA2B,GAAG,WAAW;IAC/C,MAAM,uBAAuB,GAAG,gBAAgB;IAChD,MAAM,uBAAuB,GAAG,SAAS;IACzC;IACA;IACA;IACA;IACA,IAAI,qBAAqB,GAAG,MAAM,qBAAqB,SAAS,gBAAgB,CAAC;IACjF,IAAI,YAAY,CAAC,KAAK,EAAE;IACxB,QAAQ,OAAO,EAAE;IACjB,IAAI;IACJ,IAAI,+BAA+B,CAAC,IAAI,EAAE;IAC1C,QAAQ,OAAOX,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACrC,IAAI;IACJ,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,EAAE;IACf,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE;IAClC,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE;IACrC;IACA,QAAQ,IAAI,CAAC,aAAa,GAAG,QAAQ;IACrC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,CAAC,GAAG,KAAK;IAC5C,YAAY,MAAM,QAAQ,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI;IACnD,YAAY,IAAI,QAAQ,KAAK,WAAW,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;IAC5E,gBAAgBU,sBAAY,CAAC,GAAG,CAAC,aAAa,CAAC;IAC/C,gBAAgB,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU;IAC7C,gBAAgB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACpC,YAAY;IACZ,iBAAiB,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,aAAa,EAAE;IACzE,gBAAgBA,sBAAY,CAAC,GAAG,CAAC,aAAa,CAAC;IAC/C,gBAAgB,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,UAAU;IACtD,gBAAgB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;IAC7C,gBAAgB,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE;IAC/D,gBAAgB,OAAO,CAAC,KAAK,EAAE;IAC/B,YAAY;IACZ,QAAQ,CAAC;IACT;IACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,CAAC,GAAG,KAAK;IACzC,YAAY,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM;IACjC,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;IACzC,YAAY,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;IAC5D,YAAY,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC;IACtG,YAAY,IAAI,CAACV,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;IACjD,gBAAgB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;IACzC,YAAY;IACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,GAAG,IAAIyB,kBAAY,CAAC,EAAE,CAAC,kBAAkB,EAAE;IACtF,YAAY,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO;IACtC,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;IAC3C,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,iBAAiB,GAAG,CAAC,GAAG,KAAK;IAC1C,YAAYzB,eAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC;IAC3D,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK;IACrC,YAAY,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe;IAC5D,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,KAAK;IACxC,YAAYA,eAAK,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9D,YAAY,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;IACrC,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI;IACnC,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK;IACrC,YAAY,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;IAC7F;IACA;IACA,YAAY,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;IAChG;IACA,gBAAgB,IAAI,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1D,YAAY;IACZ,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,gBAAgB,GAAG,CAAC,GAAG,KAAK;IACzC,YAAY,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;IAC7F,YAAY,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;IACjH,gBAAgB,GAAG,CAAC,cAAc,EAAE;IACpC,YAAY;IACZ,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,KAAK;IACxC,QAAQ,CAAC;IACT;IACA;IACA,QAAQ,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,KAAK;IACvC,YAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;IAClC,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,IAAI,GAAGA,eAAK,CAAC,UAAU,EAAE;IACtC,IAAI;IACJ,IAAI,IAAI;IACR,IAAI,SAAS;IACb,IAAI,WAAW;IACf,IAAI,gBAAgB;IACpB,IAAI,YAAY;IAChB,IAAI,MAAM;IACV,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAO,EAAE;IACjB,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ;IACzC,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;IACpD,YAAY,IAAI,CAAC,SAAS,EAAE;IAC5B,QAAQ;IACR,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IAChD,YAAY,IAAIqB,0BAAgB,CAAC,YAAY,CAAC,GAAG,EAAE,oBAAoB,CAAC,EAAE;IAC1E,gBAAgB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;IAChD,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB;IACA,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,MAAM,GAAGf,4BAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC;IAChE,QAAQ,IAAI,CAAC,kBAAkB,EAAE;IACjC,QAAQ,IAAI,CAAC,aAAa,EAAE;IAC5B,QAAQ,IAAI,CAAC,aAAa,EAAE;IAC5B,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,YAAY;IAC7B,YAAY,KAAK,cAAc;IAC/B,YAAY,KAAK,kBAAkB;IACnC,YAAY,KAAK,eAAe;IAChC,gBAAgB,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;IAClD,gBAAgB,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC,MAAM;IAC3D,oBAAoB,IAAI,CAAC,uBAAuB,EAAE;IAClD,gBAAgB,CAAC,CAAC;IAClB,gBAAgB;IAChB,YAAY,KAAK,cAAc;IAC/B,gBAAgB,IAAI,CAAC,KAAK,EAAE;IAC5B,oBAAoB,IAAI,CAAC,kBAAkB,EAAE;IAC7C,gBAAgB;IAChB,gBAAgB;IAChB,YAAY,KAAK,oBAAoB;IACrC,YAAY,KAAK,OAAO;IACxB,gBAAgB,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC;IACnD,gBAAgB,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,MAAM;IAC5D,oBAAoB,IAAI,CAAC,SAAS,EAAE;IACpC,gBAAgB,CAAC,CAAC;IAClB,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,IAAI,CAAC,yBAAyB,EAAE;IACxC,QAAQ,IAAI,CAAC,eAAe,EAAE;IAC9B,QAAQ,IAAI,CAAC,eAAe,EAAE;IAC9B,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ,IAAI,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;IAClD,QAAQ,IAAI,CAAC,kBAAkB,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC7E,IAAI;IACJ,IAAI,iBAAiB,CAAC,MAAM,EAAE;IAC9B,QAAQ,IAAI,KAAK,GAAG,MAAM,EAAE,IAAI;IAChC,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;IACvC,YAAY,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;IAChC,QAAQ;IACR,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ,IAAI,qBAAqB,CAAC,MAAM,EAAE;IAClC,QAAQ,IAAI,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI;IAC/C,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;IACtC,YAAY,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;IACpC,QAAQ;IACR,QAAQ,OAAO,SAAS;IACxB,IAAI;IACJ,IAAI,gBAAgB,CAAC,MAAM,EAAE;IAC7B,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;IAC5B,YAAY,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;IACpD,QAAQ;IACR;IACA,QAAQ,IAAI,QAAQ,GAAG,KAAK;IAC5B,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB;IAClD,QAAQ,IAAI,CAACN,eAAK,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE;IAChD,YAAY,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,KAAK;IACpD,QAAQ;IACR,QAAQ,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;IACzI,IAAI;IACJ,IAAI,OAAO,CAAC,GAAG,EAAE;IACjB,QAAQ,IAAI,MAAM;IAClB,QAAQ,IAAI,GAAG,YAAYyB,kBAAY,CAAC,EAAE,CAAC,kBAAkB,EAAE;IAC/D,YAAY,MAAM,GAAG,GAAG;IACxB,QAAQ;IACR,aAAa;IACb,YAAY,GAAG,CAAC,cAAc,EAAE;IAChC,YAAY,GAAG,CAAC,eAAe,EAAE;IACjC,YAAY,MAAM,GAAG,IAAI,CAAC,gBAAgB;IAC1C,QAAQ;IACR,QAAQ,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACrF,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;IAC/H,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;IAClD,YAAY,IAAI,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC;IAC5D,QAAQ;IACR,IAAI;IACJ,IAAI,wBAAwB,CAAC,MAAM,EAAE;IACrC,QAAQ,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACrD,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAa,MAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,WAAW,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAS,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAC,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC;IAC9K,QAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,KAAK,CAAC;IACpE,QAAQ,IAAI,aAAa,CAAC,QAAQ,EAAE;IACpC,YAAY,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC;IAChF,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC;IAC3G,QAAQ;IACR,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;IACvC,QAAQ,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK;IAC9C,QAAQ,IAAI,OAAO;IACnB,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;IACvC,YAAY,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;IACzD,QAAQ;IACR,aAAa;IACb,YAAY,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;IAC9C,QAAQ;IACR;IACA,QAAQ,KAAK,IAAI,MAAM,IAAI,aAAa,CAAC,OAAO,IAAI,EAAE,EAAE;IACxD,YAAY,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK;IAC1C,YAAY,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IACrD,YAAY,MAAM,MAAM,GAAG;IAC3B,kBAAkB,IAAIA,kBAAY,CAAC,EAAE,CAAC,kBAAkB;IACxD,kBAAkB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IACxC,YAAY,MAAM,CAAC,UAAU,GAAGA,kBAAY,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM;IACnE,YAAY,MAAM,CAAC,QAAQ,GAAGA,kBAAY,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG;IAC9D,YAAY,MAAM,CAAC,KAAK,GAAGA,kBAAY,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK;IAC1D;IACA,YAAY,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IACrG,YAAY,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;IAC/D,YAAY,MAAM,CAAC,QAAQ,GAAG,CAAC,kBAAkB,CAAC;IAClD,YAAY,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;IAC1H,YAAY,MAAM,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ;IAC9F,YAAY,IAAI,SAAS,EAAE;IAC3B,gBAAgB,MAAM,CAAC,gBAAgB,CAACA,kBAAY,CAAC,EAAE,CAAC,0BAA0B,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;IACpH,gBAAgB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;IAC/C,gBAAgB,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC;IAC9C,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,KAAK,IAAI,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE;IAC9C,YAAY,MAAM,KAAK,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAClF,YAAY,IAAI,CAACzB,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;IACtC,gBAAgB;IAChB,YAAY;IACZ,YAAY,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IACjD,YAAY,MAAM,CAAC,mBAAmB,CAACyB,kBAAY,CAAC,EAAE,CAAC,0BAA0B,EAAE,IAAI,CAAC,mBAAmB,CAAC;IAC5G,YAAY,MAAM,CAAC,MAAM,EAAE;IAC3B,YAAY,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;IACrC,QAAQ;IACR,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;IAC1C,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC;IACtD,QAAQ;IACR,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,WAAW,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI;IACxJ,QAAQ,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC;IACjD,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;IACzC,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1C,QAAQ;IACR,IAAI;IACJ,IAAI,eAAe,CAAC,UAAU,EAAE;IAChC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;IACvC,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;IACtC,YAAY,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;IACpD,YAAY,KAAK,IAAI,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE;IAClD,gBAAgB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IACrD,gBAAgB,MAAM,CAAC,mBAAmB,CAACA,kBAAY,CAAC,EAAE,CAAC,0BAA0B,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;IACvH,gBAAgB,MAAM,CAAC,MAAM,EAAE;IAC/B,YAAY;IACZ,YAAY,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;IACvC,QAAQ;IACR,IAAI;IACJ,IAAI,yBAAyB,GAAG;IAChC;IACA,QAAQ,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE;IACtD,YAAY,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;IAC5C,QAAQ;IACR,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;IACjC,IAAI;IACJ,IAAI,kBAAkB,GAAG;IACzB,QAAQ,IAAI,IAAI,CAAC,YAAY,YAAY,mBAAmB,EAAE;IAC9D,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO;IAClE,YAAY,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC;IAC3D,YAAY,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAChB,WAAC,GAAG,QAAQ,CAAC;IAChE,YAAY,OAAO,CAAC,SAAS,GAAG,2BAA2B;IAC3D,YAAY,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,2BAA2B,CAAC;IAC1E,YAAY,MAAM,IAAI,GAAG,IAAIgB,kBAAY,CAAC,EAAE,CAAC,gBAAgB,EAAE;IAC/D,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,uBAAuB,CAAC;IAC9D,YAAY,IAAI,CAAC,SAAS,GAAG,2BAA2B;IACxD,YAAY,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;IACrC,YAAY,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;IACzD,YAAY,OAAO,CAAC,SAAS,GAAG,8BAA8B;IAC9D,YAAY,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAChC,YAAY,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;IACxC,YAAY,MAAM,IAAI,GAAG,IAAIA,kBAAY,CAAC,EAAE,CAAC,gBAAgB,EAAE;IAC/D,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,uBAAuB,CAAC;IAC9D,YAAY,IAAI,CAAC,SAAS,GAAG,gCAAgC;IAC7D,YAAY,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;IACrC,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;IAC7C,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI;IACjC,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB;IAClD,QAAQ;IACR,IAAI;IACJ,IAAI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,EAAE;IAChD,QAAQ,MAAM,KAAK,sFAAsFzB,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IACtI,QAAQ,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK;IACjF,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,uBAAuB;IAC/E,QAAQ,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAC;IACvE,QAAQ,IAAI,MAAM,EAAE;IACpB,YAAY,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;IACtC,gBAAgB,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;IAC9F,gBAAgB,IAAI,GAAG,IAAI,CAAC,EAAE;IAC9B,oBAAoB,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1C,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,aAAa;IACb,YAAY,IAAIA,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;IACrC,gBAAgB,KAAK,GAAG,EAAE;IAC1B,gBAAgB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,QAAQ;IACpD,gBAAgB,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE;IAC3C,gBAAgB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IACjC,YAAY;IACZ,YAAY,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IAClD,QAAQ;IACR;IACA,QAAQ,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACpC;IACA,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC3D,IAAI;IACJ,IAAI,gBAAgB,CAAC,KAAK,GAAG,EAAE,EAAE;IACjC,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,uBAAuB;IACnH,QAAQ,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK;IACtD,YAAY,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC;IACxE,YAAY,IAAIA,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAIA,eAAK,CAAC,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE;IACtF,gBAAgB,OAAO,KAAK;IAC5B,YAAY;IACZ,YAAY,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC;IACnD,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;IAChD,gBAAgB,OAAO,IAAI;IAC3B,YAAY;IACZ,YAAY,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAChE,QAAQ,CAAC;IACT;IACA,QAAQ,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE;IAC7B,YAAY,MAAM,OAAO,GAAG,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE;IACpD,YAAY,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;IAC1D,gBAAgB,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IACzC,gBAAgB,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,MAAM,CAAC;IACxE,gBAAgB,KAAK,IAAI,WAAW,IAAI,YAAY,EAAE;IACtD,oBAAoB,IAAI,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE;IAC5D,wBAAwB,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5C,wBAAwB;IACxB,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,aAAa,GAAG;IACpB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;IACrC,QAAQ,OAAO,CAAC,EAAE,GAAG,iBAAiB,GAAG,IAAI,CAAC,IAAI;IAClD,QAAQ,OAAO,CAAC,cAAc,GAAG,GAAG,GAAG,2BAA2B;IAClE,QAAQ,OAAO,CAAC,YAAY,GAAG2B,YAAE,CAAC,YAAY,CAAC,IAAI;IACnD,QAAQ,OAAO,CAAC,aAAa,GAAGA,YAAE,CAAC,wBAAwB,CAAC,IAAI;IAChE,QAAQ,OAAO,CAAC,IAAI,GAAGA,YAAE,CAAC,YAAY,CAAC,IAAI;IAC3C,QAAQ,OAAO,CAAC,gBAAgB,CAACA,YAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IACrF,QAAQ,OAAO,CAAC,gBAAgB,CAACA,YAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IACrF,QAAQ,OAAO,CAAC,gBAAgB,CAACA,YAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC;IACzF,QAAQ,OAAO,CAAC,gBAAgB,CAACA,YAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC;IAC3F,QAAQ,OAAO,CAAC,gBAAgB,CAACA,YAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;IACvF,QAAQ,OAAO,CAAC,gBAAgB,CAACA,YAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC;IACzF,QAAQ,OAAO,CAAC,gBAAgB,CAACA,YAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;IACvF,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;IACvC,QAAQ,QAAQ,CAAC,EAAE,GAAG,iBAAiB,GAAG,IAAI,CAAC,IAAI;IACnD,QAAQ,QAAQ,CAAC,IAAI,GAAGA,YAAE,CAAC,YAAY,CAAC,IAAI;IAC5C,QAAQ,QAAQ,CAAC,YAAY,GAAGA,YAAE,CAAC,YAAY,CAAC,IAAI;IACpD,QAAQ,QAAQ,CAAC,aAAa,GAAGA,YAAE,CAAC,wBAAwB,CAAC,IAAI;IACjE,QAAQ,QAAQ,CAAC,cAAc,GAAG,GAAG,GAAG,2BAA2B;IACnE,IAAI;IACJ,IAAI,eAAe,GAAG;IACtB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;IACrC,QAAQ,IAAI,CAAC3B,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IACpC,YAAY,OAAO,CAAC,mBAAmB,CAAC2B,YAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IAC5F,YAAY,OAAO,CAAC,mBAAmB,CAACA,YAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IAC5F,YAAY,OAAO,CAAC,mBAAmB,CAACA,YAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC;IAChG,YAAY,OAAO,CAAC,mBAAmB,CAACA,YAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC;IAClG,YAAY,OAAO,CAAC,mBAAmB,CAACA,YAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;IAC9F,YAAY,OAAO,CAAC,mBAAmB,CAACA,YAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC;IAChG,YAAY,OAAO,CAAC,mBAAmB,CAACA,YAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;IAC9F,QAAQ;IACR,IAAI;IACJ,IAAI,aAAa,GAAG;IACpB,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAYF,kBAAY,CAAC,EAAE,CAAC,mBAAmB,CAAC;IACxG,QAAQ,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;IACxE,IAAI;IACJ,IAAI,eAAe,GAAG;IACtB,QAAQ,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;IAC3E,IAAI;IACJ;IACA,IAAI,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;IACnC,QAAQ,IAAIzB,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAIA,eAAK,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IACzE,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IACjD,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACvE,IAAI;IACJ,IAAI,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE;IACrC,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;IAClD,IAAI;IACJ,IAAI,SAAS,GAAG;IAChB;IACA,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa;IAChD,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE;IAChD,YAAY,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;IACrD,QAAQ;IACR;IACA,QAAQ,MAAM,EAAE,GAAGA,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,uBAAuB;IAC5J,QAAQ,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE;IAC7B,YAAY,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC;IAC5E,YAAY,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;IACtC,gBAAgB,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnI,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACnC,IAAI;IACJ,IAAI,kBAAkB,CAAC,EAAE,EAAE;IAC3B;IACA;IACA,QAAQ,MAAM,WAAW,GAAG,EAAE;IAC9B,QAAQ,SAAS,KAAK,GAAG;IACzB,YAAY,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,IAAI,KAAK,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAChG,QAAQ;IACR,QAAQ,GAAG;IACX,YAAY,IAAIA,eAAK,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;IAClD;IACA,gBAAgB,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAKA,eAAK,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAChF,gBAAgB,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;IACzC,YAAY;IACZ,iBAAiB;IACjB;IACA,gBAAgB,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IACnI,gBAAgB,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;IAC/C,oBAAoB,IAAIA,eAAK,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;IACxD,wBAAwB,OAAO,KAAK;IACpC,oBAAoB;IACpB,oBAAoB,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/H,gBAAgB,CAAC,CAAC;IAClB,gBAAgB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;IACvC,YAAY;IACZ,QAAQ,CAAC,QAAQ,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM;IACpC;IACA,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,WAAW;IAC/C,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,mBAAmB;IACjC,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,kBAAkB,EAAE,MAAM,CAAC;AAC/DtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,WAAW;IAC7B,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACxDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,YAAY;IAC9B,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACvDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,kBAAkB;IACpC,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACxDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,cAAc;IAChC,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC;AAC1DR,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAC7D,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AACzDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC;AAC5DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AAC3DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,kBAAkB,EAAE,MAAM,CAAC;AAC/DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC;AAC5DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAChD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,oBAAoB,EAAE,MAAM,CAAC;AACjEP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IAChE,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AAC3DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACxDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,iBAAiB,EAAE,MAAM,CAAC;IAC9D,qBAAqB,GAAGP,YAAU,CAAC;IACnC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,YAAY,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IACnE,QAAQ,QAAQ,EAAE,CAAC,CAAC,EAAEX,WAAC,CAAC;AACxB;AACA,aAAa,EAAEA,WAAC,CAAC,aAAa,EAAEJ,oBAAU,CAAC,2BAA2B,CAAC,gCAAgC,EAAEA,oBAAU,CAAC,2BAA2B,CAAC;AAChJ;AACA,qBAAqB,EAAEI,WAAC,CAAC,iDAAiD,EAAEA,WAAC,CAAC;AAC9E;AACA,cAAc,EAAEA,WAAC,CAAC;AAClB;AACA;AACA,EAAE,EAAEA,WAAC,CAAC,WAAW,EAAEA,WAAC,CAAC,WAAW,EAAEA,WAAC,CAAC;AACpC,CAAC,EAAEA,WAAC,CAAC,aAAa,EAAEA,WAAC,CAAC;AACtB,CAAC,EAAEA,WAAC,CAAC,kBAAkB,EAAEA,WAAC,CAAC;AAC3B;AACA,KAAK,EAAEA,WAAC,CAAC,cAAc,EAAE,2BAA2B,CAAC,0BAA0B,EAAE,2BAA2B,CAAC;AAC7G,SAAS,EAAEA,WAAC,CAAC,aAAa,EAAE,2BAA2B,CAAC,QAAQ,EAAE,uBAAuB,CAAC,IAAI,EAAEA,WAAC,CAAC;AAClG,2BAA2B,EAAE,8BAA8B,CAAC,oCAAoC,EAAEA,WAAC,CAAC;AACpG,SAAS,EAAEA,WAAC,CAAC,aAAa,EAAE,gCAAgC,CAAC,QAAQ,EAAE,uBAAuB,CAAC,IAAI,EAAEA,WAAC,CAAC;AACvG,MAAM,EAAEA,WAAC,CAAC;AACV;AACA,CAAC,EAAEA,WAAC,CAAC;AACL,SAAS,EAAEA,WAAC,CAAC,kCAAkC,EAAEgB,kBAAY,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;AACvF,qBAAqB,EAAEhB,WAAC,CAAC,qCAAqC,EAAEE,cAAI,CAAC;AACrE;AACA;AACA,mEAAmE,EAAEF,WAAC,CAAC,aAAa,EAAEE,cAAI,CAAC,0DAA0D,EAAEF,WAAC,CAAC,QAAQ,EAAEA,WAAC,CAAC;AACrK,UAAU,EAAEA,WAAC,CAAC;AACd,EAAE,EAAEA,WAAC,CAAC,aAAa;IACnB,KAAK;IACL,CAAC,EAAE,qBAAqB,CAAC;;IC3iBzB,IAAIR,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAGD;IACA;IACO,IAAI,YAAY;IACvB,CAAC,UAAU,YAAY,EAAE;IACzB,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO;IACnC,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM;IACjC,CAAC,EAAE,YAAY,KAAK,YAAY,GAAG,EAAE,CAAC,CAAC;IACvC;IACA,MAAM,0BAA0B,GAAG,+BAA+B;IAClE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,qBAAqB,SAAS,gBAAgB,CAAC;IAC5D,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3B;IACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;IAC7B;IACA,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,KAAK;IAC9C,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,KAAK;IACtC,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;IAClC,gBAAgB;IAChB,YAAY;IACZ,YAAY,IAAI,KAAK,4CAA4C,IAAI,CAAC,UAAU;IAChF,YAAY,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE;IAClD,gBAAgB,IAAI,CAAC,KAAK,QAAQ,CAAC,aAAa,EAAE;IAClD,oBAAoB,KAAK,GAAG,CAAC;IAC7B,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,YAAY,KAAK,EAAE,MAAM,EAAE;IAC3B,QAAQ,CAAC;IACT,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,aAAa;IAC9B,gBAAgB,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE;IAC/D,oBAAoB,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC;IACtD,gBAAgB;IAChB,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;IAC9D,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,GAAGF,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG;IACvE,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,IAAI,UAAU,GAAG;IACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAClC,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;IACxC,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE;IAC/B,gBAAgB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC,YAAY;IACZ,iBAAiB,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,IAAI,EAAE;IACtF,gBAAgB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC,YAAY;IACZ,iBAAiB;IACjB;IACA,gBAAgB,MAAM,EAAE,GAAG,MAAM;IACjC,oBAAoB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IACpE,oBAAoB,IAAI,GAAG,KAAK,IAAI,CAAC,KAAK,EAAE;IAC5C,wBAAwB,IAAI,CAAC,KAAK,GAAG,GAAG;IACxC;IACA,oBAAoB;IACpB,oBAAoB,OAAO,CAAC,GAAG,CAAC;IAChC,gBAAgB,CAAC;IACjB,gBAAgB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ;IACvC,gBAAgB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE;IACpD,oBAAoB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;IAC9C,oBAAoB,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;IACpD,gBAAgB;IAChB,qBAAqB,IAAI,CAAC,KAAK,IAAI,EAAE;IACrC,oBAAoB,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;IACtD,oBAAoB,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC,EAAE,CAAC;IAC5D,gBAAgB;IAChB;IACA,oBAAoB,qBAAqB,CAAC,EAAE,CAAC;IAC7C,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA,IAAI,mBAAmB,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;IACxD,QAAQ,KAAK,CAAC,mBAAmB,CAAC,WAAW,CAAC;IAC9C,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAACA,eAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;IACvE,YAAY,WAAW,GAAG,CAAC,WAAW,CAAC;IACvC,QAAQ;IACR,QAAQ,KAAK,IAAI,KAAK,IAAI,WAAW,IAAI,EAAE,EAAE;IAC7C,YAAY,IAAI,EAAE,KAAK,YAAY,gBAAgB,CAAC,IAAI,EAAE,KAAK,YAAY,mBAAmB,CAAC,EAAE;IACjG,gBAAgB;IAChB,YAAY;IACZ,YAAY,IAAIM,4BAAkB,CAAC,wBAAwB,CAAC,KAAK,EAAE,0BAA0B,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;IAChH,gBAAgB;IAChB,YAAY;IACZ,YAAYA,4BAAkB,CAAC,wBAAwB,CAAC,KAAK,EAAE,0BAA0B,EAAE,IAAI,CAAC;IAChG,YAAY,IAAI,MAAM,IAAI,KAAK,EAAE;IACjC;IACA,gBAAgB,KAAK,CAAC,IAAI,GAAG,CAAC;IAC9B,YAAY;IACZ,YAAY,KAAK,CAAC,YAAY,GAAG,KAAK;IACtC,YAAY,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IACtE,YAAY,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IACtE,QAAQ;IACR,IAAI;IACJ,IAAI,qBAAqB,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;IAC1D,QAAQ,KAAK,CAAC,qBAAqB,CAAC,WAAW,CAAC;IAChD,QAAQ,IAAI,CAACN,eAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAACA,eAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;IACvE,YAAY,WAAW,GAAG,CAAC,WAAW,CAAC;IACvC,QAAQ;IACR,QAAQ,KAAK,IAAI,KAAK,IAAI,WAAW,IAAI,EAAE,EAAE;IAC7C,YAAY,IAAIM,4BAAkB,CAAC,wBAAwB,CAAC,KAAK,EAAE,0BAA0B,CAAC,KAAK,IAAI,EAAE;IACzG,gBAAgB;IAChB,YAAY;IACZ,YAAYA,4BAAkB,CAAC,2BAA2B,CAAC,KAAK,EAAE,0BAA0B,CAAC;IAC7F,YAAY,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IACzE,YAAY,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IACzE,QAAQ;IACR,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,mBAAmB,EAAE;IAClC,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,IAAI,CAAC,qBAAqB,EAAE;IACpC,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ;AACAL,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC;IACV,QAAQ,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE;IAChC,YAAY,OAAO,EAAE,CAAC,IAAI,KAAK;IAC/B,gBAAgB,QAAQ,IAAI;IAC5B,oBAAoB,KAAK,MAAM;IAC/B,wBAAwB,OAAO,IAAI;IACnC,oBAAoB,KAAK,OAAO;IAChC,wBAAwB,OAAO,KAAK;IACpC,oBAAoB;IACpB,wBAAwB,OAAO,UAAU,CAAC,IAAI,CAAC;IAC/C;IACA,YAAY,CAAC;IACb,YAAY,WAAW,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ;IAChD;IACA,KAAK;IACL,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACvDN,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AAC3DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IAChE,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;IACzD;IACA;IACA;IACA;IACA;IACO,MAAM,wBAAwB,SAAS,qBAAqB,CAAC;IACpE,IAAI,+BAA+B,CAAC,IAAI,EAAE;IAC1C,QAAQ,OAAO,UAAU,CAAC,IAAI,CAAC;IAC/B,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,KAAK;IACtB,YAAY,KAAK,KAAK;IACtB,YAAY,KAAK,MAAM;IACvB,gBAAgB,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC;IAC7G,gBAAgB;IAChB;IACA,IAAI;IACJ;AACAP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,wBAAwB,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;AACrDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,wBAAwB,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;AACrDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC;IACV,QAAQ,SAAS,EAAE;IACnB,YAAY,OAAO,EAAE,CAAC,IAAI,KAAK;IAC/B,gBAAgB,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC;IAC5C,gBAAgB,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG;IAC/C,YAAY,CAAC;IACb,YAAY,WAAW,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,QAAQ;IAC9C;IACA,KAAK;IACL,CAAC,EAAE,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IACtD;IACA;IACA;IACA;IACA;IACO,MAAM,wBAAwB,SAAS,qBAAqB,CAAC;IACpE,IAAI,+BAA+B,CAAC,IAAI,EAAE;IAC1C,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,SAAS;IAC1B,YAAY,KAAK,WAAW;IAC5B,YAAY,KAAK,WAAW;IAC5B,gBAAgB,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC;IAC7G,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,OAAOP,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG;IACpD,IAAI;IACJ,IAAI,YAAY,CAAC,GAAG,EAAE;IACtB,QAAQ,OAAO,GAAG;IAClB,IAAI;IACJ;AACAC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,wBAAwB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AACzDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AAC3DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;;IC/O3D,IAAIP,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACA;IACA,IAAI,sBAAsB,GAAG,MAAM,sBAAsB,SAAS,qBAAqB,CAAC;IACxF,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,EAAE;IACf;IACA,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC;IAC1B;IACA,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM;IACpC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,KAAK;IACzC,YAAY,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,MAAM;IAC3C,YAAY,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,gBAAgB,CAAC;IAC3E,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,UAAU;IAC5C,YAAY,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;IAChD,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE;IACzB,IAAI;IACJ,IAAI,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;IACxC,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IACjD,IAAI;IACJ,IAAI,QAAQ,CAAC,CAAC,EAAE;IAChB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,IAAIF,eAAK,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IACzH,QAAQ,QAAQ,IAAI,CAAC,cAAc;IACnC,YAAY,KAAK,WAAW;IAC5B,gBAAgB,OAAO,GAAG,CAAC,WAAW,EAAE;IACxC,YAAY,KAAK,WAAW;IAC5B,gBAAgB,OAAO,GAAG,CAAC,WAAW,EAAE;IACxC,YAAY;IACZ,gBAAgB,OAAO,GAAG;IAC1B;IACA,IAAI;IACJ,IAAI,YAAY,CAAC,KAAK,EAAE;IACxB,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS;IACnC,QAAQ,OAAO,IAAI,CAAC,cAAc,IAAI,UAAU,GAAG+B,sBAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK;IACpG,IAAI;IACJ,IAAI,+BAA+B,CAAC,IAAI,EAAE;IAC1C,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;IACjD,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,QAAQ;IACrC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ;IACrC,IAAI;IACJ;IACA,IAAI,KAAK,GAAG;IACZ;IACA,QAAQ,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE;IACvD,YAAY,IAAI,UAAU,KAAK,QAAQ,CAAC,aAAa,EAAE;IACvD,gBAAgB,IAAI,IAAI,CAAC,SAAS,EAAE;IACpC,oBAAoB,UAAU,CAAC,MAAM,EAAE;IACvC,gBAAgB;IAChB,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,QAAQ,KAAK,CAAC,KAAK,EAAE;IACrB,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,KAAK,EAAE;IACnB,YAAY;IACZ,QAAQ;IACR,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,WAAW;IAC5B,gBAAgB,IAAI,CAAC,SAAS,EAAE;IAChC,gBAAgB,IAAI,CAAC,eAAe,EAAE;IACtC,gBAAgB;IAChB,YAAY,KAAK,gBAAgB;IACjC,gBAAgB,IAAI,CAAC,mBAAmB,EAAE;IAC1C,gBAAgB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IACtD,gBAAgB;IAChB;IACA,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,mBAAmB,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;IACnD,QAAQ,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC;IACzC,QAAQ,IAAI,CAAC/B,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAACA,eAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;IAC7D,YAAY,MAAM,GAAG,CAAC,MAAM,CAAC;IAC7B,QAAQ;IACR,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO;IACnC,QAAQ,KAAK,IAAI,UAAU,IAAI,MAAM,IAAI,EAAE,EAAE;IAC7C,YAAY,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;IAClD,YAAYA,eAAK,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IACpF,YAAYA,eAAK,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,CAAC;IAClE,YAAY,IAAIA,eAAK,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;IACpD,gBAAgB,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,GAAG,GAAG,GAAG,GAAGA,eAAK,CAAC,UAAU,EAAE,CAAC;IACvF,YAAY;IACZ,YAAY,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE;IAC5D,YAAY,IAAI,IAAI,CAAC,cAAc,KAAK,UAAU,EAAE;IACpD,gBAAgB,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;IAC3D,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;IACvD,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB;IACA;IACA,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO;IACnC,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;IACrC,YAAY,IAAI,OAAO,GAAG,CAAC;IAC3B,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IAC7D,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;IAC5C,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/C,gBAAgB,OAAO,EAAE;IACzB,YAAY;IACZ,YAAY,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC1D,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACpC,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI;IAC7C,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;IAC3E,YAAY,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;IAC3D,gBAAgB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3C,gBAAgB,IAAIA,eAAK,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;IAC9D,oBAAoB,KAAK,CAAC,KAAK,GAAG,EAAE;IACpC,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC;IAC1C,oBAAoB,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;IACxC,gBAAgB;IAChB,YAAY;IACZ,YAAY,OAAO,CAAC;IACpB,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAIA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;IAC3C;IACA,YAAY,IAAI,CAAC,UAAU,GAAG,IAAI;IAClC,QAAQ;IACR,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAACK,oBAAU,CAAC,2BAA2B,EAAE,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC;IAC5G,QAAQ,IAAI,CAAC,SAAS,EAAE;IACxB,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM;IACpC,QAAQ,IAAI,CAACL,eAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;IACrC,YAAY,QAAQ,CAAC,mBAAmB,CAACK,oBAAU,CAAC,2BAA2B,EAAE,IAAI,CAAC,kBAAkB,CAAC;IACzG,QAAQ;IACR,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ,IAAI,SAAS,GAAG;IAChB,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,OAAO;IAC1D,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE;IAClC,YAAY,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5D,QAAQ;IACR,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG0B,sBAAM,CAAC,KAAK,CAAC,IAAI,CAAC;IACnD,IAAI;IACJ,IAAI,OAAO;IACX,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAO,IAAI,CAAC,OAAO;IAC3B,IAAI;IACJ,CAAC;AACD9B,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClF,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACzDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClF,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,CAAC;AAC9DP,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,WAAW;IAC7B,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACtDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,OAAO,GAAGZ,cAAI,GAAG,WAAW;IAC1C,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;IACrD,sBAAsB,GAAGV,YAAU,CAAC;IACpC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,cAAc;IACnC,QAAQ,QAAQ,EAAE,CAAC,CAAC,EAAEA,WAAC,CAAC;AACxB,4CAA4C,EAAEE,cAAI,CAAC;AACnD,UAAU,EAAEF,WAAC,CAAC,uBAAuB,EAAEE,cAAI,CAAC,YAAY,EAAEF,WAAC,CAAC,qCAAqC,EAAEA,WAAC,CAAC,aAAa,CAAC;IACnH,QAAQ,MAAM,EAAEW,kBAAQ,CAAC;IACzB,KAAK;IACL,CAAC,EAAE,sBAAsB,CAAC;;IC1L1B,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACA;IACA,IAAI,sBAAsB,GAAG,MAAM,sBAAsB,SAAS,gBAAgB,CAAC;IACnF,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IAC5C,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;IAC5B,YAAY,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI;IAC1C,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;IACvD,QAAQ;IACR,IAAI;IACJ,IAAI,+BAA+B,CAAC,IAAI,EAAE;IAC1C,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB;IACA,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC9E,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;IACrC,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;IAC9D,QAAQ,OAAOF,eAAK,CAAC,UAAU,CAAC,KAAK,CAAC;IACtC,IAAI;IACJ,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,EAAE;IACf,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,QAAQ;IACvC,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,QAAQ;IACrC,IAAI;IACJ,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;IAC3B;IACA,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,GAAG;IACzC,YAAY,OAAO,IAAI;IACvB,QAAQ,MAAM,GAAG,GAAGgC,sBAAM,CAAC,KAAK,CAAC,IAAI,CAAC;IACtC,QAAQ,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG;IAC3B,QAAQ,OAAOA,sBAAM,CAAC,SAAS,CAAC,GAAG,CAAC;IACpC,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,MAAM,GAAG,GAAGA,sBAAM,CAAC,KAAK,CAAC,GAAG,CAAC;IACrC,QAAQ,IAAIhC,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;IACtC,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,OAAO,EAAE,IAAI,EAAEgC,sBAAM,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE;IAC/F,IAAI;IACJ,IAAI,YAAY,CAAC,KAAK,EAAE;IACxB,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAChC,eAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtE,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,mBAAmB;IACjC,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AACrDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,oBAAoB;IAClC,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACtDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,CAAC,EAAEZ,cAAI,CAAC,WAAW,CAAC;IACnC,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACxDV,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,CAAC,EAAEZ,cAAI,CAAC,SAAS,CAAC;IACjC,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;IACrD,sBAAsB,GAAGV,YAAU,CAAC;IACpC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,cAAc,EAAE,QAAQ,EAAE,CAAC,YAAY,EAAEE,cAAI,CAAC;AACnE,CAAC,EAAEF,WAAC,CAAC,cAAc,EAAEE,cAAI,CAAC,+FAA+F,EAAEA,cAAI,CAAC,YAAY,EAAEF,WAAC,CAAC;AAChJ,cAAc,EAAEE,cAAI,CAAC;AACrB;AACA,CAAC,EAAEF,WAAC,CAAC,aAAa,EAAEE,cAAI,CAAC,mEAAmE,EAAEF,WAAC,CAAC,MAAM,CAAC;IACvG,QAAQ,MAAM,EAAEW,kBAAQ,CAAC;IACzB,KAAK;IACL,CAAC,EAAE,sBAAsB,CAAC;;IC/E1B,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACA;IACA,IAAI,sBAAsB,GAAG,MAAM,sBAAsB,SAAS,wBAAwB,CAAC;IAC3F,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,OAAO;IACxD,QAAQ,IAAI,CAACF,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IAChC,YAAY,KAAK,CAAC,MAAM,GAAG,QAAQ;IACnC,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACjC,YAAY,MAAM,CAAC,MAAM,GAAG,CAAC,QAAQ;IACrC,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAOA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;IACvC,cAAc;IACd,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,mBAAmB;IACjC,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACtDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,IAAI;IACtB,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;IACvD,sBAAsB,GAAGR,YAAU,CAAC;IACpC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,cAAc;IACnC,QAAQ,QAAQ,EAAE,CAAC,2BAA2B,EAAEE,cAAI,CAAC,OAAO,EAAEA,cAAI,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC,EAAEF,WAAC,CAAC,UAAU,EAAEE,cAAI,CAAC,qGAAqG,EAAEF,WAAC,CAAC,qCAAqC,EAAEA,WAAC,CAAC,QAAQ,EAAEA,WAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAEW,kBAAQ,CAAC;IAClT,KAAK;IACL,CAAC,EAAE,sBAAsB,CAAC;;ICpC1B,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAGD;IACO,MAAM,mBAAmB,GAAG,YAAY;IAC/C;IACO,MAAM,mBAAmB,GAAG,YAAY;IAC/C,MAAM,gBAAgB,SAASJ,0BAAgB,CAAC;IAChD,IAAI,WAAW,CAAC,IAAI,EAAE;IACtB,QAAQ,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;IAC3B,IAAI;IACJ;IACA;IACO,MAAM,eAAe,SAASA,0BAAgB,CAAC;IACtD,IAAI,WAAW,CAAC,IAAI,EAAE;IACtB,QAAQ,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC;IACxC,IAAI;IACJ;IACA;IACO,MAAM,eAAe,SAASA,0BAAgB,CAAC;IACtD,IAAI,WAAW,CAAC,IAAI,EAAE;IACtB,QAAQ,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC;IACxC,IAAI;IACJ;IACA,MAAM,aAAa,GAAG,4FAA4F;IAClH,eAAe,eAAe,CAAC,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;IACnF,IAAI,WAAW,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;IAChD,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;IACnC,YAAY,KAAK,CAAC,KAAK,EAAE;IACzB,YAAY,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;IAC9C,YAAY,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;IACnC,QAAQ;IACR,aAAa;IACb,YAAY,KAAK,CAAC,WAAW,EAAE;IAC/B,YAAY,MAAM,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC;IAC/C,QAAQ;IACR,IAAI;IACJ,IAAI,OAAO,KAAK;IAChB;IACA,eAAe,gBAAgB,CAAC,KAAK,EAAE;IACvC,IAAI,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;IACvD,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE;IACzB,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE;IACtC,QAAQ,KAAK,CAAC,KAAK,EAAE;IACrB,QAAQ,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;IAC/B,IAAI;IACJ,IAAI,OAAO,KAAK;IAChB;IACA;IACA;IACA;IACA;IACA,IAAI,kBAAkB,GAAG,MAAM,kBAAkB,SAAS,gBAAgB,CAAC;IAC3E,IAAI,WAAW,CAAC,QAAQ,GAAG,IAAImC,oBAAU,CAAC,YAAY,EAAE,EAAE;IAC1D,QAAQ,KAAK,EAAE;IACf,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAChC;IACA,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM;IACjC;IACA,QAAQ,IAAI,CAAC,YAAY,GAAG,OAAO;IACnC;IACA,QAAQ,IAAI,CAAC,YAAY,GAAG,OAAO;IACnC;IACA,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK;IAC9B;IACA,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC;IACrB;IACA,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE;IAC5B;IACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;IAC7B;IACA,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK;IAC3B;IACA,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK;IAChC,QAAQ,IAAI,CAAC,OAAO,GAAG;IACvB,YAAY,aAAa,EAAE,CAAC;IAC5B,YAAY,KAAK,EAAE,EAAE;IACrB,YAAY,SAAS,EAAE,CAAC;IACxB,YAAY,UAAU,EAAE,IAAI;IAC5B,YAAY,MAAM,EAAE,IAAI;IACxB,YAAY,WAAW,EAAE,CAAC;IAC1B,YAAY,WAAW,EAAE,IAAI,GAAG,GAAG;IACnC,YAAY,QAAQ,EAAE;IACtB,SAAS;IACT,IAAI;IACJ,IAAI,+BAA+B,CAAC,IAAI,EAAE;IAC1C,QAAQ,OAAO,IAAI,CAAC;IACpB,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,IAAI,CAAC,UAAU,GAAG,CAAC;IAC3B,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK;IAC9B,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE;IACnC,IAAI;IACJ,IAAI,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,IAAI,MAAM,EAAE;IAClG,QAAQ,IAAI,SAAS,EAAE;IACvB,YAAY,OAAO,MAAM;IACzB,QAAQ;IACR,QAAQ,MAAM,QAAQ,GAAG,CAACjC,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC;IACnD,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,WAAW;IAC5B,YAAY,KAAK,kBAAkB;IACnC,gBAAgB,OAAO,QAAQ,GAAG,QAAQ,GAAG,qBAAqB;IAClE,YAAY,KAAK,UAAU;IAC3B,YAAY,KAAK,iBAAiB;IAClC,gBAAgB,OAAO,QAAQ,GAAG,OAAO,GAAG,aAAa;IACzD;IACA,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;IACvC,YAAY,OAAO,aAAa;IAChC,QAAQ;IACR,QAAQ,IAAI,QAAQ,GAAG,IAAI;IAC3B,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;IACtC,YAAY,QAAQ,GAAG,IAAI,CAAC,IAAI;IAChC,QAAQ;IACR,QAAQ,MAAM,UAAU,GAAG,iBAAiB;IAC5C,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC/C,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;IACnC,YAAY,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;IAC1C,gBAAgB,KAAK,KAAK;IAC1B,oBAAoB,OAAO,gBAAgB;IAC3C;IACA;IACA;IACA;IACA,gBAAgB,KAAK,KAAK;IAC1B,gBAAgB,KAAK,MAAM;IAC3B,gBAAgB,KAAK,KAAK;IAC1B,gBAAgB,KAAK,KAAK;IAC1B,oBAAoB,OAAO,QAAQ;IACnC;IACA,QAAQ;IACR,QAAQ,OAAO,aAAa;IAC5B,IAAI;IACJ;IACA,IAAI,IAAI,IAAI,GAAG;IACf,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI;IAChC,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAOA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW;IAC5C,cAAc;IACd,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;IAChC,IAAI;IACJ,IAAI,YAAY,CAAC,GAAG,EAAE;IACtB,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,IAAI,GAAG;IAC7C,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;IACxC,YAAY,OAAO,EAAE;IACrB,QAAQ;IACR,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IACvC,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR,QAAQ,IAAI,OAAO,GAAG,MAAM,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,GAAG,EAAE;IACvD,QAAQ,IAAIA,eAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IAClC,YAAY,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACvD,QAAQ;IACR,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM;IACjC,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;IACxC,YAAY,OAAO,OAAO;IAC1B,QAAQ;IACR,QAAQ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK;IACrC,QAAQ,OAAO,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,EAAEA,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/F,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;IACzC,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,kBAAkB,EAAE;IACjC,QAAQ,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAEkB,gCAAsB,EAAE,KAAK,CAAC;IACjF,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,CAAC,KAAK,EAAE;IACpB,YAAY,QAAQ,IAAI;IACxB,gBAAgB,KAAK,YAAY;IACjC,oBAAoB,IAAI,CAAC,kBAAkB,EAAE;IAC7C;IACA,QAAQ;IACR,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;IAC9B,YAAY,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAEA,gCAAsB,EAAE,KAAK,CAAC;IACxF,QAAQ;IACR,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,IAAI,MAAM,EAAE;IACnF,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;IACtC,QAAQ,KAAK,CAAC,eAAe,CAAC,iBAAiB,CAAC;IAChD,QAAQ,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC;IACzC,QAAQ,KAAK,CAAC,MAAM,GAAG,QAAQ;IAC/B,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,WAAW;IAC5B,gBAAgB,KAAK,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAC7D,gBAAgB;IAChB,YAAY,KAAK,UAAU;IAC3B,gBAAgB,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC;IACtD,gBAAgB;IAChB,YAAY,KAAK,kBAAkB;IACnC,YAAY,KAAK,aAAa;IAC9B,YAAY,KAAK,iBAAiB;IAClC,gBAAgB,KAAK,CAAC,MAAM,GAAG,IAAI;IACnC,gBAAgB;IAChB;IACA,IAAI;IACJ;IACA;IACA;IACA,IAAI,iBAAiB,CAAC,GAAG,EAAE;IAC3B,QAAQR,sBAAY,CAAC,GAAG,CAAC;IACzB,QAAQ,MAAM,KAAK,mEAAmE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,IAAI,KAAK;IAC3I,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/G,QAAQ,CAAC;IACT,QAAQ,IAAI,CAACV,eAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;IACzC,YAAY,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IAC3C;IACA,gBAAgB,QAAQ,CAAC,KAAK,CAAC;IAC/B,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,IAAI,SAAS,IAAI,KAAK,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;IAC/E;IACA,oBAAoBA,eAAK,CAAC,QAAQ,CAACA,eAAK,CAAC,aAAa,CAAC,mCAAmC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;IACpI,gBAAgB;IAChB,qBAAqB,IAAI,MAAM,IAAI,KAAK,EAAE;IAC1C,oBAAoB,IAAI,MAAM,IAAI,KAAK,EAAE;IACzC,wBAAwB,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;IACnD,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI;IACzD,gCAAgCA,eAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;IAC1E,4BAA4B,CAAC,CAAC;IAC9B,wBAAwB;IACxB,6BAA6B;IAC7B,4BAA4B,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;IAChD,wBAAwB;IACxB,oBAAoB;IACpB,yBAAyB;IACzB;IACA,wBAAwB,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;IAC5C,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,KAAK,GAAG;IACZ,QAAQ,KAAK,CAAC,KAAK,EAAE;IACrB,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;IAC/B,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK;IAChC,IAAI;IACJ,IAAI,YAAY,GAAG;IACnB,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM;IACjC,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO;IACjC,QAAQ,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE;IAC3C,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI;IACnC,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR;IACA,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK;IAChC,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,mBAAmB,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE;IACpE,QAAQ,IAAI,IAAI,YAAY,IAAI,EAAE;IAClC,YAAY,QAAQ,GAAG,IAAI,CAAC,IAAI;IAChC,QAAQ;IACR,QAAQ,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrE;IACA,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO;IACjC,QAAQ,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;IAC1C,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI;IACnC,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR;IACA,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;IACpC,QAAQ,IAAI,OAAO,IAAI,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;IACnE,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI;IACnC,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR;IACA,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK;IAChC,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IAClC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE;IACtD,YAAY,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IACtD,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACzC,QAAQ,IAAI,QAAQ,GAAG,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,OAAO;IACtD,QAAQ,IAAI,CAAC,IAAI;IACjB,YAAY;IACZ,QAAQ,IAAI,CAAC,QAAQ,IAAI,IAAI,YAAY,IAAI,EAAE;IAC/C,YAAY,QAAQ,GAAG,IAAI,CAAC,IAAI;IAChC,QAAQ;IACR,QAAQ,QAAQ,CAAC,MAAM,GAAG,KAAK;IAC/B,QAAQ,MAAM,CAAC,MAAM,GAAG,KAAK;IAC7B,QAAQ,MAAM,CAAC,OAAO,GAAG,CAAC;IAC1B,QAAQ,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;IAC3D,QAAQ,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrE,QAAQ,QAAQ,CAAC,UAAU,GAAG,EAAE;IAChC,QAAQ,QAAQ,CAAC,QAAQ,GAAG,KAAK;IACjC;IACA,QAAQ,IAAI,OAAO,GAAG;IACtB,YAAY,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;IACvE,SAAS;IACT;IACA,QAAQ,QAAQ,CAAC,SAAS,GAAG,IAAI;IACjC,QAAQ,IAAI;IACZ,YAAY,IAAI,CAAC,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IAClD,YAAY,IAAI,CAAC,CAAC,EAAE,EAAE;IACtB,gBAAgB,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE;IACzC,gBAAgB,MAAM,CAAC,SAAS,GAAG,CAAC;IACpC,gBAAgB,MAAM,CAAC,IAAI,GAAG,IAAI;IAClC,gBAAgB,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;IACrC,gBAAgB,QAAQ,CAAC,OAAO,EAAE;IAClC,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,QAAQ,CAAC,SAAS,GAAG,KAAK;IAC1C,YAAY;IACZ,YAAY,OAAO,CAAC;IACpB,QAAQ;IACR,QAAQ,OAAO,CAAC,EAAE;IAClB,YAAY,QAAQ,CAAC,SAAS,GAAG,KAAK;IACtC,QAAQ;IACR,gBAAgB;IAChB,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,aAAa,CAAC,IAAI,EAAE;IAC9B,QAAQ,MAAM,MAAM,GAAG,MAAMA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC;IACtD,QAAQ,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC9D,IAAI;IACJ,IAAI,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE;IAChC,QAAQ,IAAI,QAAQ,GAAG,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,OAAO;IACtD,QAAQ,MAAM,CAAC,OAAO,EAAE;IACxB;IACA,QAAQ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;IACpD,QAAQ,IAAI,OAAO,GAAG;IACtB,YAAY,KAAK,EAAE,KAAK;IACxB,YAAY,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI;IAC3C,YAAY,MAAM,EAAE;IACpB,SAAS;IACT,QAAQ,IAAI;IACZ,YAAY,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACpD,YAAY,IAAI,CAAC,CAAC,EAAE,EAAE;IACtB,gBAAgB,MAAM,CAAC,OAAO,EAAE;IAChC,gBAAgB,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM;IACnC,oBAAoB;IACpB,gBAAgB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE;IAC3C,gBAAgB,MAAM,MAAM,GAAG,IAAI;IACnC;IACA,gBAAgB,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;IACzD,oBAAoB,MAAM,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC;IACpG,gBAAgB;IAChB,gBAAgB,IAAI,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE;IAC1D,oBAAoB,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;IACvD,oBAAoB,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI,EAAE;IACpD,wBAAwB,QAAQ,CAAC,SAAS,GAAG,KAAK;IAClD,wBAAwB,QAAQ,CAAC,aAAa,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IAC3E,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,iBAAiB;IACjB;IACA,gBAAgB,MAAM,CAAC,SAAS,GAAG,IAAI;IACvC,gBAAgB,QAAQ,CAAC,MAAM,GAAG,IAAI;IACtC,gBAAgB,QAAQ,CAAC,SAAS,GAAG,KAAK;IAC1C,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,CAAC,EAAE;IAClB;IACA,YAAY,MAAM,CAAC,SAAS,GAAG,IAAI;IACnC,YAAY,QAAQ,CAAC,MAAM,GAAG,IAAI;IAClC,YAAY,QAAQ,CAAC,SAAS,GAAG,KAAK;IACtC,QAAQ;IACR,IAAI;IACJ,IAAI,OAAO,GAAG;IACd,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS;IACzH,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,SAAS;IACpC,QAAQ,IAAI,GAAG,GAAG,KAAK,GAAG,SAAS;IACnC;IACA,QAAQ,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAM;IAC5C,YAAY,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;IAC9C,gBAAgB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW;IAC1E,gBAAgB,IAAI,MAAM,CAAC,OAAO,IAAI,WAAW;IACjD,oBAAoB;IACpB,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC;IAC7D,gBAAgB,KAAK,GAAG,GAAG;IAC3B,gBAAgB,GAAG,GAAG,KAAK,GAAG,SAAS;IACvC,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW;IAC5C,gBAAgB,KAAK,CAAC,KAAK,GAAG,EAAE;IAChC,gBAAgB,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC;IACrD,YAAY;IACZ,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,IAAI;IACJ,IAAI,MAAM,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE;IACpE,QAAQ,OAAO,IAAI,CAAC,WAAW,GAAG;IAClC,YAAY,IAAI,EAAE,QAAQ;IAC1B,YAAY,IAAI,EAAE,IAAI,CAAC,IAAI;IAC3B,YAAY,IAAI,EAAE,IAAI,CAAC,IAAI;IAC3B,YAAY,YAAY,EAAEA,eAAK,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE;IAC1E,YAAY,OAAO,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI;IAClD,SAAS;IACT,IAAI;IACJ,IAAI,QAAQ,CAAC,CAAC,EAAE;IAChB,QAAQ,OAAO,qBAAqB,IAAI,CAAC;IACzC,YAAY,CAAC,MAAM;IACnB,gBAAgB,IAAI;IACpB,oBAAoB,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG;IAC3C,gBAAgB;IAChB,gBAAgB,MAAM;IACtB,oBAAoB,OAAO,KAAK;IAChC,gBAAgB;IAChB,YAAY,CAAC,GAAG;IAChB,IAAI;IACJ,IAAI,iBAAiB,GAAG;IACxB,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IACpC,YAAY;IACZ,QAAQ;IACR,QAAQ,MAAM,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI;IACvE,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC/D,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,KAAK,iBAAiB,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;IAC5F,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IACpC,YAAY;IACZ,QAAQ;IACR,QAAQ,MAAM,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI;IAC9D,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC3D,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,aAAa,CAAC,GAAG,EAAE;IACvB,QAAQU,sBAAY,CAAC,GAAG,CAAC;IACzB,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;IAC3B,YAAY;IACZ,QAAQ;IACR,QAAQ,QAAQ,IAAI,CAAC,UAAU;IAC/B,YAAY,KAAK,kBAAkB;IACnC,gBAAgB,IAAI,CAAC,iBAAiB,EAAE;IACxC,gBAAgB;IAChB,YAAY,KAAK,aAAa;IAC9B,YAAY,KAAK,iBAAiB;IAClC,gBAAgB,IAAI,CAAC,aAAa,EAAE;IACpC,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,MAAM,aAAa,GAAG;IAC1B;IACA,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC9B,QAAQ,IAAI,CAACV,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IAC9C,YAAY,IAAI,CAAC,UAAU,GAAG,CAAC;IAC/B,YAAY,MAAMA,eAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC;IACxD,QAAQ;IACR,aAAa;IACb,YAAY,MAAMA,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC;IACjC,QAAQ;IACR,QAAQ,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAEiC,oBAAU,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK;IACxF,YAAY,IAAI,CAAC,UAAU,GAAG,CAAC;IAC/B,QAAQ,CAAC,CAAC;IACV;IACA,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE;IAC5B,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK;IAC9B,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,OAAO,IAAI,OAAO,CAAC,OAAO,OAAO,EAAE,MAAM,KAAK;IACtD,YAAY,IAAIZ,0BAAgB,CAAC,YAAY,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE;IACrE;IACA,gBAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ;IAC7D,gBAAgB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;IACvC,gBAAgB,OAAO,CAAC,IAAI,CAAC;IAC7B,YAAY;IACZ,iBAAiB,IAAIA,0BAAgB,CAAC,YAAY,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE;IAC3E;IACA,gBAAgB,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM;IACpC,gBAAgB,IAAI,SAAS,EAAE,IAAI,EAAE,KAAK;IAC1C,gBAAgB,QAAQ,IAAI,CAAC,UAAU;IACvC,oBAAoB,KAAK,kBAAkB;IAC3C,wBAAwB,SAAS,GAAG,GAAG;IACvC,wBAAwB,IAAI,CAAC,MAAM,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC;IACtE,wBAAwB;IACxB,oBAAoB,KAAK,iBAAiB;IAC1C,oBAAoB,KAAK,aAAa;IACtC,wBAAwB,KAAK,GAAG,GAAG;IACnC,wBAAwB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;IAChD,4BAA4B,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;IAC1C,wBAAwB;IACxB,wBAAwB,IAAI,CAAC,MAAM,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC;IACnE,wBAAwB;IACxB,oBAAoB;IACpB;IACA,wBAAwB,IAAI,CAAC,MAAM,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;IAC3E,wBAAwB;IACxB;IACA,gBAAgB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;IAC5D,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;IACjD,gBAAgB,IAAI,CAAC,aAAa,CAAC,IAAI,eAAe,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1F,YAAY;IACZ,iBAAiB;IACjB;IACA,gBAAgB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW;IAC5C,gBAAgB,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;IAC9C;IACA,oBAAoB,IAAI,CAAC,MAAM,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;IACvE,oBAAoB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IAC9C,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM;IACpD,oBAAoB,IAAI,CAAC,MAAM,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;IACxI,oBAAoB,IAAI,KAAK,GAAG,CAAC,EAAE;IACnC;IACA,wBAAwB,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IACrE,wBAAwB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC;IAC9E,wBAAwB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;IACzD,wBAAwB,IAAI,CAAC,aAAa,CAAC,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IAChG,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,IAAI;IACzE,wBAAwB,IAAI,IAAI,GAAG,IAAI;IACvC;IACA,wBAAwB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAACrB,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAC/F;IACA,4BAA4B,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACnF,wBAAwB;IACxB,6BAA6B;IAC7B,4BAA4B,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;IACvH,gCAAgC,IAAI,GAAG,MAAMA,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAChI,4BAA4B;IAC5B,4BAA4B,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC;IAC7E,4BAA4B,IAAIA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAC/D;IACA,gCAAgC,MAAM,IAAI,CAAC,aAAa,EAAE;IAC1D;IACA,gCAAgC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;IACtE,4BAA4B;IAC5B,iCAAiC;IACjC;IACA,gCAAgC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;IAC/D,gCAAgC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IACnD,4BAA4B;IAC5B,wBAAwB;IACxB;IACA,wBAAwB,IAAI,CAAC,aAAa,CAAC,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IACnG,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,MAAM,CAAC,OAAO,EAAE;IACpB,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;IAC/B,YAAY,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAEA,eAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO;IAClN,SAAS,CAAC;IACV,IAAI;IACJ,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE;IACnB,QAAQ,CAAC,CAAC,cAAc,EAAE;IAC1B,QAAQ,CAAC,CAAC,eAAe,EAAE;IAC3B,QAAQ,IAAI,QAAQ,GAAG,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,GAAG,QAAQ,CAAC,WAAW;IACpF,QAAQ,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC;IACtC,QAAQ,IAAI,OAAO,GAAG;IACtB,YAAY,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;IACxC,SAAS;IACT,QAAQ,IAAI;IACZ,YAAY,IAAI,CAAC,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IAClD,YAAY,IAAI,CAAC,CAAC,EAAE,EAAE;IACtB,gBAAgB,MAAM,CAAC,MAAM,GAAG,IAAI;IACpC,gBAAgB,QAAQ,CAAC,IAAI,GAAG,CAAC;IACjC,gBAAgB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,CAAC;IAClD,YAAY;IACZ,YAAY,OAAO,CAAC;IACpB,QAAQ;IACR,QAAQ,OAAO,CAAC,EAAE;IAClB,QAAQ;IACR,gBAAgB;IAChB;IACA,YAAY,KAAK,CAAC,KAAK,GAAG,EAAE;IAC5B,YAAY,QAAQ,CAAC,SAAS,GAAG,KAAK;IACtC,YAAY,OAAO,CAAC;IACpB,QAAQ;IACR,IAAI;IACJ,IAAI,gBAAgB,CAAC,GAAG,EAAE,QAAQ,GAAG,GAAG,EAAE;IAC1C,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU;IACpC,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAEiC,oBAAU,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK;IACjG,YAAY,IAAI,CAAC,UAAU,GAAG,CAAC;IAC/B,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,MAAM,CAAC,CAAC,EAAE;IACd,QAAQ,CAAC,CAAC,cAAc,EAAE;IAC1B,QAAQ,CAAC,CAAC,eAAe,EAAE;IAC3B,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK;IAC3B,QAAQ,IAAI,CAAC,OAAO,EAAE;IACtB,IAAI;IACJ,IAAI,MAAM,CAAC,CAAC,EAAE;IACd,QAAQ,CAAC,CAAC,cAAc,EAAE;IAC1B,QAAQ,CAAC,CAAC,eAAe,EAAE;IAC3B,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK;IAChC,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACzC;IACA,QAAQ,KAAK,CAAC,KAAK,GAAG,EAAE;IACxB,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;IAClD,YAAY,KAAK,CAAC,IAAI,GAAG,EAAE;IAC3B,YAAY,KAAK,CAAC,IAAI,GAAG,MAAM;IAC/B,QAAQ;IACR,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;IAChC,IAAI;IACJ,CAAC;AACDhC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAC7D,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,EAAE,MAAM,CAAC;AAC5DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AACxDP,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,kBAAkB;IAChC,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC;AACvDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,EAAEd,WAAC,CAAC,MAAM,CAAC;IAC1B,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAClDR,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC;AACvDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AACxDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AACxDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClF,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AACnDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClF,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;AAC/CP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClF,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC;AACzDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClF,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC;AACvDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClF,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACrDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClF,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,CAAC;AAC1DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClF,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AACnDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IACrE,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AACtDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACrDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAChDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AACtDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACpDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAClDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC;IACvD,kBAAkB,GAAGP,YAAU,CAAC;IAChC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,SAAS,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IAChE,QAAQ,QAAQ,EAAE,CAAC,CAAC,EAAEX,WAAC,CAAC,0DAA0D,EAAEE,cAAI,CAAC,QAAQ,EAAEA,cAAI,CAAC,0HAA0H,EAAE,aAAa,CAAC;AAClP;AACA,KAAK,EAAEF,WAAC,CAAC;AACT,SAAS,EAAEA,WAAC,CAAC;AACb;AACA;AACA;AACA;AACA,4BAA4B,EAAEE,cAAI,CAAC;AACnC,sCAAsC,EAAEA,cAAI,CAAC,aAAa,EAAEA,cAAI,CAAC;AACjE,UAAU,EAAEF,WAAC,CAAC;AACd,MAAM,EAAEA,WAAC,CAAC;AACV,KAAK,EAAEA,WAAC,CAAC;AACT,SAAS,EAAEA,WAAC,CAAC;AACb,4EAA4E,EAAEA,WAAC,CAAC,wCAAwC,EAAEA,WAAC,CAAC,QAAQ,EAAEA,WAAC,CAAC;AACxI,MAAM,EAAEA,WAAC,CAAC;AACV,KAAK,EAAEA,WAAC,CAAC;AACT,SAAS,EAAEA,WAAC,CAAC;AACb,4CAA4C,EAAEA,WAAC,CAAC,uCAAuC,EAAEA,WAAC,CAAC,QAAQ,EAAEA,WAAC,CAAC;AACvG,MAAM,EAAEA,WAAC,CAAC;AACV;AACA,KAAK,EAAEA,WAAC,CAAC;AACT,uIAAuI,EAAEE,cAAI,CAAC,8BAA8B,EAAEA,cAAI,CAAC,iDAAiD,EAAEF,WAAC,CAAC;AACxO;AACA,KAAK,EAAEA,WAAC,CAAC;AACT,SAAS,EAAEA,WAAC,CAAC,sJAAsJ,EAAEA,WAAC,CAAC;AACvK,MAAM,EAAEA,WAAC,CAAC;AACV;AACA,KAAK,EAAEA,WAAC,CAAC,iNAAiN,EAAEA,WAAC,CAAC;AAC9N;AACA,EAAE,EAAEA,WAAC,CAAC,QAAQ;IACd,KAAK;IACL,CAAC,EAAE,kBAAkB,CAAC;;IClsBtB,IAAIR,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAGD;IACA;IACA,IAAI,uBAAuB,GAAG,MAAM,uBAAuB,SAAS,wBAAwB,CAAC;IAC7F,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,EAAE;IACf,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE,EAAE;IACnC,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAOF,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;IACvC,cAAc;IACd,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,oBAAoB;IAClC,CAAC,EAAE,uBAAuB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;IACvD,uBAAuB,GAAGtB,YAAU,CAAC;IACrC,IAAIgB,uBAAa,CAAC,EAAE,OAAO,EAAER,WAAC,GAAG,eAAe,EAAE,QAAQ,EAAE,yBAAyB,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe,EAAE;IACzH,CAAC,EAAE,uBAAuB,CAAC;;IC1B3B,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAGD;IACA,MAAM,qBAAqB,GAAGF,eAAK,CAAC,qBAAqB,EAAE;IAC3D;IACO,IAAI,YAAY;IACvB,CAAC,UAAU,YAAY,EAAE;IACzB,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO;IACnC,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,QAAQ;IACrC,IAAI,YAAY,CAAC,SAAS,CAAC,GAAG,SAAS;IACvC,CAAC,EAAE,YAAY,KAAK,YAAY,GAAG,EAAE,CAAC,CAAC;IACvC,MAAM,oBAAoB,SAASkC,uBAAa,CAAC;IACjD,IAAI,WAAW,CAAC,MAAM,EAAE;IACxB,QAAQ,KAAK,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,CAAC;IAC5C,IAAI;IACJ;IACA;IACA,IAAI,oBAAoB,GAAG,MAAM,oBAAoB,SAAS,gBAAgB,CAAC;IAC/E,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3B,QAAQ,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,KAAK;IACvC,YAAY,IAAI,CAAC,YAAY,EAAE;IAC/B,QAAQ,CAAC;IACT;IACA,QAAQ,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK;IACtC,kBAAkB,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,MAAM,GAAG,CAAC;IACvE;IACA,QAAQ,IAAI,CAAC,UAAU,GAAG,CAAC;IAC3B,QAAQ,IAAI,CAAC,kBAAkB,GAAG,KAAK;IACvC,QAAQ,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,KAAK;IAC5C,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ;IACvC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;IACxC,gBAAgBlC,eAAK,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;IAChE,oBAAoBA,eAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;IACrD,wBAAwB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;IAC1C,oBAAoB,CAAC,CAAC;IACtB,gBAAgB,CAAC,CAAC;IAClB,YAAY;IACZ,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC,KAAK;IAC/C,YAAYU,sBAAY,CAAC,CAAC,CAAC;IAC3B,YAAY,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,MAAM;IAC3C,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,KAAK;IAC1C,YAAYA,sBAAY,CAAC,CAAC,CAAC;IAC3B,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IACjC,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,KAAK;IACzC,YAAYA,sBAAY,CAAC,CAAC,CAAC;IAC3B,YAAY,IAAI,CAAC,UAAU,GAAG,CAAC;IAC/B,YAAY,IAAI,CAAC,QAAQ,EAAE;IAC3B,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,KAAK;IACzC,YAAYA,sBAAY,CAAC,CAAC,CAAC;IAC3B,YAAY,IAAI,CAAC,UAAU,GAAG,CAAC;IAC/B,YAAY,IAAI,CAAC,QAAQ,EAAE;IAC3B,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,KAAK;IAC7C,YAAYA,sBAAY,CAAC,CAAC,CAAC;IAC3B,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtE,QAAQ,CAAC;IACT,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAO,EAAE;IACjB,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC;IACA,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK;IAC3C,YAAY,IAAIW,0BAAgB,CAAC,YAAY,CAAC,GAAG,EAAE,oBAAoB,CAAC,EAAE;IAC1E,gBAAgB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;IACvD,gBAAgB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK;IAC9C,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;IAC9B,IAAI;IACJ,IAAI,YAAY,CAAC,KAAK,EAAE;IACxB,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ,IAAI,+BAA+B,CAAC,IAAI,EAAE;IAC1C,QAAQ,OAAOb,4BAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;IAC5D,IAAI;IACJ,IAAI,IAAI,aAAa,GAAG;IACxB,QAAQ,OAAO,IAAI,CAAC,aAAa,IAAI,qBAAqB,CAAC,CAAC,CAAC;IAC7D,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,MAAM;IACvB,gBAAgB,QAAQ,GAAG;IAC3B,oBAAoB,KAAK,YAAY,CAAC,KAAK;IAC3C,wBAAwB,IAAI,CAAC,OAAO,GAAG,IAAI;IAC3C,wBAAwB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ;IACnD;IACA,wBAAwB,KAAK,CAAC,KAAK,GAAG,EAAE;IACxC,wBAAwB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;IAClE,4BAA4B,KAAK,CAAC,IAAI,GAAG,EAAE;IAC3C,4BAA4B,KAAK,CAAC,IAAI,GAAG,MAAM;IAC/C,wBAAwB;IACxB,wBAAwB;IACxB,oBAAoB,KAAK,YAAY,CAAC,MAAM;IAC5C,wBAAwB,IAAI,CAAC,oBAAoB,EAAE;IACnD,wBAAwB;IACxB;IACA,gBAAgB;IAChB,YAAY,KAAK,SAAS;IAC1B,gBAAgB,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;IACpD,gBAAgB;IAChB,YAAY,KAAK,OAAO;IACxB,YAAY,KAAK,QAAQ;IACzB,gBAAgB,IAAI,CAAC,SAAS,EAAE;IAChC,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,SAAS,EAAE;IACxB,QAAQ,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;IAC/E,QAAQ,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,KAAK,CAAC;IACzF,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC;IAC7E,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC;IAC7E,QAAQ,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC;IACrF,QAAQ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC;IACnF,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;IAC1B,YAAY,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;IACtF,YAAY,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,KAAK,CAAC;IAChG,YAAY,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC;IACpF,YAAY,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC;IACpF,YAAY,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC;IAC5F,YAAY,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC;IAC1F,QAAQ;IACR,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ,IAAI,SAAS,GAAG;IAChB,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO;IACxD,QAAQ,IAAI,CAACR,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;IAC3D,YAAY,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE;IAC5F,gBAAgB,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,EAAE;IACpG,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC;IACzD,QAAQ;IACR,IAAI;IACJ,IAAI,QAAQ,CAAC,EAAE,EAAE;IACjB,QAAQ,MAAM,EAAE,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM;IACnE,QAAQ,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI;IACrC,QAAQ,IAAIA,eAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;IAC9B,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO;IAC3B,QAAQ;IACR,QAAQ,IAAI,QAAQ,EAAE,SAAS;IAC/B,QAAQ,IAAI,EAAE,YAAY,gBAAgB,EAAE;IAC5C,YAAY,QAAQ,GAAG,EAAE,CAAC,UAAU;IACpC,YAAY,SAAS,GAAG,EAAE,CAAC,WAAW;IACtC,QAAQ;IACR,aAAa;IACb,YAAY,QAAQ,GAAG,EAAE,CAAC,YAAY;IACtC,YAAY,SAAS,GAAG,EAAE,CAAC,aAAa;IACxC,QAAQ;IACR,QAAQ,IAAI,EAAE,CAAC,UAAU,IAAI,CAAC,EAAE;IAChC,YAAY,IAAI,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;IACtD,YAAY,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,WAAW;IACxD,YAAY,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY;IAC3D,YAAY,IAAI,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;IAC1C,YAAYA,eAAK,CAAC,mBAAmB,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC;IACnE,YAAY,IAAI,IAAI,GAAG,EAAE,CAAC,KAAK;IAC/B,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;IACzC,YAAY,GAAG,CAAC,SAAS,GAAG,oBAAoB;IAChD,YAAY,UAAU,CAAC,YAAY;IACnC,gBAAgB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IACrC,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,YAAY,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;IAC3D,gBAAgB,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACvC,gBAAgB,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK;IAC9C,YAAY,CAAC,CAAC;IACd,QAAQ;IACR;IACA,YAAY,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IACzE,IAAI;IACJ,IAAI,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;IACnC,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM;IAC7B,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;IAChC,YAAY,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW;IACvC,YAAY,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,YAAY;IACzC,YAAY,IAAI,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;IAC1C,YAAY,IAAIA,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;IAC1C,gBAAgB,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC;IAC1D,YAAY;IACZ,iBAAiB;IACjB,gBAAgBA,eAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;IACjD,oBAAoBA,eAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC;IAC9E,gBAAgB,CAAC,CAAC;IAClB,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,iBAAiB,CAAC,MAAM,EAAE;IAC9B,QAAQ,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,OAAO;IACxC,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;IAC7B,IAAI;IACJ,IAAI,cAAc,CAAC,MAAM,EAAE;IAC3B,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM;IAC7B,QAAQ,GAAG,CAAC,KAAK,qBAAqB,GAAG,CAAC,WAAW;IACrD,QAAQ,GAAG,CAAC,MAAM,sBAAsB,GAAG,CAAC,YAAY;IACxD,QAAQ,IAAI,OAAO;IACnB,QAAQ,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE;IAC9B,YAAY,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5D,QAAQ;IACR,QAAQ,OAAOA,eAAK,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IACtE,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;IAC5D,YAAY,IAAI,EAAE,GAAG,IAAI;IACzB,YAAY,EAAE,CAAC,kBAAkB,GAAG,IAAI;IACxC,YAAY,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,qBAAqB;IACjF,8BAA8B,UAAU,gBAAgB,EAAE;IAC1D,oBAAoB,IAAI,KAAK,GAAG,EAAE,CAAC,OAAO;IAC1C;IACA;IACA;IACA,oBAAoB,KAAK,CAAC,SAAS,GAAG,gBAAgB;IACtD,gBAAgB,CAAC,aAAa,UAAU,CAAC,EAAE;IAC3C,oBAAoB,EAAE,CAAC,GAAG,CAACe,iBAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC/E,gBAAgB,CAAC,CAAC,CAAC;IACnB,QAAQ;IACR,IAAI;IACJ,CAAC;AACDd,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,GAAG,GAAGZ,cAAI,GAAG,WAAW;IACtC,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AACnDV,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,QAAQ;IACtB,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACpDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,kBAAkB;IAChC,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACtDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,OAAO;IACrB,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AACrDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,gCAAgC;IAClD,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AACrDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,gCAAgC;IAClD,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AAC1DR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,8BAA8B;IAChD,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACpDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,iCAAiC;IACnD,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACpDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,iCAAiC;IACnD,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AACxDR,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAClDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AACnDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACpDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AACrDP,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AACxDN,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;IACzB,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;IACrD,oBAAoB,GAAGN,YAAU,CAAC;IAClC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,WAAW;IAChC,QAAQ,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IACxC,QAAQ,QAAQ,EAAE,CAAC,CAAC,EAAEX,WAAC,CAAC,cAAc,EAAEE,cAAI,CAAC;AAC7C;AACA,kCAAkC,EAAE,YAAY,CAAC,KAAK,CAAC;AACvD,mCAAmC,EAAE,YAAY,CAAC,MAAM,CAAC;AACzD,oCAAoC,EAAE,YAAY,CAAC,OAAO,CAAC;AAC3D;AACA,KAAK,EAAEF,WAAC,CAAC,2EAA2E,EAAEA,WAAC,CAAC;AACxF;AACA,mBAAmB,EAAEE,cAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA,gBAAgB,EAAEA,cAAI,CAAC;AACvB;AACA,aAAa,EAAEF,WAAC,CAAC,6DAA6D,EAAEA,WAAC,CAAC;AAClF,aAAa,EAAEA,WAAC,CAAC,mEAAmE,EAAEA,WAAC,CAAC;AACxF;AACA;AACA;AACA,gBAAgB,EAAEE,cAAI,CAAC;AACvB;AACA,aAAa,EAAEF,WAAC,CAAC,+EAA+E,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK,EAAEA,WAAC,CAAC;AAC9H,aAAa,EAAEA,WAAC,CAAC,2DAA2D,EAAEA,WAAC,CAAC;AAChF,aAAa,EAAEA,WAAC,CAAC,+DAA+D,EAAEA,WAAC,CAAC;AACpF;AACA;AACA;AACA,gBAAgB,EAAEE,cAAI,CAAC;AACvB;AACA,aAAa,EAAEF,WAAC,CAAC,+EAA+E,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK,EAAEA,WAAC,CAAC;AAC9H,aAAa,EAAEA,WAAC,CAAC,4DAA4D,EAAEA,WAAC,CAAC;AACjF;AACA;AACA;AACA,KAAK,EAAEA,WAAC,CAAC,wFAAwF,EAAE,YAAY,CAAC,MAAM,CAAC,mCAAmC,EAAEA,WAAC,CAAC;AAC9J,KAAK,EAAEA,WAAC,CAAC,wCAAwC,EAAEA,WAAC,CAAC,WAAW,EAAEA,WAAC,CAAC,WAAW,EAAEA,WAAC,CAAC;AACnF;AACA,EAAE,EAAEA,WAAC,CAAC,OAAO;IACb,KAAK;IACL,CAAC,EAAE,oBAAoB,CAAC;;ICvUxB,IAAIR,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAMD;IACA;IACO,MAAM,OAAO,CAAC;IACrB;IACA;IACO,MAAM,0BAA0B,GAAG,mBAAmB;IAC7D;IACO,MAAM,sBAAsB,SAASJ,0BAAgB,CAAC;IAC7D,IAAI,WAAW,CAAC,IAAI,EAAE;IACtB,QAAQ,KAAK,CAAC,0BAA0B,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,uBAAuB,CAAC;IACvF,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,qBAAqB,GAAG,MAAM,qBAAqB,SAASO,oBAAU,CAAC,YAAY,CAAC;IACxF,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3B,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC;IACvB;IACA,QAAQ,IAAI,CAAC,IAAI,GAAG,EAAE;IACtB,IAAI;IACJ,IAAI,gCAAgC,CAAC,GAAG,EAAE;IAC1C,QAAQ,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY;IAC3C,QAAQ,QAAQ,GAAG,CAAC,MAAM,CAAC,YAAY;IACvC,YAAY,KAAK,YAAY;IAC7B,gBAAgB,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,GAAG,GAAG,KAAK;IAC1D,gBAAgB;IAChB,YAAY,KAAK,WAAW;IAC5B,gBAAgB,IAAI,GAAG;IACvB,oBAAoB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACpC,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,yCAAyC,CAAC,GAAG,EAAE;IACnD,QAAQ,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY;IAC3C,QAAQ,QAAQ,GAAG,CAAC,MAAM,CAAC,YAAY;IACvC,YAAY,KAAK,YAAY;IAC7B,gBAAgB,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,GAAG,GAAG,KAAK;IAC1D,gBAAgB;IAChB,YAAY,KAAK,WAAW;IAC5B,gBAAgB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IAC/B,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,2BAA2B,CAAC,GAAG,EAAE;IACrC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;IACvC,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,aAAa,CAAC,aAAa,EAAE,CAAC,GAAG,aAAa,CAAC,cAAc;IACpH,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAC5B,YAAY,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI;IACpC,YAAY,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG;IACtC,YAAYL,eAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI;IACxD,gBAAgB,IAAI,KAAK,IAAI,IAAI,EAAE;IACnC,oBAAoB,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,CAAC;IACrE,oBAAoB;IACpB,gBAAgB;IAChB;IACA;IACA,oBAAoB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IACrC,YAAY,CAAC,CAAC;IACd,QAAQ;IACR;IACA;IACA,YAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC7B,IAAI;IACJ,IAAI,KAAK,CAAC,SAAS,EAAE;IACrB,QAAQ,IAAI,CAAC,SAAS,EAAE;IACxB,YAAY,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC/B,QAAQ;IACR,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS;IACzC,QAAQ,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,SAAS;IAC7C,IAAI;IACJ,IAAI,gCAAgC,CAAC,GAAG,EAAE;IAC1C,QAAQ,QAAQ,GAAG,CAAC,MAAM,CAAC,YAAY;IACvC,YAAY,KAAK,OAAO;IACxB,gBAAgB,MAAM,IAAI,GAAGA,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;IACzE,gBAAgB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC;IAC3D,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,KAAK,GAAG;IACZ,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK;IAChD,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,UAAU;IAC3B,gBAAgB,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;IACrD,gBAAgB,IAAIA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;IACvE,oBAAoB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG;IAC1C,qBAAqB,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;IACpD,oBAAoB,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1H,gBAAgB,IAAI,CAAC,SAAS,GAAG,KAAK;IACtC,gBAAgB;IAChB,YAAY,KAAK,MAAM;IACvB,gBAAgB,IAAI,CAAC,KAAK;IAC1B,oBAAoB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACvC,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,mBAAmB,CAAC,GAAG,EAAE;IAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI;IAC7B,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IAC7B,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IACvB,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;IAC5D,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,sBAAsB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAChG,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACxDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AACnDP,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACvDN,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AACpDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACvDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACxDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,mBAAmB,EAAE,MAAM,CAAC;AAChEP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,oBAAoB,EAAE,MAAM,CAAC;AACjEP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC;AAC5DP,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACxDN,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AACtDN,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,WAAW;IAC7B,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACxDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,eAAe;IACjC,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACxDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,gBAAgB;IAClC,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,CAAC;AAC7DR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,WAAW;IAC7B,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACxDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,cAAc;IAChC,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AAC3DR,gBAAU,CAAC;IACX,IAAIe,kBAAQ,CAAC,GAAG;IAChB,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC;IACxD,qBAAqB,GAAGf,YAAU,CAAC;IACnC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,aAAa,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IACpE,QAAQ,QAAQ,EAAE,CAAC,CAAC,EAAEX,WAAC,CAAC,cAAc,EAAEE,cAAI,CAAC;AAC7C,wBAAwB,EAAEA,cAAI,CAAC,iCAAiC,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,EAAEA,cAAI,CAAC,qCAAqC,EAAEA,cAAI,CAAC,gEAAgE,EAAEA,cAAI,CAAC;AACnN;AACA,aAAa,EAAEF,WAAC,CAAC,iDAAiD,EAAEA,WAAC,CAAC;AACtE,aAAa,EAAEA,WAAC,CAAC;AACjB;AACA,uBAAuB,EAAE,mBAAmB,CAAC;AAC7C,uBAAuB,EAAEK,iCAAuB,CAAC,0IAA0I,EAAEL,WAAC,CAAC;AAC/L,aAAa,EAAEA,WAAC,CAAC;AACjB;AACA,uBAAuB,EAAEK,iCAAuB,CAAC,6DAA6D,EAAEL,WAAC,CAAC;AAClH,aAAa,EAAEA,WAAC,CAAC,eAAe,EAAEE,cAAI,CAAC,qEAAqE,EAAE,YAAY,CAAC,MAAM,CAAC,qFAAqF,EAAEF,WAAC,CAAC;AAC3N,aAAa,EAAEA,WAAC,CAAC,iMAAiM,EAAEA,WAAC,CAAC;AACtN,aAAa,EAAEA,WAAC,CAAC;AACjB;AACA,qBAAqB,EAAEA,WAAC,CAAC,qBAAqB,EAAEE,cAAI,CAAC,yHAAyH,EAAEF,WAAC,CAAC;AAClL;AACA,cAAc,EAAEA,WAAC,CAAC;AAClB,aAAa,EAAEA,WAAC,CAAC,2IAA2I,EAAEA,WAAC,CAAC;AAChK;AACA;AACA,aAAa,EAAEA,WAAC,CAAC,+CAA+C,EAAEK,iCAAuB,CAAC,oDAAoD,EAAEL,WAAC,CAAC;AAClJ;AACA,MAAM,EAAEA,WAAC,CAAC,OAAO;IACjB,KAAK;IACL,CAAC,EAAE,qBAAqB,CAAC;IAEzB;IACA;IACA;IACA;IACA,IAAI,sBAAsB,GAAG,MAAM,sBAAsB,SAAS,gBAAgB,CAAC;IACnF,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3B,QAAQ,IAAI,CAAC,+BAA+B,GAAG,CAAC,GAAG,KAAK;IACxD,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtE,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,yBAAyB,GAAG,CAAC,GAAG,KAAK;IAClD,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,OAAO,IAAI,CAACT,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;IAClF,gBAAgB,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY;IAC5D,QAAQ,CAAC;IACT;IACA,IAAI;IACJ,IAAI,+BAA+B,CAAC,IAAI,EAAE;IAC1C,QAAQ,OAAO,IAAI,CAAC;IACpB,IAAI;IACJ,IAAI,YAAY,CAAC,KAAK,EAAE;IACxB,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAO,EAAE;IACjB,IAAI;IACJ,IAAI,MAAM,CAAC,GAAG,EAAE;IAChB,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;IAC/B,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK;IAC9B,QAAQ,IAAIqB,0BAAgB,CAAC,YAAY,CAAC,GAAG,EAAEI,kBAAY,CAAC,EAAE,CAAC,iBAAiB;IAChF,eAAe,GAAG,CAAC,MAAM,CAAC,MAAM,KAAKA,kBAAY,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE;IACpE,YAAY,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK;IACjD,aAAa,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;IAC3C,YAAY,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;IAClD,aAAa,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS;IAC9C,YAAY,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS;IAC1C,QAAQ,OAAOzB,eAAK,CAAC,UAAU,CAAC,KAAK,CAAC;IACtC,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,QAAQ;IAChF,IAAI;IACJ,IAAI,UAAU,GAAG;IACjB,QAAQ,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAACS,WAAC,GAAG,SAAS,CAAC;IAC1D,QAAQ,MAAM,CAAC,OAAO,GAAGgB,kBAAY,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ;IAC/D,QAAQ,MAAM,CAAC,gBAAgB,CAACA,kBAAY,CAAC,EAAE,CAAC,qBAAqB,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IACjG,QAAQ,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IAChD,QAAQ,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IACzC;IACA,QAAQ,OAAO,IAAI,CAAC,OAAO,GAAG,MAAM;IACpC,IAAI;IACJ,IAAI,aAAa,GAAG;IACpB,QAAQ,IAAI,CAAC,gBAAgB,EAAE;IAC/B,QAAQ,IAAI,CAACzB,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;IACzC,YAAY,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAACyB,kBAAY,CAAC,EAAE,CAAC,qBAAqB,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IAC9G,YAAY,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;IACjC,QAAQ;IACR,IAAI;IACJ,IAAI,aAAa,GAAG;IACpB,QAAQ,IAAI,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAChB,WAAC,GAAG,aAAa,CAAC;IACjE,QAAQ,SAAS,CAAC,QAAQ,GAAG,IAAI;IACjC,QAAQ,SAAS,CAAC,gBAAgB,CAACK,iCAAuB,EAAE,IAAI,CAAC,yBAAyB,EAAE,KAAK,CAAC;IAClG,QAAQ,SAAS,CAAC,gBAAgB,CAAC,0BAA0B,EAAE,IAAI,CAAC,+BAA+B,EAAE,KAAK,CAAC;IAC3G,QAAQ,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;IAC5C,QAAQ,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;IACpD,QAAQ,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;IAC1C,QAAQ,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;IAC5C,QAAQ,SAAS,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;IAC9D,QAAQ,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;IAC5D,QAAQ,OAAO,IAAI,CAAC,UAAU,GAAG,SAAS;IAC1C,IAAI;IACJ,IAAI,gBAAgB,GAAG;IACvB,QAAQ,IAAI,CAACd,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;IAC5C,YAAY,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAACc,iCAAuB,EAAE,IAAI,CAAC,yBAAyB,EAAE,KAAK,CAAC;IAC/G,YAAY,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,IAAI,CAAC,+BAA+B,EAAE,KAAK,CAAC;IACxH,QAAQ;IACR,IAAI;IACJ,IAAI,iBAAiB,GAAG;IACxB,QAAQ,KAAK,CAAC,iBAAiB,EAAE;IACjC,QAAQ,IAAI,CAAC,UAAU,EAAE;IACzB,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,IAAI,CAAC,aAAa,EAAE;IAC5B,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,WAAW;IAC5B,gBAAgB,IAAI,CAACd,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;IAClD,oBAAoB,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,GAAG;IACnD,gBAAgB;IAChB,YAAY,KAAK,eAAe;IAChC,gBAAgB,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;IAClD,oBAAoB,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,GAAG;IACvD,gBAAgB;IAChB,YAAY,KAAK,UAAU;IAC3B,gBAAgB,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;IAClD,oBAAoB,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,GAAG;IAClD,gBAAgB;IAChB,YAAY,KAAK,oBAAoB;IACrC,gBAAgB,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;IAClD,oBAAoB,IAAI,CAAC,UAAU,CAAC,kBAAkB,GAAG,GAAG;IAC5D,gBAAgB;IAChB,YAAY,KAAK,mBAAmB;IACpC,gBAAgB,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;IAClD,oBAAoB,IAAI,CAAC,UAAU,CAAC,iBAAiB,GAAG,GAAG;IAC3D,gBAAgB;IAChB,YAAY,KAAK,WAAW;IAC5B,gBAAgB,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;IAClD,oBAAoB,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,GAAG;IACnD,gBAAgB;IAChB,YAAY,KAAK,UAAU;IAC3B,gBAAgB,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;IAClD,oBAAoB,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,GAAG;IAClD,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;IAC1C,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG;IACvC,IAAI;IACJ,IAAI,OAAO,CAAC,GAAG,EAAE;IACjB,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG;IAC7B,IAAI;IACJ,IAAI,SAAS,GAAG;IAChB,QAAQ,OAAO,IAAI,CAAC,KAAK;IACzB,IAAI;IACJ,IAAI,KAAK,CAAC,GAAG,EAAE;IACf,QAAQU,sBAAY,CAAC,GAAG,CAAC;IACzB,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK;IAC3D,QAAQ,SAAS,CAAC,QAAQ,GAAG,KAAK;IAClC,QAAQ,SAAS,CAAC,KAAK,EAAE;IACzB,QAAQ,SAAS,CAAC,KAAK,GAAG,KAAK;IAC/B,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI;IAC9C,YAAY,QAAQ,IAAI,CAAC,MAAM;IAC/B,gBAAgB,KAAKe,kBAAY,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM;IACxD;IACA,oBAAoB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5C,oBAAoB;IACpB,gBAAgB,KAAKA,kBAAY,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE;IACpD;IACA,oBAAoB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5C,oBAAoB;IACpB;IACA,YAAY,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI;IAC3C,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,CAAC;AACDxB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,MAAM;IACxB,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACtDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,UAAU,GAAGE,cAAI,GAAG,OAAO;IAC7C,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACxDV,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,UAAU,GAAGE,cAAI,GAAG,QAAQ;IAC9C,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACzDV,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,YAAY;IAC9B,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACtDR,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACzDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAC7D,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACxDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACxDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACzDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,mBAAmB,EAAE,MAAM,CAAC;AACjEP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,oBAAoB,EAAE,MAAM,CAAC;AAClEP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IAChE,CAAC,EAAE,sBAAsB,CAAC,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC;IAC7D,sBAAsB,GAAGP,YAAU,CAAC;IACpC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,cAAc,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IACrE,QAAQ,QAAQ,EAAE,CAAC,YAAY,EAAET,cAAI,CAAC,eAAe,EAAEF,WAAC,CAAC,+CAA+C,EAAEA,WAAC,CAAC,iBAAiB,EAAEE,cAAI,CAAC;AACpI,KAAK,EAAEF,WAAC,CAAC,0EAA0E,EAAEE,cAAI,CAAC,aAAa,EAAEF,WAAC,CAAC;AAC3G,KAAK,EAAEA,WAAC,CAAC,2EAA2E,EAAEE,cAAI,CAAC,eAAe,EAAEF,WAAC,CAAC;AAC9G,OAAO,EAAEA,WAAC,CAAC,qHAAqH,EAAEA,WAAC,CAAC;AACpI;AACA,KAAK,EAAEA,WAAC,CAAC;AACT,eAAe,EAAEE,cAAI,CAAC;AACtB,iCAAiC,EAAEF,WAAC,CAAC,oEAAoE,EAAEA,WAAC,CAAC;AAC7G,2BAA2B,EAAEA,WAAC,CAAC,uDAAuD,EAAEA,WAAC,CAAC;AAC1F,WAAW,EAAEA,WAAC,CAAC;AACf;AACA,MAAM;IACN,KAAK;IACL,CAAC,EAAE,sBAAsB,CAAC;;ICjZ1B,IAAIR,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAGD;IACA;IACA,IAAI,uBAAuB,GAAG,MAAM,uBAAuB,SAAS,wBAAwB,CAAC;IAC7F,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,QAAQ;IACrC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ;IACrC,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAOF,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;IACvC,cAAc;IACd,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI;IACJ,IAAI,YAAY,CAAC,GAAG,EAAE;IACtB,QAAQ,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,SAAS;IACxE,IAAI;IACJ,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;IAC5B,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM;IAChC,QAAQ,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;IACxC,YAAY,OAAO,IAAI,IAAI,CAAC,YAAY,CAACA,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,QAAQ;IACR,QAAQ,OAAO,CAAC,CAAC,QAAQ,EAAE;IAC3B,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB;IACA,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IACpF,QAAQ,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC;IACvC,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;IACxD,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;IACxE,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IACxC,YAAY,IAAI,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;IAC5D,YAAY,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;IAC/E,QAAQ;IACR,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,oBAAoB;IAClC,CAAC,EAAE,uBAAuB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACvDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,KAAK,EAAEZ,cAAI,CAAC,SAAS,CAAC;IACrC,CAAC,EAAE,uBAAuB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AACtDV,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAC7D,CAAC,EAAE,uBAAuB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;IACvD,uBAAuB,GAAGP,YAAU,CAAC;IACrC,IAAIgB,uBAAa,CAAC,EAAE,OAAO,EAAER,WAAC,GAAG,eAAe,EAAE,QAAQ,EAAE,CAAC,4BAA4B,EAAEE,cAAI,CAAC,OAAO,EAAEA,cAAI,CAAC,4BAA4B,EAAEA,cAAI,CAAC,YAAY,EAAEF,WAAC,CAAC,qCAAqC,EAAEA,WAAC,CAAC,aAAa,CAAC,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe,EAAE;IAC5P,CAAC,EAAE,uBAAuB,CAAC;;IC3D3B,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACA;IACA,IAAI,yBAAyB,GAAG,MAAM,yBAAyB,SAAS,wBAAwB,CAAC;IACjG,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,EAAE;IACf,QAAQ,IAAI,CAAC,wBAAwB,GAAG,CAAC,GAAG,KAAK;IACjD,YAAY,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;IACjC,gBAAgBQ,sBAAY,CAAC,GAAG,CAAC;IACjC,gBAAgB,IAAI,CAAC,gBAAgB,EAAE;IACvC,YAAY;IACZ,QAAQ,CAAC;IACT,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAOV,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;IACvC,cAAc;IACd,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,GAAGA,eAAK,CAAC,UAAU,EAAE;IAC1D,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,OAAO;IACzD,QAAQ,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;IAC5D,QAAQ,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;IACpD,QAAQ,IAAI,CAAC,YAAY,EAAE;IAC3B,QAAQ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,wBAAwB,EAAE,KAAK,CAAC;IACzF,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;IAC1C,YAAY,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,wBAAwB,EAAE,KAAK,CAAC;IAChG,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,gBAAgB,GAAG;IACvB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;IACxC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,KAAK,UAAU,GAAG,MAAM,GAAG,UAAU;IACvE,QAAQ,IAAI,CAAC,YAAY,EAAE;IAC3B,IAAI;IACJ,IAAI,YAAY,GAAG;IACnB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU;IACzD,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,SAAS,GAAG,gBAAgB,GAAG,YAAY;IAC7E,QAAQ,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;IAC5E,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,QAAQ;IAC5D,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,QAAQ;IACrC,IAAI;IACJ,IAAI,YAAY,CAAC,GAAG,EAAE;IACtB,QAAQ,OAAOA,eAAK,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC;IACxE,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,sBAAsB;IACpC,CAAC,EAAE,yBAAyB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACzDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,KAAK,EAAEZ,cAAI,CAAC,SAAS,CAAC;IACrC,CAAC,EAAE,yBAAyB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AACxDV,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,EAAE,EAAEZ,cAAI,CAAC,MAAM,EAAEA,cAAI,CAAC,UAAU,CAAC;IAChD,CAAC,EAAE,yBAAyB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;IAC3D,yBAAyB,GAAGV,YAAU,CAAC;IACvC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,iBAAiB,EAAE,QAAQ,EAAE,CAAC,8BAA8B,EAAEE,cAAI,CAAC,OAAO,EAAEA,cAAI,CAAC,yBAAyB,EAAEA,cAAI,CAAC,MAAM,EAAEA,cAAI,CAAC;AACnJ,EAAE,kBAAkB,CAAC,aAAa,EAAEA,cAAI,CAAC,YAAY,EAAEF,WAAC,CAAC,qCAAqC,EAAEA,WAAC,CAAC,aAAa,CAAC,EAAE,MAAM,EAAEW,kBAAQ,CAAC;IACnI,KAAK;IACL,CAAC,EAAE,yBAAyB,CAAC;;ICzE7B,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAGD;IACA;IACA,IAAI,uBAAuB,GAAG,MAAM,uBAAuB,SAAS,wBAAwB,CAAC;IAC7F,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,EAAE;IACf,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAOF,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;IACvC,cAAc;IACd,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC;IACA,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,oBAAoB;IAClC,CAAC,EAAE,uBAAuB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;IACvD,uBAAuB,GAAGtB,YAAU,CAAC;IACrC,IAAIgB,uBAAa,CAAC,EAAE,OAAO,EAAER,WAAC,GAAG,eAAe,EAAE,QAAQ,EAAE,8BAA8B,GAAGE,cAAI,GAAG,YAAY,EAAE,MAAM,EAAES,kBAAQ,CAAC,eAAe,EAAE;IACpJ,CAAC,EAAE,uBAAuB,CAAC;;IC5B3B,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAGD;IACA;IACA,IAAI,oBAAoB,GAAG,MAAM,oBAAoB,SAAS,wBAAwB,CAAC;IACvF,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,EAAE;IACf,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,OAAO;IACxD,QAAQ,IAAI,CAACF,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IAChC,YAAY,KAAK,CAAC,MAAM,GAAG,QAAQ;IACnC,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACjC,YAAY,MAAM,CAAC,MAAM,GAAG,CAAC,QAAQ;IACrC,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAOA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;IACvC,cAAc;IACd,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,iBAAiB;IAC/B,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACpDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,IAAI;IACtB,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;IACrD,oBAAoB,GAAGR,YAAU,CAAC;IAClC,IAAIgB,uBAAa,CAAC,EAAE,OAAO,EAAER,WAAC,GAAG,YAAY,EAAE,QAAQ,EAAE,CAAC,yBAAyB,EAAEE,cAAI,CAAC,WAAW,EAAEF,WAAC,CAAC,UAAU,EAAEE,cAAI,CAAC,gGAAgG,EAAEF,WAAC,CAAC,qCAAqC,EAAEA,WAAC,CAAC,QAAQ,EAAEA,WAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe,EAAE;IAC3T,CAAC,EAAE,oBAAoB,CAAC;;ICnCxB,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACA;IACA,IAAI,qBAAqB,GAAG,MAAM,qBAAqB,SAAS,wBAAwB,CAAC;IACzF,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,EAAE;IACf,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,QAAQ;IACrC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ;IACrC,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAOF,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;IACvC,cAAc;IACd,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,kBAAkB;IAChC,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACrDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,OAAO,GAAGZ,cAAI,GAAG,WAAW;IAC1C,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;IACpD,qBAAqB,GAAGV,YAAU,CAAC;IACnC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,aAAa;IAClC,QAAQ,QAAQ,EAAE,CAAC,0BAA0B,EAAEE,cAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,aAAa,EAAEA,cAAI,CAAC,YAAY,EAAEF,WAAC,CAAC,qCAAqC,EAAEA,WAAC,CAAC,aAAa,CAAC;IAC9K,QAAQ,MAAM,EAAEW,kBAAQ,CAAC;IACzB,KAAK;IACL,CAAC,EAAE,qBAAqB,CAAC;;ICrCzB,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACA;IACA,IAAI,oBAAoB,GAAG,MAAM,oBAAoB,SAAS,wBAAwB,CAAC;IACvF,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,EAAE;IACf,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,OAAO;IACxD,QAAQ,IAAI,CAACF,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IAChC,YAAY,KAAK,CAAC,MAAM,GAAG,QAAQ;IACnC,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACjC,YAAY,MAAM,CAAC,MAAM,GAAG,CAAC,QAAQ;IACrC,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAOA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;IACvC,cAAc;IACd,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,iBAAiB;IAC/B,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACpDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,IAAI;IACtB,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;IACrD,oBAAoB,GAAGR,YAAU,CAAC;IAClC,IAAIgB,uBAAa,CAAC,EAAE,OAAO,EAAER,WAAC,GAAG,YAAY,EAAE,QAAQ,EAAE,CAAC,yBAAyB,EAAEE,cAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC,EAAEF,WAAC,CAAC,UAAU,EAAEE,cAAI,CAAC,wGAAwG,EAAEF,WAAC,CAAC,qCAAqC,EAAEA,WAAC,CAAC,QAAQ,EAAEA,WAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe,EAAE;IACxV,CAAC,EAAE,oBAAoB,CAAC;;ICpCxB,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACA;IACO,MAAM,aAAa,GAAG,EAAE;IAC/B;IACO,MAAM,mBAAmB,GAAG,EAAE;IACrC;IACA;IACA,MAAM,mBAAmB,GAAG,6CAA6C;IACzE;IACA,IAAI,kBAAkB,GAAG,MAAM,kBAAkB,SAAS,gBAAgB,CAAC;IAC3E,IAAI,+BAA+B,CAAC,IAAI,EAAE;IAC1C,QAAQ,MAAM,UAAU,GAAG,kDAAkD,CAAC,IAAI,CAAC,IAAI,CAAC;IACxF,QAAQ,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;IACnD,YAAY,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;IACrF,QAAQ;IACR,QAAQ,MAAM,CAAC,gCAAgC,EAAE,IAAI,CAAC,CAAC,CAAC;IACxD,IAAI;IACJ,IAAI,0BAA0B,CAAC,GAAG,EAAE,GAAG,EAAE;IACzC,QAAQ,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK;IACrE,eAAe,GAAG,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE;IAClF,YAAY,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG;IAC7D,QAAQ;IACR,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ,IAAI,YAAY,CAAC,KAAK,EAAE;IACxB,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;IACxC,IAAI;IACJ,IAAI,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,CAAC,EAAE;IACxC,QAAQ,OAAO,KAAK,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE;IACjK,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;IAC/C,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,eAAe,CAAC,MAAM;IACnC;IACA,YAAY,QAAQ;IACpB,IAAI;IACJ;IACA,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;IAC1C,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG;IAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG;IAC7B,IAAI;IACJ,IAAI,YAAY,CAAC,GAAG,EAAE;IACtB,QAAQ,OAAO,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,GAAG4B,oBAAc,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc;IACvI,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;IAC3C,YAAY,IAAI,IAAI,GAAG,GAAG;IAC1B;IACA,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG;IAChD,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG;IAChD,QAAQ,CAAC;IACT,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI;IAC7B,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI;IAC7B,QAAQ,IAAI9B,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAIA,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC;IAClD,YAAY,OAAOA,eAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/C,QAAQ,OAAOA,eAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACpE,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE;IAC1C,YAAY,MAAM,IAAI,GAAGA,eAAK,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;IAClE,YAAY,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;IAC1C,QAAQ;IACR,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,mBAAmB,EAAE;IAClC,IAAI;IACJ,IAAI,mBAAmB,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;IACpE,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI;IACpD,QAAQ,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;IAC/B,QAAQ,QAAQ,IAAI,IAAI,IAAI,CAAC,QAAQ;IACrC,YAAY,KAAK,OAAO;IACxB,gBAAgB,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM;IAChE,gBAAgB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa;IAChD,gBAAgB;IAChB,YAAY,KAAK,QAAQ;IACzB,YAAY,KAAK,OAAO;IACxB,gBAAgB,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;IACxD,gBAAgB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc;IACjD,gBAAgB;IAChB,YAAY;IACZ,gBAAgB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;IAC5D,oBAAoB,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;IACvE,gBAAgB;IAChB,gBAAgB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IACtD,oBAAoB,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;IAC3D,gBAAgB;IAChB,gBAAgB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe;IAClD,gBAAgB;IAChB;IACA,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC;IAC/B,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC;IAC3B,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC;IAC7B,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC;IAClC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC;IAC5B,QAAQ,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;IAC/B,YAAY,IAAI,IAAI,IAAI,GAAG,EAAE;IAC7B,gBAAgB,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IACtC,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,sBAAsB;IACxC,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,EAAE,MAAM,CAAC;AAC3DR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,oBAAoB;IACtC,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC;AACzDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,qBAAqB;IACvC,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,CAAC;AAC1DR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,MAAM;IACxB,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAChDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,aAAa;IAC/B,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AACnDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,4BAA4B;IAC9C,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACrDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,4BAA4B;IAC9C,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACrDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,CAAC,EAAEZ,cAAI,CAAC,cAAc,CAAC;IACtC,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,EAAE,MAAM,CAAC;AAC3DV,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,QAAQ;IAC1B,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACpDR,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;IAC7D,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AACnDP,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAChDN,gBAAU,CAAC;IACX,IAAIM,eAAK;IACT,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IAChD,kBAAkB,GAAGN,YAAU,CAAC;IAChC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,SAAS,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IAChE,QAAQ,QAAQ,EAAE,CAAC,YAAY,EAAET,cAAI,CAAC;AACtC,gBAAgB,EAAEA,cAAI,CAAC,eAAe,EAAEA,cAAI,CAAC;AAC7C,SAAS,EAAEF,WAAC,CAAC,qBAAqB,EAAEE,cAAI,CAAC,+EAA+E,EAAEF,WAAC,CAAC;AAC5H,SAAS,EAAEA,WAAC,CAAC,qBAAqB,EAAEE,cAAI,CAAC,iFAAiF,EAAEF,WAAC,CAAC;AAC9H;AACA,KAAK,EAAEA,WAAC,CAAC;AACT,eAAe,EAAEE,cAAI,CAAC;AACtB,+BAA+B,EAAEF,WAAC,CAAC,0DAA0D,EAAEA,WAAC,CAAC;AACjG,8BAA8B,EAAEA,WAAC,CAAC,2DAA2D,EAAEA,WAAC,CAAC;AACjG,8BAA8B,EAAEA,WAAC,CAAC,sBAAsB,EAAEE,cAAI,CAAC,8BAA8B,EAAEA,cAAI,CAAC,yFAAyF,EAAEF,WAAC,CAAC;AACjM,SAAS,EAAEA,WAAC,CAAC,sBAAsB,EAAEE,cAAI,CAAC,6BAA6B,EAAEA,cAAI,CAAC,wFAAwF,EAAEF,WAAC,CAAC;AAC1K;AACA,MAAM,EAAEA,WAAC,CAAC;AACV,KAAK,EAAEA,WAAC,CAAC,aAAa,EAAEE,cAAI,CAAC,mMAAmM,EAAEF,WAAC,CAAC;AACpO;AACA,KAAK,EAAEA,WAAC,CAAC,uBAAuB,EAAEA,WAAC,CAAC;AACpC,KAAK,EAAEA,WAAC,CAAC,qBAAqB,EAAEA,WAAC,CAAC;AAClC,KAAK,EAAEA,WAAC,CAAC,sBAAsB,EAAEA,WAAC,CAAC;AACnC;AACA,KAAK,EAAEA,WAAC,CAAC;AACT,SAAS,EAAEA,WAAC,CAAC,0IAA0I,EAAEA,WAAC,CAAC;AAC3J,MAAM,EAAEA,WAAC,CAAC;AACV,KAAK,EAAEA,WAAC,CAAC,gIAAgI,EAAE,mBAAmB,CAAC,IAAI,EAAEA,WAAC,CAAC;AACvK,MAAM;IACN,KAAK;IACL,CAAC,EAAE,kBAAkB,CAAC;;ICnLtB,IAAIR,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACA,MAAM,aAAa,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,IAAI,CAAC,iCAAiC,CAAC;IAC5F,SAAS,OAAO,CAAC,GAAG,EAAE;IACtB,IAAI,OAAOF,eAAK,CAAC,aAAa,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC;IAC/C;IACA,SAAS,SAAS,GAAG;IACrB,IAAI,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IAClC;IACA;IACA,IAAI,yBAAyB,GAAG,MAAM,yBAAyB,SAAS,gBAAgB,CAAC;IACzF,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3B,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE;IAC7B;IACA,QAAQ,IAAI,CAAC,IAAI,GAAG,EAAE;IACtB,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC;IACA,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IAChD,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IACjD,YAAY,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;IACnE,gBAAgB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IACzC,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,MAAM,EAAE;IACxB,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IACzC,IAAI;IACJ,IAAI,YAAY,CAAC,KAAK,EAAE;IACxB,QAAQ,OAAO,EAAE,CAAC;IAClB,IAAI;IACJ,IAAI,0BAA0B,CAAC,GAAG,EAAE,GAAG,EAAE;IACzC,QAAQ,OAAOA,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAKA,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;IACtE,IAAI;IACJ,IAAI,+BAA+B,CAAC,IAAI,EAAE;IAC1C,QAAQ,OAAOQ,4BAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACpD,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,IAAI,KAAK,YAAY,IAAI,CAAC,KAAK,EAAE;IAC7C,YAAY,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;IAC3C,QAAQ;IACR,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE;IACjC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;IAC9B;IACA;IACA,YAAY,IAAI,CAAC,GAAG,EAAE;IACtB,YAAY,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE;IACxC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;IACnC,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE;IACjF,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,YAAY;IACZ,YAAY,OAAO,CAAC;IACpB,QAAQ;IACR;IACA;IACA,QAAQ,IAAI,CAAC,GAAG,EAAE;IAClB,QAAQ,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE;IACnC,YAAY,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE;IAC/B;IACA,gBAAgB;IAChB,YAAY;IACZ,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK;IACnC,QAAQ;IACR,QAAQ,OAAO,CAAC;IAChB,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;IAClC,QAAQ,MAAM,GAAG,GAAG,EAAE;IACtB,QAAQ,IAAI,CAACR,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;IAClE,YAAY,IAAI,IAAI,CAAC,UAAU,IAAI,CAACA,eAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;IACxD,gBAAgB,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE;IACtC,oBAAoB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IAC9D,gBAAgB;IAChB,YAAY;IACZ,iBAAiB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAIA,eAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;IAC7D,gBAAgB,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAIA,eAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,CAACA,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;IAC9D,IAAI;IACJ,IAAI,SAAS,CAAC,GAAG,EAAE;IACnB,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;IAC/B,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACzE,QAAQ,IAAIA,eAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;IACtD,YAAY,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjC,QAAQ;IACR,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IAChE,CAAC,EAAE,yBAAyB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AAC7DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAChD,CAAC,EAAE,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IACvD,yBAAyB,GAAGP,YAAU,CAAC;IACvC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,iBAAiB,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IACxE,QAAQ,QAAQ,EAAE,CAAC,CAAC,EAAEX,WAAC,CAAC;AACxB;AACA,oBAAoB,EAAEE,cAAI,CAAC,UAAU,EAAEA,cAAI,CAAC;AAC5C;AACA,4BAA4B,EAAEA,cAAI,CAAC;AACnC,qBAAqB,EAAEF,WAAC,CAAC,YAAY,EAAE,aAAa,CAAC,4EAA4E,EAAEA,WAAC,CAAC;AACrI;AACA;AACA,4BAA4B,EAAEE,cAAI,CAAC;AACnC,qBAAqB,EAAEF,WAAC,CAAC,YAAY,EAAE,aAAa,CAAC,6EAA6E,EAAEA,WAAC,CAAC;AACtI;AACA,yBAAyB,EAAEA,WAAC,CAAC,eAAe,EAAEE,cAAI,CAAC,8GAA8G,EAAEF,WAAC,CAAC;AACrK;AACA;AACA;AACA;AACA;AACA,KAAK,EAAEA,WAAC,CAAC,yFAAyF,EAAEA,WAAC,CAAC;AACtG,EAAE,EAAEA,WAAC,CAAC,UAAU;IAChB,KAAK;IACL,CAAC,EAAE,yBAAyB,CAAC;;IC3I7B,IAAIR,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAGD;IACA;IACA,IAAI,0BAA0B,GAAG,MAAM,0BAA0B,SAAS,gBAAgB,CAAC;IAC3F,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IAC7B,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ;IACxC,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,OAAOF,eAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAChE,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG;IAChC,IAAI;IACJ,IAAI,YAAY,CAAC,KAAK,EAAE;IACxB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS;IACrC,IAAI;IACJ,IAAI,+BAA+B,CAAC,IAAI,EAAE;IAC1C,QAAQ,OAAOQ,4BAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IACvD,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,SAAS,EAAE;IACxB,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,CAAC,KAAK,EAAE;IACpB,YAAY,QAAQ,IAAI;IACxB,gBAAgB,KAAK,QAAQ;IAC7B,oBAAoB,IAAI,CAAC,SAAS,EAAE;IACpC,oBAAoB;IACpB;IACA,QAAQ;IACR,IAAI;IACJ,IAAI,SAAS,GAAG;IAChB,QAAQ,MAAM,KAAK,GAAG,EAAE;IACxB;IACA,QAAQ,KAAK,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,KAAK;IAC3C,YAAY,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC;IACvC,YAAY,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,IAAI,IAAI,CAACR,eAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;IAC/E,gBAAgB,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAClD,oBAAoB,MAAM,QAAQ,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG;IACrD;IACA,oBAAoB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IACxC;IACA,oBAAoB,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC;IAC7C,gBAAgB;IAChB,YAAY;IACZ,QAAQ,CAAC;IACT,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM;IAC7B,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;IAChC,YAAY,IAAI,QAAQ,GAAGM,4BAAkB,CAAC,oBAAoB,CAAC,GAAG,CAAC;IACvE,YAAY,KAAK,IAAI,GAAG,IAAI,QAAQ,EAAE;IACtC,gBAAgB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI;IACnC;IACA,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;IAChC;IACA,gBAAgB,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;IACtC,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE;IAC9C,IAAI;IACJ,CAAC;AACDL,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,SAAS;IAC3B,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AAC3DR,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,0BAA0B,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;IAC1D,0BAA0B,GAAGP,YAAU,CAAC;IACxC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,kBAAkB,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IACzE,QAAQ,QAAQ,EAAE,CAAC,CAAC,EAAEX,WAAC,CAAC,UAAU,EAAEA,WAAC,CAAC,QAAQ;IAC9C,KAAK;IACL,CAAC,EAAE,0BAA0B,CAAC;;ICnF9B,IAAIR,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAGD;IACA;IACA,IAAI,iBAAiB,GAAG,MAAM,iBAAiB,SAAS,gBAAgB,CAAC;IACzE,IAAI,+BAA+B,CAAC,IAAI,EAAE;IAC1C,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,EAAE;IACf,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,GAAGF,eAAK,CAAC,UAAU,EAAE;IAC5C,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,QAAQ;IACpC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,2BAA2B,QAAQ;IAC7D,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IAC5B,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;IAC3C,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS;IACnE,QAAQ,OAAOA,eAAK,CAAC,UAAU,CAAC,KAAK,CAAC;IACtC,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;IACxD,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,MAAM;IACvB,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,GAAG;IACtC,gBAAgB;IAChB,YAAY,KAAK,UAAU;IAC3B,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,GAAG;IAC1C,oBAAoBA,eAAK,CAAC,QAAQ,CAAC,IAAI,EAAEW,cAAI,GAAG,WAAW;IAC3D;IACA,wBAAwBX,eAAK,CAAC,WAAW,CAAC,IAAI,EAAEW,cAAI,GAAG,WAAW,CAAC;IACnE,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,GAAGX,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG;IAC/D,IAAI;IACJ,IAAI,YAAY,CAAC,GAAG,EAAE;IACtB,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC;IAC9B,YAAY,OAAO,IAAI,CAAC,OAAO;IAC/B,QAAQ,OAAO,EAAE;IACjB,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,mBAAmB;IACjC,CAAC,EAAE,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACjDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,OAAO;IACrB,CAAC,EAAE,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACjDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,CAAC,EAAEZ,cAAI,CAAC,SAAS,CAAC;IACjC,CAAC,EAAE,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAC/CV,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AAClDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,iBAAiB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;IACnD,iBAAiB,GAAGP,YAAU,CAAC;IAC/B,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,QAAQ;IAC7B,QAAQ,QAAQ,EAAE,CAAC,CAAC,EAAEA,WAAC,CAAC,aAAa,EAAEE,cAAI,CAAC,UAAU,EAAEA,cAAI,CAAC,qCAAqC,EAAEF,WAAC,CAAC,iCAAiC,EAAEE,cAAI,CAAC,wBAAwB,EAAEA,cAAI,CAAC,OAAO,EAAEA,cAAI,CAAC,OAAO,EAAEA,cAAI,CAAC,cAAc,EAAEF,WAAC,CAAC,mCAAmC,EAAEA,WAAC,CAAC,cAAc,CAAC;IACjR,QAAQ,MAAM,EAAEW,kBAAQ,CAAC;IACzB,KAAK;IACL,CAAC,EAAE,iBAAiB,CAAC;;IC9ErB,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAGD;IACA;IACA,IAAI,qBAAqB,GAAG,MAAM,qBAAqB,SAAS,sBAAsB,CAAC;IACvF,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB;IACA,IAAI;IACJ,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,EAAE;IACf,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAGF,eAAK,CAAC,UAAU,EAAE;IAC9C,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAO,EAAE;IACjB,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,IAAI,KAAK,UAAU,EAAE;IACjC,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG;IACrC,QAAQ;IACR,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ;IAC3C,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,QAAQ;IACxC,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,QAAQ;IACrC,IAAI;IACJ,IAAI,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;IACxC,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,UAAU,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,IAAI,EAAE;IACxF,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/E,YAAY,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;IACnC,QAAQ;IACR,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc;IACxC,QAAQ,IAAI,CAAC,QAAQ,EAAE;IACvB,QAAQ,OAAOA,eAAK,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC;IACpD,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,WAAW;IAC7B,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACxDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,OAAO;IACzB,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACvDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,KAAK,EAAEZ,cAAI,CAAC,SAAS,CAAC;IACrC,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;IACpD,qBAAqB,GAAGV,YAAU,CAAC;IACnC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAEA,WAAC,CAAC;AACpD,eAAe,EAAEE,cAAI,CAAC,YAAY,EAAEA,cAAI,CAAC;AACzC;AACA,iBAAiB,EAAEF,WAAC,CAAC;AACrB;AACA,GAAG,EAAEK,iCAAuB,CAAC,oDAAoD,EAAEL,WAAC,CAAC;AACrF;AACA;AACA,EAAE,EAAEA,WAAC,CAAC,uBAAuB,EAAEE,cAAI,CAAC,UAAU,EAAEA,cAAI,CAAC,SAAS,EAAEF,WAAC,CAAC,qCAAqC,EAAEA,WAAC,CAAC,cAAc,EAAEA,WAAC,CAAC,QAAQ,EAAEA,WAAC,CAAC,OAAO,EAAEA,WAAC,CAAC,WAAW,EAAEA,WAAC,CAAC,SAAS,CAAC;IAC7K,QAAQ,MAAM,EAAEW,kBAAQ,CAAC;IACzB,KAAK;IACL,CAAC,EAAE,qBAAqB,CAAC;;ICrEzB,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAGD;IACA;IACA,IAAI,kBAAkB,GAAG,MAAM,kBAAkB,SAAS,sBAAsB,CAAC;IACjF,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3B;IACA,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;IAC/B,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,QAAQ;IACxC,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,QAAQ;IACrC,IAAI;IACJ;IACA;IACA,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAOF,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;IACxC,cAAc;IACd,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;IAC5B,IAAI;IACJ,IAAI,UAAU,CAAC,GAAG,EAAE;IACpB,QAAQ,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI;IACjD,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,iBAAiB,CAAC;IACvE,QAAQ,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;IACjC,QAAQ,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS;IAC3C,QAAQ,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;IACvC,QAAQ,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC;IAC7D,QAAQ,CAACA,eAAK,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,GAAGA,eAAK,CAAC,QAAQ,GAAGA,eAAK,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAEW,cAAI,GAAG,YAAY,CAAC,CAAC;IAC3H,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAAC,aAAa,EAAE,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,aAAa,IAAI,CAAC,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,KAAK;IAC3K,QAAQ,IAAI,IAAI,IAAI,IAAI,EAAE;IAC1B,YAAY,KAAK,GAAG,IAAI,CAAC,KAAK;IAC9B,QAAQ;IACR;IACA,YAAY,KAAK,GAAG,SAAS;IAC7B,QAAQ,OAAOX,eAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnD,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB;IACA,YAAY,KAAK,aAAa;IAC9B,YAAY,KAAK,aAAa;IAC9B,gBAAgB,IAAI,CAAC,QAAQ,EAAE;IAC/B,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,sBAAsB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;IACjD,QAAQ,IAAI,OAAO,GAAG,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC;IACtD,QAAQ,IAAI,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE;IACzC,YAAY,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC1G,QAAQ;IACR,QAAQ,OAAO,OAAO;IACtB,IAAI;IACJ,IAAI,wBAAwB,CAAC,EAAE,EAAE;IACjC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;IAC9B,YAAY,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC;IAC9C,QAAQ;IACR,aAAa;IACb;IACA,YAAY,IAAIA,eAAK,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE;IACzC,gBAAgB,IAAI,CAAC,KAAK,GAAG,MAAM;IACnC,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK;IACxC;IACA,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7G;IACA,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;IACpC,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5D,aAAa;IACb,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS;IAC1C,YAAY,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;IAC3C,YAAY,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAIA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;IACvE,gBAAgB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,CAAC;IAC9C,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC;IACA,QAAQ,IAAI,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;IACxD,QAAQ,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;IACzE,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;IACzC;IACA,YAAY,IAAI,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;IAC5D,YAAY,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;IAChF,QAAQ;IACR,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,QAAQ;IACtB,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AACnDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,WAAW;IAC7B,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACrDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,KAAK,EAAEZ,cAAI,CAAC,SAAS,CAAC;IACrC,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AACjDV,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IAChE,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC;IACvD,kBAAkB,GAAGP,YAAU,CAAC;IAChC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAEA,WAAC,CAAC,wDAAwD,EAAEJ,oBAAU,CAAC,2BAA2B,CAAC;AACjJ,mBAAmB,EAAEM,cAAI,CAAC,QAAQ,EAAEA,cAAI,CAAC;AACzC;AACA;AACA;AACA;AACA,EAAE,EAAEF,WAAC,CAAC,uBAAuB,EAAEE,cAAI,CAAC,YAAY,EAAEF,WAAC,CAAC,qCAAqC,EAAEA,WAAC,CAAC,cAAc,EAAEA,WAAC,CAAC,WAAW,EAAEA,WAAC,CAAC,SAAS,CAAC,EAAE,MAAM,EAAEW,kBAAQ,CAAC;IAC3J,KAAK;IACL,CAAC,EAAE,kBAAkB,CAAC;;IChItB,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACA;IACA;IACA,IAAI,kBAAkB,GAAG,MAAM,kBAAkB,SAAS,gBAAgB,CAAC;IAC3E,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3B,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE;IAC7B,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK;IACrC,YAAY,GAAG,CAAC,cAAc,EAAE;IAChC,YAAY,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC;IAClG,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,KAAK;IACpC,YAAY,GAAG,CAAC,cAAc,EAAE;IAChC,YAAY,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC;IAClG,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,KAAK;IACtC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;IAC/B,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK;IACrC,YAAY,MAAM,CAAC,GAAG,GAAG,YAAY,UAAU,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC,UAAU;IACxJ,YAAY,IAAI,CAACF,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE;IACjD,gBAAgB,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC;IACpD,YAAY;IACZ,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,KAAK;IACxC,YAAY,QAAQ,GAAG,CAAC,OAAO;IAC/B,gBAAgB,KAAK,EAAE,CAAC;IACxB,gBAAgB,KAAK,EAAE;IACvB,oBAAoBU,sBAAY,CAAC,GAAG,CAAC;IACrC,oBAAoB,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,KAAK,EAAE,CAAC;IACrD,oBAAoB,IAAI,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;IACrG,oBAAoB,IAAI,KAAK,GAAG,KAAK;IACrC,oBAAoB,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK;IAC3C,wBAAwB,KAAK,GAAG,IAAI;IACpC,wBAAwB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC;IAC3E,wBAAwBV,eAAK,CAAC,WAAW,CAAC,IAAI,EAAE,gBAAgB,CAAC;IACjE,oBAAoB,CAAC;IACrB,oBAAoB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC;IACpE,oBAAoBA,eAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAC1D,oBAAoBA,eAAK,CAAC,kBAAkB,CAAC,KAAK,IAAI;IACtD,wBAAwB,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE;IACrD,4BAA4B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IAC7D,wBAAwB;IACxB,oBAAoB,CAAC,CAAC;IACtB,oBAAoB;IACpB;IACA,QAAQ,CAAC;IACT,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IAChD,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;IACtC,gBAAgB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;IAChD,YAAY;IACZ,YAAY,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;IAC5B,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU;IACzC,QAAQ,IAAIA,eAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;IACrC,YAAY;IACZ,QAAQ;IACR,QAAQ,MAAM,CAAC,GAAGA,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;IACvE,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3F,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,MAAM,GAAG,UAAU,EAAE,IAAI,CAAC;IACpE,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;IACjG,IAAI;IACJ,IAAI,OAAO,CAAC,CAAC,EAAE;IACf,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM;IAChC,QAAQ,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;IACxC,YAAY,OAAO,IAAI,IAAI,CAAC,YAAY,CAACA,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,QAAQ;IACR;IACA,QAAQ,IAAI,EAAE,GAAG,GAAG;IACpB,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;IAC9B,YAAY,EAAE,GAAG,CAAC,CAAC,cAAc,EAAE;IACnC,QAAQ;IACR,QAAQ,IAAI,GAAG,GAAG,IAAI,WAAW,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;IAC1E,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;IAC/B,QAAQ,OAAOA,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM;IACvE,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IACvB,IAAI;IACJ,IAAI,YAAY,CAAC,KAAK,EAAE;IACxB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAClC,IAAI;IACJ,IAAI,+BAA+B,CAAC,IAAI,EAAE;IAC1C,QAAQ,OAAO,UAAU,CAAC,IAAI,CAAC;IAC/B,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ;IACrC,QAAQ,MAAM,GAAG,GAAG,gBAAgB;IACpC,QAAQ,IAAI,QAAQ,EAAE;IACtB,YAAYA,eAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;IAC7C,YAAYA,eAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;IAC7C,QAAQ;IACR,aAAa;IACb,YAAYA,eAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;IAC1C,YAAYA,eAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;IAC1C,QAAQ;IACR,IAAI;IACJ,IAAI,aAAa,CAAC,GAAG,EAAE;IACvB,QAAQ,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM;IAC/B,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;IAC/F,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IAC9B,IAAI;IACJ,IAAI,sBAAsB,CAAC,CAAC,EAAE,aAAa,EAAE;IAC7C,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;IAC5C,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI;IAC5D,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK;IACxD,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG;IACvD,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;IACtC,YAAY,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI;IAC3C,QAAQ;IACR,QAAQ,IAAI,aAAa,EAAE;IAC3B,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7B,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzB,QAAQ;IACR,IAAI;IACJ,IAAI,SAAS,CAAC,CAAC,EAAE;IACjB,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,IAAIA,eAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;IACzC;IACA;IACA,YAAY,CAAC,GAAG,SAAS;IACzB,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;IAClD,gBAAgB,CAAC,GAAG,IAAI,CAAC,GAAG;IAC5B,YAAY;IACZ,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;IAClD,gBAAgB,CAAC,GAAG,IAAI,CAAC,GAAG;IAC5B,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACnE,IAAI;IACJ,IAAI,iBAAiB,GAAG;IACxB,QAAQ,KAAK,CAAC,iBAAiB,EAAE;IACjC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IACpE,QAAQ,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAClG,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC2B,YAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IAC5F,QAAQ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAACA,YAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IAC3F,QAAQ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAACA,YAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;IACzF,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;IAC5E,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAC/C,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAC/C;IACA,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,QAAQ,IAAI,CAAC3B,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IACpC,YAAY,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;IACxC,YAAY,OAAO,CAAC,OAAO,GAAG;IAC9B,gBAAgB,OAAO,EAAEyB,kBAAY,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK;IAC7D,gBAAgB,aAAa,EAAE,IAAI;IACnC,gBAAgB,QAAQ,EAAEA,kBAAY,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG;IAC7D,gBAAgB,KAAK,EAAEA,kBAAY,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM;IAC9D,gBAAgB,QAAQ,EAAEA,kBAAY,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO;IACjE,gBAAgB,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE;IAC7C,aAAa;IACb,YAAY,IAAI,CAAC,eAAe,EAAE;IAClC,QAAQ;IACR;IACA,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC;IAChC,IAAI;IACJ,IAAI,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;IAClD,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,UAAU,GAAGzB,eAAK,CAAC,QAAQ,GAAGA,eAAK,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IAClG,QAAQ,OAAO,CAAC,QAAQ,GAAG,CAAC,UAAU;IACtC,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IACvE,QAAQ,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACrF,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;IAC1C,YAAY,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC2B,YAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;IAChG,YAAY,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAACA,YAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IAClG,YAAY,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAACA,YAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IACnG,QAAQ;IACR,QAAQ,IAAI,CAAC3B,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IACxC,YAAY,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;IACnF,QAAQ;IACR,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,KAAK,EAAE;IACnB,YAAY;IACZ,QAAQ;IACR,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,YAAY;IAC7B,gBAAgB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;IACzC,gBAAgB;IAChB,YAAY,KAAK,KAAK;IACtB,YAAY,KAAK,KAAK;IACtB,gBAAgB,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAC1E,oBAAoB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAC3D,oBAAoB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAC3D,gBAAgB;IAChB,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1C,gBAAgB,IAAI,CAAC,KAAK,EAAE;IAC5B,gBAAgB;IAChB;IACA,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;AAC/CP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;AAC/CP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IAChE,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AACtDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC;IACV,QAAQ,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE;IAChC,YAAY,OAAO,EAAE,CAAC,IAAI,KAAK;IAC/B,gBAAgB,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC;IACxC,gBAAgB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;IAC9B,oBAAoB,OAAO,KAAK;IAChC,gBAAgB;IAChB,gBAAgB,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ;IACrD;IACA,KAAK;IACL,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAChDN,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AACxDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,IAAI,EAAE;IAC7D,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAClDP,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,aAAa,CAAC;IAC7B,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAClDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,gBAAgB,CAAC;IAChC,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACrDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,aAAa,CAAC;IAC7B,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAClDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,EAAEd,WAAC,CAAC,UAAU,CAAC;IAC9B,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAChDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,EAAEd,WAAC,CAAC,UAAU,CAAC;IAC9B,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAChDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,EAAEd,WAAC,CAAC,UAAU,CAAC;IAC9B,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACpDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,EAAEd,WAAC,CAAC,YAAY,CAAC;IAChC,CAAC,EAAE,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC;IACvD,kBAAkB,GAAGR,YAAU,CAAC;IAChC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,SAAS;IAC9B,QAAQ,QAAQ,EAAE,CAAC,YAAY,EAAEE,cAAI,CAAC,YAAY,EAAEA,cAAI,CAAC,UAAU,EAAEF,WAAC,CAAC,kDAAkD,EAAEA,WAAC,CAAC;AAC7H;AACA,KAAK,EAAEA,WAAC,CAAC,cAAc,EAAEE,cAAI,CAAC;AAC9B;AACA,MAAM,EAAEF,WAAC,CAAC;AACV,KAAK,EAAEA,WAAC,CAAC,kDAAkD,EAAEA,WAAC,CAAC;AAC/D,gCAAgC,EAAEA,WAAC,CAAC,qCAAqC,EAAEA,WAAC,CAAC;AAC7E;AACA,CAAC,EAAEA,WAAC,CAAC,8BAA8B,EAAEA,WAAC,CAAC,YAAY,EAAEA,WAAC,CAAC,iCAAiC,EAAEJ,oBAAU,CAAC,eAAe,CAAC,yDAAyD,EAAEI,WAAC,CAAC;AAClL,CAAC,EAAEA,WAAC,CAAC,cAAc,EAAEA,WAAC,CAAC,8BAA8B,EAAEA,WAAC,CAAC,qCAAqC,EAAEA,WAAC,CAAC,QAAQ,EAAEA,WAAC,CAAC,WAAW,EAAEA,WAAC,CAAC;AAC7H,CAAC;IACD,QAAQ,MAAM,EAAEW,kBAAQ,CAAC;IACzB,KAAK;IACL,CAAC,EAAE,kBAAkB,CAAC;;IC3RtB,IAAInB,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACA,MAAM,qBAAqB,SAASJ,0BAAgB,CAAC;IACrD,IAAI,WAAW,CAAC,KAAK,EAAE;IACvB,QAAQ,KAAK,CAAC,kBAAkB,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IAC3D,IAAI;IACJ;IACA,MAAM,mBAAmB,GAAG,GAAG;IAC/B,MAAM,oBAAoB,GAAG,CAAC;IAC9B;IACA,IAAI,mBAAmB,GAAG,MAAM,mBAAmB,SAAS,sBAAsB,CAAC;IACnF,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3B,QAAQ,IAAI,CAAC,iBAAiB,GAAG,CAAC,GAAG,KAAK;IAC1C,YAAY,GAAG,CAAC,cAAc,EAAE;IAChC,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;IAChC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;IACtC,YAAY;IACZ,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,gBAAgB,GAAG,CAAC,GAAG,KAAK;IACzC,YAAY,GAAG,CAAC,cAAc,EAAE;IAChC,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE;IAC9C,YAAY,IAAI,CAAC,KAAK,GAAG,MAAM;IAC/B,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC7B,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC/D,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,oBAAoB,GAAG,CAAC,GAAG,KAAK;IAC7C,YAAYE,eAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;IACxD,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,qBAAqB,GAAG,CAAC,GAAG,KAAK;IAC9C,YAAYA,eAAK,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;IAC3D,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,KAAK;IACtC,YAAY,QAAQ,GAAG,CAAC,OAAO;IAC/B,gBAAgB,KAAK,CAAC;IACtB,gBAAgB,KAAK,EAAE;IACvB,oBAAoB;IACpB,gBAAgB;IAChB,oBAAoB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IACrC,oBAAoB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;IACjD,oBAAoB,IAAI,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACvE,oBAAoB;IACpB;IACA,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,KAAK;IACtC,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE;IACpC,gBAAgBU,sBAAY,CAAC,GAAG,CAAC;IACjC,gBAAgB,IAAI,CAAC,aAAa,GAAG,KAAK;IAC1C,YAAY;IACZ,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,KAAK;IACtC,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE;IACnC;IACA,gBAAgB,GAAG,CAAC,cAAc,EAAE;IACpC,gBAAgB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;IAC7C,gBAAgB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;IACtC,oBAAoB,IAAI,CAAC,KAAK,EAAE;IAChC,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,IAAI,CAAC,MAAM,EAAE;IACjC,gBAAgB;IAChB,YAAY;IACZ,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;IAChD,YAAY,IAAI,IAAI,CAAC,SAAS,IAAI,UAAU,EAAE;IAC9C,gBAAgB,IAAI,CAAC,SAAS,EAAE;IAChC,YAAY;IACZ;IACA,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK;IACrC,YAAY,IAAI,CAAC,KAAK,EAAE;IACxB,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK;IAClC,QAAQ,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,KAAK;IACxC,YAAY,IAAI,OAAO,GAAG,KAAK;IAC/B,YAAY,IAAIV,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;IAClD,gBAAgB,MAAM,EAAE,GAAG,IAAI,CAAC,2BAA2B,EAAE;IAC7D,gBAAgB,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;IACvC,oBAAoB,QAAQ,GAAG,CAAC,OAAO;IACvC,wBAAwB,KAAK,EAAE;IAC/B;IACA;IACA,4BAA4BU,sBAAY,CAAC,GAAG,CAAC;IAC7C,4BAA4B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAC3C,4BAA4B;IAC5B,wBAAwB,KAAK,EAAE;IAC/B,4BAA4BA,sBAAY,CAAC,GAAG,CAAC;IAC7C,4BAA4B,OAAO,GAAG,IAAI;IAC1C,4BAA4B,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;IAC/D,gCAAgC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IAChD,4BAA4B;IAC5B,iCAAiC;IACjC,gCAAgC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAC/C,4BAA4B;IAC5B,4BAA4B;IAC5B;IACA,gBAAgB;IAChB,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,EAAE,EAAE,MAAM;IAChE,gBAAgB,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAACV,eAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,MAAM,EAAE,cAAc,GAAG,CAAC,CAAC,KAAK,CAACA,eAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,MAAM;IACzO,gBAAgB,QAAQ,GAAG,CAAC,OAAO;IACnC,oBAAoB,KAAK,EAAE;IAC3B,wBAAwBU,sBAAY,CAAC,GAAG,CAAC;IACzC,wBAAwB,GAAG;IAC3B,4BAA4B,MAAM,GAAG,MAAM,CAAC,sBAAsB;IAClE,4BAA4B,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE;IACxD,gCAAgC,MAAM,GAAG,MAAM;IAC/C,gCAAgC;IAChC,4BAA4B;IAC5B,wBAAwB,CAAC,QAAQ,aAAa,CAAC,MAAM,CAAC;IACtD,wBAAwB,MAAM,KAAK,EAAE;IACrC,wBAAwB;IACxB,oBAAoB,KAAK,EAAE;IAC3B,wBAAwBA,sBAAY,CAAC,GAAG,CAAC;IACzC,wBAAwB,GAAG;IAC3B,4BAA4B,MAAM,IAAI,MAAM,CAAC,kBAAkB,CAAC;IAChE,4BAA4B,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE;IACxD,gCAAgC,MAAM,GAAG,MAAM;IAC/C,gCAAgC;IAChC,4BAA4B;IAC5B,wBAAwB,CAAC,QAAQ,aAAa,CAAC,MAAM,CAAC;IACtD,wBAAwB,MAAM,KAAK,EAAE;IACrC,wBAAwB;IACxB,oBAAoB,KAAK,EAAE;IAC3B,wBAAwBA,sBAAY,CAAC,GAAG,CAAC;IACzC,wBAAwB,IAAI,CAAC,KAAK,EAAE;IACpC,wBAAwB,IAAI,CAAC,MAAM,EAAE;IACrC,wBAAwB;IACxB,oBAAoB,KAAK,CAAC;IAC1B,oBAAoB,KAAK,EAAE;IAC3B;IACA,wBAAwBA,sBAAY,CAAC,GAAG,CAAC;IACzC,wBAAwB,OAAO,GAAG,IAAI;IACtC,wBAAwB,IAAI,CAAC,OAAO,EAAE;IACtC,wBAAwB;IACxB;IACA,gBAAgB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IACnC,gBAAgB,IAAI,CAAC,aAAa,GAAG,OAAO;IAC5C,YAAY;IACZ,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,KAAK;IACvC,YAAYA,sBAAY,CAAC,GAAG,CAAC;IAC7B,YAAY,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC3C,QAAQ,CAAC;IACT,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IAC5B,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,6BAA6B,IAAI,CAAC,QAAQ,IAAI,CAACV,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG;IAC9F,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;IACnG,QAAQ;IACR,IAAI;IACJ,IAAI,YAAY,CAAC,GAAG,EAAE;IACtB,QAAQ,IAAI,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC;IAChD,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;IAC3F,YAAY,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC;IACvD,QAAQ;IACR,QAAQ,OAAO,UAAU;IACzB,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IAChD;IACA,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAAE;IACjD,gBAAgB,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa;IACpD,gBAAgB,IAAI,CAAC,KAAK,GAAG,GAAG;IAChC,gBAAgB,IAAI,GAAG,EAAE;IACzB,oBAAoB,IAAI,CAAC,MAAM,EAAE;IACjC,gBAAgB;IAChB,gBAAgB,OAAO,CAAC,GAAG,CAAC;IAC5B,YAAY;IACZ,iBAAiB;IACjB;IACA,gBAAgB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,gBAAgB,EAAE;IAC/B,QAAQ,IAAI,CAAC,kBAAkB,EAAE;IACjC,QAAQ,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE;IAC3C,QAAQ,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;IAC3C,QAAQ,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;IACnC,QAAQ,MAAM,KAAK,GAAGM,4BAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC;IAChE,QAAQ,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;IAClC,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO;IAC/B,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IAC5E,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;IAC5E,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IACxE,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IACxE,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IACtE,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IACxE,QAAQ,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC;IAClF,QAAQ,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC;IACnF,QAAQ,IAAI,CAAC,SAAS,EAAE;IACxB,QAAQ,IAAI,CAAC,YAAY,EAAE;IAC3B,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAIN,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;IACzC,YAAY;IACZ,QAAQ;IACR,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS;IACrC,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,mBAAmB;IACpC,gBAAgB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;IAC/C,oBAAoB,IAAI,CAAC,MAAM,EAAE;IACjC,wBAAwB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IACzE,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB,IAAI,CAAC,KAAK,EAAE;IACpC,oBAAoB;IACpB,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,IAAI,CAAC,MAAM,EAAE;IACjC,gBAAgB;IAChB,gBAAgB;IAChB,YAAY,KAAK,MAAM;IACvB,gBAAgB,IAAI,CAAC,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;IAC1D,oBAAoB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG;IAC3C,oBAAoB,IAAI,CAAC,aAAa,GAAG,IAAI;IAC7C,gBAAgB;IAChB,gBAAgB;IAChB,YAAY,KAAK,UAAU;IAC3B;IACA,gBAAgB,IAAI,CAAC,gBAAgB,EAAE;IACvC;IACA,YAAY,KAAK,UAAU;IAC3B,YAAY,KAAK,OAAO;IACxB,gBAAgB,IAAI,CAAC,aAAa,EAAE;IACpC,gBAAgB;IAChB,YAAY,KAAK,cAAc;IAC/B,gBAAgB,IAAI,CAAC,KAAK,EAAE;IAC5B,oBAAoB,IAAI,CAAC,kBAAkB,EAAE;IAC7C,gBAAgB;IAChB,gBAAgB;IAChB,YAAY,KAAK,aAAa;IAC9B,gBAAgB,IAAI,CAAC,KAAK,EAAE;IAC5B,oBAAoB,IAAI,CAAC,gBAAgB,EAAE;IAC3C,gBAAgB;IAChB,gBAAgB;IAChB;IACA,QAAQ,IAAI,CAAC,mBAAmB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IACvE,YAAY,IAAI,CAAC,SAAS,EAAE;IAC5B,QAAQ;IACR,QAAQ,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IACjE,YAAY,IAAI,CAAC,YAAY,EAAE;IAC/B,QAAQ;IACR,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;IAC1C,YAAY,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC;IACxF,YAAY,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC;IAC1F,YAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;IAClC,QAAQ;IACR,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IACxC,YAAY,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IACnF,YAAY,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IAC/E,YAAY,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IAC7E,YAAY,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;IACnF,YAAY,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IAC/E,YAAY,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IAC/E,QAAQ;IACR,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;IAC3C,YAAY,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC;IACzF,QAAQ;IACR,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;IAC3C,YAAY,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC;IACvF,QAAQ;IACR,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ,IAAI,WAAW;IACf,IAAI,SAAS,GAAG;IAChB,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;IAC3C,YAAY,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IACjG,YAAY,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,EAAE;IAC1C,QAAQ;IACR,IAAI;IACJ,IAAI,YAAY,GAAG;IACnB,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;IAC3C;IACA,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,KAAK,KAAK,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;IACrH,QAAQ;IACR,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;IAC3C;IACA,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,IAAIA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;IACvG,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,SAAS,GAAG;IACpB,QAAQ,OAAOA,eAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/C,IAAI;IACJ,IAAI,KAAK,GAAG;IACZ,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IACzB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;IAC3E,IAAI;IACJ,IAAI,2BAA2B,GAAG;IAClC,QAAQ,IAAI,EAAE;IACd,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE;IAC3G,YAAY,OAAO,CAACA,eAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,MAAM,IAAI,EAAE,CAAC,SAAS,KAAK,IAAI,EAAE;IACzG,gBAAgB,EAAE,GAAG,EAAE,CAAC,kBAAkB;IAC1C,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,EAAE;IACjB,IAAI;IACJ,IAAI,aAAa;IACjB,IAAI,gBAAgB,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;IACrD,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,EAAE,WAAW,IAAI,IAAI,CAAC;IACrD,IAAI;IACJ,IAAI,kBAAkB,GAAG;IACzB,QAAQ,IAAI,IAAI,CAAC,YAAY,YAAY,mBAAmB,EAAE;IAC9D,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO;IAClE,YAAY,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC;IAC3D,YAAY,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;IACnD,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;IAC3B,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;IACxC,YAAY,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI;IACzC,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB;IAC1D,QAAQ;IACR,IAAI;IACJ,IAAI,aAAa;IACjB,IAAI,MAAM,CAAC,EAAE,EAAE;IACf,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;IAC/B,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAIA,eAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;IAC9B,YAAY,IAAI,CAAC,aAAa,GAAG,IAAI;IACrC,YAAY;IACZ,QAAQ;IACR,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ;IAClD,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAClD,YAAY,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,YAAY,IAAI,IAAI,KAAK,EAAE,EAAE;IAC7B,gBAAgB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,MAAM;IACrD,gBAAgB,IAAI,CAAC,aAAa,GAAG,IAAI;IACzC,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/G,gBAAgB,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC;IAC3E,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;IACnD,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE;IACrC,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,MAAM;IAC7G,QAAQ,IAAI,CAAC,QAAQ,EAAE;IACvB,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAChE,QAAQ;IACR,IAAI;IACJ,IAAI,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;IAC1C,QAAQ,IAAI,UAAU,GAAG,EAAE,IAAI,EAAE;IACjC;IACA;IACA;IACA,QAAQ,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;IACvD,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;IAC5D,YAAY,IAAI,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI;IAClD,gBAAgB,KAAK,IAAI,SAAS,IAAI,UAAU,EAAE;IAClD,oBAAoB,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;IAC5E,wBAAwB,OAAO,IAAI;IACnC,oBAAoB;IACpB;IACA,oBAAoB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY;IACrD,oBAAoB,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;IACvD,wBAAwB,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI;IAC5C,wBAAwB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;IACtF,4BAA4B,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;IACxD,gCAAgC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;IACtE,gCAAgC,IAAI,CAAC,GAAG,CAAC;IACzC,gCAAgC,IAAI,KAAK,GAAG,KAAK;IACjD,gCAAgC,OAAO,CAACA,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;IACxF,oCAAoC,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAClE,oCAAoC,CAAC,EAAE;IACvC,gCAAgC;IAChC,gCAAgC,IAAIA,eAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;IAChE,oCAAoC;IACpC,gCAAgC;IAChC,gCAAgC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;IAC5F,oCAAoC,OAAO,IAAI;IAC/C,gCAAgC;IAChC,4BAA4B;IAC5B,wBAAwB;IACxB,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB,OAAO,KAAK;IAC5B,YAAY,CAAC,CAAC;IACd,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC;IACrC;IACA,mBAAmBA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa;IACzD,mBAAmBA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY;IACxD;IACA,oBAAoBA,eAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAIA,eAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC;IAC5G,YAAY,UAAU,GAAG,WAAW,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,QAAQ;IACjH,QAAQ;IACR,QAAQ,IAAI,MAAM,GAAG,UAAU;IAC/B,QAAQ,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE;IACxC;IACA,YAAY,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC;IACnE,QAAQ;IACR;IACA,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;IAC5B,YAAY,IAAI,CAAC,KAAK,EAAE;IACxB,QAAQ;IACR,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAGA,eAAK,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE;IAC5E,QAAQ,IAAI,CAAC,GAAG,CAACe,iBAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,qCAAqC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACjJ,QAAQ,OAAO,MAAM;IACrB,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,aAAa,CAAC;IACvE,QAAQ,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI;IACpC,QAAsB,GAAG,CAAC,MAAM,CAAC;IACjC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI;IAC/C,QAAQ,EAAE,CAAC,QAAQ,GAAG,QAAQ,GAAG,EAAE,GAAG,CAAC;IACvC,QAAQ,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7D,QAAQ,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;IACrE,QAAQ,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE;IACzD,QAAQ,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;IACpE,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,aAAa,CAAC;IACvE,QAAQ,EAAE,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;IACvE,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,QAAQ;IACpC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ;IACrC,QAAQ,IAAI,QAAQ,EAAE;IACtB,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI;IAC5D,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,CAAC,YAAY,EAAE;IAC/B,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA,IAAI,KAAK,CAAC,KAAK,GAAG,mBAAmB,EAAE;IACvC,QAAQ,IAAI,CAACf,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAIA,eAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;IACnF;IACA,YAAY,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC;IACvC,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,CAAC,KAAK,GAAG,oBAAoB,EAAE;IACzC,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI;IACjC,QAAQ,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;IACpC,IAAI;IACJ,IAAI,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;IAC3C,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IACpC,YAAY,MAAM,QAAQ,GAAG,CAACA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAACA,eAAK,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IACxG,YAAY,OAAO,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,yCAAyC,KAAK,CAAC;IACxH,QAAQ;IACR,IAAI;IACJ,IAAI,cAAc,GAAG;IACrB;IACA;IACA,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAACS,WAAC,GAAG,UAAU,CAAC;IAC9D,QAAQT,eAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACnD,QAAQ,OAAO,CAAC,OAAO,GAAG;IAC1B,YAAY,aAAa,EAAE,IAAI;IAC/B,YAAY,OAAO,EAAEyB,kBAAY,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK;IACzD,YAAY,QAAQ,EAAEA,kBAAY,CAAC,EAAE,CAAC,eAAe,CAAC,YAAY;IAClE,YAAY,IAAI,EAAEA,kBAAY,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK;IACrD,YAAY,KAAK,EAAEA,kBAAY,CAAC,EAAE,CAAC,gBAAgB,CAAC,KAAK;IACzD,YAAY,QAAQ,EAAEA,kBAAY,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI;IAC1D,YAAY,UAAU,EAAE,mBAAmB,EAAE,YAAY,EAAE;IAC3D,SAAS;IACT,QAAQ,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC;IAC3E,QAAQ,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC;IAC7E,QAAQ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;IACpC,QAAQ,OAAO,OAAO;IACtB,IAAI;IACJ,CAAC;AACDxB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,kBAAkB;IAChC,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACnDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,WAAW;IAC7B,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACtDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,KAAK,EAAEZ,cAAI,CAAC,SAAS,CAAC;IACrC,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AACjDV,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,QAAQ,CAAC;IACxB,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,kBAAkB,EAAE,MAAM,CAAC;AAC7DtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,iBAAiB;IACnC,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AACvDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,EAAEd,WAAC,CAAC,eAAe,CAAC;IACnC,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACtDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,EAAEd,WAAC,CAAC,cAAc,CAAC;IAClC,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACtDR,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AACjDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,CAAC;AAC3DP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC;AACxDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IAChE,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AACzDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IAChE,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AACzDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,WAAW,EAAE;IACpE,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;AACzDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IAChE,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;IACrD,mBAAmB,GAAGP,YAAU,CAAC;IACjC,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,UAAU,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IACjE,QAAQ,QAAQ,EAAE,CAAC,YAAY,EAAET,cAAI,CAAC,qCAAqC,EAAEA,cAAI,CAAC;AAClF,CAAC,EAAEF,WAAC,CAAC;AACL,mBAAmB,EAAEE,cAAI,CAAC,6FAA6F,EAAEA,cAAI,CAAC;AAC9H,iCAAiC,EAAEF,WAAC,CAAC;AACrC,CAAC,EAAEA,WAAC,CAAC;AACL,+BAA+B,EAAEE,cAAI,CAAC,6FAA6F,EAAEA,cAAI,CAAC;AAC1I,yDAAyD,EAAEF,WAAC,CAAC;AAC7D;AACA,aAAa,EAAEE,cAAI,CAAC,YAAY,EAAEF,WAAC,CAAC,qCAAqC,EAAEA,WAAC,CAAC;AAC7E,CAAC,EAAEA,WAAC,CAAC,aAAa,EAAEJ,oBAAU,CAAC,2BAA2B,CAAC,gCAAgC,EAAEA,oBAAU,CAAC,2BAA2B,CAAC;AACpI;AACA,SAAS,EAAEI,WAAC,CAAC,kBAAkB,EAAEA,WAAC,CAAC;AACnC;AACA,EAAE,EAAEA,WAAC,CAAC,WAAW,EAAEA,WAAC,CAAC,WAAW,EAAEA,WAAC,CAAC;AACpC;AACA,SAAS,EAAEA,WAAC,CAAC,sEAAsE,EAAEA,WAAC,CAAC;AACvF,WAAW;IACX,KAAK;IACL,CAAC,EAAE,mBAAmB,CAAC;;IChiBvB,IAAIR,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAGD;IACA,MAAM,cAAc,SAASJ,0BAAgB,CAAC;IAC9C,IAAI,WAAW,CAAC,KAAK,EAAE;IACvB,QAAQ,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC5C,IAAI;IACJ;IACA,MAAM,WAAW,SAASA,0BAAgB,CAAC;IAC3C,IAAI,WAAW,CAAC,KAAK,EAAE;IACvB,QAAQ,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACzC,IAAI;IACJ;IACA;IACA,IAAI,eAAe,GAAG,MAAM,eAAe,SAASO,oBAAU,CAAC,YAAY,CAAC;IAC5E,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,UAAU;IAC3B,gBAAgB,IAAI,QAAQ,GAAG,CAAC,CAAC,GAAG;IACpC,gBAAgB,CAAC,QAAQ,GAAGL,eAAK,CAAC,QAAQ,GAAGA,eAAK,CAAC,WAAW,EAAE,IAAI,EAAE,cAAc,CAAC;IACrF,gBAAgB,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,QAAQ;IAC9D,gBAAgB;IAChB,YAAY,KAAK,KAAK;IACtB,gBAAgBA,eAAK,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC;IAClD,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,OAAO,GAAG;IACd,QAAQ,MAAM,GAAG,GAAG,IAAI;IACxB,QAAQA,eAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACtC,QAAQA,eAAK,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM;IACjD,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IACnD,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;AAC5CP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IAChE,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACjDP,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,SAAS;IAC3B,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IAC7C,eAAe,GAAGR,YAAU,CAAC;IAC7B,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,MAAM,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IAC7D,QAAQ,QAAQ,EAAE,CAAC,CAAC,EAAEX,WAAC,CAAC,+BAA+B,EAAEA,WAAC,CAAC;AAC3D,iBAAiB,EAAEA,WAAC,CAAC,qCAAqC,EAAEA,WAAC,CAAC,QAAQ;IACtE,KAAK;IACL,CAAC,EAAE,eAAe,CAAC;IAEnB;IACA,IAAI,gBAAgB,GAAG,MAAM,gBAAgB,SAAS,sBAAsB,CAAC;IAC7E,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,IAAI,CAAC;IACnB,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE;IAC7B,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ;IACzC,QAAQ,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,QAAQ;IACxD,IAAI;IACJ,IAAI,UAAU,CAAC,GAAG,EAAE;IACpB,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;IACnD,IAAI;IACJ,IAAI,OAAO,CAAC,CAAC,EAAE;IACf,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IAC9C;IACA,IAAI;IACJ,IAAI,wBAAwB,GAAG;IAC/B;IACA,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,YAAY;IAC7B,YAAY,KAAK,cAAc;IAC/B,gBAAgB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG;IACzC,gBAAgB;IAChB,YAAY,KAAK,eAAe;IAChC;IACA,gBAAgB,IAAI,CAACT,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;IAC/C,oBAAoB,MAAM,CAAC,8BAA8B,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;IACpF,gBAAgB;IAChB,gBAAgB;IAChB,YAAY,KAAK,OAAO;IACxB,gBAAgB,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG;IAC3C,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IAChD,YAAY,QAAQ,GAAG,CAAC,IAAI;IAC5B,gBAAgB,KAAK,WAAW;IAChC,oBAAoB,IAAI,CAAC,eAAe,GAAG,EAAE;IAC7C,oBAAoB,MAAM,IAAI,GAAG,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;IAChE;IACA,oBAAoB,MAAM,GAAGA,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IACpD,oBAAoB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC;IAC/F,oBAAoB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/D,oBAAoB;IACpB,gBAAgB,KAAK,QAAQ;IAC7B,oBAAoB,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK;IAClD;IACA,oBAAoB,MAAM,GAAGA,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IACpD,oBAAoB;IACpB,oBAAoB,CAACA,eAAK,CAAC,aAAa,CAAC,KAAK;IAC9C;IACA,4BAA4B,IAAI,CAAC,eAAe,IAAIA,eAAK,CAAC,aAAa,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;IACxK,wBAAwB,IAAI,QAAQ,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IACrE,wBAAwB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACtD,wBAAwB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;IACpE,wBAAwB,UAAU,CAAC,MAAM;IACzC,4BAA4B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IACjD,wBAAwB,CAAC,EAAE,GAAG,CAAC;IAC/B;IACA,wBAAwB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IAC5C,wBAAwB,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE;IAC/C,wBAAwB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IAC7C,oBAAoB;IACpB,oBAAoB;IACpB,gBAAgB;IAChB,oBAAoB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IACvC,oBAAoB;IACpB;IACA,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB;IACA,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAC9CP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IAChE,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,EAAE,MAAM,CAAC;AACzDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,OAAO,EAAE;IACnD,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AAClDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,EAAE,MAAM,CAAC;AACzDP,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,UAAU;IAC5B,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AAClDR,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAACd,WAAC,GAAG,YAAY,GAAGE,cAAI,GAAG,OAAO;IAC/C,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;IAC/C,gBAAgB,GAAGV,YAAU,CAAC;IAC9B,IAAIgB,uBAAa,CAAC;IAClB,QAAQ,OAAO,EAAER,WAAC,GAAG,OAAO,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe;IAC9D,QAAQ,QAAQ,EAAE,CAAC,CAAC,EAAEX,WAAC,CAAC,iBAAiB,EAAEE,cAAI,CAAC;AAChD,eAAe,EAAEA,cAAI,CAAC,MAAM,EAAEA,cAAI,CAAC,YAAY,EAAEA,cAAI,CAAC;AACtD;AACA,uBAAuB,EAAEA,cAAI,CAAC;AAC9B,iBAAiB,EAAEF,WAAC,CAAC,2LAA2L,EAAEA,WAAC,CAAC;AACpN;AACA;AACA;AACA,aAAa,EAAEA,WAAC,CAAC,mHAAmH,EAAEE,cAAI,CAAC;AAC3I,iBAAiB,EAAEF,WAAC,CAAC,WAAW,EAAEA,WAAC,CAAC;AACpC,cAAc,EAAEA,WAAC,CAAC;AAClB;AACA;AACA,EAAE,EAAEA,WAAC,CAAC,UAAU;IAChB,KAAK;IACL,CAAC,EAAE,gBAAgB,CAAC;;IC9KpB,IAAIR,YAAU,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAID;IACA;IACA,IAAI,oBAAoB,GAAG,MAAM,oBAAoB,SAAS,wBAAwB,CAAC;IACvF,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3B;IACA,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC;IACrB;IACA,QAAQ,IAAI,CAAC,IAAI,GAAG,EAAE;IACtB,IAAI;IACJ;IACA,IAAI,IAAI,qBAAqB,GAAG;IAChC,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK;IACpD,QAAQ,IAAI,CAACF,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IAChC,YAAY,KAAK,CAAC,MAAM,GAAG,QAAQ;IACnC,QAAQ,IAAI,CAACA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IAC/B,YAAY,IAAI,CAAC,MAAM,GAAG,CAAC,QAAQ;IACnC,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAOA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;IACvC,cAAc;IACd,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,IAAI,KAAK;IACrB,eAAe,IAAI,KAAK,MAAM,EAAE;IAChC,YAAY,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC;IACnD,QAAQ;IACR,IAAI;IACJ,CAAC;AACDC,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAClDP,gBAAU,CAAC;IACX,IAAIM,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAClDP,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,UAAU;IACxB,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACpDtB,gBAAU,CAAC;IACX,IAAIsB,mBAAS,CAAC,CAAC,KAAK,EAAEZ,cAAI,CAAC,SAAS,CAAC;IACrC,CAAC,EAAE,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;IACnD,oBAAoB,GAAGV,YAAU,CAAC;IAClC,IAAIgB,uBAAa,CAAC,EAAE,OAAO,EAAER,WAAC,GAAG,WAAW,EAAE,QAAQ,EAAE,CAAC,iBAAiB,EAAEE,cAAI,CAAC,yBAAyB,EAAE,kBAAkB,CAAC,aAAa,EAAEA,cAAI,CAAC,YAAY,EAAEF,WAAC,CAAC,qCAAqC,EAAEA,WAAC,CAAC,aAAa,CAAC,EAAE,MAAM,EAAEW,kBAAQ,CAAC,eAAe,EAAE;IAC9P,CAAC,EAAE,oBAAoB,CAAC;;ICzDxB,IAAI,UAAU,GAAG,CAAClB,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACvF,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAChI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACrJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAKD;IACA;IACA,IAAI,4BAA4B,GAAG,MAAM,4BAA4B,SAAS,wBAAwB,CAAC;IACvG,IAAI,WAAW,CAAC,GAAG,GAAG,IAAIG,kBAAU,CAAC,EAAE,CAAC,eAAe,EAAE,EAAE;IAC3D,QAAQ,KAAK,EAAE;IACf,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;IACtB;IACA,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC;IACrB;IACA,QAAQ,IAAI,CAAC,IAAI,GAAG,EAAE;IACtB,QAAQ,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,KAAK;IACxC,YAAY,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,YAAY;IAC7C,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC,KAAK;IAC9D,gBAAgB,IAAI,GAAG,GAAG,KAAK,CAAC,cAAc;IAC9C,gBAAgB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;IAC/E,gBAAgB8B,+BAAqB,CAAC,GAAG,CAAC;IAC1C,YAAY;IACZ,QAAQ,CAAC;IACT,IAAI;IACJ,IAAI,kBAAkB,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAACnC,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IACtC,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ;IACzC,IAAI;IACJ;IACA,IAAI,IAAI,qBAAqB,GAAG;IAChC,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAOA,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;IACvC,cAAc;IACd,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI;IACJ,IAAI,YAAY,CAAC,GAAG,EAAE;IACtB,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;IACnC,IAAI;IACJ,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnD,QAAQ,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5D,QAAQ,IAAI,IAAI,KAAK;IACrB,eAAe,IAAI,KAAK,MAAM,EAAE;IAChC,YAAY,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC;IACnD,QAAQ;IACR,aAAa,IAAI,IAAI,IAAI,WAAW,EAAE;IACtC,YAAY,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,GAAG;IAC1C,QAAQ;IACR,IAAI;IACJ,IAAI,qBAAqB,GAAG;IAC5B,QAAQ,KAAK,CAAC,qBAAqB,EAAE;IACrC,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;IAC5E,IAAI;IACJ,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,IAAI,CAAC,MAAM;IACnB,YAAY,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;IACnF,QAAQ,KAAK,CAAC,oBAAoB,EAAE;IACpC,IAAI;IACJ,CAAC;IACD,UAAU,CAAC;IACX,IAAIO,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IAC1D,UAAU,CAAC;IACX,IAAID,eAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAEC,4BAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,EAAE,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IAC1D,UAAU,CAAC;IACX,IAAIe,mBAAS,CAAC,UAAU;IACxB,CAAC,EAAE,4BAA4B,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;IAC5D,UAAU,CAAC;IACX,IAAIA,mBAAS,CAAC,CAAC,IAAI,EAAEZ,cAAI,CAAC,SAAS,CAAC;IACpC,CAAC,EAAE,4BAA4B,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;IAC/D,4BAA4B,GAAG,UAAU,CAAC;IAC1C,IAAIM,uBAAa,CAAC,EAAE,OAAO,EAAER,WAAC,GAAG,oBAAoB,EAAE,QAAQ,EAAE,CAAC,iBAAiB,EAAEE,cAAI,CAAC,yBAAyB,EAAE,kBAAkB,CAAC,YAAY,EAAEA,cAAI,CAAC,UAAU,EAAEA,cAAI,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAES,kBAAQ,CAAC,eAAe,EAAE;IAClO,CAAC,EAAE,4BAA4B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7EhCgB,8BAAU,CAAC,KAAK,CAAC,MAAM,CAAC;;;;;;"}
|