{"version":3,"file":"react-formula.umd.cjs","sources":["../node_modules/.pnpm/@abw+react-context@2.0.3/node_modules/@abw/react-context/dist/react-context.js","../lib/Constants.jsx","../node_modules/.pnpm/@abw+badger-utils@1.0.19/node_modules/@abw/badger-utils/dist/badger-utils.esm.js","../lib/Context.js","../lib/Utils.js","../lib/Config.js","../lib/Status.js","../lib/Form/Context.js","../lib/Form/Children.jsx","../lib/Form/Layout.jsx","../node_modules/.pnpm/@abw+react-one-louder@0.0.5/node_modules/@abw/react-one-louder/dist/react-one-louder.js","../lib/Form.jsx","../lib/Field/Context.js","../lib/Field/Label.jsx","../lib/Input/Handlers.js","../lib/Input/Checkbox.jsx","../lib/Input/Hidden.jsx","../lib/Input/Radio.jsx","../lib/Input/Select.jsx","../lib/Input/Text.jsx","../lib/Input/TextArea.jsx","../lib/Input/index.js","../lib/Field/Prefix.jsx","../lib/Field/Suffix.jsx","../lib/Field/Inputs.jsx","../lib/Field/Input.jsx","../lib/Field/Message.jsx","../lib/Field/Layout.jsx","../lib/Field/Children.jsx","../lib/Field/Prepare.jsx","../lib/Field.jsx","../lib/Fields.jsx","../lib/Fieldset.jsx","../lib/Control/Button.jsx","../lib/Control/Cancel.jsx","../lib/Control/Reset.jsx","../lib/Control/Submit.jsx","../lib/Control/CancelSubmit.jsx","../lib/Control/ResetSubmit.jsx","../lib/Control/CancelResetSubmit.jsx","../lib/Field/UseField.jsx","../lib/Form/Changed.jsx","../lib/Form/Debug.jsx","../lib/Form/ErrorObject.jsx","../lib/Form/Error.jsx","../lib/Form/Errors.jsx","../lib/BEM.js"],"sourcesContent":["var g = Object.defineProperty;\nvar b = (t, e, n) => e in t ? g(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;\nvar c = (t, e, n) => (b(t, typeof e != \"symbol\" ? e + \"\" : e, n), n);\nimport { jsx as u } from \"react/jsx-runtime\";\nimport a from \"react\";\nconst $ = (t, e = {}) => {\n  const n = a.createContext(e);\n  return { Context: n, Provider: (o) => /* @__PURE__ */ u(\n    t,\n    {\n      ...o,\n      render: (d) => /* @__PURE__ */ u(n.Provider, { value: d, children: o.children })\n    }\n  ), Consumer: (o) => (d) => /* @__PURE__ */ u(n.Consumer, { children: (f) => /* @__PURE__ */ u(o, { ...f, ...d }) }), Use: () => a.useContext(n) };\n};\nfunction x(t = {}, e = {}, n = {}) {\n  return Object.entries(e).reduce(\n    (r, [i, s]) => {\n      const o = n[s];\n      return o !== null && typeof o < \"u\" && (r[i] = o), r;\n    },\n    { ...t }\n  );\n}\nfunction C(t, e = []) {\n  return (typeof e == \"string\" ? e.split(/,\\s*|\\s+/) : e).reduce(\n    (r, i) => {\n      const s = t[i] || P(`Cannot expose non-existent action method: ${i}`);\n      return r[i] = s.bind(t), r;\n    },\n    {}\n  );\n}\nfunction m(t, e) {\n  const n = t.debug ?? e.debug, r = h(t.debugPrefix ?? e.debugPrefix, t), i = h(t.debugColor ?? e.debugColor, t);\n  return n ? r ? (s, ...o) => console.log(\n    `%c${r}%c${s}`,\n    `color: ${i}`,\n    \"color:black\",\n    ...o\n  ) : console.log.bind(console) : () => {\n  };\n}\nfunction h(t, e) {\n  return typeof t == \"function\" ? t(e) : t;\n}\nfunction P(...t) {\n  throw new Error(t.join(\"\"));\n}\nclass l extends a.Component {\n  constructor(e) {\n    super(e);\n    const n = this.constructor;\n    this.debug = m(e, n), this.state = x(\n      n.initialState,\n      n.initialProps,\n      e\n    ), this.actions = C(this, n.actions);\n  }\n  getContext() {\n    return {\n      ...this.props,\n      // properties passed to the context\n      ...this.state,\n      // internal state\n      ...this.actions\n      // callable action functions mapped to methods\n    };\n  }\n  getRenderProps() {\n    return this.getContext();\n  }\n  render() {\n    return this.props.render(\n      this.getRenderProps()\n    );\n  }\n}\nc(l, \"initialState\", {}), c(l, \"initialProps\", {}), c(l, \"actions\", []);\nexport {\n  l as Context,\n  $ as Generator\n};\n","export const ATTACH_FIELD = 'attach_field'\nexport const DETACH_FIELD = 'detach_field'\nexport const BLANK        = ''\nexport const BLUR         = 'blur'\nexport const BLURRED      = 'blurred'    // ??\n// export const CANCEL       = 'cancel'\nexport const CHANGED      = 'changed'\nexport const CHECKBOX     = 'checkbox'\nexport const CONTROLS     = 'controls'\n// export const DEBUG        = 'debug'\nexport const DEFAULT      = 'default'\nexport const DISABLED     = 'disabled'\nexport const ERROR        = 'error'\nexport const ERRORS       = 'errors'\nexport const FIELD        = 'field'\nexport const FOCUS        = 'focus'\nexport const FOCUSSED     = 'focussed'   // ??\nexport const FORMULA      = 'formula'\nexport const FULFILLED    = 'fulfilled'\nexport const INVALID      = 'invalid'\nexport const OPTIONAL     = 'Optional'\nexport const RADIO        = 'radio'\nexport const REJECTED     = 'rejected'\nexport const REQUIRED     = 'Required'\nexport const REQUIRED_MSG = 'A value is required'\nexport const RESET        = 'reset'\nexport const SELECT       = 'select'\nexport const SET          = 'set'\nexport const SET_VALUE    = 'set_value'\nexport const SET_VALUES   = 'set_values'\nexport const SET_FIELD    = 'set_field'\n// export const SUBMIT       = 'submit'\nexport const SUBMITTED    = 'submitted'\nexport const SUBMITTING   = 'submitting'\nexport const TEXT         = 'text'\nexport const TEXTAREA     = 'textarea'\nexport const VALID        = 'valid'\nexport const VALIDATING   = 'validating'\nexport const VALIDATED    = 'validated'\n\nexport const INPUT_ATTRS = [\n  'id', 'name', 'value', 'checked', 'disabled', 'placeholder',\n  'autoComplete', 'onFocus', 'onBlur', 'size', 'min', 'max', 'minLength',\n  'maxLength', 'step', 'pattern', 'list'\n]\nexport const FORM_ATTRS = [\n  'id', 'name', 'action', 'method', 'encType'\n]\n\n// options can be defined as an array of simple booleans, strings, or numbers,\n// e.g. options = [ true, 'yes', 23 ], otherwise they must be objects\n// containing value and text, e.g. options = [ { value: 11, text: 'eleven}, ... ]\nexport const valueTypes = {\n  boolean: true,\n  string:  true,\n  number:  true,\n}\n\n","function n(n){return\"boolean\"==typeof n}function t(n){return\"string\"==typeof n}function e(n){return\"number\"==typeof n}function r(n){return Number.isInteger(n)}function o(n){return e(n)&&!r(n)}function u(n){return Array.isArray(n)}function i(n){return\"function\"==typeof n}function c(n){return n instanceof RegExp}function s(n){return\"object\"==typeof n&&!u(n)&&!l(n)}function a(n){return void 0===n}function l(n){return null===n}function f(n){return!(a(n)||l(n))}function p(...n){return n.every((n=>f(n)))}function d(n){return!f(n)}function m(...n){return n.find((n=>f(n)))}const h=(n,t)=>n.replace(/<(\\w+)>/g,((e,r)=>{const o=t[r];return d(o)&&y(`Invalid variable expansion <${r}> in message format: ${n}`),o}));function y(...n){throw new Error(n.join(\"\"))}function $(n,t){throw new Error(h(n,t))}function g(n){throw n}function v(){}function w(){return Intl.DateTimeFormat().resolvedOptions().locale}let b={locale:w(),currency:\"GBP\",currencySign:\"£\",thousands:\",\"};function j(n={}){b={...b,...n}}const I=(n,t,e=1)=>{const r=t<n?-Math.abs(e):e;return Array(1+Math.floor(Math.abs((t-n)/e))).fill(n).map(((n,t)=>n+t*r))};function k(n,t={}){return new Intl.NumberFormat(t.locale||b.locale,t).format(n)}function x(n,t={}){return k(n,{style:\"currency\",currency:b.currency,...t})}function O(n,t=b.thousands){if(d(n))return\"\";for(var e=n.toString().split(\".\"),r=/(\\d+)(\\d{3})/;r.test(e[0]);)e[0]=e[0].replace(r,`$1${t}$2`);return e.join(\".\")}function A(n){return d(n)?[]:t(n)?n.length?n.split(/,\\s*|\\s+/):[]:u(n)?n:[n]}function C(n,t=!0,e={}){if(s(n))return n;return A(n).reduce(((n,e)=>(n[e]=i(t)?t(e):t,n)),e)}function T(n){return t(n)&&0!==n.length?n.split(/\\s*\\n+\\s*/).filter((function(n){return n.length>0})):[]}function B(n,t=\" \",e=t){let r=[...n];const o=r.pop();return r.length?[r.join(t),o].join(e):o}function E(n,t=\", \",e=\" and \"){return B(n,t,e)}function F(n,t=\", \",e=\" or \"){return B(n,t,e)}function L(n){return n.charAt(0).toUpperCase()+n.slice(1).toLowerCase()}function M(n){return n.replace(/(\\w+)/g,L)}function N(n){return n.split(\"/\").map((n=>n.split(\"_\").map(L).join(\"\"))).join(\"/\")}function S(n){return n.split(\"/\").map((n=>n.split(\"_\").map(((n,t)=>t?L(n):n)).join(\"\"))).join(\"/\")}function P(n,t={}){const e=t[n];if(f(e))return e;let r;return n.match(/(ss?|sh|ch|x)$/)?n+\"es\":(r=n.match(/(.*?[^aeiou])y$/))?r[1]+\"ies\":n.match(/([^s\\d\\W])$/)?n+\"s\":n}function W(n,t={}){const e=t[n];return f(e)?e:n.match(/(ss|sh|ch|x)es$/)?n.replace(/es$/,\"\"):n.match(/([^aeiou])ies$/)?n.replace(/ies$/,\"y\"):n.match(/([^s\\d\\W])s$/)?n.replace(/s$/,\"\"):n}function _(n,t,e,r=\"no\"){return(n?O(n):r)+\" \"+(1===n?t:e||P(t))}function D(n,t,e,r=\"No\"){return _(n,t,e,r)}const G=L,R=M,U=P,q=P;function z(n){if(i(n))return n;if(c(n))return t=>n.test(t);if(s(n))return t=>Boolean(n[t]);if(u(n)||t(n)){const t=C(n);return n=>Boolean(t[n])}y(\"Invalid selector() specification: \"+n)}function H(n,t={}){const e=t.include&&z(t.include),r=t.exclude&&z(t.exclude);return Z(C(n)).reduce(((o,[u,i])=>(e&&!e(u,i,n,o)||r&&r(u,i,n,o)||(t.key&&(u=t.key(u,i,n,o)),t.value&&(i=t.value(i,u,n,o)),o[u]=i),o)),{})}function J(n,t){return Object.keys(n).reduce(((e,r)=>(e[r]=t(n[r],r),e)),{})}const K=(n,t,e={})=>{let r={},o={delete:!1,...e};const u=z(t);return Object.keys(n).map((t=>{if(u(t)){let e=n[t];o.delete&&delete n[t],o.key&&(t=o.key(t)),o.value&&(e=o.value(e)),r[t]=e}})),r},Q=K,V=(n,t)=>{const e=n[t];return delete n[t],e},X=Object.keys,Y=Object.values,Z=Object.entries,nn=(n,t)=>parseInt(n[t]||0),tn=(n,t)=>parseFloat(n[t]||0),en=(n,t)=>(n[t]||\"\").toString(),rn=n=>(t,e)=>nn(t,n)-nn(e,n),on=n=>(t,e)=>tn(t,n)-tn(e,n),un=n=>(t,e)=>{let r=en(t,n).toLowerCase(),o=en(e,n).toLowerCase();return r>o?1:o>r?-1:0},cn={num:on,int:rn,str:un,number:on,integer:rn,string:un},sn=n=>n,an=n=>(t,e)=>n(e,t),ln={asc:sn,desc:an,ascending:sn,descending:an},fn=n=>{const e=A(n).map((n=>{if(i(n))return n;if(t(n)){const t=n.match(/^(\\w+)(?::(\\w+))?(?::(\\w+))?$/)||y(`Invalid sort field: ${n}`),e=cn[t[2]||\"string\"]||y(`Invalid sort type \"${t[2]}\" in sort field: ${n}`);return(ln[t[3]||\"asc\"]||y(`Invalid sort order \"${t[3]}\" in sort field: ${n}`))(e(t[1]))}y(`Invalid sort field: ${n}`)}));return(n,t)=>{for(let r=0;r<e.length;r++){const o=(0,e[r])(n,t);if(0!==o)return o}return 0}};function pn(n,t=300){let e;return(...r)=>{clearTimeout(e),e=setTimeout((()=>n.apply(this,r)),t)}}function dn(n){return new Promise((t=>setTimeout(t,n)))}export{D as Inflect,sn as ascendingOrder,L as capitalise,M as capitaliseWords,G as capitalize,R as capitalizeWords,O as commas,x as currency,pn as debounce,w as defaultLocale,an as descendingOrder,v as doNothing,Z as entries,K as extract,y as fail,$ as failMsg,m as firstValue,h as format,k as formatNumber,f as hasValue,H as hash,p as haveValue,_ as inflect,nn as integerField,rn as integerSort,u as isArray,n as isBoolean,o as isFloat,i as isFunction,r as isInteger,l as isNull,e as isNumber,s as isObject,c as isRegExp,t as isString,a as isUndefined,B as joinList,E as joinListAnd,F as joinListOr,X as keys,fn as multiSort,d as noValue,tn as numberField,on as numberSort,J as objMap,Q as objSubset,P as plural,U as pluralise,q as pluralize,I as range,V as remove,g as rethrow,z as selector,j as setNumberDefaults,W as singular,dn as sleep,S as snakeToCamel,N as snakeToStudly,ln as sortOrders,cn as sortTypes,C as splitHash,T as splitLines,A as splitList,en as stringField,un as stringSort,Y as values};\n//# sourceMappingURL=badger-utils.esm.js.map\n","import { Context as BaseContext } from '@abw/react-context'\nimport { CHANGED, INVALID, RESET, VALID, VALIDATING } from './Constants.jsx'\nimport { doNothing, isFunction } from '@abw/badger-utils'\n\n// Base class for form and field contexts that has function to set status\n\nclass Context extends BaseContext {\n  constructor(props) {\n    super(props)\n    this.newStatus = this.constructor.newStatus(props)\n    this.state = {\n      status: this.newStatus(RESET)\n    }\n  }\n  setStatus(status, addState={}, callback=doNothing) {\n    if (! this.mounted) {\n      return\n    }\n    this.setState(\n      oldState => ({\n        ...(isFunction(addState) ? addState(oldState) : addState),\n        status: this.newStatus(status, oldState.status)\n      }),\n      callback\n    )\n  }\n  setResetState(state, callback) {\n    this.setStatus(RESET, state, callback)\n  }\n  setChangedState(state, callback) {\n    this.setStatus(CHANGED, state, callback)\n  }\n  setValidatingState(state, callback) {\n    this.setStatus(VALIDATING, state, callback)\n  }\n  setInvalidState(state, callback) {\n    this.setStatus(INVALID, state, callback)\n  }\n  setValidState(state, callback) {\n    this.setStatus(VALID, state, callback)\n  }\n}\n\nexport default Context","import { hasValue, isArray, isBoolean, isFunction, isObject } from '@abw/badger-utils'\nimport { FORM_ATTRS, INPUT_ATTRS, valueTypes } from './Constants.jsx'\n\nexport const toArray = item =>\n  isArray(item)\n    ? item\n    : [item]\n\nexport function attrs(props, list) {\n  return list.reduce(\n    (hash, a) => {\n      if (hasValue(props[a])) {\n        hash[a] = props[a]\n      }\n      return hash\n    },\n    { }\n  )\n}\n\nexport const inputAttrs = field => attrs(field, INPUT_ATTRS)\nexport const formAttrs  = form => attrs(form, FORM_ATTRS)\nexport const joinClasses = classes => classes.filter(hasValue).join(' ')\n\nexport const setKeys = props =>\n  Object.entries(props)\n    .filter( ([ , value]) => value )\n    .map( ([key]) => key )\n\nexport const classes = (...inputs) => joinClasses(\n  inputs.flatMap(\n    input =>\n      isObject(input)\n        ? setKeys(input)\n        : input\n  )\n)\n\nexport const inputClasses = field =>\n  classes(field.inputClass, field.inline && 'inline')\n\nexport const flexGapSpaceClasses = (props, ...more) => {\n  const { gap, space, stack, className } = props\n  return className\n    ? className\n    : space\n      ? classes('flex', 'space', ...more)\n      : classes(\n        'flex',\n        (gap   ? `gap-h-${gap}`   : null),\n        (stack ? `stack-${stack}` : null),\n        ...more\n      )\n}\n\nexport const gridGapClasses = (props, ...more) => {\n  const { grid, gap, stack, className } = props\n  return className\n    ? className\n    : grid\n      ? classes(\n        `grid-${grid}`,\n        (gap   ? `gap-h-${gap}`   : null),\n        (stack ? `stack-${stack}` : null),\n        ...more\n      )\n      : classes(...more)\n}\n\nexport const selectClass = (classes, name, defaultClass=name) =>\n  classes?.[name] || defaultClass\n\nexport const selectClasses = (classes, ...names) =>\n  joinClasses(\n    names.map( name => selectClass(classes, name) )\n  )\n\nexport const propClasses = (props, spec, ...more) =>\n  joinClasses(\n    Object.entries(spec).reduce(\n      (classes, [prop, cls]) => {\n        if (props[prop]) {\n          classes.push(cls)\n        }\n        return classes\n      },\n      [...more]\n    )\n  )\n\nexport const statusClasses = (status, classes={}, ...more) =>\n  joinClasses(\n    Object.entries(status).reduce(\n      (all, [name, set]) => {\n        if (set) {\n          all.push(classes[name] || name)\n        }\n        return all\n      },\n      [...more]\n    )\n  )\n\nexport const fieldClass = field => {\n  const {\n    status,\n    className,\n    classes,\n    required,\n    showRequired,\n    showOptional,\n    // inline\n  } = field\n  return statusClasses(\n    status,\n    classes,\n    selectClass(classes, 'field'),\n    className,\n    // inline ? 'inline' : null,\n    (showRequired && required) ? 'required' : null,\n    (showOptional && ! required) ? 'optional' : null,\n  )\n}\n\n\nexport const valueOption = option =>\n  valueTypes[typeof option]\n    ? { value: option, text: option }\n    : option\n\nexport const passValue = value => value\n\nexport const callFunctions = (...functions) => function(...args) {\n  for (let fn of functions.filter(hasValue)) {\n    fn(...args)\n  }\n}\n\nexport const maybeFunction = (fn, ...args) =>\n  isFunction(fn)\n    ? fn(...args)\n    : fn\n\nexport function lengthEmpty(value) {\n  if (isBoolean(value)) {\n    return [1, ! value]\n  }\n  else if (hasValue(value)) {\n    const length = value?.toString().length ?? 0\n    const empty  = length === 0\n    return [length, empty]\n  }\n  return [0, true]\n}\n\n","import { splitHash } from '@abw/badger-utils'\nimport {\n  OPTIONAL,\n  REQUIRED, REQUIRED_MSG, SUBMITTING, VALIDATING\n} from './Constants.jsx'\n\n// default properties for a form\nexport const formDefaultProperties = {\n  // className:         FORMULA,\n  submittingClass:   SUBMITTING,\n  validatingClass:   VALIDATING,\n  // headerClass:       'header',\n  // bodyClass:         'body',\n  // footerClass:       'footer',\n  // errorsClass:       ERRORS,\n  // errorsInHeader:    true,\n  resetOnSuccess:    true,\n  focusInvalidField: true,\n  enctype:           'application/x-www-form-urlencoded',\n  method:            'post',\n  errorsTitle:       n => `Form Error${n > 1 ? 's' : ''}`,\n  errorsPrompt:      n => `Please correct ${n === 1 ? 'this problem' : 'these problems'} and re-submit:`,\n}\n\n// default properties for a field\nexport const fieldDefaultProperties = {\n  validateOnChange:  false,\n  validateOnBlur:    false,\n  validateOnInvalid: true,\n  showRequired:      false,\n  showOptional:      false,\n  validMessage:      null,\n  minValidateLength: 1,\n  requiredMessage:   REQUIRED_MSG,\n  requiredLabel:     REQUIRED,\n  optionalLabel:     OPTIONAL,\n}\n\n\n// properties that can be defined on the form and are inherited by fields\nexport const formFieldProperties = splitHash([\n  'showRequired', 'requiredLabel',\n  'showOptional', 'optionalLabel',\n  'validateOnChange', 'validateOnBlur', 'validateOnInvalid',\n  'minValidateLength', 'validMessage', 'requiredMessage',\n  'classes', 'wide'\n])\n\n","import {\n  CHANGED, DISABLED, FOCUS, INVALID, SUBMITTED, SUBMITTING, VALID, VALIDATING\n} from './Constants.jsx'\n\n// Forms and fields maintain a status in their internal state which contains\n// boolean flags to indicate if the component is changed, valid, focussed,\n// etc.\nconst unvalidated = {\n  [VALID]: false,\n  [INVALID]: false,\n}\nconst changed = {\n  ...unvalidated,\n  [CHANGED]: true\n}\nconst validating = {\n  ...unvalidated,\n  [VALIDATING]: true\n}\nconst invalid = {\n  [VALID]: false,\n  [INVALID]: true,\n  [VALIDATING]: false\n}\nconst valid = {\n  [VALID]: true,\n  [INVALID]: false,\n  [VALIDATING]: false\n}\nconst blur = {\n  [FOCUS]: false\n}\nconst focus = {\n  [FOCUS]: true\n}\nconst submitting = {\n  [SUBMITTING]: true,\n  [SUBMITTED]: false\n}\nconst submitted = {\n  [SUBMITTING]: false,\n  [SUBMITTED]: true\n}\n\n// Some of these states are common to both forms and fields.\nconst commonStatusChanges = {\n  changed, validating, invalid, valid\n}\n\n// Factory to return a function to select a new status\nconst newStatus = statusChanges =>\n  (status, oldStatus={}) => ({\n    ...oldStatus,\n    ...(statusChanges[status] || { [status]: true })\n  })\n\n// Factory to return a function to select a new form status\nexport const newFormStatus = () => {\n  const reset = {\n    ...unvalidated,\n    [CHANGED]:    false,\n    [VALIDATING]: false,\n    [SUBMITTED]:  false,\n    [SUBMITTING]: false,\n  }\n  return newStatus({\n    ...commonStatusChanges,\n    reset, submitting, submitted\n  })\n}\n\n// Factory to return a function to select a new field status\nexport const newFieldStatus = (props={}) => {\n  const reset = {\n    ...unvalidated,\n    [CHANGED]:    false,\n    [VALIDATING]: false,\n    [FOCUS]:      false,\n    [DISABLED]:   props.disabled || false\n  }\n  return newStatus({\n    ...commonStatusChanges,\n    reset, focus, blur\n  })\n}\n\n","import BaseContext from '../Context.js'\nimport { Generator } from '@abw/react-context'\nimport { FULFILLED, SUBMITTED, SUBMITTING } from '../Constants.jsx'\nimport { doNothing, extract, isArray, isString } from '@abw/badger-utils'\nimport { callFunctions } from '../Utils.js'\nimport { formDefaultProperties, formFieldProperties } from '../Config.js'\nimport { newFormStatus } from '../Status.js'\n\nclass FormContext extends BaseContext {\n  static newStatus    = newFormStatus\n  static debug        = false\n  static debugPrefix  = 'Form > '\n  static debugColor   = 'rebeccapurple'\n  static actions      = [\n    'fieldSpec', 'attachField', 'detachField',\n    'setFocus',\n    'reset',\n    'validate',\n    'submit',\n    'setValue', 'setValues', 'setHidden',\n    // should this be kept internal?\n    'setStatus',\n    'setResetState', 'setChangedState',\n    'setValidatingState', 'setValidState', 'setInvalidState',\n    'setSubmittingState', 'setSubmittedState',\n    'handleError'\n  ]\n\n  constructor(props) {\n    super(props)\n    this.fields = { }\n\n    const {\n      // fields={ },\n      hidden={ }\n    } = props\n    const initialValues = { ...hidden }\n    const defaults = {\n      ...formDefaultProperties,\n      ...this.props,\n    }\n\n    this.state = {\n      // ...formDefaultProperties,\n      ...defaults,\n      ...this.state,\n      initialValues,\n      values: { ...initialValues },\n      errors: [ ],\n      error: null\n    }\n\n    if (this.props.onLoad) {\n      this.props.onLoad(this)\n    }\n  }\n  componentDidMount() {\n    this.debug('componentDidMount()')\n    this.mounted = true\n  }\n  componentWillUnmount() {\n    this.debug('componentWillUnmount()')\n    this.mounted = false\n  }\n\n  // Fields\n  fieldSpec(name, props) {\n    const defaults = this.props.fields?.[name] ?? { }\n    const value    = props.value ?? this.props.values?.[name]\n    return {\n      name,\n      ...extract(this.props, formFieldProperties),\n      ...defaults,\n      ...props,\n      value\n    }\n  }\n  attachField(name, field) {\n    this.debug(`attaching ${name} field`)\n    this.fields[name] = field\n    this.setState(\n      state => ({\n        values: {\n          ...state.values,\n          [name]: field.state.value\n        }\n      })\n    )\n  }\n  detachField(name) {\n    this.debug(`detaching ${name} field`)\n    delete this.fields[name]\n  }\n\n  setSubmittingState(state, callback) {\n    this.setStatus(SUBMITTING, state, callback)\n  }\n  setSubmittedState(state, callback) {\n    this.setStatus(SUBMITTED, state, callback)\n  }\n\n  //--------------------------------------------------------------------------\n  // Field focus\n  //--------------------------------------------------------------------------\n  setFocus(name, event) {\n    event?.preventDefault()\n    this.fields[name]?.setFocus()\n  }\n\n  //--------------------------------------------------------------------------\n  // Set/Reset\n  //--------------------------------------------------------------------------\n  reset(e) {\n    if (! this.mounted) {\n      return\n    }\n    this.debug('reset()')\n    e?.preventDefault()\n    this.resetFields()\n    this.setResetState(\n      {\n        errors: [ ],\n        error: null,\n      },\n      this.props.onReset\n    )\n  }\n  resetFields() {\n    this.debug('resetFields()')\n    Object.values(this.fields).forEach(\n      field => field.reset()\n    )\n  }\n  setValue(name, value) {\n    // JFDI - called by fields when they change\n    this.debug(`setValue(${name}, ${value})`)\n    /*\n    this.setChangedState(\n      {\n        values: {\n          ...this.state.values,\n          [name]: value\n        }\n      }\n    )\n    */\n    this.setChangedState(\n      state => ({\n        ...state,\n        values: {\n          ...state.values,\n          [name]: value\n        }\n      })\n    )\n  }\n  setValues(values, event) {\n    this.debug('setValues():', values)\n    event?.preventDefault()\n    Object.entries(values).forEach(\n      ([name, value]) => this.fields[name]?.setValue(value)\n    )\n  }\n\n  setHidden(values) {\n    const hidden = {\n      ...this.state.hidden,\n      ...values\n    }\n    this.setState({ hidden })\n  }\n\n  //--------------------------------------------------------------------------\n  // Submit\n  //--------------------------------------------------------------------------\n  submit(event) {\n    this.debug('submit()')\n    event?.preventDefault()\n    this.validate()\n      .then( submit => this.handleSubmit(submit) )\n      .catch( submit => this.debug('Form is NOT valid:', submit) )\n  }\n  validate() {\n    this.debug('validate()')\n    this.setValidatingState()\n\n    return new Promise( this.validator() )\n      .then(\n        submit => {\n          this.debug('validate passed: ', submit)\n          this.setValidState(\n            { submit, error: null, errors: [ ] },\n            this.props.onValid\n          )\n          return submit\n        }\n      )\n      .catch(\n        submit => {\n          this.debug('validate failed: ', submit)\n          this.handleError({\n            error: submit.error, errors: submit.errors\n          })\n          throw submit\n        }\n      )\n  }\n\n  validator() {\n    return (resolve, reject) => Promise.allSettled(\n      Object.values(this.fields).map(\n        field => field.validate()\n      )\n    )\n      .then(\n        results => results.reduce(\n          (submit, {status, value, reason}) => {\n            if (status === FULFILLED) {\n              Object.assign(\n                submit.values,\n                value.data || { [value.name]: value.value }\n              )\n            }\n            else {\n              submit.errors.push(reason)\n            }\n            return submit\n          },\n          {\n            values: { ...this.state.values },\n            errors: [ ],\n          }\n        )\n      )\n      .then(\n        submit => {\n          this.debug('field validation complete: ', submit)\n          if (submit.errors?.length) {\n            this.debug('errors detected, rejecting: ', submit)\n            return reject(submit)\n          }\n          if (this.props.validate) {\n            this.debug('validating form: ', submit)\n            return this.props.validate(\n              submit.values, this.getContext()\n            )\n              .then( values => resolve({ ...submit, values }) )\n              .catch( failed => reject(failed) )\n          }\n          return resolve(submit)\n        }\n      )\n  }\n\n  handleSubmit(submit) {\n    this.debug('Form is valid, handling submission:', submit)\n    if (! this.props.onSubmit) {\n      window.alert(\n        \"You haven't defined an onSubmit handler: \" + JSON.stringify(submit.values)\n      )\n      return\n    }\n    this.setSubmittingState(\n      { },\n      async () => {\n        this.debug('calling onSubmit handler: ', submit)\n        try {\n          const response = await this.props.onSubmit(submit.values, this.getContext())\n          this.debug('onSubmit response:', response)\n          this.setSubmittedState()\n          if (response?.ok || response?.status === 200) {\n            this.debug(`Success response ok:${response?.ok} status:${response?.status}`)\n            this.handleSuccess(response)\n          }\n          else if (response?.status >= 400 && response.status <= 500) {\n            this.debug(`Error response status:${response?.status}`)\n            this.handleError(response.data)\n          }\n          else {\n            throw new Error(`Unknown response: ${response?.status}`)\n          }\n        }\n        catch (error) {\n          this.debug('onSubmit error:', error)\n          this.handleError(\n            isString(error)\n              ? { error }\n              : error instanceof Error\n                ? { error: error.message }\n                : error\n          )\n        }\n      }\n    )\n  }\n  handleSuccess(response) {\n    this.debug('handleSuccess()', response)\n    const onSuccess = this.props.onSuccess || doNothing\n    this.setValidState(\n      { },\n      callFunctions(\n        () => onSuccess(response),\n        this.state.resetOnSuccess ? () => this.resetFields() : null\n      )\n    )\n  }\n  handleError(params) {\n    // TODO: reset transient fields, reset form, etc\n    // extract error/errors into state\n    this.debug('handleError()', params)\n    const firstField = isArray(params?.errors) && this.fieldErrors(params.errors)\n\n    // onFailure is provided as an alias for onError for backwards compatibility\n    const onError = this.props.onError || this.props.onFailure || doNothing\n\n    this.setInvalidState(\n      params,\n      callFunctions(\n        () => onError(params),\n        firstField\n          ? () => firstField.setFocus()\n          : null\n      )\n    )\n  }\n  fieldErrors(errors) {\n    const fields = errors.reduce(\n      (fields, error) => {\n        const name = error.name ?? error.param ?? error.field\n        const { message } = error\n        const field = name && this.fields[name]\n        if (field) {\n          error.label ||= field.props.label\n          field.setInvalidState({ message })\n          fields.push(field)\n        }\n        return fields\n      },\n      [ ]\n    )\n    return this.state.focusInvalidField && fields.length\n      ? fields[0]\n      : null\n  }\n\n  //--------------------------------------------------------------------------\n  // render\n  //--------------------------------------------------------------------------\n  getContext() {\n    // console.log('getContext form props: ', this.props)\n    const context = {\n      // ...formDefaultProperties,\n      // ...this.props,    // properties passed to the context\n      ...this.state,    // internal state\n      ...this.actions,  // callable action functions mapped to methods\n    }\n    return context\n  }\n}\n\nconst generated = Generator(FormContext)\nexport const { Context, Provider, Consumer, Use: useForm } = generated\nexport default generated","import React from 'react'\nimport { isFunction } from '@abw/badger-utils'\nimport { Context } from './Context.js'\nimport { toArray } from '../Utils.js'\n\nexport const Children = ({\n  children\n}) =>\n  toArray(children).map(\n    (child, n) => isFunction(child)\n      ? <Context.Consumer key={n}>\n          {child}\n        </Context.Consumer>\n      : child\n  )\n\nexport default Children\n","import React from 'react'\nimport { useForm } from './Context.js'\nimport { formAttrs } from '../Utils.js'\nimport Children from './Children.jsx'\n\nexport const Layout = ({\n  children\n}) => {\n  const form = useForm()\n  const {\n    submit,\n    className\n  } = form\n  const attrs = formAttrs(form)\n\n  return (\n    <form className={className} {...attrs} onSubmit={submit} noValidate>\n      <Children>\n        {children}\n      </Children>\n    </form>\n  )\n}\n\nexport default Layout\n\n","import { jsx as s } from \"react/jsx-runtime\";\nimport l, { createContext as C } from \"react\";\nconst c = C();\nfunction f(n) {\n  return typeof n == \"function\";\n}\nfunction d(n) {\n  return typeof n == \"object\" && !j(n) && !y(n);\n}\nfunction j(n) {\n  return Array.isArray(n);\n}\nfunction y(n) {\n  return n === null;\n}\nfunction b(n = {}, t = !1, e = {}) {\n  if (!t)\n    return e;\n  let o = {};\n  const r = f(t) ? t(n) : n[t];\n  return d(r) ? Object.assign(o, r, e) : f(r) ? Object.assign(o, e, r(e, n)) : Object.assign(o, e), o;\n}\nconst h = (n) => ({ Context: c, Provider: ({ children: r, ...i }) => /* @__PURE__ */ s(c.Provider, { value: { ...n, ...i }, children: r }), Consumer: (r) => (i) => /* @__PURE__ */ s(c.Consumer, { children: (u) => /* @__PURE__ */ s(r, { ...u, ...i, context: u }) }), Component: (r, i = r.displayName || r.name) => l.forwardRef(\n  (u, m) => /* @__PURE__ */ s(c.Consumer, { children: (a) => /* @__PURE__ */ s(r, { ...b(a, i, u), ref: m }) })\n) }), g = h(), P = g.Component;\nexport {\n  g as Theme,\n  P as Themed,\n  h as Themer\n};\n//# sourceMappingURL=react-one-louder.js.map\n","import React         from 'react'\nimport DefaultLayout from './Form/Layout.jsx'\nimport { Provider }  from './Form/Context.js'\nimport { Themed }    from './Theme.jsx'\n\n// TODO: render options like field\n\nconst Form = ({\n  children,\n  Layout=DefaultLayout,\n  ...props\n}) => {\n  return (\n    <Provider {...props}>\n      <Layout>\n        {children}\n      </Layout>\n    </Provider>\n  )\n}\n\nexport default Themed(Form, 'Form')\n","import  BaseContext from '../Context.js'\nimport { Generator } from '@abw/react-context'\nimport { BLUR, FOCUS } from '../Constants.jsx'\nimport { callFunctions, lengthEmpty } from '../Utils.js'\nimport { createRef } from 'react'\nimport { doNothing, isObject, isString } from '@abw/badger-utils'\nimport { fieldDefaultProperties } from '../Config.js'\nimport { newFieldStatus } from '../Status.js'\n\nclass FieldContext extends BaseContext {\n  static newStatus    = newFieldStatus\n  static debug        = false\n  static debugPrefix  = props => `Field [${props.name}] > `\n  static debugColor   = 'teal'\n  static actions      = [\n    // 'set',\n    'onFocus', 'onBlur', 'onChange',\n    'setFocus', 'setValue', 'setValid', 'setInvalid', 'reset',\n    // 'setStatus',\n    'setResetState', 'setChangedState',\n    'setValidatingState', 'setValidState', 'setInvalidState',\n    'setFocusState', 'setBlurState',\n  ]\n  constructor(props) {\n    super(props)\n    this.name = props.name\n\n    const { value } = props\n    const initialValue = value\n\n    this.form = this.props.form\n    this.state = {\n      ...this.state,\n      initialValue,\n      value,\n      error: null\n    }\n    this.debug('initial state:', this.state)\n\n    this.inputRef = createRef()\n    this.resetRef = createRef()\n\n    this.on = {\n      load:    this.contextFunction(this.props.onLoad),\n      focus:   this.contextFunction(this.props.onFocus),\n      blur:    this.contextFunction(this.props.onBlur),\n      change:  this.contextFunction(this.props.onChange),\n      valid:   this.contextFunction(this.props.onValid),\n      invalid: this.contextFunction(this.props.onInvalid),\n    }\n    this.on.load()\n    // if (this.props.onLoad) {\n    // this.props.onLoad(this)\n    // }\n  }\n  contextFunction(fn) {\n    return fn\n      ? () => fn(this.getContext())\n      : doNothing\n  }\n  componentDidMount() {\n    this.debug('componentDidMount')\n    this.mounted = true\n    this.form.attachField(this.props.name, this)\n  }\n  componentWillUnmount() {\n    this.debug('componentWillUnmount')\n    this.mounted = false\n    this.form.detachField(this.props.name)\n  }\n  setFocusState(state, callback) {\n    return this.setStatus(FOCUS, state, callback)\n  }\n  setBlurState(state, callback) {\n    return this.setStatus(BLUR, state, callback)\n  }\n  onFocus() {\n    this.setFocusState(\n      { },\n      this.on.focus\n    )\n  }\n  onBlur() {\n    this.setBlurState(\n      { },\n      this.props.validateOnBlur\n        ? () => this.validation(this.on.blur)\n        : this.on.blur\n    )\n  }\n  setFocus(e) {\n    e?.preventDefault()\n    // imperatively focus\n    this.inputRef?.current?.focus()\n  }\n\n  //--------------------------------------------------------------------------\n  // Change and reset\n  //--------------------------------------------------------------------------\n  onChange(input) {\n    this.debug(`onChange(${input})`)\n    const value = this.props.prepareValue\n      ? this.props.prepareValue(input)\n      : input\n    const { invalid } = this.state.status\n    const {\n      validateOnChange, validateOnInvalid=true, minValidateLength=1\n    } = this.props\n    const [length] = lengthEmpty(value)\n    let validate = validateOnChange || (validateOnInvalid && invalid)\n\n    // don't validate if it's a short input < minValidateLength\n    // NO, this is wrong - we need to revalidate if we had an invalid input\n    // (e.g. length > maxLength) and then we've backspace to bring it back\n    // in line, or if we had a valid/invalid message when the length was\n    // over the threshold and we've backspaced to bring it back under\n    if (length < minValidateLength && ! invalid) {\n      validate = false\n    }\n\n    this.setChangedState(\n      { value },\n      () => {\n        this.form.setValue(this.props.name, value)\n        if (validate) {\n          this.validation(this.on.change)\n        }\n        else {\n          this.on.change()\n        }\n      }\n    )\n  }\n  setValue(value, event) {\n    event?.preventDefault()\n    this.onChange(value)\n    // JFDI - set the value, no side-effects\n    // this.setState({ value })\n  }\n  reset(e) {\n    e?.preventDefault()\n    const value = this.props.prepareValue\n      ? this.props.prepareValue(this.state.initialValue)\n      : this.state.initialValue\n    this.debug(`reset initialValue:${this.state.initialValue} => ${value}`)\n    this.form.setValue(this.props.name, value)\n    this.setResetState(\n      { value },\n      () => this.resetRef?.current?.reset()\n    )\n    return value\n  }\n\n  validation(callback) {\n    this.validate(callback).then(doNothing).catch(doNothing)\n  }\n  validate(callback) {\n    this.debug('validate()')\n    const result = {\n      name:  this.name,\n      label: this.props.label\n    }\n    return new Promise( this.validator() )\n      .then(\n        state => {\n          this.debug('validate() passed:', state)\n          this.setValidState(\n            state,\n            callFunctions(this.on.valid, callback)\n          )\n          return {\n            ...result,\n            ...state\n          }\n        }\n      )\n      .catch(\n        state => {\n          this.debug('validate() failed:', state)\n          this.setInvalidState(\n            state,\n            callFunctions(this.on.invalid, callback)\n          )\n          throw {\n            ...result,\n            ...state\n          }\n        }\n      )\n  }\n  validator() {\n    return async (resolve, reject) => {\n      const { value='' } = this.state\n      const {\n        validate, required, requiredMessage, validMessage,\n      } = { ...fieldDefaultProperties, ...this.props }\n      const [ , empty] = lengthEmpty(value)\n\n      // let validate = validateOnChange || (validateOnInvalid && invalid)\n      //if (length < minValidateLength && ! invalid) {\n      //  this.debug(`length of ${this.name} field is less than minValidateLength`)\n      //  resolve({ message: '' })\n      //}\n      this.setValidatingState()\n\n      if (validate) {\n        // if there's a validate property then we run it\n        return await this.validateValidator(\n          resolve, reject, validate, validMessage\n        )\n      }\n      else if (empty) {\n        return await this.validateEmpty(\n          resolve, reject, required, validMessage, requiredMessage\n        )\n      }\n      else {\n        this.debug('no validation defined')\n        resolve({ value, message: validMessage })\n      }\n    }\n  }\n  async validateValidator(resolve, reject, validate, validMessage) {\n    this.debug('calling validate function')\n    const field = this.getContext()\n    try {\n      this.debug(`calling validate function with value [${field.value}]`)\n      const value = await validate(field.value, field, resolve, reject)\n      this.debug('validate function passed:', value)\n      resolve(\n        isObject(value)\n          ? { message: validMessage, ...value }\n          : { value, message: validMessage }\n      )\n    }\n    catch (err) {\n      this.debug('validate threw an error:', err)\n      const message = isString(err)\n        ? err\n        : err.message\n      this.debug('rejecting with message:', message)\n      reject({ message })\n    }\n  }\n  validateEmpty(resolve, reject, required, validMessage, invalidMessage) {\n    if (required) {\n      this.debug('failing validation - required field is empty')\n      reject({ message: invalidMessage })\n    }\n    else {\n      this.debug('passing validation - value is empty but not required')\n      resolve({ message: validMessage })\n    }\n  }\n\n  setValid(message, e) {\n    e?.preventDefault()\n    this.setValidState({ message }, this.on.valid)\n  }\n  setInvalid(message, e) {\n    e?.preventDefault()\n    this.setInvalidState({ message }, this.on.invalid)\n  }\n\n  /*\n  setRef(r) {\n    // used to store a reference to an input component so that we can reset it\n    // if the server-side form validation fails (e.g. in the case of recaptcha)\n    // where the user must perform the \"I'm not a robot\" check again.\n    this.ref = r\n  }\n  OLDset(input) {\n    const value = this.props.prepareValue\n      ? this.props.prepareValue(input)\n      : input\n    // TODO: validate on change\n    this.setChangedState(\n      { value },\n      () => this.form.setValue(this.props.name, value)\n    )\n  }\n  */\n\n  getContext() {\n    const context = {\n      ...fieldDefaultProperties,\n      ...this.props,\n      ...this.state,\n      ...this.actions,\n      name:     this.name,\n      inputRef: this.inputRef,\n      resetRef: this.resetRef,\n      setRef:   this.resetRef,      // OLD name\n    }\n    delete context.form\n    delete context.children\n    delete context.render\n    return context\n  }\n}\n\nconst generated = Generator(FieldContext)\nexport const { Context, Provider, Consumer, Use: useField } = generated\nexport default generated","import React from 'react'\nimport { useField } from './Context.js'\nimport { Themed } from '../Theme.jsx'\nimport { REQUIRED, OPTIONAL } from '../Constants.jsx'\n\nconst Label = ({ field=useField() }) => {\n  const { label, id, required } = field\n  const showRequired = field.showRequired  && required\n  const showOptional = field.showOptional  && ! required\n  const hasLabel     = label || showRequired || showOptional\n  const className    = field.labelClass\n  const style        = { }\n  if (showRequired && field.requiredLabel !== REQUIRED) {\n    style['--required-text'] = `\"${field.requiredLabel}\"`\n  }\n  if (showOptional && field.optionalLabel !== OPTIONAL) {\n    style['--optional-text'] = `\"${field.optionalLabel}\"`\n  }\n\n  return hasLabel &&\n    <label htmlFor={id} className={className} style={style}>\n      {label||<span>&nbsp;</span>}\n    </label>\n}\n\nexport default Themed(Label, 'Form.Field.Label')\n","export const defaultHandler = field =>\n  e => field.onChange(e.target.value)\n\nexport const checkboxHandler = field =>\n  e => field.onChange(e.target.checked)\n\nexport const InputHandlers = {\n  default:  defaultHandler,\n  checkbox: checkboxHandler,\n}\n\nexport default InputHandlers","import React from 'react'\nimport Handlers from './Handlers.js'\nimport { classes, inputAttrs, inputClasses } from '../Utils.js'\nimport { useField } from '../Field/Context.js'\nimport { Themed } from '../Theme.jsx'\n\nconst Checkbox = ({ field=useField() }) => {\n  const {\n    id,\n    text,\n    inline,\n    border,\n    labelClass,\n    type='checkbox',\n    handler=Handlers[type]||Handlers.default\n  } = field\n  const attrs = inputAttrs(field)\n  const labelClassName = classes('checkbox', labelClass, { inline, border })\n\n  return (\n    <label htmlFor={id} className={labelClassName}>\n      <input\n        type={type}\n        ref={field.inputRef}\n        aria-disabled={field.disabled}\n        tabIndex={field.disabled ? -1 : field.tabIndex}\n        onChange={handler(field)}\n        className={inputClasses(field)}\n        {...attrs}\n        checked={field.value}\n      />\n      {text}\n    </label>\n  )\n}\n\nexport default Themed(Checkbox, 'Form.Input.Checkbox')\n\n","import React from 'react'\nimport { useField } from '../Field/Context.js'\nimport { Themed } from '../Theme.jsx'\n\nexport const Hidden = ({ field=useField() }) =>\n  <input type=\"hidden\" name={field.name} value={field.value}/>\n\nexport default Themed(Hidden, 'Form.Input.Hidden')\n\n","import React from 'react'\nimport Handlers from './Handlers.js'\nimport { useField } from '../Field/Context.js'\nimport { inputAttrs, classes, valueOption } from '../Utils.js'\nimport { Themed } from '../Theme.jsx'\n\nconst Radio = ({ field=useField() }) => {\n  const {\n    inline,\n    border,\n    options=[],\n    inputClass,\n    optionClass,\n    optionsClass='options',\n    type='radio',\n    handler=Handlers[type]||Handlers.default\n  } = field\n  const attrs = inputAttrs(field)\n\n  return (\n    <div className={classes(optionsClass)}>\n      { options.map(\n        (option, i) => {\n          option = valueOption(option)\n          const id = `${field.id}-${option.value}`\n          const checked = field.value == option.value\n          // when we focus the field we want to focus the currently selected\n          // option (if there is one) or the first option otherwise\n          const focus = field.value ? checked : i == 0\n          const ref = focus ? field.inputRef : null\n          const labelClass = classes(\n            'radio',\n            optionClass,\n            option.className,\n            { inline, border }\n          )\n          return (\n            <label\n              key={option.value}\n              className={labelClass}\n              disabled={option.disabled}\n              htmlFor={id}\n            >\n              <input\n                type={type}\n                className={inputClass}\n                // ref={field.inputRef}\n                ref={ref}\n                aria-disabled={field.disabled}\n                tabIndex={field.disabled ? -1 : field.tabIndex}\n                onChange={handler(field)}\n                {...attrs}\n                id={id}\n                checked={checked}\n                value={option.value}\n              />\n              {option.text}\n            </label>\n          )\n        }\n      )}\n    </div>\n  )\n}\n\nexport default Themed(Radio, 'Form.Input.Radio')\n","import React from 'react'\nimport Handlers from './Handlers.js'\nimport { inputAttrs, inputClasses, valueOption } from '../Utils.js'\nimport { useField } from '../Field/Context.js'\nimport { Themed } from '../Theme.jsx'\n\nconst Select = ({ field=useField() }) => {\n  const {\n    options=[],\n    placeholder,\n    type='select',\n    optionClass='option',\n    handler=Handlers[type]||Handlers.default\n  } = field\n  const attrs = inputAttrs(field)\n\n  return (\n    <select\n      ref={field.inputRef}\n      aria-disabled={field.disabled}\n      tabIndex={field.disabled ? -1 : field.tabIndex}\n      className={inputClasses(field)}\n      onChange={handler(field)}\n      {...attrs}\n      value={field.value}\n      required={field.required || Boolean(placeholder)}  // allows styling via :invalid for placeholder\n    >\n      { Boolean(placeholder) &&\n        <option value=\"\" hidden disabled>{placeholder}</option>\n      }\n      { options.map(\n        option => {\n          option = valueOption(option)\n          return (\n            <option\n              key={option.value}\n              className={optionClass}\n              value={option.value}\n              disabled={option.disabled}\n            >\n              {option.text}\n            </option>\n          )\n        }\n      )}\n    </select>\n  )\n}\n\nexport default Themed(Select, 'Form.Input.Select')\n","import React from 'react'\nimport Handlers from './Handlers.js'\nimport { inputClasses, inputAttrs } from '../Utils.js'\nimport { useField } from '../Field/Context.js'\nimport { Themed } from '../Theme.jsx'\nimport { TEXT } from '../Constants.jsx'\n\nexport const Text = ({ field=useField() }) => {\n  const {\n    type=TEXT,\n    handler=Handlers[type]||Handlers.default\n  } = field\n  const attrs = inputAttrs(field)\n\n  return (\n    <input\n      type={type}\n      ref={field.inputRef}\n      className={inputClasses(field)}\n      aria-disabled={field.disabled}\n      // aria-invalid, aria-required\n      tabIndex={field.disabled ? -1 : field.tabIndex}\n      onFocus={field.onFocus}\n      onBlur={field.onBlur}\n      onChange={handler(field)}\n      {...attrs}\n    />\n  )\n}\n\nexport default Themed(Text, 'Form.Input.Text')\n\n","import React from 'react'\nimport { useField } from '../Field/Context.js'\nimport { Themed } from '../Theme.jsx'\nimport { inputClasses } from '../Utils.js'\n\nconst TextArea = ({ field=useField() }) => {\n  const { rows=5 } = field\n  return (\n    <textarea\n      id={field.id}\n      ref={field.inputRef}\n      className={inputClasses(field)}\n      name={field.name}\n      value={field.value}\n      disabled={field.disabled}\n      aria-disabled={field.disabled}\n      tabIndex={field.disabled ? -1 : field.tabIndex}\n      placeholder={field.placeholder}\n      autoComplete={field.autocomplete}\n      onChange={e => field.onChange(e.target.value)}\n      onFocus={field.onFocus}\n      onBlur={field.onBlur}\n      rows={rows}\n    />\n  )\n}\n\nexport default Themed(TextArea, 'Form.Input.TextArea')\n","export * from './Handlers.js'\nexport { default as Checkbox } from './Checkbox.jsx'\nexport { default as Hidden   } from './Hidden.jsx'\nexport { default as Radio    } from './Radio.jsx'\nexport { default as Select   } from './Select.jsx'\nexport { default as Text     } from './Text.jsx'\nexport { default as TextArea } from './TextArea.jsx'\n\nimport Checkbox from './Checkbox.jsx'\nimport Hidden   from './Hidden.jsx'\nimport Radio    from './Radio.jsx'\nimport Select   from './Select.jsx'\nimport Text     from './Text.jsx'\nimport TextArea from './TextArea.jsx'\n\nexport const InputTypes  = {\n  default:  Text,\n  checkbox: Checkbox,\n  hidden:   Hidden,\n  radio:    Radio,\n  select:   Select,\n  text:     Text,\n  textarea: TextArea,\n}\n\nexport default InputTypes","import React from 'react'\nimport { useField } from './Context.js'\nimport { Themed } from '../Theme.jsx'\nimport { classes } from '../Utils.js'\n\nconst Prefix = ({ field=useField() }) =>\n  <div className={classes('prefix', field.prefixClass)}>\n    {field.prefix}\n  </div>\n\nexport default Themed(Prefix, 'Form.Input.Prefix')\n","import React from 'react'\nimport { useField } from './Context.js'\nimport { Themed } from '../Theme.jsx'\nimport { classes } from '../Utils.js'\n\nconst Suffix = ({ field=useField() }) =>\n  <div className={classes('suffix', field.suffixClass)}>\n    {field.suffix}\n  </div>\n\nexport default Themed(Suffix, 'Form.Input.Suffix')\n","import React from 'react'\nimport InputTypes from '../Input/index.js'\nimport DefaultPrefix from './Prefix.jsx'\nimport DefaultSuffix from './Suffix.jsx'\nimport { useField } from './Context.js'\nimport { Themed } from '../Theme.jsx'\nimport { selectClass } from '../Utils.js'\nimport { hasValue } from '@abw/badger-utils'\nimport { TEXT } from '../Constants.jsx'\n\nconst Inputs = ({ field=useField() }) => {\n  const {\n    classes, prefix, suffix, inputsClass, inline,\n    type=TEXT,\n    Prefix=DefaultPrefix,\n    Suffix=DefaultSuffix,\n  } = field\n  const Type = InputTypes[type] || InputTypes.default\n  let classNames = [\n    selectClass(classes, 'inputs'),\n    // selectClass(classes, type)\n  ]\n  if (hasValue(prefix)) {\n    classNames.push(selectClass(classes, 'prefixed'))\n  }\n  if (hasValue(suffix)) {\n    classNames.push(selectClass(classes, 'suffixed'))\n  }\n  if (inline) {\n    classNames.push(selectClass(classes, 'inline'))\n  }\n  if (hasValue(inputsClass)) {\n    classNames.push(inputsClass)\n  }\n  const className = classNames.join(' ')\n\n  return (\n    <div className={className}>\n      { hasValue(prefix) && <Prefix field={field}/> }\n      <Type field={field}/>\n      { hasValue(suffix) && <Suffix field={field}/> }\n    </div>\n  )\n}\n\nexport default Themed(Inputs, 'Form.Field.Inputs')\n","import React from 'react'\nimport InputTypes from '../Input/index.js'\nimport { useField } from './Context.js'\nimport { Themed } from '../Theme.jsx'\nimport { hasValue } from '@abw/badger-utils'\nimport { RADIO, TEXT } from '../Constants.jsx'\nimport Inputs from './Inputs.jsx'\n\nconst Input = ({ field=useField() }) => {\n  const {\n    prefix,\n    suffix,\n    type=TEXT,\n  } = field\n  const Type = InputTypes[type] || InputTypes.default\n\n  if (type == RADIO) {\n    return <Type field={field}/>\n  }\n  if (hasValue(prefix) || hasValue(suffix)) {\n    return <Inputs/>\n  }\n  return (\n    <Type field={field}/>\n  )\n}\n\nexport default Themed(Input, 'Form.Field.Input')\n","import React from 'react'\nimport { useField } from './Context.js'\nimport { Themed } from '../Theme.jsx'\nimport { selectClass } from '../Utils.js'\n\nconst Message = ({ field=useField() }) => {\n  const { help, message, classes } = field\n  const text = message ?? help\n  const className = selectClass(classes, 'help')\n  return text\n    ? <div className={className}>{text}</div>\n    : null\n}\n\nexport default Themed(Message, 'Form.Field.Message')","import React from 'react'\nimport DefaultLabel from './Label.jsx'\nimport DefaultInput from './Input.jsx'\nimport DefaultMessage from './Message.jsx'\nimport Hidden from '../Input/Hidden.jsx'\nimport { useField } from './Context.js'\nimport { Themed } from '../Theme.jsx'\nimport { fieldClass } from '../Utils.js'\n\nconst Layout = ({ field=useField(), children }) => {\n  const {\n    type,\n    Label=DefaultLabel,\n    Message=DefaultMessage,\n    Input=DefaultInput,\n  } = field\n  const classes = fieldClass(field)\n\n  // special case for hidden fields which don't need any wrappers\n  if (type === 'hidden') {\n    return <Hidden field={field}/>\n  }\n\n  return (\n    <div className={classes}>\n      { children ||\n        <>\n          <Label field={field}/>\n          <Input field={field}/>\n          <Message field={field}/>\n        </>\n      }\n    </div>\n  )\n}\n\nexport default Themed(Layout, 'Form.Field.Layout')\n","import React from 'react'\nimport DefaultLayout from './Layout.jsx'\nimport { isFunction } from '@abw/badger-utils'\nimport { Context, Consumer } from './Context.js'\nimport { toArray } from '../Utils.js'\n\nexport const FieldChildren = ({\n  children,\n  Layout=DefaultLayout\n}) =>\n  children\n    ? toArray(children).map(\n      (child, n) => isFunction(child)\n        ? <Context.Consumer key={n}>\n            {child}\n          </Context.Consumer>\n        : child\n    )\n    : <Layout/>\n\nexport default Consumer(FieldChildren)\n","import { useId } from 'react'\nimport { BLANK } from '../Constants.jsx'\n\nexport const prepareField = field => {\n  // The form can be passed a large set of fields, not all of which may be\n  // used in the form.  We store them in initialFields and migrate them into\n  // fields when a field is used inside the form.  We take a copy of the\n  // values that we can safely mutate.  This may include values that don't\n  // relate to fields that are used in the form (e.g. a record id that must\n  // be sent with the submission request).  We store the initial values in\n  // initialValues in case we need to reset the form and restore them.\n  const { id, value } = field\n  return {\n    ...field,\n    id: id || useId(),\n    value: value ?? field.default ?? BLANK,\n  }\n}\n\nexport default prepareField","import React from 'react'\nimport Children from './Field/Children.jsx'\nimport prepareField from './Field/Prepare.jsx'\nimport { useForm } from './Form/Context.js'\nimport { Provider }  from './Field/Context.js'\nimport { Themed } from './Theme.jsx'\n\nconst Field = ({\n  name,\n  children,\n  ...props\n}) => {\n  const form  = useForm()\n  const field = prepareField(form.fieldSpec(name, props))\n\n  return (\n    <Provider form={form} {...field}>\n      <Children>\n        {children}\n      </Children>\n    </Provider>\n  )\n}\n\nexport default Themed(Field, 'Form.Field')\n","import React from 'react'\nimport Field from './Field.jsx'\nimport { isBoolean, splitList } from '@abw/badger-utils'\nimport { gridGapClasses } from './Utils.js'\n\nexport const Fields = ({\n  names,\n  grid=false,\n  gap=4,\n  stack,\n  className,\n  ...props\n}) => {\n  const namesList = splitList(names)\n  if (isBoolean(grid) && grid) {\n    grid = namesList.length\n  }\n  return (\n    <div className={gridGapClasses({grid, gap, stack, className, props})}>\n      { namesList.map(\n        (name) => <Field key={name} name={name} {...props}/>\n      )}\n    </div>\n  )\n}\n\n// export default Themed(Fields, 'Form.Fields')\nexport default Fields\n","import React from 'react'\nimport Fields from './Fields.jsx'\nimport { Themed } from './Theme.jsx'\n\nconst Fieldset = ({\n  className='',\n  legend,\n  children,\n  fields,\n  ...props\n}) =>\n  <fieldset className={className}>\n    { Boolean(legend) && <legend>{legend}</legend> }\n    { Boolean(fields) && <Fields names={fields} {...props}/> }\n    { children }\n  </fieldset>\n\nexport default Themed(Fieldset, 'Form.Fieldset')\n","import React from 'react'\nimport { Themed } from '../Theme.jsx'\n\nconst Button = ({\n  onClick,\n  children,\n  text='Button',\n  type='button',\n  ...props\n}) =>\n  <button\n    type={type}\n    onClick={onClick}\n    {...props}\n  >\n    {children||text}\n  </button>\n\nexport default Themed(Button, 'Form.Button')\n\n","import React from 'react'\nimport DefaultButton from './Button.jsx'\nimport { Themed } from '../Theme.jsx'\n\nconst Cancel = ({\n  text='Cancel',\n  className='cancel',\n  Button=DefaultButton,\n  ...props\n}) =>\n  <Button\n    text={text}\n    className={className}\n    {...props}\n  />\n\nexport default Themed(Cancel, 'Form.Cancel')","import React from 'react'\nimport DefaultButton from './Button.jsx'\nimport { useForm } from '../Form/Context.js'\nimport { Themed } from '../Theme.jsx'\n\nconst Reset = ({\n  type='reset',\n  text='Reset',\n  className='reset',\n  Button=DefaultButton,\n  ...props\n}) => {\n  const { reset } = useForm()\n  return (\n    <Button\n      type={type}\n      text={text}\n      className={className}\n      onClick={reset}\n      {...props}\n    />\n  )\n}\n\nexport default Themed(Reset, 'Form.Reset')","import React from 'react'\nimport DefaultButton from './Button.jsx'\nimport { useForm } from '../Form/Context.js'\nimport { Themed } from '../Theme.jsx'\n\nconst Submit = ({\n  type='submit',\n  text='Submit',\n  className='submit',\n  Button=DefaultButton,\n  ...props\n}) => {\n  const { submit, status } = useForm()\n  return (\n    <Button\n      type={type}\n      text={text}\n      className={className}\n      onClick={submit}\n      disabled={status.submitting}\n      {...props}\n    />\n  )\n}\n\nexport default Themed(Submit, 'Form.Submit')","import React from 'react'\nimport Cancel from './Cancel.jsx'\nimport Submit from './Submit.jsx'\nimport { Themed } from '../Theme.jsx'\nimport { flexGapSpaceClasses } from '../Utils.js'\nimport { CONTROLS } from '../Constants.jsx'\n\nconst CancelSubmit = ({\n  className,\n  gap=4,\n  space=false,\n  cancel={},\n  submit={}\n}) =>\n  <div className={flexGapSpaceClasses({ className, gap, space }, CONTROLS)}>\n    <Cancel {...cancel}/>\n    <Submit {...submit}/>\n  </div>\n\nexport default Themed(CancelSubmit, 'Form.CancelSubmit')","import React  from 'react'\nimport Reset  from './Reset.jsx'\nimport Submit from './Submit.jsx'\nimport { Themed } from '../Theme.jsx'\nimport { flexGapSpaceClasses } from '../Utils.js'\nimport { CONTROLS } from '../Constants.jsx'\n\nconst ResetSubmit = ({\n  className,\n  gap=4,\n  space=false,\n  reset={},\n  submit={}\n}) =>\n  <div className={flexGapSpaceClasses({ className, gap, space }, CONTROLS)}>\n    <Reset  {...reset}/>\n    <Submit {...submit}/>\n  </div>\n\nexport default Themed(ResetSubmit, 'Form.ResetSubmit')","import React from 'react'\nimport Cancel from './Cancel.jsx'\nimport Reset from './Reset.jsx'\nimport Submit from './Submit.jsx'\nimport { Themed } from '../Theme.jsx'\nimport { flexGapSpaceClasses } from '../Utils.js'\nimport { CONTROLS } from '../Constants.jsx'\n\nconst CancelResetSubmit = ({\n  className,\n  gap=4,\n  space=false,\n  cancel={},\n  reset={},\n  submit={}\n}) =>\n  <div className={flexGapSpaceClasses({ className, gap, space }, CONTROLS)}>\n    <Cancel {...cancel}/>\n    <Reset {...reset}/>\n    <Submit {...submit}/>\n  </div>\n\nexport default Themed(CancelResetSubmit, 'Form.CancelResetSubmit')","import React from 'react'\nimport Children from './Children.jsx'\n\nexport const UseField = ({ children }) =>\n  <Children>\n    {children}\n  </Children>\n\nexport default UseField","import { Consumer } from './Context.js'\n\nexport const Changed = ({status, children}) =>\n  status.changed && children\n\nexport default Consumer(Changed)\n","import React from 'react'\nimport { useForm } from './Context.js'\nimport { Themed } from '../Theme.jsx'\nimport { hasValue, isObject } from '@abw/badger-utils'\n\nexport const Debug = ({\n  values=true,\n  status=false,\n  all=false,\n  className='debug orange alert border shadow-2 pad-l-4 mar-t-4 pad-b-2',\n  ...props\n}) => {\n  const form = useForm()\n  return (\n    <div className={className}>\n      <div className=\"headline\">Form Debugging</div>\n      { values &&\n        <DebugTable\n          title=\"Values\"\n          rows={Object.entries(form.values)}\n          {...props}\n        />\n      }\n      { (status || all) && form.status &&\n        <DebugTable\n          title=\"Status\"\n          rows={Object.entries(form.status)}\n          {...props}\n        />\n      }\n    </div>\n  )\n}\n\nconst DebugTable = ({\n  title,\n  rows,\n  children,\n  tableClass='celled wide small mar-h-1 pad-none mar-b-4',\n  titleClass='bgc-70 bgd-30',\n  ...props\n}) =>\n  <table className={tableClass}>\n    <thead>\n      <tr>\n        <th colSpan={2} className={titleClass}>{title}</th>\n      </tr>\n    </thead>\n    <tbody>\n      { children || rows.map(\n        ([name, value]) =>\n          <DebugRow\n            key={name}\n            name={name}\n            value={value}\n            {...props}\n          />\n      )}\n    </tbody>\n  </table>\n\nconst DebugRow = ({\n  name,\n  value,\n  keyClass='bgc-80 bgd-20 fgc-30 fgd-70 text-right split-3',\n  valueClass='font-mono bgc-95 bgd-5',\n}) =>\n  <tr valign=\"top\">\n    <td className={keyClass}>\n      {name}\n    </td>\n    <td className={valueClass}>\n      <DebugValue value={value}/>\n    </td>\n  </tr>\n\nconst DebugValue = ({value}) => {\n  if (isObject(value)) {\n    return JSON.stringify(value)\n  }\n  return hasValue(value)\n    ? value.toString()\n    : ''\n}\n\n\nexport default Themed(Debug, 'Form.Debug')\n","import React from 'react'\n\nexport const ErrorObject = ({error}) => {\n  const label = error.label || error.name\n  return (\n    <>\n      { Boolean(label) && <b>{label}: </b> }\n      { error.message }\n    </>\n  )\n}\n\nexport default ErrorObject\n\n","import React from 'react'\nimport ErrorObject from './ErrorObject.jsx'\nimport { isString } from '@abw/badger-utils'\n\nexport const Error = ({error}) =>\n  isString(error)\n    ? error\n    : <ErrorObject error={error}/>\n\nexport default Error\n\n","import React from 'react'\nimport DefaultError from './Error.jsx'\nimport { useForm } from './Context.js'\nimport { Themed } from '../Theme.jsx'\nimport { maybeFunction, selectClass } from '../Utils.js'\n\nconst Errors = ({\n  title,\n  prompt,\n  fieldErrors=true\n}) => {\n  const form = useForm()\n  const {\n    error,\n    errors,\n    classes,\n    errorsTitle,\n    errorsPrompt,\n    Error=DefaultError\n  } = form\n  const hasError = Boolean(error)\n  const n = (fieldErrors ? errors.length : 0) + (hasError ? 1 : 0)\n  const className = selectClass(classes, 'error alert border')\n\n  title  ||= errorsTitle\n  prompt ||= errorsPrompt\n\n  if (n === 0 ) {\n    return null\n  }\n\n  return (\n    <div className={className}>\n      { Boolean(title) &&\n        <div className=\"headline\">{maybeFunction(title, n)}</div>\n      }\n      <div>\n        { hasError && <h4><Error error={error}/></h4> }\n        { fieldErrors && errors.length !== 0 &&\n          <>\n            { Boolean(prompt) &&\n              <p className=\"wide\">{maybeFunction(prompt, errors.length)}</p>\n            }\n            <ul>\n              { errors.map(\n                (error, n) =>\n                  <li key={n}>\n                    <Error error={error}/>\n                  </li>\n              )}\n            </ul>\n          </>\n        }\n      </div>\n    </div>\n  )\n}\n\nexport default Themed(Errors, 'Form.Errors')\n\n","export const prefixClasses = (prefix='formula') => ({\n  formula:  prefix,\n  bare:     `${prefix}--bare`,\n  checkbox: `${prefix}--checkbox`,\n  checked:  `${prefix}--checked`,\n  controls: `${prefix}--controls`,\n  debug:    `${prefix}--debug`,\n  disabled: `${prefix}--disabled`,\n  errors:   `${prefix}--errors`,\n  field:    `${prefix}--field`,\n  fluid:    `${prefix}--fluid`,\n  focus:    `${prefix}--focus`,\n  help:     `${prefix}--help`,\n  inline:   `${prefix}--inline`,\n  input:    `${prefix}--input`,\n  invalid:  `${prefix}--invalid`,\n  option:   `${prefix}--option`,\n  optional: `${prefix}--optional`,\n  panel:    `${prefix}--panel`,\n  prefix:   `${prefix}--prefix`,\n  prefixed: `${prefix}--prefixed`,\n  radio:    `${prefix}--radio`,\n  required: `${prefix}--required`,\n  suffix:   `${prefix}--suffix`,\n  suffixed: `${prefix}--suffixed`,\n  valid:    `${prefix}--valid`,\n  wide:     `${prefix}--wide`\n})\nexport const BEMClasses = prefixClasses()"],"names":["g","b","n","c","$","a","o","u","d","f","x","r","i","s","C","P","m","h","l$1","c$2","l","BLANK","BLUR","CHANGED","CONTROLS","DISABLED","FOCUS","FULFILLED","INVALID","OPTIONAL","RADIO","REQUIRED","REQUIRED_MSG","RESET","SUBMITTED","SUBMITTING","TEXT","VALID","VALIDATING","INPUT_ATTRS","FORM_ATTRS","valueTypes","t","y","v","w","A","e","z","K","BaseContext","props","status","addState","callback","doNothing","oldState","isFunction","state","toArray","item","isArray","attrs","list","hash","hasValue","inputAttrs","field","formAttrs","form","joinClasses","classes","setKeys","value","key","inputs","input","isObject","inputClasses","flexGapSpaceClasses","more","gap","space","stack","className","gridGapClasses","grid","selectClass","name","defaultClass","selectClasses","names","propClasses","spec","prop","cls","statusClasses","all","set","fieldClass","required","showRequired","showOptional","valueOption","option","passValue","callFunctions","functions","args","fn","maybeFunction","lengthEmpty","isBoolean","length","formDefaultProperties","fieldDefaultProperties","formFieldProperties","splitHash","unvalidated","changed","validating","invalid","valid","blur","focus","submitting","submitted","commonStatusChanges","newStatus","statusChanges","oldStatus","newFormStatus","reset","newFieldStatus","FormContext","hidden","initialValues","defaults","_a","_b","extract","event","values","submit","resolve","reject","results","reason","failed","response","error","isString","onSuccess","params","firstField","onError","errors","fields","message","__publicField","generated","Generator","Context","Provider","Consumer","useForm","Children","children","child","jsx","Layout","j","Form$1","Themed","DefaultLayout","FieldContext","initialValue","createRef","validateOnChange","validateOnInvalid","minValidateLength","validate","result","requiredMessage","validMessage","empty","err","invalidMessage","context","useField","DefaultLabel","label","id","hasLabel","style","defaultHandler","checkboxHandler","InputHandlers","Checkbox$1","text","inline","border","labelClass","type","handler","Handlers","labelClassName","jsxs","Hidden$1","Radio$1","options","inputClass","optionClass","optionsClass","checked","ref","Select$1","placeholder","Text$1","TextArea$1","rows","InputTypes","Text","Checkbox","Hidden","Radio","Select","TextArea","DefaultPrefix","DefaultSuffix","Inputs$1","prefix","suffix","inputsClass","Prefix","Suffix","Type","classNames","DefaultInput","Inputs","DefaultMessage","help","Label","Message","Input","Fragment","prepareField","useId","Field$1","Fields","namesList","splitList","Field","Fieldset$1","legend","DefaultButton","onClick","Cancel$1","Button","Reset$1","Submit$1","CancelSubmit$1","cancel","Cancel","Submit","ResetSubmit$1","Reset","CancelResetSubmit$1","UseField","Debug","DebugTable","title","tableClass","titleClass","DebugRow","keyClass","valueClass","DebugValue","ErrorObject","Error","Errors$1","prompt","fieldErrors","errorsTitle","errorsPrompt","DefaultError","hasError","prefixClasses","BEMClasses"],"mappings":"sgBAAA,IAAIA,GAAI,OAAO,eACXC,GAAI,CAAC,EAAG,EAAGC,IAAM,KAAK,EAAIF,GAAE,EAAG,EAAG,CAAE,WAAY,GAAI,aAAc,GAAI,SAAU,GAAI,MAAOE,CAAC,CAAE,EAAI,EAAE,CAAC,EAAIA,EACzGC,EAAI,CAAC,EAAG,EAAGD,KAAOD,GAAE,EAAG,OAAO,GAAK,SAAW,EAAI,GAAK,EAAGC,CAAC,EAAGA,GAGlE,MAAME,GAAI,CAAC,EAAG,EAAI,KAAO,CACvB,MAAMF,EAAIG,EAAE,cAAc,CAAC,EAC3B,MAAO,CAAE,QAASH,EAAG,SAAWI,GAAsBC,EAAC,IACrD,EACA,CACE,GAAGD,EACH,OAASE,GAAsBD,EAAC,IAACL,EAAE,SAAU,CAAE,MAAOM,EAAG,SAAUF,EAAE,QAAQ,CAAE,CAChF,CACF,EAAE,SAAWA,GAAOE,GAAsBD,EAAAA,IAAEL,EAAE,SAAU,CAAE,SAAWO,GAAsBF,EAAC,IAACD,EAAG,CAAE,GAAGG,EAAG,GAAGD,CAAC,CAAE,CAAG,CAAA,EAAG,IAAK,IAAMH,EAAE,WAAWH,CAAC,CAAC,CACjJ,EACA,SAASQ,GAAE,EAAI,CAAE,EAAE,EAAI,CAAE,EAAER,EAAI,GAAI,CACjC,OAAO,OAAO,QAAQ,CAAC,EAAE,OACvB,CAACS,EAAG,CAACC,EAAGC,CAAC,IAAM,CACb,MAAMP,EAAIJ,EAAEW,CAAC,EACb,OAAOP,IAAM,MAAQ,OAAOA,EAAI,MAAQK,EAAEC,CAAC,EAAIN,GAAIK,CACpD,EACD,CAAE,GAAG,CAAG,CACZ,CACA,CACA,SAASG,GAAE,EAAG,EAAI,GAAI,CACpB,OAAQ,OAAO,GAAK,SAAW,EAAE,MAAM,UAAU,EAAI,GAAG,OACtD,CAACH,EAAGC,IAAM,CACR,MAAMC,EAAI,EAAED,CAAC,GAAKG,GAAE,6CAA6CH,GAAG,EACpE,OAAOD,EAAEC,CAAC,EAAIC,EAAE,KAAK,CAAC,EAAGF,CAC1B,EACD,CAAE,CACN,CACA,CACA,SAASK,GAAE,EAAG,EAAG,CACf,MAAMd,EAAI,EAAE,OAAS,EAAE,MAAOS,EAAIM,GAAE,EAAE,aAAe,EAAE,YAAa,CAAC,EAAGL,EAAIK,GAAE,EAAE,YAAc,EAAE,WAAY,CAAC,EAC7G,OAAOf,EAAIS,EAAI,CAACE,KAAMP,IAAM,QAAQ,IAClC,KAAKK,MAAME,IACX,UAAUD,IACV,cACA,GAAGN,CACJ,EAAG,QAAQ,IAAI,KAAK,OAAO,EAAI,IAAM,CACxC,CACA,CACA,SAASW,GAAE,EAAG,EAAG,CACf,OAAO,OAAO,GAAK,WAAa,EAAE,CAAC,EAAI,CACzC,CACA,SAASF,MAAK,EAAG,CACf,MAAM,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC,CAC5B,CACA,IAAAG,EAAA,cAAgBb,EAAE,SAAU,CAC1B,YAAY,EAAG,CACb,MAAM,CAAC,EACP,MAAMH,EAAI,KAAK,YACf,KAAK,MAAQc,GAAE,EAAGd,CAAC,EAAG,KAAK,MAAQQ,GACjCR,EAAE,aACFA,EAAE,aACF,CACN,EAAO,KAAK,QAAUY,GAAE,KAAMZ,EAAE,OAAO,CACpC,CACD,YAAa,CACX,MAAO,CACL,GAAG,KAAK,MAER,GAAG,KAAK,MAER,GAAG,KAAK,OAEd,CACG,CACD,gBAAiB,CACf,OAAO,KAAK,YACb,CACD,QAAS,CACP,OAAO,KAAK,MAAM,OAChB,KAAK,eAAgB,CAC3B,CACG,CACH,EACCiB,EAACC,EAAG,eAAgB,EAAE,EAAGjB,EAAEiB,EAAG,eAAgB,CAAA,CAAE,EAAGjB,EAAEiB,EAAG,UAAW,CAAA,CAAE,EC5E/D,MAAMC,GAAe,GACfC,GAAe,OAGfC,EAAe,UAEfC,EAAe,WAGfC,GAAe,WAIfC,EAAe,QAGfC,GAAe,YACfC,EAAe,UACfC,GAAe,WACfC,GAAe,QAEfC,GAAe,WACfC,GAAe,sBACfC,GAAe,QAOfC,EAAe,YACfC,EAAe,aACfC,EAAe,OAEfC,EAAe,QACfC,EAAe,aAGfC,GAAc,CACzB,KAAM,OAAQ,QAAS,UAAW,WAAY,cAC9C,eAAgB,UAAW,SAAU,OAAQ,MAAO,MAAO,YAC3D,YAAa,OAAQ,UAAW,MAClC,EACaC,GAAa,CACxB,KAAM,OAAQ,SAAU,SAAU,SACpC,EAKaC,GAAa,CACxB,QAAS,GACT,OAAS,GACT,OAAS,EACX,ECxDA,SAASvC,GAAEA,EAAE,CAAC,OAAiB,OAAOA,GAAlB,SAAmB,CAAC,SAASwC,EAAExC,EAAE,CAAC,OAAgB,OAAOA,GAAjB,QAAkB,CAAkH,SAASK,EAAEL,EAAE,CAAC,OAAO,MAAM,QAAQA,CAAC,CAAC,CAAC,SAASU,EAAEV,EAAE,CAAC,OAAkB,OAAOA,GAAnB,UAAoB,CAAC,SAASC,GAAED,EAAE,CAAC,OAAOA,aAAa,MAAM,CAAC,SAASW,EAAEX,EAAE,CAAC,OAAgB,OAAOA,GAAjB,UAAoB,CAACK,EAAEL,CAAC,GAAG,CAACkB,GAAElB,CAAC,CAAC,CAAC,SAASG,GAAEH,EAAE,CAAC,OAAgBA,IAAT,MAAU,CAAC,SAASkB,GAAElB,EAAE,CAAC,OAAcA,IAAP,IAAQ,CAAC,SAASO,EAAEP,EAAE,CAAC,MAAM,EAAEG,GAAEH,CAAC,GAAGkB,GAAElB,CAAC,EAAE,CAA4C,SAASM,GAAEN,EAAE,CAAC,MAAM,CAACO,EAAEP,CAAC,CAAC,CAAsL,SAASyC,MAAKzC,EAAE,CAAC,MAAM,IAAI,MAAMA,EAAE,KAAK,EAAE,CAAC,CAAC,CAA+D,SAAS0C,GAAG,CAAA,CAAE,SAASC,IAAG,CAAC,OAAO,KAAK,eAAgB,EAAC,gBAAe,EAAG,MAAM,CAAeA,GAAC,EAAugB,SAASC,GAAE5C,EAAE,CAAC,OAAOM,GAAEN,CAAC,EAAE,CAAE,EAACwC,EAAExC,CAAC,EAAEA,EAAE,OAAOA,EAAE,MAAM,UAAU,EAAE,CAAE,EAACK,EAAEL,CAAC,EAAEA,EAAE,CAACA,CAAC,CAAC,CAAC,SAASY,GAAEZ,EAAEwC,EAAE,GAAGK,EAAE,CAAE,EAAC,CAAC,OAAGlC,EAAEX,CAAC,EAASA,EAAS4C,GAAE5C,CAAC,EAAE,OAAQ,CAAC,EAAE6C,KAAK,EAAEA,CAAC,EAAEnC,EAAE8B,CAAC,EAAEA,EAAEK,CAAC,EAAEL,EAAE,GAAIK,CAAC,CAAC,CAAgjC,SAASC,GAAE9C,EAAE,CAAC,GAAGU,EAAEV,CAAC,EAAE,OAAOA,EAAE,GAAGC,GAAED,CAAC,EAAE,OAAOwC,GAAGxC,EAAE,KAAKwC,CAAC,EAAE,GAAG7B,EAAEX,CAAC,EAAE,OAAOwC,GAAG,EAAQxC,EAAEwC,CAAC,EAAG,GAAGnC,EAAEL,CAAC,GAAGwC,EAAExC,CAAC,EAAE,CAAC,MAAMwC,EAAE5B,GAAEZ,CAAC,EAAE,OAAOA,GAAG,EAAQwC,EAAExC,CAAC,EAAGyC,GAAE,qCAAqCzC,CAAC,CAAC,CAA2S,MAAC+C,GAAE,CAAC/C,EAAEwC,EAAEK,EAAE,CAAE,IAAG,CAAC,IAAIpC,EAAE,CAAE,EAACL,EAAE,CAAC,OAAO,GAAG,GAAGyC,CAAC,EAAE,MAAMxC,EAAEyC,GAAEN,CAAC,EAAE,OAAO,OAAO,KAAKxC,CAAC,EAAE,IAAKwC,GAAG,CAAC,GAAGnC,EAAEmC,CAAC,EAAE,CAAC,IAAIK,EAAE7C,EAAEwC,CAAC,EAAEpC,EAAE,QAAQ,OAAOJ,EAAEwC,CAAC,EAAEpC,EAAE,MAAMoC,EAAEpC,EAAE,IAAIoC,CAAC,GAAGpC,EAAE,QAAQyC,EAAEzC,EAAE,MAAMyC,CAAC,GAAGpC,EAAE+B,CAAC,EAAEK,EAAE,CAAC,EAAGpC,CAAC,SCM/wG,cAAsBuC,CAAY,CAChC,YAAYC,EAAO,CACjB,MAAMA,CAAK,EACX,KAAK,UAAY,KAAK,YAAY,UAAUA,CAAK,EACjD,KAAK,MAAQ,CACX,OAAQ,KAAK,UAAUlB,EAAK,CAC7B,CACF,CACD,UAAUmB,EAAQC,EAAS,CAAA,EAAIC,EAASC,EAAW,CAC3C,KAAK,SAGX,KAAK,SACHC,IAAa,CACX,GAAIC,EAAWJ,CAAQ,EAAIA,EAASG,CAAQ,EAAIH,EAChD,OAAQ,KAAK,UAAUD,EAAQI,EAAS,MAAM,CACtD,GACMF,CACD,CACF,CACD,cAAcI,EAAOJ,EAAU,CAC7B,KAAK,UAAUrB,GAAOyB,EAAOJ,CAAQ,CACtC,CACD,gBAAgBI,EAAOJ,EAAU,CAC/B,KAAK,UAAU/B,EAASmC,EAAOJ,CAAQ,CACxC,CACD,mBAAmBI,EAAOJ,EAAU,CAClC,KAAK,UAAUhB,EAAYoB,EAAOJ,CAAQ,CAC3C,CACD,gBAAgBI,EAAOJ,EAAU,CAC/B,KAAK,UAAU1B,EAAS8B,EAAOJ,CAAQ,CACxC,CACD,cAAcI,EAAOJ,EAAU,CAC7B,KAAK,UAAUjB,EAAOqB,EAAOJ,CAAQ,CACtC,CACH,ECtCa,MAAAK,EAAUC,GACrBC,EAAQD,CAAI,EACRA,EACA,CAACA,CAAI,EAEJ,SAASE,GAAMX,EAAOY,EAAM,CACjC,OAAOA,EAAK,OACV,CAACC,EAAM3D,KACD4D,EAASd,EAAM9C,CAAC,CAAC,IACnB2D,EAAK3D,CAAC,EAAI8C,EAAM9C,CAAC,GAEZ2D,GAET,CAAG,CACJ,CACH,CAEa,MAAAE,EAAaC,GAASL,GAAMK,EAAO5B,EAAW,EAC9C6B,GAAaC,GAAQP,GAAMO,EAAM7B,EAAU,EAC3C8B,EAAcC,GAAWA,EAAQ,OAAON,CAAQ,EAAE,KAAK,GAAG,EAE1DO,GAAUrB,GACrB,OAAO,QAAQA,CAAK,EACjB,OAAQ,CAAC,CAAA,CAAIsB,CAAK,IAAMA,CAAO,EAC/B,IAAK,CAAC,CAACC,CAAG,IAAMA,CAAK,EAEbH,EAAU,IAAII,IAAWL,EACpCK,EAAO,QACLC,GACEC,EAASD,CAAK,EACVJ,GAAQI,CAAK,EACbA,CACP,CACH,EAEaE,EAAeX,GAC1BI,EAAQJ,EAAM,WAAYA,EAAM,QAAU,QAAQ,EAEvCY,EAAsB,CAAC5B,KAAU6B,IAAS,CACrD,KAAM,CAAE,IAAAC,EAAK,MAAAC,EAAO,MAAAC,EAAO,UAAAC,CAAW,EAAGjC,EACzC,OAAOiC,IAEHF,EACEX,EAAQ,OAAQ,QAAS,GAAGS,CAAI,EAChCT,EACA,OACCU,EAAQ,SAASA,IAAU,KAC3BE,EAAQ,SAASA,IAAU,KAC5B,GAAGH,CACJ,EACP,EAEaK,GAAiB,CAAClC,KAAU6B,IAAS,CAChD,KAAM,CAAE,KAAAM,EAAM,IAAAL,EAAK,MAAAE,EAAO,UAAAC,CAAW,EAAGjC,EACxC,OAAOiC,IAEHE,EACEf,EACA,QAAQe,IACPL,EAAQ,SAASA,IAAU,KAC3BE,EAAQ,SAASA,IAAU,KAC5B,GAAGH,CACJ,EACCT,EAAQ,GAAGS,CAAI,EACvB,EAEaO,EAAc,CAAChB,EAASiB,EAAMC,EAAaD,KACtDjB,GAAA,YAAAA,EAAUiB,KAASC,EAERC,GAAgB,CAACnB,KAAYoB,IACxCrB,EACEqB,EAAM,IAAKH,GAAQD,EAAYhB,EAASiB,CAAI,CAAG,CAChD,EAEUI,GAAc,CAACzC,EAAO0C,KAASb,IAC1CV,EACE,OAAO,QAAQuB,CAAI,EAAE,OACnB,CAACtB,EAAS,CAACuB,EAAMC,CAAG,KACd5C,EAAM2C,CAAI,GACZvB,EAAQ,KAAKwB,CAAG,EAEXxB,GAET,CAAC,GAAGS,CAAI,CACT,CACF,EAEUgB,GAAgB,CAAC5C,EAAQmB,EAAQ,CAAA,KAAOS,IACnDV,EACE,OAAO,QAAQlB,CAAM,EAAE,OACrB,CAAC6C,EAAK,CAACT,EAAMU,CAAG,KACVA,GACFD,EAAI,KAAK1B,EAAQiB,CAAI,GAAKA,CAAI,EAEzBS,GAET,CAAC,GAAGjB,CAAI,CACT,CACF,EAEUmB,GAAahC,GAAS,CACjC,KAAM,CACJ,OAAAf,EACA,UAAAgC,EACA,QAAAb,EACA,SAAA6B,EACA,aAAAC,EACA,aAAAC,CAEJ,EAAMnC,EACJ,OAAO6B,GACL5C,EACAmB,EACAgB,EAAYhB,EAAS,OAAO,EAC5Ba,EAECiB,GAAgBD,EAAY,WAAa,KACzCE,GAAgB,CAAEF,EAAY,WAAa,IAC7C,CACH,EAGaG,GAAcC,GACzB/D,GAAW,OAAO+D,CAAM,EACpB,CAAE,MAAOA,EAAQ,KAAMA,CAAQ,EAC/BA,EAEOC,GAAYhC,GAASA,EAErBiC,EAAgB,IAAIC,IAAc,YAAYC,EAAM,CAC/D,QAASC,KAAMF,EAAU,OAAO1C,CAAQ,EACtC4C,EAAG,GAAGD,CAAI,CAEd,EAEaE,GAAgB,CAACD,KAAOD,IACnCnD,EAAWoD,CAAE,EACTA,EAAG,GAAGD,CAAI,EACVC,EAEC,SAASE,GAAYtC,EAAO,CACjC,GAAIuC,GAAUvC,CAAK,EACjB,MAAO,CAAC,EAAG,CAAEA,CAAK,EAEf,GAAIR,EAASQ,CAAK,EAAG,CACxB,MAAMwC,GAASxC,GAAA,YAAAA,EAAO,WAAW,SAAU,EAE3C,MAAO,CAACwC,EADOA,IAAW,CACL,EAEvB,MAAO,CAAC,EAAG,EAAI,CACjB,CClJO,MAAMC,GAAwB,CAEnC,gBAAmB/E,EACnB,gBAAmBG,EAMnB,eAAmB,GACnB,kBAAmB,GACnB,QAAmB,oCACnB,OAAmB,OACnB,YAAmBpC,GAAK,aAAaA,EAAI,EAAI,IAAM,KACnD,aAAmBA,GAAK,kBAAkBA,IAAM,EAAI,eAAiB,iCACvE,EAGaiH,GAAyB,CACpC,iBAAmB,GACnB,eAAmB,GACnB,kBAAmB,GACnB,aAAmB,GACnB,aAAmB,GACnB,aAAmB,KACnB,kBAAmB,EACnB,gBAAmBnF,GACnB,cAAmBD,GACnB,cAAmBF,EACrB,EAIauF,GAAsBC,GAAU,CAC3C,eAAgB,gBAChB,eAAgB,gBAChB,mBAAoB,iBAAkB,oBACtC,oBAAqB,eAAgB,kBACrC,UAAW,MACb,CAAC,ECvCKC,EAAc,CAClB,CAACjF,CAAK,EAAG,GACT,CAACT,CAAO,EAAG,EACb,EACM2F,GAAU,CACd,GAAGD,EACH,CAAC/F,CAAO,EAAG,EACb,EACMiG,GAAa,CACjB,GAAGF,EACH,CAAChF,CAAU,EAAG,EAChB,EACMmF,GAAU,CACd,CAACpF,CAAK,EAAG,GACT,CAACT,CAAO,EAAG,GACX,CAACU,CAAU,EAAG,EAChB,EACMoF,GAAQ,CACZ,CAACrF,CAAK,EAAG,GACT,CAACT,CAAO,EAAG,GACX,CAACU,CAAU,EAAG,EAChB,EACMqF,GAAO,CACX,CAACjG,CAAK,EAAG,EACX,EACMkG,GAAQ,CACZ,CAAClG,CAAK,EAAG,EACX,EACMmG,GAAa,CACjB,CAAC1F,CAAU,EAAG,GACd,CAACD,CAAS,EAAG,EACf,EACM4F,GAAY,CAChB,CAAC3F,CAAU,EAAG,GACd,CAACD,CAAS,EAAG,EACf,EAGM6F,GAAsB,CAC1B,QAAAR,GAAS,WAAAC,GAAY,QAAAC,GAAS,MAAAC,EAChC,EAGMM,GAAYC,GAChB,CAAC7E,EAAQ8E,EAAU,MAAQ,CACzB,GAAGA,EACH,GAAID,EAAc7E,CAAM,GAAK,CAAE,CAACA,CAAM,EAAG,EAAI,CACjD,GAGa+E,GAAgB,IAAM,CACjC,MAAMC,EAAQ,CACZ,GAAGd,EACH,CAAC/F,CAAO,EAAM,GACd,CAACe,CAAU,EAAG,GACd,CAACJ,CAAS,EAAI,GACd,CAACC,CAAU,EAAG,EACf,EACD,OAAO6F,GAAU,CACf,GAAGD,GACH,MAAAK,EAAO,WAAAP,GAAY,UAAAC,EACvB,CAAG,CACH,EAGaO,GAAiB,CAAClF,EAAM,KAAO,CAC1C,MAAMiF,EAAQ,CACZ,GAAGd,EACH,CAAC/F,CAAO,EAAM,GACd,CAACe,CAAU,EAAG,GACd,CAACZ,CAAK,EAAQ,GACd,CAACD,EAAQ,EAAK0B,EAAM,UAAY,EACjC,EACD,OAAO6E,GAAU,CACf,GAAGD,GACH,MAAAK,EAAO,MAAAR,GAAO,KAAAD,EAClB,CAAG,CACH,EC5EA,MAAMW,UAAoBpF,EAAY,CAoBpC,YAAYC,EAAO,CACjB,MAAMA,CAAK,EACX,KAAK,OAAS,CAAG,EAEjB,KAAM,CAEJ,OAAAoF,EAAO,CAAG,CAChB,EAAQpF,EACEqF,EAAgB,CAAE,GAAGD,CAAQ,EAC7BE,EAAW,CACf,GAAGvB,GACH,GAAG,KAAK,KACT,EAED,KAAK,MAAQ,CAEX,GAAGuB,EACH,GAAG,KAAK,MACR,cAAAD,EACA,OAAQ,CAAE,GAAGA,CAAe,EAC5B,OAAQ,CAAG,EACX,MAAO,IACR,EAEG,KAAK,MAAM,QACb,KAAK,MAAM,OAAO,IAAI,CAEzB,CACD,mBAAoB,CAClB,KAAK,MAAM,qBAAqB,EAChC,KAAK,QAAU,EAChB,CACD,sBAAuB,CACrB,KAAK,MAAM,wBAAwB,EACnC,KAAK,QAAU,EAChB,CAGD,UAAUhD,EAAMrC,EAAO,SACrB,MAAMsF,IAAWC,EAAA,KAAK,MAAM,SAAX,YAAAA,EAAoBlD,KAAS,CAAG,EAC3Cf,EAAWtB,EAAM,SAASwF,EAAA,KAAK,MAAM,SAAX,YAAAA,EAAoBnD,IACpD,MAAO,CACL,KAAAA,EACA,GAAGoD,GAAQ,KAAK,MAAOxB,EAAmB,EAC1C,GAAGqB,EACH,GAAGtF,EACH,MAAAsB,CACD,CACF,CACD,YAAYe,EAAMrB,EAAO,CACvB,KAAK,MAAM,aAAaqB,SAAY,EACpC,KAAK,OAAOA,CAAI,EAAIrB,EACpB,KAAK,SACHT,IAAU,CACR,OAAQ,CACN,GAAGA,EAAM,OACT,CAAC8B,CAAI,EAAGrB,EAAM,MAAM,KACrB,CACT,EACK,CACF,CACD,YAAYqB,EAAM,CAChB,KAAK,MAAM,aAAaA,SAAY,EACpC,OAAO,KAAK,OAAOA,CAAI,CACxB,CAED,mBAAmB9B,EAAOJ,EAAU,CAClC,KAAK,UAAUnB,EAAYuB,EAAOJ,CAAQ,CAC3C,CACD,kBAAkBI,EAAOJ,EAAU,CACjC,KAAK,UAAUpB,EAAWwB,EAAOJ,CAAQ,CAC1C,CAKD,SAASkC,EAAMqD,EAAO,OACpBA,GAAA,MAAAA,EAAO,kBACPH,EAAA,KAAK,OAAOlD,CAAI,IAAhB,MAAAkD,EAAmB,UACpB,CAKD,MAAM,EAAG,CACD,KAAK,UAGX,KAAK,MAAM,SAAS,EACpB,WAAG,iBACH,KAAK,YAAa,EAClB,KAAK,cACH,CACE,OAAQ,CAAG,EACX,MAAO,IACR,EACD,KAAK,MAAM,OACZ,EACF,CACD,aAAc,CACZ,KAAK,MAAM,eAAe,EAC1B,OAAO,OAAO,KAAK,MAAM,EAAE,QACzBvE,GAASA,EAAM,MAAO,CACvB,CACF,CACD,SAASqB,EAAMf,EAAO,CAEpB,KAAK,MAAM,YAAYe,MAASf,IAAQ,EAWxC,KAAK,gBACHf,IAAU,CACR,GAAGA,EACH,OAAQ,CACN,GAAGA,EAAM,OACT,CAAC8B,CAAI,EAAGf,CACT,CACT,EACK,CACF,CACD,UAAUqE,EAAQD,EAAO,CACvB,KAAK,MAAM,eAAgBC,CAAM,EACjCD,GAAA,MAAAA,EAAO,iBACP,OAAO,QAAQC,CAAM,EAAE,QACrB,CAAC,CAACtD,EAAMf,CAAK,IAAM,OAAA,OAAAiE,EAAA,KAAK,OAAOlD,CAAI,IAAhB,YAAAkD,EAAmB,SAASjE,GAChD,CACF,CAED,UAAUqE,EAAQ,CAChB,MAAMP,EAAS,CACb,GAAG,KAAK,MAAM,OACd,GAAGO,CACJ,EACD,KAAK,SAAS,CAAE,OAAAP,EAAQ,CACzB,CAKD,OAAOM,EAAO,CACZ,KAAK,MAAM,UAAU,EACrBA,GAAA,MAAAA,EAAO,iBACP,KAAK,SAAU,EACZ,KAAME,GAAU,KAAK,aAAaA,CAAM,CAAG,EAC3C,MAAOA,GAAU,KAAK,MAAM,qBAAsBA,CAAM,CAAG,CAC/D,CACD,UAAW,CACT,YAAK,MAAM,YAAY,EACvB,KAAK,mBAAoB,EAElB,IAAI,QAAS,KAAK,WAAa,EACnC,KACCA,IACE,KAAK,MAAM,oBAAqBA,CAAM,EACtC,KAAK,cACH,CAAE,OAAAA,EAAQ,MAAO,KAAM,OAAQ,CAAA,CAAK,EACpC,KAAK,MAAM,OACZ,EACMA,EAEV,EACA,MACCA,GAAU,CACR,WAAK,MAAM,oBAAqBA,CAAM,EACtC,KAAK,YAAY,CACf,MAAOA,EAAO,MAAO,OAAQA,EAAO,MAChD,CAAW,EACKA,CACP,CACF,CACJ,CAED,WAAY,CACV,MAAO,CAACC,EAASC,IAAW,QAAQ,WAClC,OAAO,OAAO,KAAK,MAAM,EAAE,IACzB9E,GAASA,EAAM,SAAU,CAC1B,CACF,EACE,KACC+E,GAAWA,EAAQ,OACjB,CAACH,EAAQ,CAAC,OAAA3F,EAAQ,MAAAqB,EAAO,OAAA0E,CAAM,KACzB/F,IAAWzB,GACb,OAAO,OACLoH,EAAO,OACPtE,EAAM,MAAQ,CAAE,CAACA,EAAM,IAAI,EAAGA,EAAM,KAAO,CAC5C,EAGDsE,EAAO,OAAO,KAAKI,CAAM,EAEpBJ,GAET,CACE,OAAQ,CAAE,GAAG,KAAK,MAAM,MAAQ,EAChC,OAAQ,CAAG,CACZ,CACF,CACF,EACA,KACCA,GAAU,OAER,OADA,KAAK,MAAM,8BAA+BA,CAAM,GAC5CL,EAAAK,EAAO,SAAP,MAAAL,EAAe,QACjB,KAAK,MAAM,+BAAgCK,CAAM,EAC1CE,EAAOF,CAAM,GAElB,KAAK,MAAM,UACb,KAAK,MAAM,oBAAqBA,CAAM,EAC/B,KAAK,MAAM,SAChBA,EAAO,OAAQ,KAAK,WAAY,CACjC,EACE,KAAMD,GAAUE,EAAQ,CAAE,GAAGD,EAAQ,OAAAD,CAAM,CAAE,CAAG,EAChD,MAAOM,GAAUH,EAAOG,CAAM,CAAG,GAE/BJ,EAAQD,CAAM,CACtB,CACF,CACJ,CAED,aAAaA,EAAQ,CAEnB,GADA,KAAK,MAAM,sCAAuCA,CAAM,EACpD,CAAE,KAAK,MAAM,SAAU,CACzB,OAAO,MACL,4CAA8C,KAAK,UAAUA,EAAO,MAAM,CAC3E,EACD,OAEF,KAAK,mBACH,CAAG,EACH,SAAY,CACV,KAAK,MAAM,6BAA8BA,CAAM,EAC/C,GAAI,CACF,MAAMM,EAAW,MAAM,KAAK,MAAM,SAASN,EAAO,OAAQ,KAAK,YAAY,EAG3E,GAFA,KAAK,MAAM,qBAAsBM,CAAQ,EACzC,KAAK,kBAAmB,EACpBA,GAAA,MAAAA,EAAU,KAAMA,GAAA,YAAAA,EAAU,UAAW,IACvC,KAAK,MAAM,uBAAuBA,GAAA,YAAAA,EAAU,aAAaA,GAAA,YAAAA,EAAU,QAAQ,EAC3E,KAAK,cAAcA,CAAQ,WAEpBA,GAAA,YAAAA,EAAU,SAAU,KAAOA,EAAS,QAAU,IACrD,KAAK,MAAM,yBAAyBA,GAAA,YAAAA,EAAU,QAAQ,EACtD,KAAK,YAAYA,EAAS,IAAI,MAG9B,OAAM,IAAI,MAAM,qBAAqBA,GAAA,YAAAA,EAAU,QAAQ,CAE1D,OACMC,EAAP,CACE,KAAK,MAAM,kBAAmBA,CAAK,EACnC,KAAK,YACHC,EAASD,CAAK,EACV,CAAE,MAAAA,CAAO,EACTA,aAAiB,MACf,CAAE,MAAOA,EAAM,OAAS,EACxBA,CACP,CACF,CACF,CACF,CACF,CACD,cAAcD,EAAU,CACtB,KAAK,MAAM,kBAAmBA,CAAQ,EACtC,MAAMG,EAAY,KAAK,MAAM,WAAajG,EAC1C,KAAK,cACH,CAAG,EACHmD,EACE,IAAM8C,EAAUH,CAAQ,EACxB,KAAK,MAAM,eAAiB,IAAM,KAAK,YAAa,EAAG,IACxD,CACF,CACF,CACD,YAAYI,EAAQ,CAGlB,KAAK,MAAM,gBAAiBA,CAAM,EAClC,MAAMC,EAAa7F,EAAQ4F,GAAA,YAAAA,EAAQ,MAAM,GAAK,KAAK,YAAYA,EAAO,MAAM,EAGtEE,EAAU,KAAK,MAAM,SAAW,KAAK,MAAM,WAAapG,EAE9D,KAAK,gBACHkG,EACA/C,EACE,IAAMiD,EAAQF,CAAM,EACpBC,EACI,IAAMA,EAAW,SAAU,EAC3B,IACL,CACF,CACF,CACD,YAAYE,EAAQ,CAClB,MAAMC,EAASD,EAAO,OACpB,CAACC,EAAQP,IAAU,CACjB,MAAM9D,EAAO8D,EAAM,MAAQA,EAAM,OAASA,EAAM,MAC1C,CAAE,QAAAQ,CAAO,EAAKR,EACdnF,EAAQqB,GAAQ,KAAK,OAAOA,CAAI,EACtC,OAAIrB,IACFmF,EAAM,QAANA,EAAM,MAAUnF,EAAM,MAAM,OAC5BA,EAAM,gBAAgB,CAAE,QAAA2F,EAAS,EACjCD,EAAO,KAAK1F,CAAK,GAEZ0F,CACR,EACD,CAAG,CACJ,EACD,OAAO,KAAK,MAAM,mBAAqBA,EAAO,OAC1CA,EAAO,CAAC,EACR,IACL,CAKD,YAAa,CAQX,MANgB,CAGd,GAAG,KAAK,MACR,GAAG,KAAK,OACT,CAEF,CACH,CA7VEE,EADIzB,EACG,YAAeH,IACtB4B,EAFIzB,EAEG,QAAe,IACtByB,EAHIzB,EAGG,cAAe,WACtByB,EAJIzB,EAIG,aAAe,iBACtByB,EALIzB,EAKG,UAAe,CACpB,YAAa,cAAe,cAC5B,WACA,QACA,WACA,SACA,WAAY,YAAa,YAEzB,YACA,gBAAiB,kBACjB,qBAAsB,gBAAiB,kBACvC,qBAAsB,oBACtB,aACD,GA8UE,MAAC0B,GAAYC,GAAU3B,CAAW,EAC1B,CAAA,QAAE4B,GAAO,SAAEC,GAAQ,SAAEC,GAAU,IAAKC,CAAO,EAAKL,GCpWhDM,GAAW,CAAC,CACvB,SAAAC,CACF,IACE5G,EAAQ4G,CAAQ,EAAE,IAChB,CAACC,EAAOtK,IAAMuD,EAAW+G,CAAK,EACzBC,EAAA,IAAAP,GAAQ,SAAR,CACE,SADoBM,CAAA,EAAAtK,CAEvB,EACAsK,CACN,ECTWE,GAAS,CAAC,CACrB,SAAAH,CACF,IAAM,CACJ,MAAMlG,EAAOgG,IACP,CACJ,OAAAtB,EACA,UAAA3D,CACE,EAAAf,EACEP,EAAQM,GAAUC,CAAI,EAE5B,OACGoG,EAAAA,IAAA,OAAA,CAAK,UAAArF,EAAuB,GAAGtB,EAAO,SAAUiF,EAAQ,WAAU,GACjE,SAAA0B,MAACH,GACE,CAAA,SAAAC,CAAA,CACH,CACF,CAAA,CAEJ,ECpBMpK,EAAIW,EAAC,cAAA,EACX,SAASL,GAAEP,EAAG,CACZ,OAAO,OAAOA,GAAK,UACrB,CACA,SAASM,GAAEN,EAAG,CACZ,OAAO,OAAOA,GAAK,UAAY,CAACyK,GAAEzK,CAAC,GAAK,CAACyC,GAAEzC,CAAC,CAC9C,CACA,SAASyK,GAAEzK,EAAG,CACZ,OAAO,MAAM,QAAQA,CAAC,CACxB,CACA,SAASyC,GAAEzC,EAAG,CACZ,OAAOA,IAAM,IACf,CACA,SAASD,GAAEC,EAAI,GAAIwC,EAAI,GAAIK,EAAI,GAAI,CACjC,GAAI,CAACL,EACH,OAAOK,EACT,IAAIzC,EAAI,CAAA,EACR,MAAMK,EAAIF,GAAEiC,CAAC,EAAIA,EAAExC,CAAC,EAAIA,EAAEwC,CAAC,EAC3B,OAAOlC,GAAEG,CAAC,EAAI,OAAO,OAAOL,EAAGK,EAAGoC,CAAC,EAAItC,GAAEE,CAAC,EAAI,OAAO,OAAOL,EAAGyC,EAAGpC,EAAEoC,EAAG7C,CAAC,CAAC,EAAI,OAAO,OAAOI,EAAGyC,CAAC,EAAGzC,CACpG,CACM,MAAAW,GAAKf,IAAO,CAAE,QAASC,EAAG,SAAU,CAAC,CAAE,SAAUQ,EAAG,GAAGC,CAAG,IAAqBC,EAAC,IAACV,EAAE,SAAU,CAAE,MAAO,CAAE,GAAGD,EAAG,GAAGU,GAAK,SAAUD,CAAC,CAAE,EAAG,SAAWA,GAAOC,GAAsBC,MAAEV,EAAE,SAAU,CAAE,SAAWI,GAAsBM,EAAAA,IAAEF,EAAG,CAAE,GAAGJ,EAAG,GAAGK,EAAG,QAASL,EAAG,CAAC,CAAE,EAAG,UAAW,CAACI,EAAGC,EAAID,EAAE,aAAeA,EAAE,OAASS,EAAE,WACzT,CAACb,EAAGS,IAAsBH,MAAEV,EAAE,SAAU,CAAE,SAAWE,GAAsBQ,EAAC,IAACF,EAAG,CAAE,GAAGV,GAAEI,EAAGO,EAAGL,CAAC,EAAG,IAAKS,CAAG,CAAA,EAAG,CAC9G,CAAG,GAAGhB,GAAIiB,GAAC,EAAIF,EAAIf,GAAE,UCHrB4K,GAAeC,EAdF,CAAC,CACZ,SAAAN,EACA,OAAAG,EAAOI,GACP,GAAG3H,CACL,UAEKgH,GAAU,CAAA,GAAGhH,EACZ,SAACsH,EAAA,IAAAC,EAAA,CACE,SAAAH,CACH,CAAA,CACF,CAAA,EAIwB,MAAM,ECZlC,MAAMQ,UAAqB7H,EAAY,CAcrC,YAAYC,EAAO,CACjB,MAAMA,CAAK,EACX,KAAK,KAAOA,EAAM,KAElB,KAAM,CAAE,MAAAsB,CAAK,EAAKtB,EACZ6H,EAAevG,EAErB,KAAK,KAAO,KAAK,MAAM,KACvB,KAAK,MAAQ,CACX,GAAG,KAAK,MACR,aAAAuG,EACA,MAAAvG,EACA,MAAO,IACR,EACD,KAAK,MAAM,iBAAkB,KAAK,KAAK,EAEvC,KAAK,SAAWwG,YAAW,EAC3B,KAAK,SAAWA,YAAW,EAE3B,KAAK,GAAK,CACR,KAAS,KAAK,gBAAgB,KAAK,MAAM,MAAM,EAC/C,MAAS,KAAK,gBAAgB,KAAK,MAAM,OAAO,EAChD,KAAS,KAAK,gBAAgB,KAAK,MAAM,MAAM,EAC/C,OAAS,KAAK,gBAAgB,KAAK,MAAM,QAAQ,EACjD,MAAS,KAAK,gBAAgB,KAAK,MAAM,OAAO,EAChD,QAAS,KAAK,gBAAgB,KAAK,MAAM,SAAS,CACnD,EACD,KAAK,GAAG,KAAM,CAIf,CACD,gBAAgBpE,EAAI,CAClB,OAAOA,EACH,IAAMA,EAAG,KAAK,YAAY,EAC1BtD,CACL,CACD,mBAAoB,CAClB,KAAK,MAAM,mBAAmB,EAC9B,KAAK,QAAU,GACf,KAAK,KAAK,YAAY,KAAK,MAAM,KAAM,IAAI,CAC5C,CACD,sBAAuB,CACrB,KAAK,MAAM,sBAAsB,EACjC,KAAK,QAAU,GACf,KAAK,KAAK,YAAY,KAAK,MAAM,IAAI,CACtC,CACD,cAAcG,EAAOJ,EAAU,CAC7B,OAAO,KAAK,UAAU5B,EAAOgC,EAAOJ,CAAQ,CAC7C,CACD,aAAaI,EAAOJ,EAAU,CAC5B,OAAO,KAAK,UAAUhC,GAAMoC,EAAOJ,CAAQ,CAC5C,CACD,SAAU,CACR,KAAK,cACH,CAAG,EACH,KAAK,GAAG,KACT,CACF,CACD,QAAS,CACP,KAAK,aACH,CAAG,EACH,KAAK,MAAM,eACP,IAAM,KAAK,WAAW,KAAK,GAAG,IAAI,EAClC,KAAK,GAAG,IACb,CACF,CACD,SAAS,EAAG,SACV,WAAG,kBAEHqF,GAAAD,EAAA,KAAK,WAAL,YAAAA,EAAe,UAAf,MAAAC,EAAwB,OACzB,CAKD,SAAS/D,EAAO,CACd,KAAK,MAAM,YAAYA,IAAQ,EAC/B,MAAMH,EAAQ,KAAK,MAAM,aACrB,KAAK,MAAM,aAAaG,CAAK,EAC7BA,EACE,CAAE,QAAA6C,CAAO,EAAK,KAAK,MAAM,OACzB,CACJ,iBAAAyD,EAAkB,kBAAAC,EAAkB,GAAM,kBAAAC,EAAkB,CAC7D,EAAG,KAAK,MACH,CAACnE,CAAM,EAAIF,GAAYtC,CAAK,EAClC,IAAI4G,EAAWH,GAAqBC,GAAqB1D,EAOrDR,EAASmE,GAAqB,CAAE3D,IAClC4D,EAAW,IAGb,KAAK,gBACH,CAAE,MAAA5G,CAAO,EACT,IAAM,CACJ,KAAK,KAAK,SAAS,KAAK,MAAM,KAAMA,CAAK,EACrC4G,EACF,KAAK,WAAW,KAAK,GAAG,MAAM,EAG9B,KAAK,GAAG,OAAQ,CAEnB,CACF,CACF,CACD,SAAS5G,EAAOoE,EAAO,CACrBA,GAAA,MAAAA,EAAO,iBACP,KAAK,SAASpE,CAAK,CAGpB,CACD,MAAM,EAAG,CACP,WAAG,iBACH,MAAMA,EAAQ,KAAK,MAAM,aACrB,KAAK,MAAM,aAAa,KAAK,MAAM,YAAY,EAC/C,KAAK,MAAM,aACf,YAAK,MAAM,sBAAsB,KAAK,MAAM,mBAAmBA,GAAO,EACtE,KAAK,KAAK,SAAS,KAAK,MAAM,KAAMA,CAAK,EACzC,KAAK,cACH,CAAE,MAAAA,CAAO,EACT,IAAA,SAAM,OAAAkE,GAAAD,EAAA,KAAK,WAAL,YAAAA,EAAe,UAAf,YAAAC,EAAwB,QAC/B,EACMlE,CACR,CAED,WAAWnB,EAAU,CACnB,KAAK,SAASA,CAAQ,EAAE,KAAKC,CAAS,EAAE,MAAMA,CAAS,CACxD,CACD,SAASD,EAAU,CACjB,KAAK,MAAM,YAAY,EACvB,MAAMgI,EAAS,CACb,KAAO,KAAK,KACZ,MAAO,KAAK,MAAM,KACnB,EACD,OAAO,IAAI,QAAS,KAAK,WAAa,EACnC,KACC5H,IACE,KAAK,MAAM,qBAAsBA,CAAK,EACtC,KAAK,cACHA,EACAgD,EAAc,KAAK,GAAG,MAAOpD,CAAQ,CACtC,EACM,CACL,GAAGgI,EACH,GAAG5H,CACJ,EAEJ,EACA,MACCA,GAAS,CACP,WAAK,MAAM,qBAAsBA,CAAK,EACtC,KAAK,gBACHA,EACAgD,EAAc,KAAK,GAAG,QAASpD,CAAQ,CACxC,EACK,CACJ,GAAGgI,EACH,GAAG5H,CACJ,CACF,CACF,CACJ,CACD,WAAY,CACV,MAAO,OAAOsF,EAASC,IAAW,CAChC,KAAM,CAAE,MAAAxE,EAAM,EAAI,EAAG,KAAK,MACpB,CACJ,SAAA4G,EAAU,SAAAjF,EAAU,gBAAAmF,EAAiB,aAAAC,CACtC,EAAG,CAAE,GAAGrE,GAAwB,GAAG,KAAK,KAAO,EAC1C,EAAIsE,CAAK,EAAI1E,GAAYtC,CAAK,EASpC,GAFA,KAAK,mBAAoB,EAErB4G,EAEF,OAAO,MAAM,KAAK,kBAChBrC,EAASC,EAAQoC,EAAUG,CAC5B,EAEE,GAAIC,EACP,OAAO,MAAM,KAAK,cAChBzC,EAASC,EAAQ7C,EAAUoF,EAAcD,CAC1C,EAGD,KAAK,MAAM,uBAAuB,EAClCvC,EAAQ,CAAE,MAAAvE,EAAO,QAAS+G,CAAY,CAAE,CAE3C,CACF,CACD,MAAM,kBAAkBxC,EAASC,EAAQoC,EAAUG,EAAc,CAC/D,KAAK,MAAM,2BAA2B,EACtC,MAAMrH,EAAQ,KAAK,WAAY,EAC/B,GAAI,CACF,KAAK,MAAM,yCAAyCA,EAAM,QAAQ,EAClE,MAAMM,EAAQ,MAAM4G,EAASlH,EAAM,MAAOA,EAAO6E,EAASC,CAAM,EAChE,KAAK,MAAM,4BAA6BxE,CAAK,EAC7CuE,EACEnE,EAASJ,CAAK,EACV,CAAE,QAAS+G,EAAc,GAAG/G,CAAO,EACnC,CAAE,MAAAA,EAAO,QAAS+G,CAAc,CACrC,CACF,OACME,EAAP,CACE,KAAK,MAAM,2BAA4BA,CAAG,EAC1C,MAAM5B,EAAUP,EAASmC,CAAG,EACxBA,EACAA,EAAI,QACR,KAAK,MAAM,0BAA2B5B,CAAO,EAC7Cb,EAAO,CAAE,QAAAa,EAAS,CACnB,CACF,CACD,cAAcd,EAASC,EAAQ7C,EAAUoF,EAAcG,EAAgB,CACjEvF,GACF,KAAK,MAAM,8CAA8C,EACzD6C,EAAO,CAAE,QAAS0C,EAAgB,IAGlC,KAAK,MAAM,sDAAsD,EACjE3C,EAAQ,CAAE,QAASwC,EAAc,EAEpC,CAED,SAAS1B,EAAS/G,EAAG,CACnBA,GAAA,MAAAA,EAAG,iBACH,KAAK,cAAc,CAAE,QAAA+G,CAAS,EAAE,KAAK,GAAG,KAAK,CAC9C,CACD,WAAWA,EAAS/G,EAAG,CACrBA,GAAA,MAAAA,EAAG,iBACH,KAAK,gBAAgB,CAAE,QAAA+G,CAAS,EAAE,KAAK,GAAG,OAAO,CAClD,CAqBD,YAAa,CACX,MAAM8B,EAAU,CACd,GAAGzE,GACH,GAAG,KAAK,MACR,GAAG,KAAK,MACR,GAAG,KAAK,QACR,KAAU,KAAK,KACf,SAAU,KAAK,SACf,SAAU,KAAK,SACf,OAAU,KAAK,QAChB,EACD,cAAOyE,EAAQ,KACf,OAAOA,EAAQ,SACf,OAAOA,EAAQ,OACRA,CACR,CACH,CAjSE7B,EADIgB,EACG,YAAe1C,IACtB0B,EAFIgB,EAEG,QAAe,IACtBhB,EAHIgB,EAGG,cAAe5H,GAAS,UAAUA,EAAM,YAC/C4G,EAJIgB,EAIG,aAAe,QACtBhB,EALIgB,EAKG,UAAe,CAEpB,UAAW,SAAU,WACrB,WAAY,WAAY,WAAY,aAAc,QAElD,gBAAiB,kBACjB,qBAAsB,gBAAiB,kBACvC,gBAAiB,cAClB,GAuRE,MAACf,GAAYC,GAAUc,CAAY,EAC3B,CAAE,QAAAb,GAAS,SAAAC,GAAU,SAAAC,GAAU,IAAKyB,CAAQ,EAAK7B,GCrR9D8B,GAAejB,EApBD,CAAC,CAAE,MAAA1G,EAAM0H,OAAiB,CACtC,KAAM,CAAE,MAAAE,EAAO,GAAAC,EAAI,SAAA5F,CAAA,EAAajC,EAC1BkC,EAAelC,EAAM,cAAiBiC,EACtCE,EAAenC,EAAM,cAAiB,CAAEiC,EACxC6F,EAAeF,GAAS1F,GAAgBC,EACxClB,EAAejB,EAAM,WACrB+H,EAAe,CAAA,EACjB,OAAA7F,GAAgBlC,EAAM,gBAAkBpC,KACpCmK,EAAA,iBAAiB,EAAI,IAAI/H,EAAM,kBAEnCmC,GAAgBnC,EAAM,gBAAkBtC,KACpCqK,EAAA,iBAAiB,EAAI,IAAI/H,EAAM,kBAGhC8H,GACJxB,EAAAA,IAAA,QAAA,CAAM,QAASuB,EAAI,UAAA5G,EAAsB,MAAA8G,EACvC,SAAOH,GAAAtB,EAAA,IAAC,OAAK,CAAA,SAAA,GAAA,CAAM,CACtB,CAAA,CACJ,EAE6B,kBAAkB,ECzBlC0B,GAAiBhI,GAC5B,GAAKA,EAAM,SAAS,EAAE,OAAO,KAAK,EAEvBiI,GAAkBjI,GAC7B,GAAKA,EAAM,SAAS,EAAE,OAAO,OAAO,EAEzBkI,EAAgB,CAC3B,QAAUF,GACV,SAAUC,EACZ,EC2BAE,GAAezB,EA9BE,CAAC,CAAE,MAAA1G,EAAM0H,OAAiB,CACnC,KAAA,CACJ,GAAAG,EACA,KAAAO,EACA,OAAAC,EACA,OAAAC,EACA,WAAAC,EACA,KAAAC,EAAK,WACL,QAAAC,EAAQC,EAASF,CAAI,GAAGE,EAAS,OAC/B,EAAA1I,EACEL,EAAQI,EAAWC,CAAK,EACxB2I,EAAiBvI,EAAQ,WAAYmI,EAAY,CAAE,OAAAF,EAAQ,OAAAC,EAAQ,EAEzE,OACGM,EAAAA,KAAA,QAAA,CAAM,QAASf,EAAI,UAAWc,EAC7B,SAAA,CAAArC,EAAA,IAAC,QAAA,CACC,KAAAkC,EACA,IAAKxI,EAAM,SACX,gBAAeA,EAAM,SACrB,SAAUA,EAAM,SAAW,GAAKA,EAAM,SACtC,SAAUyI,EAAQzI,CAAK,EACvB,UAAWW,EAAaX,CAAK,EAC5B,GAAGL,EACJ,QAASK,EAAM,KAAA,CACjB,EACCoI,CACH,CAAA,CAAA,CAEJ,EAEgC,qBAAqB,EC7BrDS,GAAenC,EAHO,CAAC,CAAE,MAAA1G,EAAM0H,OAC7BpB,EAAAA,IAAC,QAAM,CAAA,KAAK,SAAS,KAAMtG,EAAM,KAAM,MAAOA,EAAM,KAAM,CAAA,EAE9B,mBAAmB,EC0DjD8I,GAAepC,EA3DD,CAAC,CAAE,MAAA1G,EAAM0H,OAAiB,CAChC,KAAA,CACJ,OAAAW,EACA,OAAAC,EACA,QAAAS,EAAQ,CAAC,EACT,WAAAC,EACA,YAAAC,EACA,aAAAC,EAAa,UACb,KAAAV,EAAK,QACL,QAAAC,EAAQC,EAASF,CAAI,GAAGE,EAAS,OAC/B,EAAA1I,EACEL,EAAQI,EAAWC,CAAK,EAE9B,aACG,MAAI,CAAA,UAAWI,EAAQ8I,CAAY,EAChC,SAAQH,EAAA,IACR,CAAC1G,EAAQ5F,IAAM,CACb4F,EAASD,GAAYC,CAAM,EAC3B,MAAMwF,EAAK,GAAG7H,EAAM,MAAMqC,EAAO,QAC3B8G,EAAUnJ,EAAM,OAASqC,EAAO,MAIhC+G,IADQpJ,EAAM,MAAQmJ,EAAU1M,GAAK,GACvBuD,EAAM,SAAW,KAC/BuI,GAAanI,EACjB,QACA6I,EACA5G,EAAO,UACP,CAAE,OAAAgG,EAAQ,OAAAC,CAAO,CAAA,EAGjB,OAAAM,EAAA,KAAC,QAAA,CAEC,UAAWL,GACX,SAAUlG,EAAO,SACjB,QAASwF,EAET,SAAA,CAAAvB,EAAA,IAAC,QAAA,CACC,KAAAkC,EACA,UAAWQ,EAEX,IAAAI,GACA,gBAAepJ,EAAM,SACrB,SAAUA,EAAM,SAAW,GAAKA,EAAM,SACtC,SAAUyI,EAAQzI,CAAK,EACtB,GAAGL,EACJ,GAAAkI,EACA,QAAAsB,EACA,MAAO9G,EAAO,KAAA,CAChB,EACCA,EAAO,IAAA,CAAA,EAlBHA,EAAO,KAAA,CAqBlB,CAEJ,CAAA,CAAA,CAEJ,EAE6B,kBAAkB,EChB/CgH,GAAe3C,EA3CA,CAAC,CAAE,MAAA1G,EAAM0H,OAAiB,CACjC,KAAA,CACJ,QAAAqB,EAAQ,CAAC,EACT,YAAAO,EACA,KAAAd,EAAK,SACL,YAAAS,EAAY,SACZ,QAAAR,EAAQC,EAASF,CAAI,GAAGE,EAAS,OAC/B,EAAA1I,EACEL,EAAQI,EAAWC,CAAK,EAG5B,OAAA4I,EAAA,KAAC,SAAA,CACC,IAAK5I,EAAM,SACX,gBAAeA,EAAM,SACrB,SAAUA,EAAM,SAAW,GAAKA,EAAM,SACtC,UAAWW,EAAaX,CAAK,EAC7B,SAAUyI,EAAQzI,CAAK,EACtB,GAAGL,EACJ,MAAOK,EAAM,MACb,SAAUA,EAAM,UAAY,EAAQsJ,EAElC,SAAA,CAAQ,EAAAA,GACRhD,EAAA,IAAC,SAAO,CAAA,MAAM,GAAG,OAAM,GAAC,SAAQ,GAAE,SAAYgD,CAAA,CAAA,EAE9CP,EAAQ,IACE1G,IACRA,EAASD,GAAYC,CAAM,EAEzBiE,EAAA,IAAC,SAAA,CAEC,UAAW2C,EACX,MAAO5G,EAAO,MACd,SAAUA,EAAO,SAEhB,SAAOA,EAAA,IAAA,EALHA,EAAO,KAAA,EASpB,CAAA,CAAA,CAAA,CAGN,EAE8B,mBAAmB,ECnBjDkH,GAAe7C,EAvBK,CAAC,CAAE,MAAA1G,EAAM0H,OAAiB,CACtC,KAAA,CACJ,KAAAc,EAAKvK,EACL,QAAAwK,EAAQC,EAASF,CAAI,GAAGE,EAAS,OAC/B,EAAA1I,EACEL,EAAQI,EAAWC,CAAK,EAG5B,OAAAsG,EAAA,IAAC,QAAA,CACC,KAAAkC,EACA,IAAKxI,EAAM,SACX,UAAWW,EAAaX,CAAK,EAC7B,gBAAeA,EAAM,SAErB,SAAUA,EAAM,SAAW,GAAKA,EAAM,SACtC,QAASA,EAAM,QACf,OAAQA,EAAM,OACd,SAAUyI,EAAQzI,CAAK,EACtB,GAAGL,CAAA,CAAA,CAGV,EAE4B,iBAAiB,ECH7C6J,GAAe9C,EAtBE,CAAC,CAAE,MAAA1G,EAAM0H,OAAiB,CACnC,KAAA,CAAE,KAAA+B,EAAK,CAAM,EAAAzJ,EAEjB,OAAAsG,EAAA,IAAC,WAAA,CACC,GAAItG,EAAM,GACV,IAAKA,EAAM,SACX,UAAWW,EAAaX,CAAK,EAC7B,KAAMA,EAAM,KACZ,MAAOA,EAAM,MACb,SAAUA,EAAM,SAChB,gBAAeA,EAAM,SACrB,SAAUA,EAAM,SAAW,GAAKA,EAAM,SACtC,YAAaA,EAAM,YACnB,aAAcA,EAAM,aACpB,SAAepB,GAAAoB,EAAM,SAASpB,EAAE,OAAO,KAAK,EAC5C,QAASoB,EAAM,QACf,OAAQA,EAAM,OACd,KAAAyJ,CAAA,CAAA,CAGN,EAEgC,qBAAqB,ECZxCC,EAAc,CACzB,QAAUC,GACV,SAAUC,GACV,OAAUC,GACV,MAAUC,GACV,OAAUC,GACV,KAAUJ,GACV,SAAUK,EACZ,ECbAC,GAAevD,EALA,CAAC,CAAE,MAAA1G,EAAM0H,OACtBpB,EAAAA,IAAC,MAAI,CAAA,UAAWlG,EAAQ,SAAUJ,EAAM,WAAW,EAChD,WAAM,MACT,CAAA,EAE4B,mBAAmB,ECAjDkK,GAAexD,EALA,CAAC,CAAE,MAAA1G,EAAM0H,OACtBpB,EAAAA,IAAC,MAAI,CAAA,UAAWlG,EAAQ,SAAUJ,EAAM,WAAW,EAChD,WAAM,MACT,CAAA,EAE4B,mBAAmB,ECmCjDmK,GAAezD,EAnCA,CAAC,CAAE,MAAA1G,EAAM0H,OAAiB,CACjC,KAAA,CACJ,QAAAtH,EAAS,OAAAgK,EAAQ,OAAAC,EAAQ,YAAAC,EAAa,OAAAjC,EACtC,KAAAG,EAAKvK,EACL,OAAAsM,EAAON,GACP,OAAAO,EAAON,EACL,EAAAlK,EACEyK,EAAOf,EAAWlB,CAAI,GAAKkB,EAAW,QAC5C,IAAIgB,EAAa,CACftJ,EAAYhB,EAAS,QAAQ,CAAA,EAG3BN,EAASsK,CAAM,GACjBM,EAAW,KAAKtJ,EAAYhB,EAAS,UAAU,CAAC,EAE9CN,EAASuK,CAAM,GACjBK,EAAW,KAAKtJ,EAAYhB,EAAS,UAAU,CAAC,EAE9CiI,GACFqC,EAAW,KAAKtJ,EAAYhB,EAAS,QAAQ,CAAC,EAE5CN,EAASwK,CAAW,GACtBI,EAAW,KAAKJ,CAAW,EAEvB,MAAArJ,EAAYyJ,EAAW,KAAK,GAAG,EAGnC,OAAA9B,OAAC,OAAI,UAAA3H,EACD,SAAA,CAAAnB,EAASsK,CAAM,GAAM9D,EAAAA,IAAAiE,EAAA,CAAO,MAAAvK,CAAa,CAAA,EAC3CsG,MAACmE,GAAK,MAAAzK,EAAa,EACjBF,EAASuK,CAAM,GAAK/D,EAAAA,IAACkE,GAAO,MAAAxK,CAAa,CAAA,CAC7C,CAAA,CAAA,CAEJ,EAE8B,mBAAmB,EClBjD2K,GAAejE,EAnBD,CAAC,CAAE,MAAA1G,EAAM0H,OAAiB,CAChC,KAAA,CACJ,OAAA0C,EACA,OAAAC,EACA,KAAA7B,EAAKvK,CACH,EAAA+B,EACEyK,EAAOf,EAAWlB,CAAI,GAAKkB,EAAW,QAE5C,OAAIlB,GAAQ7K,GACH2I,MAACmE,GAAK,MAAAzK,CAAa,CAAA,EAExBF,EAASsK,CAAM,GAAKtK,EAASuK,CAAM,QAC7BO,GAAM,CAAA,CAAA,EAGdtE,MAACmE,GAAK,MAAAzK,CAAa,CAAA,CAEvB,EAE6B,kBAAkB,ECb/C6K,GAAenE,EATC,CAAC,CAAE,MAAA1G,EAAM0H,OAAiB,CACxC,KAAM,CAAE,KAAAoD,EAAM,QAAAnF,EAAS,QAAAvF,CAAA,EAAYJ,EAC7BoI,EAAOzC,GAAWmF,EAClB7J,EAAYG,EAAYhB,EAAS,MAAM,EAC7C,OAAOgI,EACH9B,EAAA,IAAC,MAAI,CAAA,UAAArF,EAAuB,WAAK,EACjC,IACN,EAE+B,oBAAoB,ECsBnD0F,GAAeD,EA3BA,CAAC,CAAE,MAAA1G,EAAM0H,EAAS,EAAG,SAAAtB,KAAe,CAC3C,KAAA,CACJ,KAAAoC,EACA,MAAAuC,EAAMpD,GACN,QAAAqD,EAAQH,GACR,MAAAI,EAAMN,EACJ,EAAA3K,EACEI,EAAU4B,GAAWhC,CAAK,EAGhC,OAAIwI,IAAS,SACJlC,MAACuD,IAAO,MAAA7J,CAAa,CAAA,EAI3BsG,MAAA,MAAA,CAAI,UAAWlG,EACZ,YAEEwI,EAAA,KAAAsC,WAAA,CAAA,SAAA,CAAA5E,MAACyE,GAAM,MAAA/K,EAAa,EACpBsG,MAAC2E,GAAM,MAAAjL,EAAa,EACpBsG,MAAC0E,GAAQ,MAAAhL,EAAa,CAAA,CACxB,CAAA,CAEJ,CAAA,CAEJ,EAE8B,mBAAmB,EChBlCmG,GAAAF,GAdc,CAAC,CAC5B,SAAAG,EACA,OAAAG,EAAOI,EACT,IACEP,EACI5G,EAAQ4G,CAAQ,EAAE,IAClB,CAACC,EAAO,IAAM/G,EAAW+G,CAAK,EACzBC,EAAA,IAAAP,GAAQ,SAAR,CACE,SADoBM,CAAA,EAAA,CAEvB,EACAA,CACN,QACGE,EAAM,CAAA,CAAA,CAEwB,ECjBxB4E,GAAwBnL,GAAA,CAQ7B,KAAA,CAAE,GAAA6H,EAAI,MAAAvH,CAAU,EAAAN,EACf,MAAA,CACL,GAAGA,EACH,GAAI6H,GAAMuD,QAAM,EAChB,MAAO9K,GAASN,EAAM,SAAW9C,EAAA,CAErC,ECOAmO,GAAe3E,EAjBD,CAAC,CACb,KAAArF,EACA,SAAA+E,EACA,GAAGpH,CACL,IAAM,CACJ,MAAMkB,EAAQgG,IACRlG,EAAQmL,GAAajL,EAAK,UAAUmB,EAAMrC,CAAK,CAAC,EAGpD,OAAAsH,MAACN,IAAS,KAAA9F,EAAa,GAAGF,EACxB,SAACsG,EAAAA,IAAAH,GAAA,CACE,SAAAC,CACH,CAAA,CACF,CAAA,CAEJ,EAE6B,YAAY,ECnB5BkF,GAAS,CAAC,CACrB,MAAA9J,EACA,KAAAL,EAAK,GACL,IAAAL,EAAI,EACJ,MAAAE,EACA,UAAAC,EACA,GAAGjC,CACL,IAAM,CACE,MAAAuM,EAAYC,GAAUhK,CAAK,EAC7B,OAAAqB,GAAU1B,CAAI,GAAKA,IACrBA,EAAOoK,EAAU,QAGhBjF,EAAA,IAAA,MAAA,CAAI,UAAWpF,GAAe,CAAC,KAAAC,EAAM,IAAAL,EAAK,MAAAE,EAAO,UAAAC,EAAW,MAAAjC,CAAA,CAAM,EAC/D,SAAUuM,EAAA,IACTlK,GAASiF,EAAAA,IAACmF,IAAiB,KAAApK,EAAa,GAAGrC,GAAtBqC,CAA4B,CAEtD,CAAA,CAAA,CAEJ,ECPAqK,GAAehF,EAbE,CAAC,CAChB,UAAAzF,EAAU,GACV,OAAA0K,EACA,SAAAvF,EACA,OAAAV,EACA,GAAG1G,CACL,IACE4J,OAAC,YAAS,UAAA3H,EACN,SAAA,CAAA,EAAQ0K,GAAYrF,EAAA,IAAA,SAAA,CAAQ,SAAOqF,EAAA,EACnC,EAAQjG,GAAWY,MAACgF,IAAO,MAAO5F,EAAS,GAAG1G,EAAM,EACpDoH,CAAA,CACJ,CAAA,EAE8B,eAAe,ECC/CwF,EAAelF,EAfA,CAAC,CACd,QAAAmF,EACA,SAAAzF,EACA,KAAAgC,EAAK,SACL,KAAAI,EAAK,SACL,GAAGxJ,CACL,IACEsH,EAAA,IAAC,SAAA,CACC,KAAAkC,EACA,QAAAqD,EACC,GAAG7M,EAEH,SAAUoH,GAAAgC,CAAA,CACb,EAE4B,aAAa,ECF3C0D,GAAepF,EAZA,CAAC,CACd,KAAA0B,EAAK,SACL,UAAAnH,EAAU,SACV,OAAA8K,EAAOH,EACP,GAAG5M,CACL,IACEsH,EAAA,IAACyF,EAAA,CACC,KAAA3D,EACA,UAAAnH,EACC,GAAGjC,CAAA,CACN,EAE4B,aAAa,ECQ3CgN,GAAetF,EAnBD,CAAC,CACb,KAAA8B,EAAK,QACL,KAAAJ,EAAK,QACL,UAAAnH,EAAU,QACV,OAAA8K,EAAOH,EACP,GAAG5M,CACL,IAAM,CACE,KAAA,CAAE,MAAAiF,GAAUiC,IAEhB,OAAAI,EAAA,IAACyF,EAAA,CACC,KAAAvD,EACA,KAAAJ,EACA,UAAAnH,EACA,QAASgD,EACR,GAAGjF,CAAA,CAAA,CAGV,EAE6B,YAAY,ECCzCiN,EAAevF,EApBA,CAAC,CACd,KAAA8B,EAAK,SACL,KAAAJ,EAAK,SACL,UAAAnH,EAAU,SACV,OAAA8K,EAAOH,EACP,GAAG5M,CACL,IAAM,CACJ,KAAM,CAAE,OAAA4F,EAAQ,OAAA3F,CAAO,EAAIiH,EAAQ,EAEjC,OAAAI,EAAA,IAACyF,EAAA,CACC,KAAAvD,EACA,KAAAJ,EACA,UAAAnH,EACA,QAAS2D,EACT,SAAU3F,EAAO,WAChB,GAAGD,CAAA,CAAA,CAGV,EAE8B,aAAa,ECN3CkN,GAAexF,EAZM,CAAC,CACpB,UAAAzF,EACA,IAAAH,EAAI,EACJ,MAAAC,EAAM,GACN,OAAAoL,EAAO,CAAC,EACR,OAAAvH,EAAO,CAAC,CACV,IACEgE,OAAC,MAAI,CAAA,UAAWhI,EAAoB,CAAE,UAAAK,EAAW,IAAAH,EAAK,MAAAC,CAAA,EAAS1D,CAAQ,EACrE,SAAA,CAACiJ,EAAAA,IAAA8F,GAAA,CAAQ,GAAGD,EAAO,EACnB7F,EAAAA,IAAC+F,EAAQ,CAAA,GAAGzH,EAAO,CAAA,CACrB,CAAA,EAEkC,mBAAmB,ECAvD0H,GAAe5F,EAZK,CAAC,CACnB,UAAAzF,EACA,IAAAH,EAAI,EACJ,MAAAC,EAAM,GACN,MAAAkD,EAAM,CAAC,EACP,OAAAW,EAAO,CAAC,CACV,IACEgE,OAAC,MAAI,CAAA,UAAWhI,EAAoB,CAAE,UAAAK,EAAW,IAAAH,EAAK,MAAAC,CAAA,EAAS1D,CAAQ,EACrE,SAAA,CAACiJ,EAAAA,IAAAiG,GAAA,CAAQ,GAAGtI,EAAM,EAClBqC,EAAAA,IAAC+F,EAAQ,CAAA,GAAGzH,EAAO,CAAA,CACrB,CAAA,EAEiC,kBAAkB,ECGrD4H,GAAe9F,EAdW,CAAC,CACzB,UAAAzF,EACA,IAAAH,EAAI,EACJ,MAAAC,EAAM,GACN,OAAAoL,EAAO,CAAC,EACR,MAAAlI,EAAM,CAAC,EACP,OAAAW,EAAO,CAAC,CACV,IACEgE,OAAC,MAAI,CAAA,UAAWhI,EAAoB,CAAE,UAAAK,EAAW,IAAAH,EAAK,MAAAC,CAAA,EAAS1D,CAAQ,EACrE,SAAA,CAACiJ,EAAAA,IAAA8F,GAAA,CAAQ,GAAGD,EAAO,EACnB7F,EAAAA,IAACiG,GAAO,CAAA,GAAGtI,EAAM,EACjBqC,EAAAA,IAAC+F,EAAQ,CAAA,GAAGzH,EAAO,CAAA,CACrB,CAAA,EAEuC,wBAAwB,ECnBpD6H,GAAW,CAAC,CAAE,SAAArG,KACzBE,EAAAA,IAACH,IACE,SAAAC,CACH,CAAA,ECDaH,GAAAA,GAHQ,CAAC,CAAC,OAAAhH,EAAQ,SAAAmH,CAAQ,IACvCnH,EAAO,SAAWmH,CAEW,ECAlBsG,GAAQ,CAAC,CACpB,OAAA/H,EAAO,GACP,OAAA1F,EAAO,GACP,IAAA6C,EAAI,GACJ,UAAAb,EAAU,6DACV,GAAGjC,CACL,IAAM,CACJ,MAAMkB,EAAOgG,IAEX,OAAA0C,OAAC,OAAI,UAAA3H,EACH,SAAA,CAACqF,EAAA,IAAA,MAAA,CAAI,UAAU,WAAW,SAAc,iBAAA,EACtC3B,GACA2B,EAAA,IAACqG,GAAA,CACC,MAAM,SACN,KAAM,OAAO,QAAQzM,EAAK,MAAM,EAC/B,GAAGlB,CAAA,CACN,GAECC,GAAU6C,IAAQ5B,EAAK,QACxBoG,EAAA,IAACqG,GAAA,CACC,MAAM,SACN,KAAM,OAAO,QAAQzM,EAAK,MAAM,EAC/B,GAAGlB,CAAA,CACN,CAEJ,CAAA,CAAA,CAEJ,EAEM2N,GAAa,CAAC,CAClB,MAAAC,EACA,KAAAnD,EACA,SAAArD,EACA,WAAAyG,EAAW,6CACX,WAAAC,EAAW,gBACX,GAAG9N,CACL,IACE4J,EAAA,KAAC,QAAM,CAAA,UAAWiE,EAChB,SAAA,CAACvG,EAAA,IAAA,QAAA,CACC,SAACA,EAAA,IAAA,KAAA,CACC,SAACA,MAAA,KAAA,CAAG,QAAS,EAAG,UAAWwG,EAAa,SAAMF,CAAA,CAAA,CAChD,CAAA,EACF,EACAtG,EAAAA,IAAC,QACG,CAAA,SAAAF,GAAYqD,EAAK,IACjB,CAAC,CAACpI,EAAMf,CAAK,IACXgG,EAAA,IAACyG,GAAA,CAEC,KAAA1L,EACA,MAAAf,EACC,GAAGtB,CAAA,EAHCqC,CAIP,CAAA,EAEN,CAAA,CACF,CAAA,EAEI0L,GAAW,CAAC,CAChB,KAAA1L,EACA,MAAAf,EACA,SAAA0M,EAAS,iDACT,WAAAC,EAAW,wBACb,IACErE,EAAA,KAAC,KAAG,CAAA,OAAO,MACT,SAAA,CAACtC,EAAA,IAAA,KAAA,CAAG,UAAW0G,EACZ,SACH3L,EAAA,QACC,KAAG,CAAA,UAAW4L,EACb,SAAC3G,EAAA,IAAA4G,GAAA,CAAW,MAAA5M,CAAa,CAAA,EAC3B,CAAA,CACF,CAAA,EAEI4M,GAAa,CAAC,CAAC,MAAA5M,KACfI,EAASJ,CAAK,EACT,KAAK,UAAUA,CAAK,EAEtBR,EAASQ,CAAK,EACjBA,EAAM,WACN,GAISoG,EAAOgG,GAAO,YAAY,ECpFlC,MAAMS,GAAc,CAAC,CAAC,MAAAhI,KAAW,CAChC,MAAAyC,EAAQzC,EAAM,OAASA,EAAM,KACnC,OAEMyD,EAAA,KAAAsC,WAAA,CAAA,SAAA,CAAQ,EAAAtD,GAAUgB,EAAA,KAAC,IAAG,CAAA,SAAA,CAAAhB,EAAM,IAAA,EAAE,EAC9BzC,EAAM,OACV,CAAA,CAAA,CAEJ,ECNaiI,GAAQ,CAAC,CAAC,MAAAjI,CAAK,IAC1BC,EAASD,CAAK,EACVA,EACCmB,EAAA,IAAA6G,GAAA,CAAY,MAAAhI,CAAa,CAAA,ECmDhCkI,GAAe3G,EApDA,CAAC,CACd,MAAAkG,EACA,OAAAU,EACA,YAAAC,EAAY,EACd,IAAM,CACJ,MAAMrN,EAAOgG,IACP,CACJ,MAAAf,EACA,OAAAM,EACA,QAAArF,EACA,YAAAoN,EACA,aAAAC,EACA,MAAAL,EAAMM,EACJ,EAAAxN,EACEyN,EAAW,EAAQxI,EACnBpJ,GAAKwR,EAAc9H,EAAO,OAAS,IAAMkI,EAAW,EAAI,GACxD1M,EAAYG,EAAYhB,EAAS,oBAAoB,EAK3D,OAHWwM,MAAAY,GACAF,MAAAG,GAEP1R,IAAM,EACD,KAIP6M,OAAC,OAAI,UAAA3H,EACD,SAAA,CAAQ,EAAA2L,GACPtG,EAAA,IAAA,MAAA,CAAI,UAAU,WAAY,SAAA3D,GAAciK,EAAO7Q,CAAC,CAAE,CAAA,SAEpD,MACG,CAAA,SAAA,CAAA4R,GAAarH,EAAAA,IAAA,KAAA,CAAG,SAACA,EAAA,IAAA8G,EAAA,CAAM,MAAAjI,CAAa,CAAA,EAAE,EACtCoI,GAAe9H,EAAO,SAAW,GAE7BmD,EAAAA,KAAAsC,EAAAA,SAAA,CAAA,SAAA,CAAQ,EAAAoC,GACRhH,MAAC,IAAE,CAAA,UAAU,OAAQ,SAAc3D,GAAA2K,EAAQ7H,EAAO,MAAM,CAAE,CAAA,EAE5Da,EAAAA,IAAC,MACG,SAAOb,EAAA,IACP,CAACN,EAAOpJ,KACLuK,MAAA,KAAA,CACC,eAAC8G,EAAM,CAAA,MAAOjI,CAAM,CAAA,CAAA,EADbpJ,EAET,CAAA,EAEN,CAAA,EACF,CAAA,EAEJ,CACF,CAAA,CAAA,CAEJ,EAE8B,aAAa,EC1D9B6R,GAAgB,CAACxD,EAAO,aAAe,CAClD,QAAUA,EACV,KAAU,GAAGA,UACb,SAAU,GAAGA,cACb,QAAU,GAAGA,aACb,SAAU,GAAGA,cACb,MAAU,GAAGA,WACb,SAAU,GAAGA,cACb,OAAU,GAAGA,YACb,MAAU,GAAGA,WACb,MAAU,GAAGA,WACb,MAAU,GAAGA,WACb,KAAU,GAAGA,UACb,OAAU,GAAGA,YACb,MAAU,GAAGA,WACb,QAAU,GAAGA,aACb,OAAU,GAAGA,YACb,SAAU,GAAGA,cACb,MAAU,GAAGA,WACb,OAAU,GAAGA,YACb,SAAU,GAAGA,cACb,MAAU,GAAGA,WACb,SAAU,GAAGA,cACb,OAAU,GAAGA,YACb,SAAU,GAAGA,cACb,MAAU,GAAGA,WACb,KAAU,GAAGA,SACf,GACayD,GAAaD,GAAa","x_google_ignoreList":[0,2,10]}